これは Said Kaban のゲスト投稿です — 彼はFERASETのCTO兼共同創業者です。
プロトタイプだと思われていたExpoに賭けた理由
2022年末、私が知る多くのモバイルエンジニアはExpoをプロトタイピング用のツールだと考えていました。デモやハッカソンには便利だが、本格的な開発をするなら最終的にReact Native CLIに移行する、というのが特に私たちの拠点であるトルコでの一般的な見方でした。私たちは違う見方をしました。Expoの進化を見て、ReactエコシステムでのNext.jsの軌跡に似ていると感じたのです。意見の強いマネージドレイヤーで、制限するのではなくはるかに高速に開発できる。だから私たちは全力で賭けました。
今日、FERASETはイスタンブールに拠点を置く約40人のAIコンシューマーアプリスタジオになりました。複数の国、含む米国でApp Storeの#1を獲得しました。モバイルのスタックは設立当初から全てExpoで動いています。以下はその経緯です。
正しいタイミング、正しい賭け
FERASETはAIブームが到来したタイミングで始まりました。ChatGPTが出たばかりで、DALL-Eが話題になり、Midjourneyが至る所にありました。しかしそれらはすべてウェブ中心のプロダクトでした。AIを使って何かを作るならデスクトップかモバイルブラウザ上で、ネイティブな優れたモバイル体験はまだ誰も作っていませんでした。ユーザーが本当にいるのはモバイルだと私たちは理解していました。だから速度以外に重要なものはありませんでした。磨かれたAIアプリを真っ先にストアに出したチームが勝つ。遅れる週はそのまま不利になる。小さなチームが両プラットフォームに素早く出せて、ネイティブのツールチェーンで時間を浪費しないフレームワークが必要でした。Expoがそれを可能にしてくれました。
私たちの最初のアプリ「Music AI」は、最初の1行のコードからApp Storeで公開されるまで4週間でした。フルMVPを両プラットフォームで作り、提出・承認まで完了しました。これがExpoが可能にしたスピードで、市場が混み合う前に動けた理由です。
最初のアプリが全球で1位に
Music AIはAIカバー生成アプリでした。異なる声で曲のAIカバーを作ったり、自分や身近な人のカスタムボイスを学習させて歌わせることもできました。急速に拡大し、Music AIは世界で最も優れたAIカバーアプリになりました。App StoreチャートでSpotifyを追い越し、米国や主要な欧州市場を含む複数の国でグローバル1位を達成しました。
この成功で私たちは二つを確信しました。
- モバイルAI市場は実在し、巨大であること。
- Expoは本番規模で十分に対応できること。
これが「Expoはプロトタイプ用だ」という考えを覆しました。ここから次のステップは明白でした。
スタジオとしての展開
AIコンシューマーの領域は単一アプリのマーケットではありません。ユーザーが求める体験は多様で、画像生成、動画、特定のクリエイティブツールなど用途ごとに異なります。一つのアプリで全てをカバーするのは難しい。そこでFERASETをスタジオ運営にして、特定ユースケースにフォーカスした複数のアプリを、同じコアチームでExpo上に構築する方針を取りました。
具体例:expo-ai-kit
Expo上で実際にどんなものを作っているかを示す最も分かりやすい例がexpo-ai-kitです。
expo-ai-kit:Expoアプリ向けのオンデバイスAI
私たちの全アプリは、プロンプトの洗練、コンテンツガイドラインチェック、テキスト生成などのために言語モデルを使っています。最先端モデルが必要ないタスクでもLLMを呼ぶ設計だったため、長らくすべてのリクエストでクラウドプロバイダにAPIコールしていました。それは動いたが、オンデバイスの小さなモデルで十分処理できるタスクまで推論コストを払っていたこと、そしてユーザープロンプトが必要ないのにデバイス外に送られていたことが問題でした。
iOSのApple Foundation ModelsとAndroidのGoogle ML KitのPrompt APIがこの状況を変えました。私たちが必要とするタスクの多くはオンデバイスモデルで十分に良く、しかも無料です。APIキー不要、トークン課金不要、ネットワーク依存なし。
問題は、Expoからこれらを綺麗に扱う方法がなかったことです。そこで私たちはexpo-ai-kitを作りました。これは両プラットフォームのオンデバイス言語モデルに対してシンプルなJavaScript APIを提供するオープンソースのExpoモジュールです。使用例は以下の通りです。
import { isAvailable, sendMessage } from
const available = await isAvailable();
if (available) {
const response = await sendMessage(
[{ role:
{ systemPrompt:
);
console.log(response.text);
}
ストリーミング対応で逐次的にテキストを表示することもできます:
import { streamMessage } from
const { promise, stop } = streamMessage(
[{ role:
(event) => {
setResponseText(event.accumulatedText);
},
{ systemPrompt:
);
あとは npm install expo-ai-kit、config plugin を追加すればオンデバイス推論が動きます。このライブラリは現在npmで週に数万ダウンロードを得ています。
私たちにとって、以前はリクエストごとにコストがかかっていたタスクがデバイス上で無料で動くようになり、単純なタスクの応答時間はネットワーク往復がなくなった分短くなりました。オンデバイスモデルはチップ世代ごとに能力が向上しており、クラウドからオフロードできるタスクは今後も増えていきます。
私たちはこれをオープンソースにしました。ほかの開発者も同じ問題に直面すると考えたからです。開発中に再確認したのは、expo-ai-kitは実際のSwift/KotlinコードでプラットフォームレベルのAIフレームワークと会話し、Expoのモジュールシステムを通じて統合され、config pluginとして配布されているということです。ejectやbare workflowは不要です。ネイティブに深く入る必要があるときは可能で、同時にマネージドエコシステムに留まれます。
技術より難しかったこと
私たちが直面した最大の課題はトルコの開発者エコシステムでした。開始当初、ここで働く多くのモバイルエンジニアは他のフレームワークに慣れており、Expoを本番向けに選ぶという考えはまだ浸透していませんでした。当時のエコシステムの若さを考えればそれは合理的な見解でした。経験あるエンジニアに真剣にExpoを検討してもらうには説得が必要で、採用は序盤かなり厳しかったです。単に「Expoのエンジニア募集」を出せば応募者が殺到するわけではありませんでした。Expoにオープンなエンジニアを見つけ、なぜExpoが正しい選択かを教育し、結果で示す必要がありました。
私たちはトルコでReact NativeとExpoのコミュニティを育てるために時間を割き、学んだことを共有し、Reactエコシステムがウェブでの勝ち方と同じようにモバイルで勝つと主張しました。待っているのではなく、トルコで先導したかったのです。それはうまくいきましたが、コードを書くこととは無関係の努力が必要でした。
Expoで驚いたこと
大規模な環境でのExpoのマネージドワークフローの安定性は最大の驚きでした。We're on CNG が(原文のまま)非常に助かっています。私たちは非常に速く出荷し、dev/preview/prodといった異なるビルドを頻繁に作成します。これらのビルドを作り、プロダクトチームに配布してテストや提出に回す作業は驚くほどスムーズです。
小さなチームのときはマネージドワークフローは補助輪のように感じ、いつかは外すものだと思いがちです。私たちは外しませんでした。チームは大きくなり、アプリは複雑になり、ユーザー数は数百万単位になっても、完全にマネージドのままです。利点はアプリやチームが大きくなるにつれてスケールします。
また、SDKバージョン間のアップグレードパスも想像よりスムーズでした。単一アプリをアップグレードするのは一つの話ですが、コードを共有する複数アプリを同時にアップグレードするのは調整の問題です。Expoのアップグレードツールとマイグレーションガイドはこれをかなり楽にしてくれます。正直言って、Expoチームのイノベーションの速さにも常に感心しています。file-based routing はその良い例で、開発者体験の流れを早めに捉えて実装していました。
次に何が来るか
エージェント的なコーディングの時代が本格化してきた今、Expoもそこを押しています。私たちは公式のExpo Agentの正式リリースを心待ちにしており、これがクライアント側の開発プロセスをさらに加速させると信じています。既に使っているフレームワークにAI支援開発が組み込まれるという発想は、私たちがExpoに賭けた原点そのものです。
私たちはプロダクトポートフォリオをさらに拡大していきます。AIコンシューマー領域は依然急成長中で、動画生成やモバイルでのリアルタイムAI体験に大きな機会を見ています。すべてExpo上で構築していきます。
もし小さなチームでコンシューマー向けアプリを作ろうとしているなら、私からのアドバイスはシンプルです:スタックに悩みすぎないこと。Expoを選んで、出荷を始め、プロダクトに注力してください。フレームワークはあなたとともにスケールします。私たちはイスタンブールの小さなチームから全球で1位を獲るアプリを作るまで成長しました。まだ始まったばかりです。
FERASETはイスタンブールを拠点とするAIコンシューマーアプリスタジオです。私たちのアプリはApp StoreとGoogle Playで入手可能です。AIアプリスタジオやモバイルゲームスタジオの慣行として、運用上の理由からアプリは複数のデベロッパーアカウントで公開しているため、必ずしもすべてがFERASET名義で見つかるわけではありません。