「Hello World」で挫折した10年をAIが変えた話
Introduction: 「Hello World」で挫折した10年をAIが変えた
プログラミングを学びたいと思い立ち、Pythonの入門書を買っては print("Hello World") の段階で「これが何の役に立つのか」と挫折する。そんなループを10年以上繰り返してきた。卒業後すぐに働き始め、アイデアはあっても形にする手段を持たなかった私にとって、AIの登場は単なるツールの追加ではなく、止まっていた時間が動き出すような衝撃だった。
現在はClaudeやGeminiをパートナーに据え、デスクトップアプリからSaaS開発、さらにはiOSアプリの実装まで、わずか3ヶ月で駆け抜けている。本稿では、コードが書けない人間がAIを通じて「解像度」を上げ、技術的困難を突破していくプロセスを記録する。
Struggle: タイトルバーのない「動かない文鎮」との格闘
Tauri v2とReactを用いたデスクトップアプリ開発において、UIの美しさを追求するためにOS標準のタイトルバーを非表示にする設計を採用した。しかし、これが 文鎮時計 というべき深刻な問題を引き起こした。タイトルバーを消したことで、ウィンドウをドラッグして移動させる手段が失われ、画面上に固定された「文鎮」が出来上がってしまったのである。
Geminiに修正を依頼しても、OSレベルのウィンドウ操作(data-tauri-drag-region)とフロントエンドのD&Dイベント(HTML5 DnD API)を個別の問題として処理してしまい、両者が干渉してビルドエラーを繰り返す。特に常に最前面に表示する時計アプリや、ランチャーアプリ内のアイコン移動といった複雑な挙動を実装しようとすると、AIは文脈を保持できず、解決策の提示に詰まる状況が続いた。
Insight: AIの限界は「人間の解像度」の限界である
数々のエラーログと向き合う中で、AIがなぜ「詰まる」のかという構造が見えてきた。AIは「タイトルバーを消す」という指示と「D&Dで動かす」という指示を別々のタスクとして処理しがちであり、それらが組み合わさった際のOSとブラウザエンジンの競合までを自律的に予見できない。
かつて 挫折 した程度の知識しかなかった私だが、デバッグを繰り返すうちに「AIが詰まりそうなポイント」への解像度が上がっていった。ボトルネックはコードを書く力ではなく、何が起きているかを言語化する力にある。AI時代に価値があるのは、手段としてのコーディングではなく、問題の構造を理解し、競合を回避するための設計を提示できる「思考の解像度」なのだと確信した。
Solution: 構造的競合を回避する「マスタープロンプト」の設計
TauriにおけるD&D問題の解決策として、OSレベルのドラッグ領域とフロントエンドのイベントを分離・共存させるための明示的な設計指示をプロンプトに組み込んだ。具体的には、以下の設定ファイルのように、ドラッグ領域を特定の要素に限定し、フロントエンドのイベントリスナーと衝突させない構造を定義した。
{
"bundle": {
"active": true
},
"app": {
"windows": [
{
"fullscreen": false,
"resizable": true,
"title": "Sotto",
"decorations": false,
"transparent": true,
"alwaysOnTop": true
}
]
}
}
decorations: false でタイトルバーを消しつつ、React側で data-tauri-drag-region を適切に配置し、JSの onDragStart 等と干渉させないロジックをAIに一括で設計させる。
また、SaaS開発(chatlog-converter)においては、LLMが事実密度を優先して重要な固有名詞を削ってしまう問題に対し、ユーザーが「絶対保持キーワード」を注入できる仕組みを考案した。これにより、AIの自動要約に人間の意図を強制的に介在させることが可能となった。

私の開発の歩みは、まさに沼の進化系と呼べる軌跡を辿っている。本業の効率化から始まった試行錯誤は、今や市場のニッチを突くSaaS開発へと繋がっている。コードが書けないというコンプレックスは、今も変わっていない。ただ、それが障壁でなくなった。