AIアプリ開発事例:Cuplikinの構想からリリースまで
自社開発のAI動画クリップアプリCuplikinの開発記録。5週間でMac App Storeに公開、Appleの審査リジェクトを経て、Flutterの単一コードベースでiOS・Androidへ展開した過程を正直にまとめました。
このブログの記事の多くは、ソフトウェア開発会社とどう協業するかをテーマにしています。今回は趣向を変えて、私たち自身の「台所」をお見せします。Cuplikinは、私たちが自社で開発・リリースしたAI動画クリップアプリです。長尺動画を、SNSにそのまま投稿できる短いクリップに変換するアプリで、見どころ探しをAIがサポートします。
本記事は製品パンフレットではありません。プロセスの記録です。どんな課題を解決したかったのか、初期にどんな判断をしたのか、何が想定より時間がかかったのか、そして次に何を変えるのか。アプリ開発、特にAIを組み込んだアプリの開発を検討されている方にとって、舞台裏で実際に何が起きるのかを知る参考になるはずです。各ステップは経営者のためのSDLCで解説しているものと同じです。
解決したかった課題
長尺動画からショート動画を作ったことがある方なら、あの感覚をご存じでしょう。1時間分の素材を見返し、「刺さる」部分を探し、切り出し、字幕を1語ずつ打ち込む。退屈で時間のかかる作業ですが、その出来がコンテンツが見られるか、スキップされるかを大きく左右します。
同様のツールはすでに存在しますが、そのほとんどがクラウド型です。動画を第三者のサーバーにアップロードし、そこで処理され、動画の分数に応じて料金を支払います。動画のサイズが大きい、内容が機密性の高い、あるいは単に自分のファイルを自分で管理したいクリエイターにとって、このモデルは使いにくいものです。
そこからCuplikinのコンセプトが生まれました。動画と編集結果はユーザーの端末に残す。最も退屈な作業、つまり見どころ探しと字幕の準備にはAIを使い、最終的な判断はユーザーが行う、というものです。
ディスカバリー:バージョン1のスコープを絞る
いつものように、最初の機能リストは長大でした。ブランド情報の活用、本格的なタイムライン編集、SNSへの直接投稿など、どれも紙の上では魅力的に見えました。
最終的に、バージョン1は1つのコアフローに絞り込みました。
- 元動画を選ぶ(ローカルファイル、またはYouTubeのリンクから)。
- 単語ごとのタイムスタンプ付きで自動文字起こし。
- AIがクリップ候補となる見どころを提案。それぞれにスコアと短い理由を添える。
- ユーザーが見どころを選び、文字起こしと字幕を整え、アスペクト比(9:16、1:1、16:9、4:3)を選ぶ。
- 字幕を動画に焼き込んだクリップを、ウォーターマークなしで書き出す。
それ以外の機能は順番待ちリストへ回しました。考え方はMVPとフル機能プロダクトの違いで書いたものと同じです。最初のバージョンは、私たち自身のアイデアをすべて満たすためではなく、実際のユーザーから学ぶのに十分であればよいのです。
正直に言うと: 当初の計画書では、モバイル版は最後の「V4・優先度低」に置かれていました。実際には、Mac版のリリースから2か月足らずでiPhone、iPad、Android版が続きました。計画が間違っていたのではなく、最初に選んだアーキテクチャのおかげで、モバイル展開が想定よりはるかに低コストで済んだのです。初日のアーキテクチャ判断が、3か月目に取れる選択肢を決めます。
判断1:Flutterで、デスクトップとモバイルを1つのコードベースに
コードを書く前に、デスクトップアプリの選択肢としてFlutter、Tauri(Rust+Web)、Electronの3つを比較しました。基準は「どれが最先端か」ではなく、重い動画処理、柔軟なAI連携、将来のモバイル展開という3つの要件に最も合うのはどれか、でした。
| 選択肢 | 強み | 採用しなかった理由 |
|---|---|---|
| Electron | デスクトップ向けのエコシステムが成熟 | アプリが重く、モバイルには別の技術スタックが必要 |
| Tauri | 軽量で、ネイティブ処理にはRustが強い | チームにとって新しい技術スタックで、モバイル対応もまだ発展途上 |
| Flutter | デスクトップ+モバイルを1つのコードベースで、チームに経験があり、FFmpegとWhisperのプラグインもある | 採用 |
「すでに経験がある」という要素は、意図的に評価に含めました。新しい技術スタックの習得は現実のコストであり、早くユーザーに届けたいプロダクトでは、ベンチマークよりもチームの経験の方が効くことが少なくありません。これはお客様へのアドバイスでもあります。話題性ではなく、自分たちのチームが保守できる技術スタックを選んでください。
判断2:ローカルファースト、クラウドは必要な部分だけ
これがCuplikinで最も重要な判断です。Whisperによる文字起こし、FFmpegによる動画のカットとレンダリングは、ユーザーの端末上で直接実行されます。プロジェクト、動画、書き出したファイルはローカルに保存され、期限切れになることはありません。
バックエンドもありますが、その役割は限定的です。アカウントとログイン、クレジットとサブスクリプション、組み込みモードを選んだユーザー向けのAIによる見どころ分析、そしてYouTubeリンクの解決です。見どころ分析のために動画がアップロードされることはなく、サーバーに送るのは必要最小限のデータだけです。
この判断は、3つの面で大きな効果をもたらしました。
- プライバシー。 見どころ分析のために動画をアップロードする必要はなく、重い処理は端末上で完結します。クラウド型ツールとの明確な違いです。
- コスト。 最も重い計算処理である文字起こしとレンダリングはユーザーの端末が担います。私たちのクラウドコストは、小さく計測可能な部分だけになりました。詳しくはAIプロダクトの運用コストで解説しています。
- AIの柔軟性。 ユーザーは私たちの組み込みAIを使うことも、OpenAI互換の任意のAIプロバイダーを接続することもできます。Mac上でOllamaを使ったローカルモデルにも対応しています。
代償もあります。Mac版CuplikinはApple siliconのみ対応です。採用したWhisperプラグインが、Intel向けのユニバーサルビルドにまだ対応していないためです。リリースを遅らせるより、その制約を受け入れることを選びました。
アーキテクチャ:最初から整理を強制する
Cuplikinは20以上のパッケージからなるワークスペースとして構築しており、レイヤー(domain、data、presentation)と機能(プロジェクト、文字起こし、フック検索、エディタ、設定、課金)ごとに分割しています。禁止されたレイヤー間のimportを拒否するスクリプトがあり、本記事の執筆時点で、アプリ側に約1,270件、バックエンド側に約200件の自動テストがあります。
生まれたばかりのプロダクトには過剰に聞こえるかもしれません。しかし、これこそがモバイル版を素早く作れた理由です。ビジネスロジックと状態管理はそのまま再利用し、新たに書いたのは小さな画面向けの表示レイヤーだけでした。この分離がなければ、「モバイル版」はアプリの半分を書き直すことを意味していたでしょう。
バックエンドは、Fastify上のNestJS、PostgreSQL、ジョブキュー用のRedis、メディア処理用の独立したワーカーで構成しています。すべてDockerで1台のサーバー上で動かしています。派手なアーキテクチャではありませんし、その必要もありません。
想定より時間がかかったこと
App Storeの審査。 Cuplikinの最初のコミットは2026年8月10日、Mac App Storeでの公開は2026年9月16日で、約5週間後のことです。ただしその間、9月12日にAppleから一度リジェクトを受けました。審査担当者はmacOSでのログインウィンドウの挙動を指摘し、実機で撮影した画面録画付きで、明確なアカウント削除フローを求めてきました。両方を修正し、録画を添えて再提出したところ、2日後に承認されました。
教訓:ユーザーアカウントのあるアプリでは、アカウント削除フローを最初から用意しておくことです。これは追加機能ではなく、ストアに載るための前提条件です。
macOSのサンドボックス。 当初の計画では、ユーザーのPC上のDockerコンテナ内のツールでYouTube動画をダウンロードする予定でした。しかし、App Storeのアプリはそのような外部プロセスを実行できません。この機能は最終的にバックエンドのリゾルバーサービスへ移り、一時ファイルはダウンロード後に自動削除される仕組みになりました。一見小さな技術的判断が、アーキテクチャ全体の地図を描き直したのです。
サブスクリプションのプラン構成。 一時期はFree、Standard、Proの3段階がありました。10月初旬、Standardは価値を増やすどころか混乱を招くだけだったため、完全に廃止しました。現在はFreeとPro(週額・月額・年額)、そしてクレジットパックのみです。選択肢が少ない方が、説明しやすく、保守もしやすいことがわかりました。
リリースの歩み
| 日付 | マイルストーン |
|---|---|
| 2026年8月10日 | 最初のコミット |
| 2026年9月12日 | App Reviewでリジェクト(ログインウィンドウ、アカウント削除) |
| 2026年9月16日 | Mac App Storeで公開、バージョン1.0 |
| 2026年9月17日 | バージョン1.0.2、リリース後の修正 |
| 2026年10月7日 | バージョン1.2.0:AppleとGoogleでのサインイン、Proの週額プラン、アナリティクス |
| 2026年10月11日 | 初のiOS版(1.2.1)をApp Storeに申請 |
| 2026年10月12日 | 初のAndroidリリースに向けてGoogle Playの掲載情報を準備 |
このリズムは私たちにとって自然なもので、お客様にご提案している進め方でもあります。何か月も沈黙した後の大々的なローンチではなく、小さなリリースを頻繁に重ねることです。
次にやるなら変えること
- ストアの要件を初日から準備する。 アカウント削除、プライバシーポリシー、審査担当者向けのデモアカウント。最後になって考え始めると、最後に時間を食います。
- クラウドとの境界を早めに決める。 「この機能は端末で動かすのか、サーバーで動かすのか」という問いは、パッケージングの段階ではなく、設計段階で答えるべきです。
- 料金プランは最初から少なくする。 Freeと有料プラン1つから始め、ユーザーのデータが求めたときにだけプランを増やします。
変えないこと:Flutterの採用、ローカルファーストのアプローチ、そして早い段階からレイヤーを分離する規律です。この3つがあったからこそ、小さなチームで2か月のうちに4つのプラットフォームへ届けることができました。AI部分の仕組みについては、Cuplikinを支えるAIパイプラインをご覧ください。
次のステップ
ディスカバリー、スコープの絞り込み、アーキテクチャの選定、ストアへのリリースまで、Cuplikinで私たちがたどったプロセスは、お客様のプロジェクトで使っているものと同じです。AIの有無にかかわらず、アプリのアイデアをお持ちでしたら、無料の初回相談としてお問い合わせフォームからお聞かせください。WhatsAppでのご連絡(インドネシアで最も普及しているチャットアプリです)や、メール(hello@rancanginaja.com)でも承ります。サービス内容もあわせてご覧ください。
よくあるご質問
Cuplikinとは何ですか?
Cuplikinは、Rancangin Ajaが開発した、長尺動画を短いクリップに変換するアプリです。AIがクリップにすべき見どころを見つけ、ユーザーがそれを選び、字幕を整えて書き出します。Mac、iPhone、iPad、Androidで利用できます。
Cuplikinの開発からリリースまで、どのくらいかかりましたか?
最初のコミットからMac App Storeでの公開まで約5週間でした。その後2か月以内に、同じコードベースからiPhone、iPad、Android版をリリースしています。
なぜCuplikinはFlutterで開発されたのですか?
1つのコードベースでデスクトップとモバイルの両方をカバーでき、チームにFlutterの経験があり、FFmpegやWhisperによる文字起こしといった重い処理も端末上で動くプラグインとして利用できたためです。
同じ進め方を受託開発の案件にも使えますか?
はい。要件定義(ディスカバリー)、スコープの絞り込み、アーキテクチャ設計、ストアへのリリースまで、Cuplikinで実践したプロセスは、お客様のプロジェクトで行っているものと同じです。