TootRain 1.0

Mastodon と Slack から画面にコメントを流す Mac アプリです。

元々は Mastodon から流すだけだったが、会社のみんなは会議にコメントを流すのが好きで、なんとか使えないかなと思った。会社では最初はコメントスクリーンを使ってたが、セキュリティーの問題で、やっぱりよくないということでやめた。セキュリティーにこだわるなら、すでに使ってるツールに何かしらの連携の方がいいと思って、Slack との連携を実装してみた。

そうしたら大好評だった!

みんなも興味あればこちらでダウンロードしてください。

Slack 連携について下でもっと詳しく書きますが、TDLR はこちらです。

実はこのアプリは結構歴史があります。 遡って9年前、今日と同じくらい暑い夏の日でした。高校から卒業し、大学に入れるかどうかも分からなかった夏休み。その頃のツイッターはまだ開発者に優しかった、Stream API はまだ提供されてて、非公式のアプリでもリアルタイムでTLを眺められた。そういうタイムラインをニコニコのコメント風に表示したいと思って、初代 TweetRain を始めた、ちょうど9年前の8月ですね、コミットが午前5時になってるけど、そういえばそういう生活習慣でした。

なにをやったのか分からんが、なんか望んでる挙動になった、これは何時間も同じところで躓いてる私が可哀想だからXcodeが勝手になんかいじったのか? https://twitter.com/b123400/status/234747377829965826

僅か二週間後リリースした、とは言っても呟いただけでした。あの時はアプリは flood.app っていう名前だった。

做了個用niconico的comment方式來顯示tweets的mac app呢,反正是免費的無聊的話不妨試試看! http://b123400.net/flood (icon是 @Linkzero 畫的喔 https://twitter.com/b123400/status/240379149699661824

ツイッターのタイムラインをニコニコ風にするマックアプリ作りました! http://b123400.net/flood/ https://twitter.com/b123400/status/240391317539143680

そのままアプリを2014年まで放置し、Mac のアプリストアの存在を思い出して、色々改修して、 TweetRain に改名してアプリストアに提出した。そこからはたまにしか開発してないが、一応バグ修正したり、ちょっとした機能追加もした。

TweetRainで見える化された鉄腕DASHとアメトーークの差。この時間帯殴り込みは無理があったんじゃ…笑 https://twitter.com/BedroomGuitars/status/795210054710403072

知らん人がアプリを使ってるのを見ると嬉しい。

でも2018年につい終わりが来た。Twitter が殺しにかかった。 2018年8月から、Twitter のストリーミングAPIが消える。API とは、プログラムの間のコミュニケーションを可能にする通路みたいなもんです。今までの Twitter は「ツイートを閲覧したければこっちを見るといい」と、通路は公開的だったが、2018の Twitter はもう今までのやつでは無くなって、開発者は眼中にないです。幾つの有名なアプリ開発者がTwitterにオープンレターを書いたが、もちろん馬耳東風です。API を公開にするメリットとしては、社外の人でもいろんなアプリを作れて、ユーザーに良い体験、多彩な選択を提供することです、Twitter 初代の iOS アプリも、 Tweetie という社外のアプリを買収して作ったものです。デメリットとしては、体験をコントロールできないですね、例えば収益化すべく、TLに広告を入れたくても、アプリの方が協力しなければできない、ユーザーの ストーキング トラッキングもできない。元々は自社でアプリを開発する余裕がなかったが、余力ができたから開発者は用済みということで、今の Twitter になった。今の非公式のアプリを見るとわかると思うが、公式と比べて機能が少なくて、あるいは実装が公式よりだいぶ遅くなったりする。例えばすでに消えた Fleet、Clubhouse のパクリである Twitter Spaces など。 というわけで TweetRain は役目を終え、アプリストアから消えた。

時は2021年、大 Fediverse 時代である

いや、Fediverse はもっと前から存在してるし、私が何もしなかっただけでした。興味はあるけど2021になるまで自分のサーバーを立ち上げるの面倒臭かった。 Fediverse とは、Twitter みたいなサイトだけど、複数のサイトでできたネットワークです。例えば Email でいうと、Gmail から Yahoo にメール送られるでしょう?でも LINE から Facebook にメッセージは送れない。何故かというと Gmail と Yahoo の間に協定ができてるんです、指定のところに指定のフォーマットのデータを送ればメール受信できると。この協定は Gmail / Yahoo だけじゃなくて、一般的に公開されてる。だから iCloud でも、なんなら自分が建てたメールサーバーも送信受信できる、実際自分のメールサーバーを持つ会社は結構ある。そういう協定を対応していて、Twitter のような体験を提供するサービスを Fediverse という。一番有名なソフトとしては MastodonPleromaMisskey、など。サーバーっていうと日本の Pawoomstdn.jp とかも結構ユーザーいる。サーバーことに利用規約、テーマとかがあるけど、大事なのは自分に一番合うサーバーを選べられることです。Twitter みたいなサービスは元大統領だろうが、BAN したければする。例えば私が上で「Twitter が殺しにかかった」って書いたが、Twitter にそれを投稿したら BAN される可能性もある。でも Fediverse は違って、より分散的にユーザーが存在してて、サーバーから BAN されることがあっても、Fediverse から追放されることはないです(例えば Google に嫌われて Gmail 使えなくなっても、Microsoft に嫌われてなければ Outlook 使えばいい、みたいな感じ)、開発者の恩を忘れることもないでしょう。とは言っても私もまだTwitterの方が友達多くて、いまだにFediverseを楽しめきれてない気がする、フォローしてください @b@is-he.re です。

というわけで Mastodon / Pleroma 向けの TootRain が誕生した、めでたしめでたし。

で、Slackはどうなん?

Slack の開発者に対しての姿勢は Twitter とかなり似てる、役に立ちそうなところなら API を公開するけど、用済みになったら API を消す。今まで Slack からメッセージをリアルタイムで受け取る API があったが、それもすぐ使えなくなる。つまり非公式のクライアントを作ることが、公式的にできなくなってる。wee-slack, ripcord, emacs-slack なども接続できなくなってる。そのまま連携を諦めてもいいけど、今回のアプリは Mastodon / Pleroma メインで、Slackはついでに連携する感じだから、会社のみんなが楽しく使えたらそれでいいというわけで、無理やり連携してみた。

やったこととしては、browser (WKWebView) 開き、ユーザーがそこで Slack にログインしたら、ユーザーの Session や、ストリーム接続に必要なデータを 盗み 取得し、ブラウザのように振る舞って接続しただけです。この方法の問題としては、Slack 側が Session とかを無効化するとすぐ接続できなくなる、そして非公式だからいきなり壊れる可能性がある。あとは連携に使った情報はクライアントの全権限持ってるから、理論上はセキュリティー的に微妙かも、まー、オープンソース だから、不安なら自分でコードを精査して、自分でビルドしてください。

Slack との接続方法だけど、あんまり表に出したくないというか、如何せん無理やり繋いでるだけだからちょっと隠し機能になってる。 Mastodon / Pleroma の instance hostname を入力するところに、Slack のワークスペースを入れればいいです、例えば「abcde.slack.com」。あとはログインとチャンネル選択だけです。選択されたチャンネルのメッセージはそれで画面上に流れるはず。