OpenAI Sora for Android: Codexを使用して28日間で構築
OpenAIは、4人のエンジニアからなる小規模なチームとGPT-5.1-Codexモデルを使用して、Sora Androidアプリの本番版を28日間で開発し、プロトタイプから世界規模のリリースへと移行しました。この急速な開発サイクルは、AI支援エンジニアリングが高い信頼性を維持しながら個人のインパクトを劇的に高められることを示し、クラッシュフリー率99.9%のアプリが生まれました。
AI駆動開発ワークフロー
OpenAIはCodexを「新しく採用されたシニアエンジニア」として扱い、手動でのコード作成ではなく、コードの指示とレビューに焦点を当てました。チームは、Codexが限定された範囲内での重い作業では優れているものの、高レベルのアーキテクチャの決定やユーザーエクスペリエンスについては人間のガイダンスが必要であることを発見しました。
Codexの能力と強み
- Rapidコードベース分析: Codexは複数のプログラミング言語にわたる大規模なコードベースを素早く読み取り、理解できます。
- テストカバレッジ: モデルは、回帰を防ぐために幅広い種類のユニットテストを書くのに非常に効果的です。
- フィードバック統合: CodexはCI失敗ログが提供されると、迅速に修正案を提案できます。
- 並列実行: チームは複数のCodexセッションを並行して実行し、再生、検索、エラー処理などの異なるモジュールを同時に処理しました。
- リサーチと最適化: CodexはSDKを調べてビデオプレーヤーのメモリ最適化を提案し、最終的なアプリのメモリフットプリントを最小限に抑えるために使用されました。
制限と人間の要件
- 直感の欠如: Codexは述べられていない好み、製品戦略、または内部の規範を推測することはできません。
- 経験のギャップ: モデルはアプリを実行して、ユーザーフローが混乱しているか、スクロールが「変」だと感じることはできません。
- アーキテクチャ判断: ひとりで放置すると、Codexは長期的なクリーンさよりも即時の機能を優先し、不要なビューモデルや間違った場所に置かれたロジックを導入する可能性があります。
技術実装戦略
アプリの保守性を確保するため、エンジニアチームはAI生成を活用する前に堅固な基盤を築くことに焦点を当てました。
手動による基盤とパターン設定
エンジニアは、アーキテクチャ、モジュール化、依存性注入、ナビゲーション、認証、および基本ネットワークフローを含むシステム設計を手動で実装しました。その後、いくつかの代表的な機能をエンドツーエンドで記述し、「正しい」例として使用しました。このアプローチにより、Codexによって書かれたコードの約85%がチームの確立された標準に従い、高コストのリファクタリングを回避することができました。
プランニングループ
非自明な変更については、チームはCodexが長時間無監督で作業できるように、マルチステップのプランニングワークフローを実装しました:
- システム理解: Codexに、機能の仕組み(たとえば、APIからUIへのデータフロー)を要約してもらいました。
- 改善: 人間がモデルの抽象化とレイヤーの理解を修正しました。
- 実装計画: Codexは、ファイルの変更と状態の導入を詳細に記述したミニチュア設計ドキュメントを作成しました。
- 実行: Codexは計画をステップバイステップで適用し、コンテキストウィンドウの制限にわたって一貫性を保つために、計画をファイルに保存しました。
AIによるクロスプラットフォーム翻訳
OpenAIは、既存のSora iOSアプリをAndroidバージョンの主要な真実のソースとして活用しました。FlutterやReact Nativeなどの共有抽象化フレームワークを使用する代わりに、チームはCodexを使ってSwiftからKotlinへのロジック翻訳を行いました。
- ロジックの移植性: チームは、アプリケーションロジック(データモデル、ネットワーク呼び出し、検証ルール)がプラットフォーム間で一定であるという原則を利用しました。
- コンテキストプロンプティング: CodexにiOSのモデルとエンドポイントを読ませ、既存のAPIクライアントとモデルクラスを使用して同等のAndroid実装を提案するように促しました。
- クロスリポナビゲーション: チームは
~/.codex/AGENTS.mdファイルを使用して、CodexがiOS、バックエンド、Androidのリポジトリ間を発見し、ナビゲートできるようにしました。
ソフトウェアエンジニアリングへの影響
このプロジェクトにより、開発のボトルネックがコードの記述から意思決定、フィードバック提供、変更の統合へとシフトしました。OpenAIは、AI支援開発が機能的な目標を迅速に達成するというAIの主な目的のため、システム理解とアーキテクチャにおける人間の厳格さの必要性を高めると結論付けています。ソフトウェアエンジニアの役割は、ボイラープレートと退屈なタスクを処理するAIエージェントを管理する「指揮者」へと進化し、人間はスケーラブルなシステムと複雑なアルゴリズムに集中できるようになります。