3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Uithub をヒントにローカルで使えるコード表示ツールを Go で作った

Last updated at Posted at 2025-03-28

はじめに

最近、勤務先の支援もあり AI を活用した開発を日常的に行っています。

一方で、テキストエディタはなるべくシンプルに保ちたい気持ちもあり、AI に直接コード補完を任せるのではなく、自分でコードを書いて考える時間も大切にしています。

そんな中、同僚に教えてもらった Uithub という Web サービスがとても便利でした。Git リポジトリ内のディレクトリ構造とファイル内容を AI に扱いやすい形式で表示してくれます。

Uithub のようなツールをローカル環境でも使いたいと思い、自分なりに作ってみました。


シェルスクリプトでの試作

まずはBash スクリプトで Uithub 的な出力を再現してみました。

  • Git 管理されているファイルだけを対象にする
  • ディレクトリ構造をツリー形式で表示する
  • 各ファイルの内容を見やすく出力する(行番号付き)

といったことを実現しています。

詳細は以下の Qiita 記事にまとめています:

ある程度満足のいくものができましたが、スクリプトが少し複雑になってきて、保守しにくさを感じるようになりました。テストも書きづらく、ちょっとした変更にも不安が残ります。


Go言語での書き直し

そこで、改めて Go 言語で CLI ツールとして作り直すことにしました。

ちょうどその頃、日頃から愛用しているバージョン管理ツールasdf が シェルスクリプトから Go に書き直されたことを知りました。たまたま Go を学習中だったこともあり、言語としてGoを選択しました。

CLI フレームワークには、asdf でも使われている urfave/cli/v2 を採用しました。軽量で直感的な API が特徴で、今回のようなシンプルなツールにはちょうど良い選択肢だと感じています。

ツール名は uitとしました。
後付ですが、「Uithub-Inspired Tool」とも読めます。

以下のような機能を備えています:

  • Git 管理下のファイルのみを対象に、ディレクトリツリーとファイル内容を表示
  • 各ファイルの内容には行番号を付与
  • バイナリファイルはデフォルトで非表示
  • --max-lines オプションで、ファイルごとの表示行数を制限
  • --no-tree--no-content オプションで、ツリーや内容の表示を省略可能

GitHub リポジトリはこちら: mnishiguchi/uit

自分で言うのもなんですが、めっちゃ便利です。


おわりに

自分のために作ったツールですが、もし誰かの役に立つことがあれば嬉しいです。

ツール自体も Go の勉強にもなりましたし、「既存の便利なツールの仕組みをローカルで再現してみる」というのは楽しい学びのあるプロジェクトだと感じました。

好奇心を忘れず、AIを超えていきましょう。


DSC_0082.jpg

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?