rutoの日記: グラフィカルなコマンドラインインターフェース(2)
そもそもきっかけは、rubyによるFUSE(ユーザーレベルファイルシステム)のインターフェースfusefsを使ってなにかおもしろいことができないかというもの。
例えばlessでスラドが読めたりgrepで検索できたりとかしたらおもしろい。
全てがファイルとして表わされ、パイプで繋がれたフィルタプログラムやファイル操作コマンドで操作を行なう。古き良きUNIXスタイル。
しかし、そこで問題になるのが表示系。スラドはまだ文字中心だからいいけど、もっと細かいレイアウトとか画像の表示とかしたいサイトもある。
そもそも今のターミナルだって太字やアンダーラインを出せるようにしたり、色を付けられるようにしたり、いろいろ画面制御を発達させてきた。そしてプログラマーは昔からAAを使ってグラフィカルな表現を試みてきた。じゃあそれをそのまま発展させればいいじゃないか、という発想。
しかし欠点が1つ。
今までの場合、dateコマンドの出力が
Mon Dec 26 20:32:39 JST 2005
とかだったとする。これを見て年を抜きだそうと思ったら(本当はdateの引数でフォーマットを指定するんだけど)
date | grep '[0-9]*$' -o
とできる。
しかし、入力はテキスト、出力はグラフィックスなCLIだと一旦XML(か何か)のソースを表示して、それからどういうフィルタを掛けたらいいか決めないといけない。
つまり見たままのものからどういうフィルタを掛けたらいいかがわからない。
実はこの問題は今のターミナルにもあって、例えばGentooのコマンドラインツールは出力に色を多用するのだが、緑のアスタリスクで始まる行を抜き出そうと思ったときに色を変える制御文字が分らなくて手間取ったことがある。マウスでコピペしようと思っても色の付いてないただのアスタリスクしかコピーできない。
やはりGUIでもCLIでも見たものをそのまま操作できるというのは重要。
#ちなみに私はbashとかmakeとかのCLIも大好きですが、一方でCUIなemacsのユーザーであり、ROXやSqueakみたいなドラッグアンドドロップを多用するGUIも大好きです。
グラフィカルなコマンドラインインターフェース(2) More ログイン