あざらしとペンギンの問題

主に漫画、数値計算、幾何計算、TCS、一鰭旅、水族館、鰭脚類のことを書きます。

やはり\アッカリーン/しようかな

やはり twitter4j でやるには厳しいものがあることのは感じていたのです。

特に、interface StreamListener がなぜか Scala から見えない(なぜかプライベート扱いになっていて、コンパイル時にアクセス権がないと怒られる。interface のくせに。Groovy からは普通に見えるしアクセスもできる)ので、解決のために少しの Java コードを書かなければいけなかったのは、私としては美しくないと思いました。(sbt では Java ファイルも一緒にコンパイルしてくれるので実用上の問題はありませんでしたが。)

bot のタスクマネージャに akka を使ったのは、特定の日時にイベントを発生させるものとして他に使えるのが java.util.cuncurrent.ScheduledThreadPoolExecutor とかいうやたら長い名前のクラスしかなかったことがあります。これを用いた場合、ストリームを開いているときにイベントが衝突する可能性がありました。そんなこんなで akka を採用することを決定しました。

twitter4j が比較的元の Twitter API に忠実であることは評価できるのですが、Java 8 で非推奨となった API が使われていたり、media/upload (chunked) をサポートしていなかったりと、既に古くなった印象は否めません。なにしろ最初に作られたのが10年も前、Twitter が日本でそれほど普及していなかった頃ですからね。また、ところどころに設計の一貫性がないことも気になりました。その上で開発版の更新が半年前から止まっていることを見る限りにおいて、これ以上を望むのは厳しいと思いました。そもそも mvn のテストに落ちるのでスキップ必須なのはさすがにどうかと。

その辺りを考慮すると、Scala でそれらの問題を解決するためには、やはり新しいライブラリを書く必要があるという結論に至らざるを得ないようです。もちろん検索はしてみましたが、わざわざ Scala でそんなことをやろうとしている人はいないようでした。

開発にはもちろん akka を使うことになるでしょう。akka にはアクターモデルの実装のみならず、HTTP タスク処理用のライブラリも含まれています。ドキュメントを読んだ限り、SNS や Web クライアント/サーバでの使用が意図されていると思われました。

というわけで、書く書く詐欺に終わらなければ、akka を用いた純粋な Scala での Twitter ライブラリを作ることにしました。

名前は、akka にちなんで\アッカリーン/とか、まぁそれでは Twitter との関係性が見えないですが、プロジェクトを作ってから決めます。