1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIに振り回されるな! Gemini CLIとのペアプロで循環エラー地獄から抜け出した僕の「AI調教マニュアル」

Posted at

はじめに:AIは銀の弾丸ではなかった

「調整さんのCSVをICSカレンダー形式に変換するツール? PowerShellで書けばすぐでしょ。Gemini CLI(AI)もいるし、1時間もあれば終わるな」

…数時間後、僕は頭を抱えていました。

Aを直せばBが壊れる。
Bを直せばCが壊れる。
そしてCを直せば、なぜかAがまた壊れる。

単純なはずのツール開発は、AIとの不毛なやり取りが延々と続く「モグラ叩き」の無限地獄と化していました。

この記事は、AIとのペアプロに夢破れた僕が、どうやって開発の主導権を取り戻し、AIを最高の「相棒」へと変えたかの全記録です。

同じように「AIに指示してもエラーばかりで、どうしようもない!」と困っているあなたの助けになれば幸いです。

そして、僕が開発したツールと格闘の記録は、すべて以下のGitHubリポジトリで公開しています。

なぜPowerShell?あえて「王道」を外した賢い選択

「え、そういうのって普通Pythonでやるんじゃないの?」

はい、おっしゃる通り、この種のタスクではPythonが王道です。しかし、僕はあえてPowerShellを選びました。それには、特にWindowsユーザーにとって見逃せない、明確な理由があります。

  • 圧倒的な手軽さ: Windowsユーザーなら、Windows Storeから最新のPowerShellをインストールするだけ。Pythonのように「PATHを通す」といった環境構築の面倒や、それに伴う「環境が汚れる」感覚もありません。
  • 標準機能がそもそも強力: PowerShellは、CSVやJSONのハンドリング、複雑な文字列操作といった機能を標準で備えています。わざわざ外部ライブラリを探してインストールする手間が省けます。
  • そして、地球に優しい(実行コストが低い): 一度スクリプトを作ってしまえば、定型作業は手元で一瞬で終わります。毎回AIに処理をお願いする必要がないので、APIの消費もありません。お財布にも、そしてAPIサーバーを動かす電力にも優しいのです。

手軽に始められ、強力で、エコ。Windows環境での「ちょっとしたツール開発」において、PowerShellは非常に合理的な選択肢なのです。

なぜAIとのペアプロは失敗するのか?AIエージェントの「困った特性」

ではなぜ、こんなに便利なPowerShellとAIの組み合わせで、僕は地獄を見たのでしょうか? それは、AIエージェントが持つ、人間とは異なる「困った特性」を理解していなかったからです。

特性1:驚異的に「厳密」

AIは、人間が「これくらい良いだろう」と考える曖昧さを許容しません。僕がハマったreplaceツールの失敗は、まさにこれでした。ソースコード内の空白1つ、改行コードの違いですら、AIにとっては「完全に別物」。指示が正確無比でないと、平気で処理に失敗します。

特性2:驚異的に「忘れっぽい」

AIには長期的な記憶がありません。数ターン前の会話や、修正したはずのファイル内容をケロっと忘れてしまいます。こちらが「さっき直した前提で話している」つもりでも、AIは古い情報に基づいてコードを生成し、デグレード(先祖返り)を引き起こします。

特性3:驚異的に「素直」

AIは、曖昧な指示を渡されると、それを善意で(?)拡大解釈し、とんでもないコードを生成することがあります。「よしなにやっといて」は、破滅の呪文です。

これらの特性を理解せず、人間相手と同じ感覚で指示を出すと、開発は確実にカオスになります。

AI開発の主導権を握るための「AI調教」3大原則

AIに振り回されるのではなく、人間が明確なルールで導く。AIを「魔法使い」から優秀な「アシスタント」に変えるために、僕は3つの原則を立てました。

原則1:ルールブックを与えよ(ドキュメントによる指示)

