芋出し画像

AIに䞞投げしたら8぀倱敗した話非゚ンゞニアの奮闘蚘録


これは目を芆いたくなるような倱敗談だ。

目的はシンプルで、328MBのPDFを200MB以䞋に圧瞮しおNotebookLMに入れるこずだった。
スクリプトは完成した。ただし、やり方はほが党郚間違っおいた。

同じ鉄を螏たないためにも蚘録に残そうず思う。

この蚘事では、その倱敗から逆算した8項目のチェックリストをたずめる。
3぀は本文で詳しく解剖する。残り5぀は付録でたずめお確認できるようにした。


たずめ

この蚘事はベストプラクティス通りの開発蚘録ではない。
「こうやったら倱敗した」ずいう芳察蚘録だ。
コヌドは配垃しない。手順の再珟性も保蚌しない。
同じ倱敗をした人の参考になれば、それで十分だ。


倱敗たでの経緯

Claudeに「PDF圧瞮ツヌル䜜っお」皋床の粒床で䞞投げをした。

筆者の成功䜓隓ずしお、PDFのサムネむルをコンタクトシヌト颚にレむアりトするミニアプリ。぀以䞊のPDFをただ結合するだけのミニアプリ。Illustrator䞊で特定の動きをさせるスクリプトなど、ちょこちょこAIによるコヌディングを行っおいた。

そのため、今回も簡単に䜜れるだろうず思い蟌み、気軜にClaudeに頌んだ。ただ、PDFの圧瞮には萜ずし穎がいく぀も甚意されおいた。


倱敗の倧本カスタム指瀺・プロゞェクト指瀺ぞの盲信

カスタム指瀺やプロゞェクト指瀺には「最適かどうかを疑え」「巚人の肩に乗れ」「車茪の再発明をするな」ず曞いおいた。
それでも機胜しなかった理由は単玔で、
カスタム指瀺は1回の入力に察しお1回しか刀断しないからだ。

ツヌルを䜜っおず投げた瞬間、AIは䜜り始める。
「ラむブラリを比范したか」ずいう問いが挟たる䜙地はない。
刀断のトリガヌを自分が匕いおいなかった。
カスタム指瀺は刀断を代行しない。刀断のきっかけを䞎えるだけだ。


AI開発倱敗①プロゞェクト倖で始めた

最初の刀断ミスは、玠のチャット画面で始めたこずだった。

Claudeにはプロゞェクト機胜があり、プロゞェクト内で䜜業するず
蚭定ファむルやナレッゞが自動で読み蟌たれる。
玠のチャット画面ではそれが起きない。

「巚人の肩に乗れ」ず曞いたナレッゞも、
「ラむブラリは比范しおから遞べ」ずいうチェックリストも、
どちらも読たれなかった。


AI開発倱敗②ラむブラリ比范を省略した

「PythonでPDFを圧瞮したい」ずClaudeに投げるず、
最初に出おきたのがpypdfだっため、そのたた䜿い始めた。

pypdfはPDFの読み曞きには䟿利なラむブラリだが、
画像を盎接曞き換えるAPIに制玄がある。
この壁に䜕床もぶ぀かり、その郜床同じラむブラリの䞭で
回避策を探し続けた。

これは出力圧ず関係した「AIの慣性」ず蚀う別の問題も内包しおいる。
そのこずは別の蚘事で述べたい。

䞀床決たった方向を倉えるには、明瀺的なトリガヌが必芁だ。「3回詰たったらラむブラリごず芋盎す」ずいう指瀺を最初から入れおおけば違った展開になっおいたかもしれない。


AI開発倱敗③動䜜確認を数倀で芋なかった

圧瞮ツヌルが動いお、ファむルが出力された。
しかしファむルサむズは倉わっおいなかった。

凊理はスキップされおいたが、゚ラヌも出なかったし、
ログも正垞に芋えた。

「動いおいる」ず「正しく動いおいる」は別だ。


䞞投げでも完成する理由

それでも、動くものができた。ラむブラリ遞定を倱敗しお、UIから䜜り始めお、1セッションで党郚やっお、それでも完成した。

なぜか。 具䜓的な問題があったからだ。

「PDF圧瞮ツヌルを䜜りたい」ずいう抜象的な目暙ではなく、「この328MBの発掘調査報告曞をNotebookLMに入れたい」ずいう具䜓的な問題があった。

実際のPDFを枡しお「瞮たない」ずいう事実があった。 具䜓的な問題があるず、AIは蚺断できる。蚺断できるず、原因が特定できる。原因が特定できるず、次の䞀手が出る。

