mikutter blog

mikutterのアナウンスなど

mikutter 9年目

2019年ですね。今年もmikutterをよろしくお願いします。

mikutterのこと

3.7.0

5月7日にリリースしました。

https://mikutter.hatenablog.com/entry/2018/05/01/210949

Score

もともと本文とは文字列という考え方でmikutterは構成されていましたが、mikutter 3.6以降からはよりリッチな世界とやりとりする可能性が出てきました。

そのためにリッチテキストを表現する必要が出てきて、文字列ではなくDiva::Modelの列を使うことしました。更に、Entityではできなかったサードパーティプラグインからの拡張をサポートしたとか、その仕様がTwitter非依存になり明確になった(わかりやすいとは言ってない)とか、様々な目標を同時に叶えました。

そのせいで今思うと3.7.0はパフォーマンスがかなり落ちていて、特定の操作をするとCPU使用率がかなり高くなるとか、メモリリークしているということがありました。現在では修正されています。

3.8.0

9月8日にリリースしました。

https://mikutter.hatenablog.com/entry/2018/09/08/112058

Search Spell

spellを検索に対応させたものです。 Akkiesoftさんが、Search Spellの定義が一つでもあれば検索タブを表示する仕様にしてくれました。

これによって、たとえばTwitterプラグインを抜いた状態でもMastodonで検索ができるようになりました。 個人的には、そもそもsearchプラグインにはご退場いただこうと思っていたのですが、代替となる実装を完了する目処が立っていなかったので、これをmergeしたという経緯があります。

Remain Charcount Spell

入力中の文章について、あるWorldであと何文入力できるかを取得するSpellです。このおかげでTwitterのWeighted Character Countのような奇妙な文字数カウントにも対応できるようになりました。

このSpellの定義の背景には、shibafu528さんの活躍がありました。OSC名古屋のあとで彼が実装してくれたものがほとんどそのまま3.8にmergeされています。

コミッタ

去年はcobodoさんが新たなコミッタとしてjoinしました。もともとMastodonを利用するためのプラグインを開発していて、今では新機能の提案やバグ修正などをちょくちょくこなして下さってます。

Twitterのこと

例年の振り返り記事では毎回書いていましたが、久しぶりに書いた今回は、すでに私がTwitterアカウントを凍結されてから1年以上経っており、ほとんどTwitterでどんなことが起こったか知らないという状態です。

mikutterの Twitter APIキーの停止

2018年5月4日に、mikutterのAPI Keyがsuspendされました。

あのときは、すぐにsushi514がTwitter Japanのオフィスに殴り込んでいて、大したものだなぁと感心していました。

正直言って、2017年11月18日にTwitterアカウントが凍結された私は、半年前に利用をやめたTwitterに何か起こってもどこか他人事のように思ってしまっていました。

しかし、sushi514を始めとした多くの人がこの件に怒っているのを見ていると、Twitterのユーザに対する不誠実な態度にやるせない気持ちになりました。Twitterはビジネス、mikutterは自分のための趣味という大きな違いがあります。mikutterにはユーザに対する責任はないし、投資家の顔色を気にする必要もありません。しかしそれと誠実であることは別の次元です。

今回API Keyが停止されても、その程度にしか思えなかった私が今後も誠実で居続けることができるのか、あのときは正直自信がありませんでした。

それでもTwitterのそういった姿勢を許すことができず、心の整理がつかないままに書きたいことを書いてしまいました。自分にしてはだいぶ強い文体で、トゲのあることを書てしまったのですが、Twitter上でバズってしまい炎上するかと思いきや誰もが同調する始末。誠実さを失ったものの最期は、これほどまでに惨めなものなのかとため息が出ました。

User Streamの停止

8/15のUser Stream停止も同様で、私にとっては大きな出来事ではありませんでした。

ある意味、Twitterにとってはこれはけじめのようなものだったのかもしれません。これほどまでに強いメッセージが込められた決断が、ただの歴史的負債の見直しで行われたものだと思いたくないです。

周りのこと

『mikutterを知らない人』からの評価

去年は9月に転職したのですが、その最中や前後で、私がどんなことができるか説明するために、mikutterやそういった背景を全く知らない人にmikutterについて話す機会がありました。

今まではmikutterを知っている人に話す経験ばかりだったので、どのように映ってどのような結果を招くことになるのだろうかという不安はありました。

一方で、以前からmikutterがきっかけで良い転職などが決まったというお礼のメールやDMをいただくことはしばしばあったので、私が同じことをやっても悪い結果にはならないだろうとも思っていました。

