Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】My experience with CLI tool

2025年09月19日に「Dev.to」が公開したITニュース「My experience with CLI tool」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

AIによる開発支援を効率化するCLIツール「Repo-snapshot」の開発経験を紹介。GitHubリポジトリのファイルをパッケージ化し、AIアシスタントと共有しやすくする。TypeScriptで開発し、commander, simple-git, globを適用。プロジェクト構造表示やコード共有に役立ち、開発効率が向上したと述べる。今後も改善予定。

出典: My experience with CLI tool | Dev.to公開日:

ITニュース解説

Repo-snapshotというCLIツールが、現代のソフトウェア開発においてどのように役立つか、その開発背景と技術的な要素について説明する。このツールは、GitHubリポジトリの内容を整理し、LLM(大規模言語モデル)と効率的に共有することを主な目的としている。

このツールの開発は、ソフトウェアエンジニアが日々のコーディングで直面する具体的な課題から生まれた。プログラムを開発する際、ChatGPTやGemini、ClaudeといったAIツールに助けを求めることは一般的だ。しかし、プロジェクトの全体像や複雑な文脈をAIツールに正確に伝えるのは難しい場合がある。断片的なコードや部分的な説明だけでは、AIがプロジェクトの意図を完全に理解できず、的外れな回答を返すことも少なくない。Repo-snapshotは、このようなAIとのコミュニケーションギャップを埋め、開発者がAIにプロジェクトの現状をより正確に伝えられるようにする目的で考案された。

開発者がこのプロジェクトのプログラミング言語としてTypeScriptを選んだのには明確な理由がある。以前、JavaScriptを用いてフロントエンドとバックエンドの開発を行うグループプロジェクトに携わった経験があり、その際にTypeScriptが提供する利点を実感したからだ。TypeScriptは、JavaScriptに「型」という概念を追加する。これにより、変数の種類(例えば、数値なのか文字列なのか)をあらかじめ定義できるため、コードを書いている途中でプログラムの潜在的な問題を早期に発見しやすくなる。例えば、本来文字列が期待される場所で誤って数値を扱おうとした場合、TypeScriptはその場でエラーを指摘してくれる。これにより、プログラムを実行する前に多くのバグを防ぐことが可能になるのだ。開発者は、この型安全性がJavaScriptよりも優れていると感じ、今後も積極的にTypeScriptを使い続けたいと考えている。

Repo-snapshotの開発は、最初は手探りの状態だったが、いくつかの強力なオープンソースライブラリを活用することで実現した。具体的には、Commander、Simple-git、そしてGlobの三つが中心的な役割を果たしている。

Commanderは、コマンドラインインターフェース(CLI)ツールを構築するための非常に広く使われているライブラリだ。CLIツールは、グラフィカルユーザーインターフェース(GUI)のようにマウスで操作するのではなく、キーボードからコマンドを入力して操作するプログラムである。Commanderを使うことで、repo-snapshot --output output.zip のようなコマンドライン引数(コマンドに与える追加情報)を容易に解析できるようになる。また、ツールが提供するコマンドやオプションを定義したり、ユーザーが--helpオプションを入力した際にツールの使い方を自動で表示したりする機能も備えている。Repo-snapshotでは、CommanderをGlobと組み合わせて、ユーザーがプロジェクトに含めたい、あるいは除外したいファイルやフォルダをフィルタリングするために利用した。

Simple-gitは、Node.jsというJavaScriptの実行環境上で動作する軽量なライブラリで、Gitコマンドをプログラムの中から実行するための直感的で使いやすいインターフェースを提供する。通常、Gitの操作はgit addgit commitのようにコマンドラインから直接実行するが、Simple-gitを使うことで、これらのGitコマンドをTypeScriptやJavaScriptのコードの中から呼び出せるようになる。Repo-snapshotでは、このSimple-gitを利用して、最新のコミット情報、現在作業しているブランチの名前、ファイルの作者、コミット日時といったGitリポジトリの重要な情報を取得する。これにより、プロジェクトのメタデータ(付加情報)をパッケージに含めることが可能となり、AIがプロジェクトの履歴や状態をより深く理解する手助けとなる。

Globは、ファイルパスを特定のパターンで検索し、マッチングさせるためのユーティリティだ。例えば、*.tsというパターンを指定すると、現在のディレクトリ内にあるすべてのTypeScriptファイル(.tsで終わるファイル)を効率的に見つけ出すことができる。このようなパターンは「globパターン」と呼ばれ、コマンドライン環境でよく使用されるワイルドカード(*?など)に似ている。Repo-snapshotでは、ユーザーが含めるべきファイルや除外すべきファイルを指定する際に、このGlobを使って複雑なファイルパスのフィルタリング処理を行っている。例えば、AIに不要なnode_modulesディレクトリや.gitディレクトリのようなファイル群を、簡単なパターン指定で除外することが可能だ。

このRepo-snapshotツールは、GitHub上のファイルやフォルダをチェックするだけでなく、プロジェクト全体を一つのまとまった形式にパッケージ化する機能も備えている。ユーザーは-oまたは--outputという引数を使って出力先のファイル名を指定するだけで、このパッケージ化されたファイルをAIアシスタントに容易にアップロードできるようになる。これにより、AIはプロジェクトの全体像を把握しやすくなり、その結果として、より的確なアドバイスの提供や効率的なコード生成が期待できる。

開発者自身も、このCLIツールの最初のバージョンが完成した後、自身のプロジェクトで積極的に活用した。Repo-snapshotがプロジェクトの構造を生成し、必要なコードだけを抽出して表示する機能は、コーディング作業を大いに助け、開発効率の向上に貢献したと感じている。これは、このツールの実用性と有効性を裏付けるものだ。

今後、開発者はRepo-snapshotにさらなる機能を追加し、自身のコーディング作業をより一層容易にしたいと考えている。このツールを継続的に改善し、積極的に使い続けることで、その価値をさらに高めていく意向だ。自身の開発経験から生まれた課題を解決するためにツールを自作し、それを発展させていくというプロセスは、システムエンジニアとして非常に有意義な取り組みである。

関連コンテンツ

関連IT用語