抜象的な目暙に䞞投げしおも汎甚的なコヌドが出おくるだけだ。具䜓的な問題に䞞投げするず、その問題に特化した解決策が生たれる。

這々の䜓でも完成したのは、ベストプラクティスを螏んでいたからではない。問題が具䜓的だったからだ。

結び

完成したのは圧瞮ツヌルだけではなかった。

8぀の倱敗が、8項目のチェックリストになった。
倱敗は蚘録するず資産になる。次に同じこずをやるずき、
同じ堎所で同じ時間を倱わないために䜿える。

あなたがAIずコヌドを曞いお䞀番時間を倱った堎所はどこだろうか。
蚭蚈か、怜蚌か、ラむブラリ遞定か。それずも別の堎所だろうか。

こんな蚘事も曞いおたす。良ければお読みください。


FAQ

Q. AIにコヌド生成を頌む前に最初に決めるべきこずは
A. 仕様・成功条件・怜蚌方法の3぀だ。コヌド生成前にこれを決めるだけで、迷走の倧半は枛る。

Q. カスタム指瀺だけで開発品質は䞊がる
A. 䞊がるが䞇胜ではない。カスタム指瀺は刀断を代行しない。刀断のトリガヌを匕くのは自分自身になる。

Q. ラむブラリ比范はどの皋床やれば十分
A. 最䜎2〜3候補を比范したい。埌から倉えるず、それたでの実装が無駄になるこずが倚い。


付録ベストプラクティスず今回の比范

$$
\begin{array}{|l|l|c|}
\hline
\text{ベストプラクティス} & \text{今回やったこず} & \text{結果} \cr
\hline
\text{仕様曞を先に䜜る} & \text{䞞投げで即実装} & \text{❌} \cr
\hline
\text{小さく分割しお反埩} & \text{1セッションで党郚} & \text{❌} \cr
\hline
\text{コンテキストを明瀺的に枡す} & \text{ラむブラリ遞定の文脈なし} & \text{△} \cr
\hline
\text{出力を評䟡・怜蚌する} & \text{蚭蚈の怜蚌がなかった} & \text{△} \cr
\hline
\end{array}
$$


次回から気を぀けるこず詳しくは別蚘事で

プロゞェクト内で䜜業する玠チャット犁止

今回はナレッゞなしで始めた。チェックリストも巚人の肩の話も、党郚眮いおきた状態でスタヌトしおいる。

ラむブラリは3候補比范しおから遞ぶ

pypdfを即採甚した結果、pymupdfずいう最適解を芋萜ずした。最初に比范しおいれば到達たでの時間が倧幅に短瞮できた。

察象デヌタのフォヌマットを先に蚺断する

PDFの䞭身を調べずに実装を始めたため、CCITTFaxDecode・JPXDecode・JBIG2・CMYKず問題が連鎖しお出おきた。最初の10分で蚺断スクリプトを曞けばよかった。

UIは最埌に乗せるロゞック単䜓テストが先

UIを先に䜜ったせいで「動いおいるように芋えるが圧瞮されおいない」状態が長く続いた。ファむルサむズを数倀で確認するステップが最初からあれば早期に発芋できた。

3回詰たったらラむブラリごず芋盎す

AIの慣性が働く。䞀床pypdfで始たるず「pypdfの䞭で解決する」方向に進み続ける。3回ずいうトリガヌを蚭けるこずで匷制的に立ち止たれる。

セッションはタスク単䜍で分ける

蚺断・実装・デバッグを1セッションでやり続けた結果、レヌトリミットに䜕床も匕っかかった。䌚話履歎の蓄積が䞀番重い。

bashの出力は絞る

蚺断スクリプトで党ペヌゞの詳现を出力し続けたためコンテキストが膚らんだ。printを絞るだけで同じ情報量を半分のトヌクンで埗られる。

動䜜確認は数倀で行う

「動いおいる」ず「正しく動いおいる」は別物だ。今回は圧瞮されおいない状態が長く続いた。before/afterのファむルサむズを毎回確認するだけでいい。


出兞

  • Addy Osmani「AI-Assisted Development Workflow」2025

  • Andrej Karpathy「Context Engineering」2025

  • Thoughtworks「Vibe & Verify」2026



「カスタム指瀺の話を曞きながら、刀断っお委譲できないものだなず思っおいた。枡せるのはきっかけだけで、匕き金を匕く人間が必芁なんだよね。」
「AIっお答えを出すのは埗意だけど、『今その質問でいいの』たでは止めおくれない。その感芚、意倖ず芋萜ずしがちだなず思いたした。」

いいなず思ったら応揎しよう