mikutter blog

mikutterのアナウンスなど

mikutter 5.0の新機能

mikutter 5.0の季節がやってきました。

Gtk 3

f:id:toshi_a:20211211173759p:plain

今回のメインですが、新しくできるようになったことは特にありません。未実装項目や既知のバグが多数あります。

更に、サードパーティープラグインの互換性も一部失われています。これは気合で直すしかなく、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 にかかれている依存関係の gtkgtk3 に書き換えます。その状態で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に残り字数表示

f:id:toshi_a:20211212142047p:plain

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にバグがなかったことはないので問題ありません。