😬
[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で、物体の名称や掃除手順が返ってくる
実際に作ったアプリ
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