こんにちは、ばさです。今回「撮るだけ暗記カード」というアプリを作成しました。
https://www.solomaker.dev/products/db4576c7-a071-4682-8461-45ba622c18eb
AI駆動開発がある程度ハマって初めて触る言語で高速にある程度ちゃんとしたアプリを作れたので、その経験を共有したいと思います。
※従量課金を恐れている原始人なので cursor, cline などの専用エディターは使わず、Claude とのコピペ往復で開発しています。
AI を使って効率的に開発するために重要なルールは以下の2つだと考えています:
推論モデルの登場やモデル性能の向上により状況は改善していますが、やはり1回に1つのタスクだけをAIに依頼する方が精度が高いです。
ここで言いたいのは「読み取り機能と書き込み機能を別々に作れ」というような話ではありません(似た機能なら同時に作った方が効率的です)。重要なのは以下の3つを同時にAIに依頼しないことです:
「機能の作成」
「既存コードへの組み込み」
「良いコードの作成」
AI開発では通常、既存コードに「XXの機能をつけて」と投げて修正してもらい、それをコードに落とし込むという使い方が一般的でしょう。Cursor などのツールも内部ではAPI呼び出しをしているため、基本的な仕組みは似ています。
この方法は一般的な機能(ストレージへの読み書きなど)では問題ありませんが、私のアプリのような「画像をOCR」→「API(自作)叩く」→「型で受け取る」といった特殊な処理では、AIの性能が大幅に低下します。
このような特殊処理(=コア機能)については、アプリ開発を本格的に始める前に、まず動作確認用のコードを作成し、「機能の作成」を終わらせておくべきです。その後で「既存コードへの組み込み」を行うのが効果的です。実際、こういった特殊な処理は1アプリにつき1つくらいしかないため、最初にコア機能の動作確認をしてからアプリ開発を始めるのが理想的です。
これはそのままの意味ですが、AIは元のコードを参照して新しいコードを生成するため、元のコードの品質がそのまま出力の品質に影響します(生成AIの仕組みから考えても自然な挙動です)。
AI駆動開発では通常の開発と比べて何倍もの速さでコードを書けますが、それは何倍もの速さでコードが汚くなる可能性も意味します。
AIの返答は基本的に動作するものですが、根本的な修正よりも継ぎ足しで対応する傾向があります。これは動作確認する側にはありがたいのですが、必要な抽象化が行われないため、気づかないうちにコードが汚くなります。これにより「コードが汚くなる → AIの出力品質が下がる」という悪循環に陥ります。
また、コードが増えて責務がばらばらになると、AIに投げるコード量も増加します。これはコンテキスト増加による精度低下や、単純に処理するコード量が増えることによるコスト増加につながります。
ここで重要になるのがリファクタリングです。ただし、人間がするのではなく、AIに「リファクタリングしてください」と指示しましょう。意外とちゃんとした結果を返してくれます。
「1回の質問では1つのことしか実行しない」のルールからも、「機能作成」と「良いコード作成(リファクタリング)」は分けて行うのが望ましいでしょう。
AI駆動開発の効果的な流れは以下のようになります:
コア機能の動作確認
最初に特殊な処理や技術的な壁となる部分の動作確認を行い、実現可能性を確保します。小さなプログラムで核となる機能が正しく動くことを確認しましょう。
機能の作成とアプリ開発
コア機能が確認できたら、実際のアプリ開発に着手します。機能を1つずつAIに依頼し、着実に実装していきます。複数の機能を同時に依頼するよりも、「1回の質問で1つのこと」を守ることで精度高く開発できます。
定期的なリファクタリング
機能追加の合間に定期的にAIにリファクタリングを依頼し、コード品質を維持します。これにより「コードの品質低下→AIの出力品質低下」という悪循環を防ぎ、開発速度と品質を両立できます。
この3ステップのサイクルを回すことで、私のように未経験の言語でも3日でちゃんとしたアプリを作ることができました。AIのパワーを最大限に活用するには、その特性を理解し、効果的に指示を出すことがカギになります。ぜひ皆さんもAI駆動開発で開発効率を高めてみてください!
コメントはまだありません
読み込み中...