錯誤試行

PCや生活の試行錯誤の成果を報告するブログ

UbuntuでTwitterクライアントmikutterを使う

マルチペインで表示できるPC用Twitterクライアントを探していて見つけたmikutter*1Ubuntuに導入した際のメモ

(2023/6追記) 旧来のTwitter APIの利用は終了

各所で報じられた通り、旧来のTwitter APIの利用は終了(非推奨)となり、新しいAPIの提供が開始されている。真偽不明だが、(おそらくは旧来の)APIを利用してアカウントを凍結されたとの噂*2も聞くので、旧来のAPIが利用できたとしても、そうしたリスクがあることに注意。アカウントを凍結されるリスクを負うのは避けたいので、旧来のTwitter APIが非推奨となってから接続を試したことはない。この記事は参考として残しておく。

目次

結論

前提として、Twitterの開発者サイトで英語での申請が必要で手軽には使い始められない。
それさえできれば、AppImageのバージョン3.9.8を使えば最も簡単に使うことができる。詳しくは以下のサイトを参照。

導入

  • APIの利用申請が必要
    事前にTwitterの開発者サイト(Use Cases, Tutorials, & Documentation | Twitter Developer Platform)でAPI利用の申請が必要。さらに、mikutterでTwitterを使うためのプラグインTwitter API v1.1までの対応のため、最初の申請で利用できるようになるAPI v2.0ではプラグインを使うことができず、API v1.1が利用できる「Elavated」の申請が重ねて必要になる(2021年12月時点)。申請方法は検索すれば出てくる。最初の申請は名前を入力したり選択項目から選ぶだけでよく、申請直後からAPIを利用できるようになったが、「Elavated」の申請では使用目的などを英語で、指定の文字数(100文字/200文字)以上になるようフォームに入力しなくてはならず、また申請は承認制で、承認の結果が分かるまで時間がかかるようだった。使用目的の英文作成はとてもハードルが高く感じたが、端的な文章を規定の文字数を何とかクリアする程度に多少盛って、DeepLやGoogle翻訳で翻訳したもので問題なかった。内容としては「API v1.1にしか対応していないTwitterクライアントを使用したい」「大量の処理は行わない」旨を記載し、回答内容が重複する質問項目については、同じ文章をコピー&ペーストした。
    申請後、Twitterから承認の可否を知らせるメールは特に届かず、申請してから3日後にTwitter開発者サイトにアクセスしたところ、API v1.1が使える「Elavated」が承認されていた。
  • Twitterプラグインを用意する
    GitHub - mikutter/twitter_bootstrap: The most popular Twitter client for mikutter plugin, teokure first projects on the Linuxとか desktop.を参照してTwitterプラグインをインストールして、Twitter開発者サイトで入手したAPIキーをセットする。
  • mikutter公式サイトでAppImage版(バージョン3.9.8)をダウンロード
    プラグインのエラーは出るが動作した。
  • ソースからインストールする場合
    記事作成時点の最新版(バージョン4.1.7)はruby2.5以上対応となっていた。bundle installを実行し、何か足りないと言われたらgem installでインストールする。
    Debian stretch に mikutter 3.6 を入れてみた | Q3がソースからのインストール方法をまとめてあり助けになった。
  • Twitterプラグインを動かすにはsnap版やバージョン4以降のAppImage版ではダメ
    同梱されているrubygems(Rubyのライブラリ)にtwitter-textというgemが入っていなくてエラーになる(以下)。

    /tmp/.mount_mikuttWurcOc/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_ \
    require.rb:54:in `require': cannot load such file -- twitter-text (LoadError)

使い方などのメモ

  • 新しいタブの出し方
    右クリックや「Ctrl+t」で出すのではなく、設定の「抽出タブ」(後述)でツイートを表示する条件を設定すると新しいタブが表示される。
  • ペインについて
    抽出タブを右クリックして「新規ペインへ移動」すると、ウィンドウの一番左にペインが作成されてそこにタブが移動する。タブはドラッグ&ドロップすることでペイン間を移動できる。ペインをたくさん増やしても横スクロールバーは出ず、1ペインの表示領域が狭まっていく。
    抽出タブで表示するタイムラインが一画面に収まる範囲なら、複数のペインを作って表示すると一覧性が良いが、画面に収まらない数のタイムラインを見たいならタブを切り替えて閲覧する。
    手元の環境では、ペインは2つにして左側にHomeタイムライン(「t」の表示のタブ)、右側に抽出タブを表示するようにした。
  • フォント設定とツイートの表示
    フォントサイズを大きくし過ぎると(15以上ぐらい)、ツイートの文章が1ツイートに割り当てられている表示領域に収まらず文字が欠けてしまう。1ツイートの表示領域を広げるような設定は見当たらないので、表示領域に収まるようにフォントサイズを小さくするしかない。
  • 過去のツイートをさかのぼって取得できない
    mikutterの起動時、タイムラインには起動する前の一定時間内(3〜6時間程度)のツイートのみ表示される。下までスクロールしてもそれより前のツイートは表示されず、Twitter公式サイトのように延々とタイムラインを下りていくことはできないので、過去にさかのぼってたくさんツイートを読みたいときは物足りなさを感じる。
    使い方の提案

    一方で、過去にさかのぼれないということは読み切ることができるということで、起動後にしばらく放置しておいて、読みたくなったらEndキーで一番下まで移動して、起動後から現在までのツイートまでを「全消化」する(した気になれる)という使い方を提案したい。ツイートが際限なくロードされるのは延々と読める一方で、延々と読みたくないときにはキリなく感じられてくる。読みたくなければ読まなければいいのだが、それはそれとして、日々ツイートをたくさん読んでいて食傷気味だという場合は、終わりがあることでツイートを読むのが心理的に楽になるかもしれない。

  • 画像リンク
    クリックするとウィンドウがポップアップして画像が表示される。キーボードショートカットで開く方法は無いようだ。プラグイン(GitHub - moguno/mikutter-subparts-image: mikutterで画像をインライン表示するプラグイン)を入れれば、Twitter公式サイトのようにタイムライン内に画像を表示できる。これは便利なので入れておきたい。プラグインのインストールは、プラグインを解凍したものを~/.mikutter/pluginに置いてmikutterを再起動すればよい。
  • タイムラインにプラグインのエラー表示が出る
    TwitterプラグインのいくつかがGTK3対応版にアップデートされているが、mikutter本体がまだGTK3に対応していないのが原因とのこと(GTKとは*3 )。GTK3に対応させるにはmikutter GTK3対応(1) 〜とりあえず動かしてみる〜 - tsutsuiの作業記録置き場を参照。GTK3対応を試みたが、手元の環境ではエラーが出て起動しなかったため、Mikutter · GitHubからエラーの出ているプラグインを探してGTK3に対応する前のコミット(だいたいは最初のコミット)にcheckoutして元のものと差し替えると、プラグインのエラー表示が消えて、エラーの出ていたプラグインが使えるようになったが「list_settings」プラグイン(リストの管理機能)だけは動作しなかった。
  • ツイートの詳細(「message_detail_view」プラグインを最初のコミットに戻したもの)の背景色は変更できなかった
    ツイートの詳細画面の背景が真っ白で目が痛いので背景色を変えたかったが、設定からさまざまな項目の背景色を変更しても、ツイートの詳細の背景色は変更できなかった。(mikutterの実行ファイルディレクトリ)/core/userconfig.rbの「mumble_basic_bg」の定義を直接書き換えれば変更できそうだったが変化しない。~/.mikutter/settings/setting.ymlに設定してもダメだった。

設定

注記が必要そうなところ

  • 表示
    「タブの位置」
    標準だとタブの見出しが横に表示される。公式サイトのアプリ画面例のようにタブの見出しを上に表示するには「上」を選択する。
  • 抽出タブ
    複数のユーザーのタイムラインを表示したいなどの場合は、ここで予め抽出条件を設定すると、その条件で抽出されたツイートが表示されるタブが出現する。設定してもすぐにはタイムラインは表示されず、しばらく放置しておくか再起動するとタイムラインが表示される。
    抽出条件にリストを指定する際は、自分がフォローしているリストがフォロー先のアカウント名で表示される。自分のアカウントのリストは表示されない。リストによっては少し時間を置かないと表示されない場合もある模様。
  • ショートカットキー(キーカスタマイズ)
    デフォルトではほぼ設定されていないので、自分の好みに応じて設定する。みんなのmikutterショートカット - Togetterに設定例があり参考になる。viライクなキーバインドにも設定できる。起動直後はペインを移動するキーが利かなかったが、一度タブキーやマウスで移動させてやると動くようになった。
  • フォント・背景色
    設定した後、再起動するか該当箇所を選択してフォーカスが当たると設定が反映された
    • リツイートした引用ツイート
      リツイートの背景色の設定項目が「背景色」→「コメント付きシェア」と「コメント付きシェア 背景色」で重複して存在しており、後から設定した方が有効になる。
      左のヘッダの設定項目が無く、黒で固定になっている。右のヘッダも、どの設定項目の「ヘッダ(右)」を変えても変化せず、これも色が固定である模様。デフォルトの背景色に設定している色との兼ね合いで、背景色を「#2B2B4D」に設定して少し見やすくなった。

不具合

まとめ

  • 導入と設定が大変・開発者向き
    Twitter公式ウェブアプリのTweetDeckが、タイムラインをマルチペインで表示できてとても便利だったので、さらに痒いところに手の届きそうなネイティブのクライアントでマルチペイン表示ができ、Linuxで動くTwitterクライアントを探していたので導入してみた。
    本来、TwitterAPIで開発をするような人のためのTwitterクライアントであり、またTwitterAPI v1時代からの「枯れた」Twitterクライアントなこともあって、現行のインストール方法や設定方法を手引きした初心者向けの解説がなかなか見当たらず、導入や設定はだいぶ大変だった。
    使ってみた感想としては、自分のような一般ユーザーがデフォルトのまま使っているぶんには、TweetDeckの方が簡単・便利で画面もリッチで高機能と感じられた。特にタイムラインを下って過去のツイートをずっと読み進められない点が残念。しかしその一方で、ネイティブアプリの打てば響くクイックな動作や、後述するようにキーボードショートカットによる操作が快適で、個人的にはそこがTwitterクライアントを選ぶ上で重要なポイントだったので、TweetDeckよりも愛用するようになってきている。

    ただし、そもそもmikutterはプラグインでその真価を発揮するものらしく、しかしながらプラグインを開発できるような技術力を全く持ち合わせないこのブログでは、その辺について全く言及できないので、プラグインでmikutterを活用したいというパワーユーザーはまた別サイトの記事を参考にしてほしい。Wikipediamikutterのページには以下のように作成できるプラグインの例が挙げられており、何だかとても便利そうである。プラグインを自分で作れるユーザーなら、機能追加が自由にできるmikutterはとても魅力的なのではないだろうか。一般ユーザーでも比較的簡単に使えてカスタマイズできるような便利なプラグインが増えてくればありがたい。

  • タイムラインのツイートをユーザ独自のデータベースに保存
  • ソケットを利用して通信を行い、外部から制御
  • あらかじめ用意された情報を自動的にツイート*4

    mikutter - Wikipedia
  • キーボードショートカットで操作ができて快適
    Twitterの各種操作がキーボードからできるのが快適。設定すれば「j」「k」のワンキーでツイートを上下移動したり、「Ctrl-f」でいいねや「Ctrl-r」でリツイート、「Ctrl-o」でツイートのリンクを開いたりと、ホームポジションから手を離さずにさまざまな操作が可能となる。
    Twitter公式サイトにもキーボードショートカットの機能は存在するが、キーカスタマイズはできないし、マルチペインでタイムラインを表示することはできない。マルチペインで表示できるTweetDeckでは、ツイートやカラムの移動が矢印キーでしかできず、*5ツイート移動がスムーズスクロールするためまどろっこしい上読みにくい*6。mikutterならマルチペイン表示で、ホームポジションに手を置いたままで操作することができ、クイックなツイート移動も含め打てば響く動作で自分のニーズを満たしてくれる。
    マウス操作や矢印キーでの操作がまどろっこしく感じる自分としては、この点だけでも、苦労してmikutterを導入した価値があった。キーボードベースでの操作にこだわりがあるユーザーにオススメしたい。
  • リプライの除外ができて快適
    抽出タブを使い、さまざまなTwitterアカウントのタイムラインを表示させて使っているが、そのアカウントのツイートのみを表示してリプライは表示しないようにできるのが快適だった。
    Twitter公式サイトの各アカウントのページにある「ツイートと返信」タブのように、そのアカウントのリプライツイートが目に入ってくるのは、電車の中で携帯電話で話しているのを端から聞かされるようなもので、そのリプライ先が知っているアカウントだったり、リプライの内容がそのTwitterアカウントの特色に関連した話題だったらいいのだが、そうでなければノイズにしか感じられない。
    リプライがさほど多くなければ気にしないが、多くなってくると本来読みたいコンテンツであるそのアカウントのツイートを読む邪魔になってくる(多過ぎるリツイートも同様)。
    同じくマルチペインであるTweetDeckには、各カラムからリプライを除外するような設定が存在せずそこが不満点だったが、mikutterではこれが除外できるのが良かった(まさに「痒いところに手の届く」機能)。
  • TweetDeckのバックアップとしても有効
    先日、TweetDeckが日本を含めた地域で限定的にダウンしたことがあった。複数のアカウントのタイムラインを一覧してチェックしたい場合に、TweetDeckダウン時のバックアップとしても有用で、確保しておきたいツールといえる。

関連サイト

*1:正確には、mikutterは現在はMastodon専用クライアントになっており、Twitterプラグインを導入することで、Twitterクライアントとして利用することができるようになっている。

*2:kuzumimizuku のブックマーク / はてなブックマーク

*3:GTKとは「GUIツールキット(=GUIを構成する部品の集まり)」のこと ウィジェット・ツールキット - Wikipediaより

*4:この機能は「予約投稿」という用途については公式Twitterに追加されてはいるものの

*5:訂正:TweetDeckのショートカットキーのヘルプには記載がないもののhjklによる上下左右移動が可能なのだが、キーバインドを変更する拡張機能を使っているせいでそれが無効化されていただけだった

*6:さらに下端でのツイート読み込み時に現在位置をロストすることがあるのも煩わしい