見出し画像

はちぽ流・AI駆動開発(暫定)

こんにちは。はちぽっぽ(@AIHAKASEAI)です。実は本業では、システムやらない人なのですが、今回は色々あってAI駆動開発に挑戦してみました。
o1 proポン出しの記事って読みづらいですね・・・。

開発手法として、色々問題もあると思うので、アドバイスください。

課金が必要なツール
Openrouter API
ChatGPT(Claude)
(Google Deep Research)

目次

  1. はじめに

  2. 開発準備:Cursorのインストール

  3. Roo-Clineの設定

  4. OpenRouterの登録

  5. コードをYAML形式に圧縮する重要性

  6. 既存プログラムを解析する場合

  7. 新規プログラムを立ち上げる場合

  8. サンプル:プロジェクト構成のYAML例

  9. まとめ


はじめに

近年、ChatGPTやLLM(大規模言語モデル)を利用したAI駆動型のソフトウェア開発が注目されています。プロトタイプを素早く作るだけでなく、既存コードの解析からリファクタリング、テストコードの自動生成に至るまで、AIを効果的に活用する事例が増えています。
本記事では、はちぽ流・AI駆動開発(暫定)として、いくつかのAIサービスをうまく組み合わせる方法や、開発体制を効率化するテクニックについてまとめます。


開発準備:Cursorのインストール

まずはエディタとして「Cursor」を利用することをおすすめします。Cursorは、AI支援付きのプログラミングエディタで、コード補完リファクタリングが非常に快適です。

  1. 公式サイトからダウンロード


Roo-Clineの設定

次に、Roo-Cline という、ローカル開発環境でAIエージェントの拡張機能を入れてください。Roo-clineを検索します。


OpenRouterの登録

AIのプロバイダを柔軟に切り替えたい場合は、OpenRouterへの登録をおすすめします。OpenRouterは、複数のLLM (ChatGPT, Claude, etc.) を共通インターフェースで扱えるサービスです。
きのぴー大先生によると、上限に引っかかりにくくなるらしい。


  1. OpenRouterアカウント作成

  1. APIキー取得

    • ユーザーダッシュボードからAPIキーを発行します。

    • .envや設定ファイルなどに安全に保管しましょう。

  2. Roo-Cline等への登録

    • Roo-Clineの設定ファイルにOpenRouterのAPIキーを登録し、今後のAPIコールを一括管理できるようにします。


コードを圧縮する重要性

AIを使った開発(生成AI・LLMなど)では、やり取りする文字数(トークン数)が膨大になると、性能低下やコスト増大のリスクがあります。そこでソースコードや設計情報をYAML形式などで圧縮表現し、入力や出力、処理フロー、依存関係を整理してからAIに渡す手法が有効です。

  • メリット

    • トークンコスト低減:無駄な文字列を含まないため、AIとのやり取りが軽量化

    • 一貫性保持:処理フローや引数・出力が明確化され、説明責任・仕様理解が向上

    • 拡張性:複数の関数やモジュールが追加されても、YAML上に簡単に追記できる


既存プログラムを解析する場合

すでにあるソースコードをAIで分析したい場合は、Roo-Clineなどで以下の指示を投げます。

コードをコピーする フォルダを読んで、全てのファイルを1つずつ読んで、 
各関数の input / output / 処理 / 依存関係 を整理して yaml形式で書き出して。 
目的はAIでコーディングするための情報の圧縮です。 
それぞれの関数を利用するときのフローもyamlにして。
AIモデル名はそのまま使ってください。# gpt-4oを勝手にgpt-4に書き換えたりするため

もし途中でやめたら改めて「1つずつファイルを読んで、yamlを書き出して」などと命令します。
下記のような感じで2000行以上もあったコードを500行のyamlに圧縮してくれました。

あとはyamlファイルを読んでリファクタリングして、などというとリファクタリングをしてくれます。

プログラム2000行以上になると、全部のコードを入れる形では、一括でリファクタリングは不可能です。
ちなみに1000行くらいであれば裏技として、Claudeのプロジェクトに全ファイルを入れることである程度対応してくれます。

新規プログラムを立ち上げる場合

1. 要件定義(目的・機能)

あらかじめ「何のために作るのか」「どのような機能が必要か」を明確に定義しておくと、AIによるコード生成がはかどります。たとえば、「自分の秘書となるようなローカルで動くwebアプリ」という例の要件を考えます。下記のような指示を出してみました。

  • 目的

    • 自分の秘書となるローカルWebアプリを作りたい

  • 機能

    1. 動画ファイルをアップロードすると、文字起こしと要約を自動で行う

    2. YouTubeのURLを指定すると、動画をDLして文字起こし・要約を行う

2. YAMLベースのプロジェクト構造化

これらの機能を実装する関数やモジュールをあらかじめYAML形式で設計し、AIエージェントに渡すことで、漏れなく実装すべきポイントを浮き彫りにします。

  • 各関数のinput/output

  • 内部処理の流れ

  • 依存関係(外部ライブラリやAPI)

  • 利用時のフローテスト項目をまとめる


ChatGPTに下記のようなプロンプトを渡します。

プロンプト

<目的>
自分の秘書となるようなローカルで動くwebアプリを作ります。
<機能>
動画を上げると文字起こしと要約を行う
youtubeのurlを貼るとDLして文字起こしと要約を行う #ここは作りたいアプリに書き換える
<タスク>
AIエージェントに渡すための下記のようなyamlを生成します。
各関数のinput output、処理、依存関係を整理してyaml形式で書き出して。目的はAIでコーディングするための情報の圧縮です。それぞれの関数を利用するときのフローと完全に漏れがないtestもyamlにして。

# ======================================================

# Project Architecture (Refined Sample)

# ======================================================

version: "1.0"

# -----------------------------------------------------

# 1. Base Services

# 下位レイヤーのサービス (AIプロバイダ、音声APIなど)

# -----------------------------------------------------

base_services:
ai_providers:
openai_service:
description: >
OpenAIのAPI(GPTなど)を利用するサービス。
入力テキストに対して高度な自然言語処理を行う。
dependencies:
- openai
functions:
process_with_gpt:
input:
- prompt (string) # GPTに与えるテキスト
- mode (string)   # 動作モード例: "summary", "qa"
output: string
description: >
与えられたテキストを指定モードでGPTに処理させ、
結果の文字列を返す。
flow:
1: "promptとmodeを受け取る"
2: "OpenAI GPTのエンドポイントにリクエストを送信"
3: "返却されたレスポンスを文字列として取得"
4: "結果の文字列を呼び出し元へ返す"

「architect.yamlを読んで実装して」とRoo-Clineに指示を渡すと実装してくれます。勝手に出来上がっていくのでマジでビビります。

ベースのコードが完成したら、yamlファイルからテストコードを書かせて、テストを実行していきます。
それでテストが通らないものは、Google Deep research、ChatGPTなどを使用して個別に対応していく形になります。

まとめ

本記事では、

  • Cursorのインストール

  • Roo-Clineの設定

  • OpenRouterの登録

  • YAML形式での圧縮設計

  • 既存コード解析から新規プロジェクト立ち上げ

  • サンプルのYAML構成例

といった流れで、AI駆動開発を効率的に進めるポイントをご紹介しました。コード全体をそのままAIに渡すのではなく、入力/出力/処理フローをYAML化してトークンを抑える手法は特に重要です。ぜひご自身のプロジェクトに取り入れてみてください。

いいなと思ったら応援しよう!