実践編①:ChatGPTを使ったチャットアプリ開発

前回の導入編では、AIを活用したスマホアプリ開発の全体像を紹介しました。
今回はその第一歩として、ChatGPT APIを活用したシンプルなチャットアプリ開発を実践してみましょう。

スマホで動く「AIアシスタントアプリ」を自分の手で作れるようになると、
学習効率化、情報検索、アイデア生成など、日常的に役立つアプリをすぐに作れるようになります。

1. 開発の全体フロー

ChatGPTを使ったチャットアプリは、以下の流れで構築できます。

  1. 開発環境の選択
    • iOSならSwift、AndroidならKotlin、両対応なら FlutterReact Native
  2. OpenAI APIの利用準備
  3. 基本UIの作成
    • 入力欄(ユーザーの質問)
    • 出力欄(AIの回答表示)
  4. API通信の実装
    • ユーザーの入力をAPIに送信し、返答を受け取って表示
  5. 会話履歴管理の追加(任意)
    • 過去の会話を保持して文脈を理解させる

2. ChatGPT APIの基本構造

ChatGPT APIを呼び出すときの基本リクエストは以下のようになります。

POST https://api.openai.com/v1/chat/completions
Headers:
  Authorization: Bearer YOUR_API_KEY
  Content-Type: application/json

Body:
{
  "model": "gpt-4o-mini",
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "こんにちは!自己紹介して。"}
  ]
}

レスポンスとして、AIからの返答テキストが返ってきます。
スマホアプリでは、この処理をコードで実装し、UIに反映させます。

3. Flutterでの実装例

ここでは、クロスプラットフォームで使える**Flutter(Dart)**を例にします。

① パッケージ準備

http パッケージを利用してAPIと通信します。

dependencies:
  flutter:
    sdk: flutter
  http: ^1.0.0

② API呼び出し関数

import 'dart:convert';
import 'package:http/http.dart' as http;

Future<String> getChatGPTResponse(String message) async {
  const apiKey = "YOUR_API_KEY";
  const url = "https://api.openai.com/v1/chat/completions";

  final response = await http.post(
    Uri.parse(url),
    headers: {
      "Content-Type": "application/json",
      "Authorization": "Bearer $apiKey",
    },
    body: json.encode({
      "model": "gpt-4o-mini",
      "messages": [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": message}
      ]
    }),
  );

  if (response.statusCode == 200) {
    final data = json.decode(response.body);
    return data["choices"][0]["message"]["content"];
  } else {
    throw Exception("API呼び出しに失敗しました: ${response.body}");
  }
}

③ UI部分(シンプルなチャット画面)

import 'package:flutter/material.dart';

class ChatPage extends StatefulWidget {
  @override
  _ChatPageState createState() => _ChatPageState();
}

class _ChatPageState extends State<ChatPage> {
  final TextEditingController _controller = TextEditingController();
  String _response = "";

  void _sendMessage() async {
    final userMessage = _controller.text;
    final reply = await getChatGPTResponse(userMessage);
    setState(() {
      _response = reply;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("ChatGPTチャットアプリ")),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(controller: _controller),
            SizedBox(height: 10),
            ElevatedButton(onPressed: _sendMessage, child: Text("送信")),
            SizedBox(height: 20),
            Text("AIの返答: $_response"),
          ],
        ),
      ),
    );
  }
}

これで、簡単な「AIと会話できるアプリ」が完成します。

4. 改良ポイント

基礎ができたら、以下のように拡張してみましょう。

  • 会話履歴管理:過去のやり取りを配列に保持し、APIにまとめて送信
  • デザイン改善:LINE風UIにして吹き出し形式で表示
  • マルチモーダル対応:音声入力や画像生成を組み合わせる
  • コスト管理:リクエストの文字数を制御してAPI利用料金を節約

5. まとめ

ChatGPT APIを使えば、驚くほど簡単に「AIチャットアプリ」を作成できます。
今回のステップを押さえておけば、今後の発展的なアプリ開発にも応用可能です。

  • 小さなアプリでもAIを体験できる
  • Flutterを使えばiOS/Android両対応
  • 改良ポイント次第でプロダクト化も可能

👉 CTA(読者への行動提案)

  • 「この記事を参考に、自分だけのChatGPTを使ったチャットアプリを試してみましょう!」
  • 「実装結果をSNSでシェアして、どんな作品になったか教えてください!」
  • 「実践編②の画像生成AIを使った写真加工アプリ編もぜひチェックを!」

続きはこちら