技術選択ガイド
この資料は 2025 年 11 月時点での田中正吾の雑感として書いたものです。あくまでもハッカソンでザっと AI の連携を作れるようにするために、動かして進められるような説明用の資料とサンプル群を用意した次第です。
このガイドでは、ChatGPT API を使った開発において「いつ、どの技術を使うといいか?」をお伝えします。
このリポジトリで学べる技術
ChatGPT API(基本)
なにができる?
- テキスト生成(チャット、文章作成)
- 画像認識(Vision API)
- 音声認識(Whisper API)
- 音声生成(TTS API)
- 画像生成(DALL-E API)
いつ使う?
- シンプルな会話機能が欲しい
- 画像を説明させたい
- 音声をテキストに変換したい
学習パス: Codespace のサンプル 02_api-basics/(詳しくは 02. 基本的な使い方)
Function Calling
なにができる?
- AI が「ツール」を呼び出せるようになる
- 決まった形式のデータを取得できる
- 外部 API やデータベースと連携できる
いつ使う?
基本的な使い方:
- 天気予報を取得させたい
- データベースを検索させたい
- IoT デバイスを制御させたい
データ抽出(Structured Output として):
- レシートから商品リストを抽出したい
- フォーム入力を構造化したい
- 確実に決まった形式でデータが欲しい
学習パス: Codespace のサンプル 03_function-calling/(詳しくは 03. ツールとFunction Calling、Structured Output も含む)
補足:
ハッカソンではワンショット実行(1回のツール呼び出しで完結)でもかなり使えます。発展して、複数ツールを連続実行する会話ループもできますが、実装が複雑にはなるので、まずはワンショット実行からはじめるのがおすすめです。
MCP(Model Context Protocol)
なにができる?
- 複数のツールを組み合わせた AI エージェントを作れる
- ツールを動的に追加・変更できる
- サーバレス環境でも動かせる
いつ使う?
- 複数のツールを使い分ける複雑なエージェントが欲しい
/api/messageのような API で AI エージェントを提供したい- ツールを後から追加・変更したい
- API ラッパー型のエージェントシステムが必要な場合
学習パス:
- 基礎: Codespace のサンプル
07_mcp-basics/(詳しくは 07. MCP 基礎) - API ラッパー実装: Codespace のサンプル
08_mcp-api-wrapper/(詳しくは 08. MCP サーバー実装)
補足:
MCP は強力ですよね。ただし学習コストと実装コストは高いです。ハッカソンのチャレンジの視点では、やってみるのもよいことです!ただ、ハッカソンで早めに実現して磨いていく観点では、Function Calling からはじめる方が早く形にできるのもよいでしょう。
ハッカソンでの現実的な選択
何を作りたいかで決まります。
シンプルなチャットや画像認識だけ
ChatGPT API(Codespace のサンプル 02_api-basics/、詳しくは 02. 基本的な使い方)
ツールを使わせたい(1〜3個程度)
Function Calling(Codespace のサンプル 03_function-calling/、詳しくは 03. ツールとFunction Calling)
ハッカソンではこのパターンが多いです:
- 「天気教えて」→ 天気API → 応答
- 「ライトつけて」→ IoT API → 応答
- レシート画像 → データ抽出 → JSON
ツール実行なしで純粋にデータ抽出だけしたいときは、Structured Output(response_format を使う方法)も検討できます。多くの場合、Function Calling で JSON を受け取って処理すれば十分です。
複雑なエージェント(上級者向け)
MCP(API ラッパー型)
- まず MCP の仕組みを理解したい: Codespace のサンプル
07_mcp-basics/ - すぐ使える実用的な例が欲しい: Codespace のサンプル
08_mcp-api-wrapper/
Function Calling と Structured Output の関係
じつは似ています:
両方とも「決まった形式で JSON を受け取る」という点では同じです。
違い:
| 技術 | 用途 | 実装 |
|---|---|---|
| Function Calling | ツール実行 + JSON 受け取り | tools パラメータ |
| Structured Output | ツール実行なし、データ抽出専用 | response_format パラメータ |
ハッカソンでの使い分け:
- まず Function Calling を試す: ツール実行 + JSON 受け取りができる
- ツール実行が不要なら: Structured Output も検討
- 多くの場合: Function Calling で JSON 受け取って処理すれば十分
Function Calling vs MCP
| 技術 | 実装コスト | 向いている場面 |
|---|---|---|
| Function Calling | 低 | ツールが少ない(1〜3個)、ハッカソン |
| MCP | 高 | ツールが多い、本格的なエージェント |
Function Calling:
- 実装が簡単、ツール定義がコード内で完結
- ハッカソンならこれで十分なケースが多い
MCP:
- ツールを動的に管理、複数クライアントで共有可能
- 実装コストは高いが、複雑なエージェントに適している
- API ラッパー型で実用的な API として提供できる
よくある質問
どの技術を選べばいい?
要件によりますが、ツールが少ない(1〜3個)なら Function Calling がシンプルです。ツールが多い、または将来的に増える予定なら MCP が適しています。
Function Calling で複数ツールを連続実行できる?
できますが、会話ループを自分で実装する必要があります。
以下のような感じです。
- API を呼ぶ
tool_callsがあるかチェック- ツールを実行
- 結果を
messagesに追加 - また API を呼ぶ
- 繰り返す
ハッカソンのような時間が限られた場では小さいステップアップとチャレンジとのバランスを考えてすすめましょう。複数ツール実行とはいえワンショット実行の積み重ねなので、まず各ツールのワンショット実行がしっかり動くかを検証しつつすすめましょう。
MCP の「API ラッパー型」って何?
私が勝手に名付けています。
/api/message のような API を作り、内部で AI エージェントが MCP ツールを使い分ける仕組みです。詳しくは Codespace のサンプル 08_mcp-api-wrapper/ を参照してください。
次のステップ
初心者の方:
- 01. 環境構築とセットアップ で環境を整える
- 02. 基本的な使い方 で基本を学ぶ
- 03. ツールとFunction Calling でツール実行を体験
- 必要に応じて MCP 編へ
ハッカソンで使いたい方:
- シンプルなツール実行: 03. ツールとFunction Calling
- 複雑なエージェント(上級者向け): 08. MCP サーバー実装
参考リンク
- OpenAI API ドキュメント
- Function Calling ガイド
- Structured Outputs ガイド
- MCP 公式サイト