treeコマンドをいい感じにしたツールを作ろうと思っていました

treeコマンドをいい感じにしたツールを作ろうと思っていました

違和感のあるタイトルから始めます。どうもbannzaiです。趣味はコーディングでよくGitHubに作ったもの。作りかけた物をあげています。

treeコマンドをいい感じにしたツールを作ろうと思っていました というタイトルなのですが、今回は「なんか一応動くものできたし、作ろうと思っていた機能は実装したけど、たぶんこれ俺使わないな」ってものができてしまいさてどうやって供養しようか。と思っていてこのようなタイトルになっています。

しかしこの事実と作ったソフトウェアである itreeOSSにすることは無関係だったのでOSSにはしてあります。みんなよかったら何かの参考にしてね。ってテンションでこのブログを書いていこうかと思います。

tree

まず tree コマンドの説明ですが、このwikipedia)を読んでください(雑)。*tree コマンドの実行結果を見るとわかりやすいです。下の例では2階層分だけ表示しています。

$ tree -L 1                                                                                                                                                                  
.
├── LICENSE
├── Makefile
├── README.md
├── go.mod
├── go.sum
├── main.go
└── pkg
    ├── file
    ├── parser
    └── ui

tree コマンドは上記のように $ tree [options] でファイルをツリー構造で標準出力してくれるツールになっています。

itree

さて、次に itree の紹介です。これがこのブログで紹介する私が作ったOSSのツールになります。 $ tree$ ls よりもファイルシステムの階層構造を確認するのに適しているコマンドと言えます。これをターミナル上からインタラクティブに操作できたら便利なのでは。というモチベーションで作りました。

詳しくはREADMEをご覧になってください。 できることを過剰書きで書くと

  • ツリー構造を維持し続ける
  • ファイル・ディレクトリのパスをコピー
  • ファイル・ディレクトリ追加
  • ファイル・ディレクトリの名前変更
  • ツリー構造を移動する時に文字列検索で対象を絞り込める
  • 選択している項目に対して $ open の実行
  • 選択している項目を $EDITOR で開く

何が足りないのか

元も子もない事を言うようですが、このライブラリ作成の発端はtview というGo製の TUI を簡単に組むためのライブラリに興味があって使ってみたかった。からだったのです。
tview→なにか作るか→なんか tree とかいい感じにできるんじゃね。って流れで作りました。

ちなみに個人開発なので手段(技術)が目的になってしまうのは特に悪いことだと思っておらず、むしろチャレンジする物によっては良いことだと思っているで何も後悔も反省もないのですが、いざ作ってある程度形になっていくうちに「tviewも大体分かったしこれもうここで終わりでいいんじゃね」となり、一応は形としてできているしブログ書いて残しておきたいな。って気持ちになっており今に至ります。

あと振り返ると「これが手段(技術)が目的となった物の末路かあ」っていうのを(何もリスクが無い場面でですが)身を持って体験できたのは良かったかなと(ポジティブ)

というわけで 何が足りないのか って問に対しては 私自身が普段ターミナル上で$ treeを使用する上で何を課題に感じていたのかの把握 がそもそも足りなかった。って感じですね

まとめ

なんか 供養 と聞くと失敗作の成れの果て、みたいなイメージですがこのプロジェクトは成功です。なぜなら使いたかったライブラリの使い方は一通りわかったから。うん。そう思おう。

個人的に TUI はちょっと心くすぶるものがあるので何か便利ツールを量産していけたら良いなと思っています。
みなさんも TUI でツールを作る機会があったら itree のことを思い出してみてください。何か参考になれば嬉しいです。

はい。つまり僕が言いたいのは次の一言です。

スターください 🌟

おしまい\(^o^)/