アプリを作るのって難しいな
みなさんこんばんは、かんぬきです。
前回のブログでアプリを作っているというお話を少し書きましたが、今回はそちらにフォーカスしたお話を書いていこうと思います。
そもそも、どうして同時投稿クライアントを?
前回のブログでも触れましたが、普段から Bluesky と Twitter を行ったり来たりしていたんですけど、まぁ結構面倒なんですよね。
で、どうやら Bluesky と Twitter のタイムラインを同時に表示するクライアントがあるらしいぞという噂を聞き、さっそく見てみることにしました。
すごいんですよ、Bluesky と Twitter のタイムラインが一つの画面でちゃんと表示されてるんです!
でも、いざ実際に使ってみて気がついたのは、僕がやりたかったのは同時投稿であって、同時閲覧ではありませんでした。
そのことに気がついたので、そのアプリをお手本にしながらクライアントを作っています。GitHub って便利だな〜〜。
一番すごいのはそのアプリを作っている作者さんなんですけどね。
まずは Bluesky と Twitter のログイン機能の実装。これがないと文字通り始まりません。
最初は Bluesky にフォーカスを当てて作っていたため、Twitter にログインした後にタイムライン画面に遷移するという処理を入れておらず、「初めてログインするときに Twitter からログインすると画面が真っ黒のままになる」というバグを生んでしまいました。なんてこった。
そんなこんなあり、同時投稿機能と同時閲覧機能に加えて、いいねとリツイート機能も実装することができました。
しかし、ここから先は Android と iOS の仕様の違いとの戦いでした。

iPhone 版で Twitter のログイン情報が取れない!
僕が作っているアプリでログインするには、まず WebView とかいうものでモバイル版の Twitter にアクセスする必要があるのですが、Android で動いている WebView と iOS で動いている WebView の挙動が違うため、iPhone ではログイン画面がうまく表示できず、ログイン操作がままなりませんでした。何者かがログインしたぞというメールは飛んでくるので、どうやらログイン自体は成功している様子。
必要なのはその後のログインしたユーザー名と ID、そしてサムネです。
これを Claude と手探りで解決するのは時間がかかりました。
iPhone 版で投稿ができない!
投稿機能はもう実装されてるんじゃなかったのか?–これには長い話があるんです。
お手本にした手法だと Android ではうまく投稿できてたんですが、iPhone からではうまく投稿できませんでした。
Claude と試行錯誤しながらあれこれ試してどうにか投稿する機能自体は用意できたのですが、ほぼ失敗すると言ってもいいほどには安定しません。
これも複雑い話になるんですが、iPhone の画面がずっと読み込み中のままになっていて、画面が見えないのでよくわからないんですが、どうやら DOM と呼ばれるものの操作がうまく行えていないようでした。
Android と iOS で挙動に差異がないように進め、なんとか iPhone で複数のアカウントに投稿する機能を持たせることに成功しました。
iPhone、なかなか面倒だな……?
大きく沼ってた部分は今のところその辺りで、あとは細かい部分を調整すれば GitHub へも公開できそうではあるんですが、果たして公開なんかしてもよいのだろうか。