SatoxITSそうだ、Shellを作ろう開発:プログラマとして生まれたからにはやはり、一度は自分のshellを作ってみたいものだと思うわけです。基盤:どういう生まれ方をしたんですか。V6でしたから、V6のshellしかなかったんです。!なんとかを入れないといけない。面倒なのでカーソルで昔のヒストリに戻れるようなのを作りましたよ。それとか、プログラムのPATH同様のデータのPATHを定義して、参照したデータファイルをそのPATHで探索して開くようなこともしました。ファイル名を入れるとそのディレクトリにジャンプするとか。開発:最近はzshやsshに、大いに刺激されました。コマンドラインシェルは不滅だなという気もしました。コーディングを見るとまあ、昔ながらのCなわけです。それはそれで好きなわけですが、今はもうそういう時代では無いのではないかなという気もするわけです。重要な役割は、実行するプログラムの外部環境を整えて提供することだと思うんです。環境としてはまず、ファイルディスクリプタで与えたり、動的ライブラリとして与えたりするもの。ファイルシステムの可視性を与えるかも知れない。実行のタイミングを与えるかも知れない。開発:Unixがくれた重要な概念として標準入出力というのがあるわけです。これはコマンドのパイプラインを筆頭として、プログラムを部品化して再利用性を高めるのに大いに有益でした。そのうえ、入出力をどこにつなぐかというコーディングを各プログラムからなくすことができた。開発:例えば、shellが開いてファイルディスクリプタとしてプログラムに与えて上げられるのはふつう、ローカルファイルかパイプだけなわけです。今やもちろん、リソースもさまざまだし、つなぐのだってパイプとは限らない。標準的な引数フォーマットを解釈して前処理して、プログラムは解釈結果だけを利用するようにすれば、もっと統一性がとれるし、プログラムのコーディングも省けるはずです。社長:で実装の方針は?開発:今から作るならやはりGoベースだと思うんです。豊富なパッケージを組み込みコマンドとして使えるし。基盤:そういうのって既にあるんじゃないですかね。開発:いや、既にあるとか関係ないです。これは、自分なりのshellを作ってみたいという欲求に突き動かされているものです。実際自分なりに作って改良して行くと、既存のものには無かった何かが、必ず生まれるものです。無知や誤解はオリジナリティの父になります。この件については、既存のものがあるか調べ物はしません。開発:第一次トライアルは3日程度のスプリントで考えたいと思います。社長:何という名前にしますか。