mikutterコミッタにされった

このたび、栄えあるmikutterコミッタの一員に選ばれましたことは、望外の喜びであります。

思えば、たまに訪れるLinuxデスクトップで遊んでみようという思いつきのたびにmikutterを使い、自分で使うためだけのプラグインをほそぼそと書いては、Linuxデスクトップ自体に飽きてWindowsに戻るということを繰り返してきました。

2017年に入ってすぐの頃、私のtwitterアカウントが一時凍結され、電話認証を要求されるということが2度ほどあり、その直後に私のアカウントで作成していたCK/CSのwrite performが一切禁止されてしまいました。私は当時、Krile StarryEyesを使っていました。karno氏とは面識があったこともあって、何度かpull-reqを送ったりしていましたが、これによりKrileが使えなくなってしまいました。そのため、後継としてWindows上で動くクライアントを模索する中、2016年夏頃に公開されたWindows Subsystem for LinuxFirefoxを動かした記事の存在を思い出した私は、WSL上でmikutterを動かせばいいのではないかと考えました。

WindowsネイティブのRubyでmikutterを動かすことはハードルが高く、特にgtk2やnokogiriのようなgemのビルドが非常に不安定で、しかも32bit版しかサポートされない状況が続いていたため、Windowsでmikutterを使うことは、実験的な意味で成功させるのはともかく、日常的に使用し続けることは半ば以上諦めていたのですが、WSLであれば少なくともビルドの問題はなく、GUIIMEさえなんとかなれば大丈夫だろう、と見通しを立てました。

実際にこれは成功し、現在でもWSL上でmikutterを使用しています。

2017年春のmastodon流行に乗じてインスタンスを立て、秋にはtoshi_aさんがtwitterアカウントを凍結されmikutterのmastodonインスタンスが設立されたことにより、mikutter界隈のmastodon移住の機運が高まり、そこに便乗する形でイキり始めたのが、mikutterコミュニティとの本格的な関わりのスタートであったのかなと思います。この頃に、mikutter redmineへのアカウント登録も行いました。

mikutterとmastodonの関わりにも歴史があり、2017年春の流行の際に、もぐのさんがmikutter丼プラグインを書かれました。

この際に、もぐのさんが言っておられたことが印象的です。

大して若くない私は、この時「ワカモノがんばれ、ちょうがんばれ」と思いつつ、mikutter丼をforkし、独自に手を入れていました。夏頃、mikutterの新機能としてworldというものが追加されるという噂を聞き、内心ワクワクしつつも、実際に試すまでは至りませんでした。

2017年12月に入った頃に、mikutodonの存在を知りました。

このプラグインはなんとストリーミング対応であり、mikutterにおけるmastodon体験をより豊かなものにしました。そら氏は若く、mikutter界隈でもここにpull-reqして育てていこうという雰囲気が強かったのを覚えています。現在でも、「mikutter mastodon」というキーワードでGoogle検索すると、このプラグインがトップに出てきますから、このプラグインデファクトスタンダードだと認識している人も多いのではないでしょうか(冒頭の記事での「いまやmikutterでMastodonを利用するためのプラグインとしてデファクトスタンダードとなっているWorldonプラグイン」はピンと来なかった人も多いと思います)。

2017年12月25日にmikutter 3.6がリリースされました。World、Spell、Dialog DSLと、盛りだくさんの新しい機能がありました。12月28日にはWorld系プラグインを実装する 0日目 下準備 - mikutter blogが公開され、いよいよWorld対応のプラグインの書き方がわかるのかと思いきや、この続きは公開されませんでした*1

mikutodonはworld対応をがんばっていたようですが、どうにもドキュメントがなさすぎる状況で、非常に苦しんでいたようです。その中でも、mastodon WebUIが使用しているwebsocket APIではなく、mastodonの公式ドキュメントが推奨するSSE stream APIへの対応を行なうなど、進歩を見せていましたが、ついにはmikutodonの開発は停滞してしまいました*2

そういった状況の中で、いよいよ、World対応のmastodonクライアントは自作するしかない、という結論に至り、作成したのがWorldonです。

Worldonは、toshi_aさんの「うんこでたボタン」に採用されたことで知名度を上げました。

現状でもbuggyな部分は多々ありますが、継続的に開発を続けています。

Worldon実装の上で、toshi_aさんからは多くの助言を頂き、結果的にmikutterのUIと親和性の高いものにすることができたのかなと思います。

また、開発の上でmikutterのソースコードの数多くの部分を読むことになり、結果的に別のプラグインを書いたり、更には本体への貢献をすることができるようになりました。

こういったことの積み重ねが認められた結果、コミッターに招いていただけたのだと思います。本当にありがとうございます。

ところで

こういった突然のコミッター就任は実は2度目です。

1度目はcpprefjpという、C++標準の日本語リファレンスプロジェクトです。

この時は、以下のような経緯でした。

  1. サイト内のサンプルコードに記載された円周率の定義が間違っていることに気づく
  2. pull-reqを受け付けているということだったので、同様の間違いがある部分を「単に数字だけ置き換えた」pull-reqを送る
  3. メール「コミッターに招待しました」←!!!!????!??!wwwwwwwwwwwwwwwww

なんとC++の規格に対する知識どころか、C++のコードすら1行も書かずにコミッターになってしまったのです。

こういった経験から、今回のmikutterコミッター就任は、突然のことではあったものの、経緯としては非常に常識的な流れで進んでおり、素直に受け入れることができました。

余談ですが、cpprefjpの方には(当然のことながら)怖すぎてあれ以来一切のpull-reqをしていません。

Rubyの方でも、mikutter以外では全く書いていないといっても過言ではないくらいなので、言語や環境に対する知識というのは心もとないものがありますが、今後、少しずつ身につけていきたいと思います。

今後ともよろしくお願いいたします。

*1:現在でもされていません。続きは予約公開しようとしたら公開されなかったのがおもしろいのでそのままらしいです。

*2:そら氏自身は、その後CUIベースのmastodonクライアント ConsoleTooter https://github.com/sora0920/ConsoleTooter を作成されたりしています。