曖昧な記憶や口頭(プロンプト)の指示に頼るのをやめ、プロジェクトのルールをドキュメントに明文化しました。

development_guidelines.mdのようなファイルを作成し、「param()ブロックは必ず先頭に書く」「この正規表現を使う」といったルールをすべて書き出します。そしてAIに指示を出す際は、「このルールブックに従って作業しろ」とドキュメントを渡すのです。これはAIの暴走を防ぐ、強力なガードレールになります。

原則2:最小単位で命令し、即座に検証せよ(単体テストの徹底)

「このCSVを読んでICSを生成して」のような大きな命令は禁物です。タスクを人間が分解し、検証可能な最小単位で命令します。

「まず、この日付文字列から年・月・日を抜き出す正規表現だけ作って」

(AIが生成した正規表現を、test.ps1のような単体テスト用ファイルで即座に検証)

「OK、次は時刻を抜き出す部分を書いて」

このサイクルを徹底することで、AIの間違いを早期に発見し、手戻りを最小限に抑えられます。

原則3:常に「今の状態」を正確に伝えよ(状態の同期)

AIの「忘れっぽさ」を補うのは、人間の重要な役目です。何かを指示する前には、必ず最新のコンテキスト(文脈)を与えます

read_fileで現在のファイル内容を読み込ませ、「今、ファイルはこうなっている。この部分を修正してほしい」「過去にこのエラーで失敗したから、同じ轍は踏まないで」と、常に最新情報をインプットすることで、AIの勘違いを防ぎます。

【最重要】セッションが死んでも心は折れない!Gemini CLIの「タイムマシン」機能

これだけやっても、事故は起こります。突然のAPIエラー、PCのフリーズ、操作ミス…。AIとの対話セッションは、あまりに儚く、簡単に失われます。

しかし、Gemini CLIには、この絶望からあなたを救う強力な「タイムマシン」機能が備わっています。

1. chat save [タグ名] でセーブポイントを作る

対話の区切りが良いところで、すかさずセーブポイントを作りましょう。

/chat save wip

wip(Work In Progress: 作業中)や stable(安定版)のようなタグ名がオススメです。

2. 【超重要Tips】タグは「上書き」で使うべし!

現在のGemini CLIでは、一度付けたタグを削除できません。なので、同じタグ名で繰り返し保存し、上書きしていくのがベストプラクティスです。

  • 作業中 → /chat save wip
  • キリのいいところまで進んだ → /chat save wip
  • テストが通る安定版ができた! → /chat save stable

こうすることで、常に「作業中の最新」と「安定版」の状態にいつでも戻れるようになります。

3. listで確認し、resumeで復活!

セッションが飛んでしまっても、慌てる必要はありません。

まず、/chat listで保存したタグの一覧(遭難した時の地図)を確認します。

/chat list

そして、戻りたいセッションのタグ名を指定し、「復活の呪文」を唱えます。

/chat resume wip

これだけで、中断した対話が完全に元通り。思考がリセットされる絶望感から解放され、スムーズに開発を再開できます。このコマンドを知っているか否かで、AI開発のストレスは天と地ほど変わります。

エピローグ:AIは「魔法の杖」ではなく「最高の相棒」だった

AIは、私たちの仕事を肩代わりしてくれる魔法の杖ではありません。クセもあれば、弱点もある、少し手のかかるパートナーです。

しかし、その特性を正しく理解し、人間が明確な意思を持って主導権を握り、正しいプロセスで「協業」することで、AIは人間の能力を何倍にも高めてくれる最高の相棒になります。

面倒に見えるドキュメント化やテストこそが、結局はAIとの関係を良好に保ち、開発を高速に進める一番の近道でした。

僕がAIと格闘し、そして仲良くなっていった全記録は、以下のGitHubリポジトリに詰まっています。この記事で紹介した開発プロセスの、生きた実例としてぜひご覧ください。

vpkaerun/chouseisan-converter - GitHub

1
1
1

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?