4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Iwaken Lab.Advent Calendar 2024

Day 4

AI駆動開発 ~ここ1か月AIにほぼすべてのコードを書かせていて感じたこと~

Last updated at Posted at 2024-12-04

AI駆動開発 ~ここ1か月AIにほぼすべてのコードを書かせていて感じたこと~

はじめに

こんにちは!ヘリンです!
これはIwaken Lab. Advent Calendar 2024の4日目の記事です。遅れてしまいました…

私は最近、AIを活用してプログラムのほぼ全てのコードを書かせる開発方法を自分なりのやり方で取り組んでいます。この記事では、実際に1ヶ月間でいくつかのプロジェクトを作ってみた経験から、AIを使った開発の実践的なコツや自作ツールの紹介をしていきます。あくまで個人開発やハッカソンの規模での取り組みですが、AI駆動開発の可能性について考えるきっかけになれば幸いです。

AIモデルの選定とプロジェクト事例

なぜClaude 3.5 Sonnetを選んだのか

現在、私が主に使用しているのはClaude 3.5 Sonnetです。その理由は主に以下の点にあります:

  • 10万トークンまでの入力に対応しており、プロジェクト全体のコードを一度に解析できる
  • 長文でも文脈を正確に理解し、一貫性のある出力が得られる
  • ChatGPTはトークンの制限が早く、さらに長文の解釈が不安定
  • Geminiは入力トークン数や長文の理解は優れているものの、応答速度とエラー頻度に課題がある
  • LLMのベンチマークではGeminiやgpt-4oよりスコアが低いですが、体感ではコーディング能力はClaudeが最も高く感じています

実際に作成したプロジェクト

この方法で1ヶ月の間に、以下のようなプロジェクトを作成しました:

  1. TOAGI FLOW(Web開発)
    • Reactベースのビジュアルプログラミングツール
    • LLMをデータ変換器として活用する革新的なアプローチ
    • [詳細記事は近日公開予定]

  1. VR卓球ゲーム(Unity開発)

    • 物理演算システムをAIが全面的に実装
    • テスト設計も含め全てAIに任せた
  2. リズムジオメトリー(ゲームジャム作品)

    • 2日間8人チームでの共同開発
    • AIを活用した素早いプロトタイピング

リズムジオメトリーのプレイ画面1
リズムジオメトリーのプレイ画面2
https://gamejam-god.itch.io/god

実際の開発の進め方

1. プロジェクトの設計

最初は、AIと対話しながらプロジェクトの設計を固めていきます。ここで大事なのは、プロジェクトの要件や構成をきちんと文書に残すこと。

AIとの設計相談の例
↑ AIとの設計相談では、基本的な要件から技術選定まで相談しています

例えば、最近取り組んだプロジェクトでは、こんな感じでドキュメントを整理しました:

基本的なドキュメント:

  • README.md:プロジェクトの概要
  • system-architectures.md:設計の全体像
  • user-flow.md:ユーザーの動線
  • data-models.md:データの設計
  • api-spec.md:APIの仕様

このプロジェクトでは、LLMを使う関係で以下も必要でした:

  • prompt-system.md:プロンプトの設計方針
  • integrations.md:外部APIとの連携方法
  • function-call-spec.md:Function Callの仕様
  • gemini-context-cache.md:コンテキストキャッシュの設計

これはあくまで一例で、プロジェクトによって必要な文書は変わってきます。

2. 実装の流れ

最初の実装:基本機能を作る

まずは基本機能が動く状態までを作ります。ここで気をつけているのは:

  1. AIとの対話設定を整える

    • プロジェクトの目的や方針を最初に明確に伝える
    • コーディングスタイルや命名規則を決めておく
      Claudeのプロンプトジェネレーター画面1
      image.png
      ↑ Claudeのプロンプトジェネレーターでプロジェクト用の設定を作成
      システムプロンプトの使用例
      ↑ 実際の使用例:毎回同じような返答で思考の連鎖・一貫したコーディングスタイルで開発できます。
  2. 会話の管理方法

    • 1つの会話は20往復くらいを目安に区切る
    • 大きな変更があったら新しい会話を始める
    • 次の会話では、決まったことを最初に説明する

修正と機能追加

ここで便利なのが、自作の2つのツールです:

Unityプロジェクト解析ツール

Unityツールの実行画面
↑ シーンの階層とコンポーネント情報を自動で解析している様子

生成されたMarkdown出力例
↑ AIに渡せる形式に整形された出力例

Claudeとの実際の対話

# こんなことができます
- シーンの構造を一覧できる
- コンポーネントの設定を取得
- 不要な情報は除外できる
- AIに渡しやすいMarkdown形式で出力

# 使い方
1. Unityで開発中のシーンを開く
2. ツールを実行
3. 出力されたテキストをAIに渡す
Webプロジェクト解析ツール

Webプロジェクト解析の実行例
↑ .llmignoreを使ったプロジェクト解析の実行画面

# こんなことができます
- プロジェクトの構造を見やすく表示
- .llmignoreで除外設定ができる
- ファイルの中身を整形して出力
- トークン制限に合わせて出力を調整

# 使い方
1. .llmignoreで除外したいファイルを設定
2. ツールを実行
3. 出力された内容をAIに渡す

開発のサイクル

このツールを使って、こんな感じで開発を進めます:

  1. プロジェクトの現状を把握

    • ツールで今の状態を文書化
    • 次に何を変更するか決める
  2. AIに依頼して実装

    • プロジェクトの今の状態を説明
    • 欲しい変更を具体的に伝える
    • AIの提案を実装してみる
  3. 会話を続ける

    • 10往復くらいまでは同じ会話を続ける
    • 新機能を追加するときは新しい会話を始める
    • 新しい会話のときは最新の状態を説明し直す

全体
↑このように①システムプロンプト②ドキュメント③ツールで作成したプロジェクト情報④作成・修正依頼内容

このサイクルを繰り返すことで、少しずつプロジェクトを進められます。特に、AIに今の状態をきちんと伝えることで、一貫性のある開発ができています。

まとめ:AI駆動開発の可能性と今後

この1ヶ月間、AIに主導的に開発を任せることで、いくつかの重要な発見がありました:

開発効率の大幅な向上

  • プロジェクトの立ち上げから実装までの時間が劇的に短縮
  • プロトタイプをClaudeのArtifact機能で作成することで、完成品のイメージを共有しやすい

AIとの効果的な協業のコツ

  • プロジェクト情報の正確な伝達が最重要
  • 適切なツールとプロンプトの活用で一貫性のある開発が可能
  • 人間による設計の理解と管理は必須

その他

  • 複雑なアルゴリズムや新しい知識が必要な場所など、どうしてもAIには何度やらせても正しいコードが書けない場面もごくごくまれに存在する。そこを見極めて人間が手を入れることも重要
  • 意外な収穫として、AIが提案したコードを見て、人間が「これはなぜこうなるのか?」と疑問を持つことで、自分の知識の不足や誤解に気づくこともある。新たな知識を得る機会になるため、AIとの協業は自己成長にもつながる。

AI駆動開発は、単なる「コードを書かせる」というレベルを超えて、開発プロセス全体を革新する可能性を秘めています。まだまだ発展途上の分野ですが、今後も実践と改良を重ねていきたいと思います。

最後に、この記事で紹介した自作ツールは近日中にGitHubで公開予定です。皆さんもAI駆動開発を試してみませんか?

[GitHub リポジトリへのリンク予定]

明日はさん@tksht261さんの「HCI系ドイツ短期留学記」記事です!お楽しみに!

4
0
0

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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?