screenからbyobuへ移行しようとしてわかったことと、一旦保留した理由

去年、一昨年ぐらいにscreenの設定記述スクリプトとしてbyobuというアプリケーションがあることを知った。いつのまにかそれがubuntu標準でインストールされており、たまたま見たscreenshotが美しかったこともあって移行を検討した。以下は移行しようとした経過と、なぜそれをやめたのかという理由である。

今現在のbyobuプロジェクトを理解する

byobuについての日本語のドキュメントで一番まとまっているのはこのページだと思う。

この記事をきっかけにbyobuに関するブログ記事などがいくつかあるのだが、残念なことにそのどれも情報が古すぎて現在のbyobuを理解するには不適切である。このあたりのbyobuは単なるscreenの設定ファイル編集スクリプトだったようだが、現在のbyobuはUbuntu Manpage: byobu - wrapper script for seeding a user's byobu configuration andなどを見るとscreenのメタコマンドのようになってきているようだ。
つまり、このときのbyobuコマンドは基本的に

  1. byobuのコマンドを使用して.screenrcの設定ファイルを書きだす
  2. screenコマンドでbyobuの作成した設定を用いてscreen環境を使用する

だったのに対して、現在のbyobuは

  1. byobuコマンドをscreenコマンドの代わりに利用する
  2. byobuコマンドを初めて実行したとき、.byobu/内に独自の設定ファイルを作成する*1。その設定はbyobuコマンドで作ったscreenウィンドウから簡単に変更できる
  3. byobuコマンドは単なるscreenコマンドのエイリアスだが、.screenrcの代わりに.byobu/内の設定を利用する点のみが違う

となる。しかし、本質的にbyobuはscreenと同じコマンドであるため、このbyobuとscreenがどの程度設定ファイルなどを共有しているのかが疑問だった。

byobuを実行して実験

今までいろいろと編集してきた.screenrcを残したままbyobuコマンドを実行すると、byobu的な下部二段バーと自分が行った設定が両方反映されている。一度byobuを終了して.screenrcをリネームして実行すると、今度はbyobuデフォルトの設定のみが表示され、自分の指定した設定が反映されていない。つまり、byobuコマンドは基本的に.byobu/内の設定ファイルを読むが、先に.screenrcの設定も読み込んでいるようである。今回私の.screenrcでは下部のバーに関する設定も書かれていたため、基本的には.screenrcを先に読み込んでおき、コンフリクトするような設定があると上書きするようである。

結論

生のscreenコマンドとそのメタ的コマンドであるbyobuはある程度共存できる。

なぜ私がscreenからbyobuへの移行手順となぜ私は移行を一旦放棄したのか

一つにはscreenからbyobuへ移行するのには手間がかかりすぎる、と思ったためである。現状のscreenからbyobuへの移行は次の二つのパターンが考えられる。一つは.screenrcをそのまま維持しながらbyobuを使用する方法で、もう一つはbyobuでできる設定を.screenrcから.byobu/へ移行させ、残りを.screenrcに保存する方法である。
一つ目の方法の場合、今回最初に行ったようにbyobu的外観を維持しながら今までの設定も反映できるため手軽で簡単だと思えるが、長期的に考えたとき、.screenrcと.byobu/内の設定が干渉しない保証はなく、また設定が.screenrcと.byobu/内で分散してしまう点もよくない。よってbyobuを使用するとどういった感じになるかを試すならともかく、長期的に使用するには向いていないと言える。
では二つ目の方法だが、こちらも一つ目の方法と同じく設定が分散してしまう。その上、キーバインドなど本来はbyobuで設定できるものも、一部の設定は.screenrcか.byobu/内のkeybindファイルなどに直書きするしかない。これでは設定ファイルが分散してしまうデメリットばかりが強調されてしまう。
それに対して得られるものはbyobuの多少綺麗なグラフィックぐらいで、これすらある程度screenの設定をいじっている人間にはそれほど魅力ではない。結論として、screenを使い慣れたものがbyobuへ移るのはそれほど魅力的な選択肢ではないということになる。

どういった場合、byobuが有効か

まず、screenを使ったことがない、もしくは独特の設定方法やキーバインドなどが面倒でscreenを回避していた人にとってはbyobuはまさに使いやすいscreenでありおすすめできる。また、あまり今まで.screenrcをいじってこなかったユーザーも問題なく移行できるだろう。逆にかなり.screenrcをいじっているようなヘビーユーザーは移行に非常に手間がかかることが予想される。確かにbyobuのデフォルトグラフィックは綺麗だが、どうしてもそういった見た目が欲しいか、現状でそれほど不満があるかなどを十分吟味してから移ることが望ましいだろう。

蛇足

ほとんど書いた後に見つけたのだが、ここの記事がbyobuについて割と詳しく書いてくれている。

*1:しかし基本的には.screenrcの設定をファイル分けしただけのようだ