思いついたらすぐカタチに「あったらいいな」を生成AIで作ってみる話
Aviutl用プラグイン・スクリプトの整理問題を解決するため、プログラミング初心者の私がClaudeとChatGPTを活用してZIPファイル自動解凍・整理ツールを開発した体験談。約3日間の開発過程で得た生成AI活用のコツと、効果的な指示出しの方法を紹介しています。
はじめに
Aviutlという動画編集ソフトを愛用していますが、そのプラグインやスクリプトはGitHubで公開されていることが多く、ZIPファイルでのダウンロードが一般的です。Aviutlの仕様上、これらのファイルは同じ階層に展開する必要があるのですが、ここで厄介な問題が発生します。
多くのリポジトリには「README.md」や「LICENSE」といった同名のファイルが含まれているため、複数のZIPを展開すると、どのREADMEがどのプラグイン/スクリプトのものか判別できなくなってしまうのです。かといって、フォルダを分けて整理することはAviutlの仕様上できません。
これまでは地道に、一つずつ解凍し、リネームを行い、新規フォルダを用意して保存する…という手作業を繰り返していました。プラグインやスクリプトはたまにダウンロードする程度なので許容範囲ではありましたが、やはり「面倒だな」という思いは拭えませんでした。
「こういう作業を自動化してくれるツールがあればいいのに」と思い、ネットで探してみましたが、解凍後のファイルを自動で整理し、同名ファイルの衝突を解決してくれる、Windows 11対応のツールは見当たりませんでした。
そこで発想を転換し、「無ければ作ればいい」という気持ちで、動画編集の合間の気分転換も兼ねて、生成AIを活用したツール開発に挑戦することにしました。使用したのはClaudeとChatGPT(どちらも無料アカウント)、開発環境はVSCodeです。
この記事では、生成AIを活用して「ZIPファイルの解凍とファイル整理を自動化するツール」を開発した過程と、その中で得た知見をまとめています。同じように「あったらいいな」を形にしたい方の参考になれば幸いです。
また、この記事が良いなと感じたら是非スキ❤をお願い致します!!!
開発したツールの機能

