mikutter 5.0の季節がやってきました。
Gtk 3
今回のメインですが、新しくできるようになったことは特にありません。未実装項目や既知のバグが多数あります。
更に、サードパーティープラグインの互換性も一部失われています。これは気合で直すしかなく、mikutterの歴史の中で最も非互換なアップデートです。
もはやGtk2はサポートされていないので、できるだけ早く対応する必要がありました。
非互換な変更
いままでmikutterはGtk 2を使っていましたが、Ruby GNOMEがgtk2サポートを終了したため、mikutterでもGtk 3を使うようにしました。
Gtkを直接操作するRubyコードは、Gtk3ライブラリに変更すると、API互換性がほとんどないため動作しません。
そこで、 gtk プラグインを廃止し、かわりに gtk3 というプラグインをバンドルします。これにより、今までのGtkに依存していたプラグインはロードされなくなります。
プラグインの移行方法
以下の手順は、自分が開発したプラグインなど、自分でプラグインをgtk3対応にアップデートする方法です。
まず、mikutter 5に上げて --debug
オプションをつけて起動できるか確認します。起動できない場合エラーを見て直していきます。
起動できても、 gtk
プラグインに依存していたプラグインはロードされていません。ロードに失敗したプラグインは、Activityタブに警告が表示されるので確認してください。
そのプラグインの .mikutter.yml
にかかれている依存関係の gtk
を gtk3
に書き換えます。その状態でmikutterを起動するとクラッシュすると思うので、あとは気合で直していきます。
Diva::Modelがパターンマッチに使えるようになった
Diva 2.0 では、Modelに対してパターンマッチを使った場合、Hashパターンでマッチできます。
class Article < Diva::Model field.int :id, required: true field.string :title, required: true field.string :category, required: true end mi = Article.new({id: 1, title: 'article title 1', category: 'news'}) case mi in category: 'news', title: String => title puts title # article title 1 end
Mastodon投稿時、Postboxに残り字数表示
Twitterと同様に、Mastodonでも残り文字数を表示します。 Mastodonサーバーによっては投稿できる文字数をカスタマイズしている場合があり、500文字ではない可能性があります。
Mastodon 3.4.3以降では、Tootの文字数制限をAPIで取得できます。これを使って、カスタマイズされた制限文字数をもとに計算した残り文字数を出しています。 Mastodonサーバーが古い場合は、依然として文字数は表示されません。今思えばとりあえず500文字として計算しても良かった気がしますが、めんどいのでバージョンを上げてください。
Ruby 2.7以降をサポート
mikutter 5は、Ruby 2.7以上のバージョンしかサポートしません。それより古い場合は、最新のRubyに更新しましょう。
書き忘れていること
書き忘れていることです。
試用する
https://mikutter.hachune.net/develop のページ下部に書いてあるGitリポジトリをcloneして、developブランチを使ってください。
バグを見つけた場合の報告は、 https://dev.mikutter.hachune.net よりお願いします。ユーザ登録が必要ですが、報告する予定がなくても通知を受け取るためだけに登録しても大丈夫です。
リリース時期
12月25日に起きたタイミングでできているところまでを5.0.0としてリリースします。 バグや未実装項目は確実に間に合いませんが、mikutterにバグがなかったことはないので問題ありません。