CLIでファイルとかディレクトリを選択するツールを Go で書いた

fod というツールを Go で書いてみました。 ちみちみと書いてきて、思いの外の苦労もありましたが、コンセプトを示しつつそこそこドッグフーディング的に使えるようになってきた気がするので、GitHub で公開しました。 インストール方法やリファレンス的な事は GitHub ページの README をご覧ください。このポストでは、READMEには書かなかった補足的な雑文を書いてみようと思います。

github.com

何奴?

GUIで良くある「ファイルを開く」ダイアログみたいなことをCLIでやります。 対話的にディレクトリやファイルを選択して、そのパスを標準出力に送ります。 このツール単体では特別な意味はほとんどありません。ls や cd、rm といった、ディレクトリやファイルのパスを引数にとるコマンドと組み合わせて使うことを想定しています。 もしかしたら同じことをするアプリがありそうですが、もしご存知の方がいらっしゃいましたら、@kandayasu までお知らせ下さい。

mv $(fod)

どこかで見た気がするのですが、パーソナルコンピューティングでは、ディレクトリの移動やファイルの検索(アプリケーション的な意味ではなくて、人間が行う動作として)が操作時間の7割を占めるとか。つまり、ファイルやディレクトリの選択を効率よく、かつミスなく行えるようにすることは作業効率の向上に寄与します。 実際に、これらの操作を素早く行うためのツールやUIというのは、実に多様な手法とアプリケーションが存在しています。

なぜ作った?

たとえば、peco/peco とか junegunn/fzf というツールがあります。 fod もこれらとノリが近いと思うのですが、これらはフィルタであったりファインダと銘うたれていています。 fod はこれらと違い、File Open Dialog の名が示すとおり「ファイルを開く」ダイアログの挙動をCLIに逆輸入(?)することを目的としました。

逆に、選択する以外のことは一切行わないのがコンセプトのようなものになっています。 細かくいうと、一つのことを上手くやる小さいアプリケーションとして機能する、他のツールとの柔軟な連携を可能とする、複雑すぎる設定やオプションの指定をできるだけ省く、などといったところです。

おまちしております

もし興味があって使ってみてくださるという方は、ぜひ感想などをお寄せ下さい。 PR もどうぞ。