主な機能は以下の通りです:
READMEとLICENSEのファイルを別のフォルダにリネームして解凍する機能
解凍が完了したZIPファイルを指定したフォルダに移動する機能
必要に応じて様々な機能拡張がしやすい設計
似たようなツールが既存のものにあるかもしれませんが、少なくとも調査した範囲では、解凍と整理の両方を自動化し、Windows 11に対応したツールは見つかりませんでした。
開発言語はPythonで、私自身のプログラミング経験は過去に数十行程度のコードを書いた程度です。コードの量は900行程度で、作業の合間の息抜きとして進めたため約3日ほどで完成しました。機能実装自体は数時間程度でしたが、GUIのデザインと実装に時間を要しました(生成AIはGUI開発が苦手なようです)。
完璧とは言えませんが、個人用ツールとしては十分なものが作成できたと思います。
生成AIを活用したツール開発で得た知見
開発を通じて私が得た、AIとの効果的な協働方法を紹介します。これらは実践から導き出した具体的なコツです。
1. 詳細な仕様書を作成する
「〇〇というツールを作って」と大雑把に依頼するより、「下記の仕様書に基づいてコーディングして」と依頼する方が、圧倒的に質の高い結果が得られました。
最初は単に「ZIPファイルを解凍して整理するツール作って」と依頼したところ、AIの出力は期待通りではありませんでした。そこで「以下の情報を元に仕様書を作成してください」と依頼し、その仕様書を基にコーディングを依頼する二段階アプローチを採用しました。
仕様書には「想定するエラーケース」「処理手順の具体例」など詳細を盛り込むことで、出力の質が向上します。例えば解凍時の重複ファイル処理方法やフォルダ構造のルールを明確に指定することで、期待通りの成果を得やすくなりました。
1.1 仕様書の再確認を行ってもらう
作成してもらった仕様書には情報の抜けがある場合が多いです。
そこで、仕様書のチェックを行ってもらい必要に応じて修正を行います。
ある程度のクオリティーアップを実施してから最終的なコーディングを行ってもらうと正確です。
私は下記の様なプロンプトを使用しています。
あなたはプロのシステムエンジニア、テクニカルライターです。与えられた仕様書の内容を、以下の観点に基づいてレビューし、問題点、疑問点、改善提案を出力してください。
# レビュー観点
以下の観点に基づいてレビューしてください。
- 正確性:技術的な記述や数値、用語などが正確であるか。
- 網羅性:必要な機能や要件が全て記述されているか。不足している情報はないか。
- 明確性:記述が曖昧でなく、誰が読んでも同じように理解できるか。専門用語の定義は明確か。
- 一貫性:仕様書全体を通して、記述内容に矛盾がないか。用語や表現が統一されているか。
- 実現可能性:技術的に実現可能であるか。無理な要求はないか。
- テスト容易性:テストの実施に必要な情報が記述されているか。テストしやすいように記述されているか。
- 可読性:文章が読みやすく、理解しやすいか。図や表などが適切に使用されているか。
- トレーサビリティ:もし関連する要求仕様が分かれば、それとの関連性(追跡可能性)も考慮してください。
# 出力形式
指摘事項は以下の形式で出力してください。
## 重要度: \[高、中、低]
**指摘箇所:** \[該当箇所(例:3.2項、〇〇の部分)]
**指摘内容:** \[具体的な問題点、疑問点、改善提案]
**改善案:** \[改善の方針、挿入置換できる形式の改善案]
**レビュー観点:** \[該当するレビュー観点(例:明確性)]
# 重要度
必要に応じて、指摘事項の重要度を判断してください。
- 高:修正が必須と思われる問題点(機能不全、矛盾など)
- 中:改善することで品質が向上すると思われる点(曖昧な記述、分かりにくい表現など)
- 低:些細な誤字脱字、表現の微調整など
# その他の指示
-重要度の高い指摘事項から順に出力してください。
-改善案は仕様書の既存の内容との整合性を意識し作成してください。
-改善案が明示的に置換や挿入ができる内容ならばDiff形式で提示してください。
-レビューの出力が完了したら、自己評価を行ってください。2. 指示の曖昧さを排除する
AIは曖昧な表現があると自己解釈で進めてしまうため、具体的な指示が重要です。
例えば「ファイルを整理する」という抽象的表現よりも、「README.mdファイルは[ZIP名]_README.mdとしてDocsフォルダに移動する」といった明確な指示の方がよい結果につながりました。
また、起こりうる例外ケース(空のZIPファイル、解凍不能なファイル形式など)も事前に指示しておくと、AIの対応が安定します。
3. 明確な手順を提示する
複雑なタスクでは、実行手順を段階的に示すことが効果的です。例えば仕様書の問題点を指摘する場合、「該当箇所→問題点→解決案」の順で指示すると、AIの理解が深まりました。
具体例として「ファイルが存在しない場合のエラー処理を追加」を依頼する際には:
問題状況:ファイルが存在しない場合
発生する問題:エラーでプログラムが停止する
解決策:エラーメッセージを表示し、処理をスキップする
このような段階的思考プロセスを示すことで、AIはより的確な対応ができるようになります。
4. 情報の充足度を確認してもらう
AIが的外れな回答をする主な原因は情報不足です。「回答に必要な情報が不足している場合は質問してください」と付け加えることで、適切なフィードバックを得られました。
これにより「〇〇について詳しく教えてください」といった形で不足情報を指摘してもらえるため、自分自身の思考も整理され、問題解決がスムーズになります。AIに知識の限界を認識させ、不明点は質問するよう促すことが重要です。
5. 具体例を示す
抽象的な説明だけでなく、具体例を示すことでAIの理解度が飛躍的に向上します。特に例外処理や特殊ケースでは実例が効果的です。
例えば「同名ファイルの衝突時の命名規則」を説明する際:
「example.txtが既に存在する場合はexample_1.txtとして保存。さらにexample_1.txtも存在する場合はexample_2.txtとする」
このように明確な例を挙げることで、AIは正確に意図を汲み取れるようになりました。
6. 指示の粒度を適切に調整する
「詳細に説明して」と「簡潔に要点だけ述べて」といった指示を状況に応じて使い分けることで、AIの出力を効率的にコントロールできます。
特にコード修正では、全体コードの表示は文字数制限に抵触することがあるため、「該当部分のみ表示して」といった形式と構造の明確化が有効でした。目的に応じた適切な粒度設定を心がけましょう。
7. AIに自己検証を促す
「このコードに潜在的な問題はないか?」と質問することで、AIに自己分析を促し、見落としていたバグや改善点を発見できました。
AIは一度出力した間違いを遡って修正することが苦手で、「先ほどの回答に間違いがありました」と後から訂正することがあります。そのため「回答の論理的一貫性や正確性を再確認してください」と明示的に依頼すると、質の高い回答が得られます。
8. 複数の視点からの解決策を求める
一つの問題に対して複数のアプローチがありうる場合、「この問題の別の解決方法はありますか?」と尋ねることで、より最適な解決策を見つけられました。
例えば、GUIデザインでは「シンプルで使いやすい別のレイアウト案はありますか?」と依頼することで、複数の視点から検討したバランスの取れた設計ができました。バイアスを減らし、多角的な視点を得るのに効果的です。
9. フィードバックサイクルを短く保つ
大きな変更を一度に依頼するよりも、小さな変更を逐次確認しながら進める方が効率的でした。例えば、「まずは基本機能だけ実装して」→「動作確認」→「追加機能の実装」といった形で段階的に進めることで、途中での軌道修正が容易になります。
積極的にフィードバックを求め、必要に応じて明確化や追加情報を提供することで、開発プロセスが効率化されました。
10. エラーメッセージの活用
コードが思うように動かない場合、発生したエラーメッセージをそのままAIに共有することで、的確な解決策を得られました。エラーメッセージには問題の本質が含まれていることが多く、これを共有することでAIの診断精度が向上します。
「このエラーが出ています(エラーメッセージ全文)。どう修正すればよいですか?」という形で質問すると、具体的な修正案が得られやすくなりました。
11. 作業の分割と統合
複雑な機能は「設計→実装→テスト→統合」と分割して依頼すると成功率が高まりました。例えば、ZIPファイル処理とGUI部分を別々に開発し、後で統合する方法が効果的でした。
AIは全体像を把握しつつも、一度に処理する情報量を適切に保つことで、より質の高い成果物を生み出せることがわかりました。
12. コードの説明を求める
生成されたコードについて「この部分の動作を説明してください」と依頼することで、コードの理解が深まるだけでなく、潜在的な問題点や改善点も見つけやすくなりました。
これはプログラミング初心者の私にとって特に有用で、AIが書いたコードを単に使うだけでなく、学習の機会にもなりました。
13.カスタムプロンプトを利用する
AIにどのような回答を行ってもらうか決めるプロンプトを設定から記述できます。すべての回答に適用されるプロンプトを書くことができます。
おわりに
生成AIを活用することで、プログラミング初心者でも実用的なツールを比較的短時間で開発することができました。重要なのは「AIをどう使いこなすか」という点です。AIは私たちのアイデアを形にする優れた助手ですが、その能力を最大限に引き出すには、明確な目標設定と適切な対話が不可欠です。
明確な目的と効果的な指示があれば、AIは「あったらいいな」を現実にする強力な味方になります。皆さんも日常の「不便」を解決するツールを、生成AIと一緒に作ってみませんか?