その準備の中で、自分がmikutterに対してしてきたことをまとめるという作業がありました。ついついイケてないところばかり目についてしまいますが、ここまでやってこれたというのもまた事実です。

他人の人生に良い影響を与えたという報告を受けるのはとても嬉しいことでした。今日、私も同じことができて嬉しいです。

これからのこと

リリース

mikutter 0.0.0.1リリースからちょうど10年となる2019年12月25日に、メジャーバージョンを上げたmikutter 4(仮称)をリリースします。

その前に少なくとも一回リリースがあるので、mikutter 3.9もあります。

Gtk3 (4.0)

今のところ、Gtk3対応といった非互換な変更を行う予定です。セマンティックバージョニングでは、非互換な変更が伴う場合はメジャーバージョンを上げることになっているので、丁度良いですね。

Gtk3の対応は面倒なので後ろ倒しにしていましたが、GUIの抽象レイヤーがだいぶしっかりしてきたことと、尻に火がついたこと(Gtk4)からそろそろやります。Miracle Painterとはお別れになるかもしれませんね。

Mastodon (3.9〜4.0)

これは3.9で搭載するかもしれませんが、Mastodonプラグインをバンドルします。現在のところ、今年mikutterコミッタになったcobodoさんがメンテナンスしているworldonをベースにしたプラグインをバンドルするつもりです。

Twitterサードパーティプラグインに (4.0)

Twitterプラグインを外し、サードパーティプラグインとして公開します。TwitterユーザはTwitterプラグインをインストールすることで引き続きTwitterを使うことができます。

この決断の前にはいろいろと葛藤があったのですが、もはやmikutterでは(API Keyが凍結されたから)Twitterは使えないので、今mikutterをダウンロードして起動しても何もできません。今更やんけという話もありますが、しゃあないねん、あの頃は転職活動の準備を始めた頃で大変やったんや。

正直に申し上げて、今mikutterコミッタにTwitterサードパーティアプリケーションの開発に興味がある人間はもはや存在しません。現にこの一年で一番Twitterプラグインにコミットしたのはアカウントを持っていない私でした。

この決定のどこに問題があるかというと、Twitterがついこの間私達にしたのと同じことをユーザに対してしてることにならないか?という点です。

八方美人になれるほど体力はないです。しかしmikutterには廃止と継続の究極の選択をする必要はなくて、サードパーティプラグインにするという折衷案があります。これは、Account Activity APIのような使い物にならないAPIを代替と言い張るのとは違って、完全に同じものを引き続き使えるということです。

メリットの方の話もしましょう。mikutterコミッタが考えるべきことが減ります。たとえば、Score機能の実装のとき、TwitterプラグインはEntityをやめ、Scoreを使った実装にすべて書き換える必要がありました。

これを古いまま放っておけないのには大きな理由があります。バンドルされているプラグインプラグイン開発の参考にされるからです。 バンドルプラグインでやってる方法をパクッてプラグインを作ったのに「その方法deprecatedだよ」と言われたら、プラグイン開発者は信じられるものがなくなります。「ドキュメントがなければコードを読めばいいじゃない」というネタがありますが、コードすら信頼できないという、もっとひどい状態になってしまいます。

なのでTwitterを使っていない私がTwitterプラグインをアップデートし続けていたのですが、実際にテストしたあと「使ってみる」という工程ができないため、バグに気づかずリリースすることが以前よりずっと多くなってしまいました。無理に書き直してバグが増えるよりは、実装はレガシーなままで互換レイヤーを使って動くほうが安定しますし、ユーザにとってもメリットが大きいです。

互換レイヤーというのは、既存の機能を置き換えるような新機能が実装されたとき、旧機能を廃止するのではなく、旧機能のAPIを呼び出すと対応する新機能のAPIが呼び出され、今までと全く同じように機能させるはたらきのことです。mikutterは新機能を提供するときはこのような互換レイヤーを必ず提供しているため、大きな変更をしても古いプラグインが必ず動きます。実際に6年くらい前のプラグインが普通に動いている例は珍しくありません。

そのような前提があるので、Twitterプラグインサードパーティにするというのは、Twitterプラグインを安定した状態で留めておくことにもなるのです。

もちろんもう少し良い方法が見つかるかもしれませんが、基本的にはmikutterが10周年を迎える2019年12月25日に、Twitterプラグインサードパーティプラグインになるのだと思っておいてください。

まとめ

本来であれば10年を目前にした大事な年ですが、燃え尽きても良くないのでいつもどおり適当にだらだらとやっていきたいと思っています。