😬

[iOS][個人開発] AI as a Backendをして開発スピードが上がった話

に公開

要約

MobileAppの個人開発において、BackendAPIの実装は手間がかかる。
AIをBackendAPIのように使用することで、開発のスピードを上げることができる。

始めに

モバイルアプリの個人開発において、Backend APIの設計・実装・運用は多くの工数を必要とする。
本記事では、生成AIを「Backend APIの代替」として利用することで、開発効率を上げるというアイデアと実践例を紹介する。

以下のようなユースケースで特に有効

  • シンプルなアプリの場合:そもそもBackend APIなしで完結する
  • 複雑なアプリの場合:正式なBackendを実装するまでの仮APIとして活用できる

背景

個人開発プロジェクトで、以下のようなアプリを作りたいと考えた

写真をアップロードすると、物体を認識し、適切な掃除方法を提案してくれるアプリ

しかし、自分でBackend APIを用意するスキルや時間がなかったため、OpenAIのCompletion APIを代替として利用。
これにより、以下のような形でアプリとAIが連携するように構成した:

  • リクエスト:掃除したい場所の画像と欲しい情報を伝える(プロンプト)
  • レスポンス:指定フォーマットのJSONで、物体の名称や掃除手順が返ってくる

実際に作ったアプリ
https://apps.apple.com/jp/app/snapcleanai/id6743953426

AI as a Backend

アイデア

  • OpenAIのAPIは、テキスト入力に対して自然言語または構造化データで返答してくれる
  • 「欲しいJSONの形式」と「データ内容」を明示するプロンプトを設計すれば、まるでBackend APIのようなレスポンスが得られる
  • つまり、APIを自作せずにアプリ側からダイレクトに「JSONを生成」させることで、擬似的なAPIとして使える

実装例

OpenAI APIの利用

OpenAIのアカウントを作成し、APIキーを取得

  • 公開しないアプリなら、アプリに直接APIキーを埋め込んでも問題ない
  • 公開するアプリなら、APIキーの漏洩防止のためプロキシサーバを挟む必要あり

プロキシサーバの導入

  • AIProxySwiftを使うと、簡単にプロキシサーバを立てられて便利(無料枠あり)
  • APIキーをMobileAppに直接持たせずに済むので、セキュリティ面も安心

プロンプトの設計例

たとえば、クイズアプリで以下のようなモデルを想定する

struct Quiz {
    let quiz: String
    let answer: String
}

その場合、以下のようなプロンプトを使えばAIが構造化されたJSONでレスポンスを返してくれる

以下のようなJSON形式でクイズを1つ生成してください。
返答はJSONのみでお願いします。
{
  "quiz": "クイズの問題文",
  "answer": "クイズの答え"
}

アプリ側では、このレスポンスを通常のAPIレスポンスと同様にデコードして利用するだけ。
これにより、Backendを用意せずとも機能を成立させられる。

メリットとメリット

メリット

  • 開発速度:APIの実装やデプロイが不要なので開発が速い
  • 柔軟性:プロンプトの修正だけでレスポンス仕様を変更できる
  • ローカライズ対応:プロンプトの言語を変えるだけで多言語対応できる
  • データ生成:自分に都合の良いダミーデータを簡単に作れる

デメリット

  • 羃等性がない:毎回レスポンスが微妙に変わる可能性がある(安定しない)
  • レスポンス遅延:通常のAPIより応答が遅い
  • コスト:OpenAI APIには使用料が発生する
  • 状態管理が苦手:DBと連携した複雑な状態管理は難しい
  • 信頼性の課題:AIの生成結果は必ずしも正確とは限らない

最後に

モバイルアプリの個人開発では、スピード感がとても大事。
AIをBackendのように使うことで、スピーディにプロダクトやプロトタイプを作ることができる。

業務でも、Backendがまだ整っていない段階で、フロントエンドの開発を進めることがある。
そのようなケースでも、AIを仮APIとして使用し、レスポンスを柔軟に生成できるのは非常に便利だと感じた。

Discussion