メインコンテンツへスキップ

実際のコードからFlutter移行を計画する

ConvergeはAIでiOSとAndroidのコードを読み込み、add-to-appによるFlutter移行を計画します。
かかる期間、コスト、担当するメンバーを、スプリントごとに示します。

コードを見ずに判断すると、add-to-appでも移行は失敗します

  • 期間もコストも誰にも分からない

    チームごとに見積もりがばらばらで、経営陣はどれをもとに予算を組めばよいか判断できません。

  • アプリの中身を誰も把握していない

    数百の画面、存在しないドキュメント、そして別々に進化してしまった2つのプラットフォーム。

  • チームはまだFlutterに慣れていない

    iOSとAndroidのエンジニアが、最も難しい種類のプロジェクトでFlutterを学ぶことになります。

  • アプリのリリースは止められない

    画面をFlutterへ移している間も、新機能は次々とリリースされます。

Convergeが2つのコードベースを1つの計画にするまで

  • Android
  • iOS
  1. コードを読み込む

    ConvergeはAIを使い、両方のアプリのすべての画面、フロー、共有サービスを読み込みます。

  2. プラットフォームを対応づける

    読み込んだ内容を検証し、Androidの各画面を対応するiOSの画面と組み合わせます。

  3. 計画を算出する

    アルゴリズムが画面を実装順のウェーブにまとめ、それぞれを見積もります。

移行計画

実装すべき順に並んだウェーブ。それぞれに見積もり、期日、チームが付きます。

スプリントごとに、計画が更新される。Convergeは新しいコミットを読み込み、ウェーブ、見積もり、完了日を再計算します。

Convergeで得られるもの

コードから算出した、経営陣にそのまま示せる計画。移行の進捗に合わせて、スプリントごとに更新されます。

  • 2つのアプリの全体マップ

    Androidの各画面と対応するiOSの画面、そして片方のアプリにしかない画面まで。

  • ウェーブ単位の計画

    どの画面をまとめて、どの順番で移すか。シンプルなものから先に進めます。

  • ウェーブごとの期日と体制

    各ウェーブの見積もり、期日、担当メンバーを、コードから算出します。

  • スプリントごとの進捗

    すでにFlutterに移ったもの、残っているもの、そして100%に達する時期。

実例

ConvergeがSignalのために算出した計画

Signalはオープンソースなので、AndroidアプリとiOSアプリは公平な公開テストになります。Convergeは両方のコードベースを読み込み、移行をウェーブに分割しました。

移行する画面
232
うち片方のアプリにしかない画面(Android 38、iOS 6)
44
ウェーブ(それぞれ単独でリリース)
39
営業日(開発者7名)
226

全39ウェーブのうち最初の12つを表示しています。1マスが1営業日です。開発者7名が並行して作業するため、複数のウェーブが同時に進みます。チームがFlutterに慣れるあいだは、最もシンプルな画面から着手します。

スケジュール上の、全39ウェーブのうち最初の12つ

GitHub上の公開リポジトリSignal-AndroidとSignal-iOSから算出。

ウェーブ1:チャットの色と壁紙

週
1–3
画面
5
  • チャットの外観設定の入口:ライブプレビュー、色と壁紙の行、リセット操作。Android + iOS
  • 内蔵壁紙のグリッドと、写真を選ぶための入口。Android + iOS
  • 適用前に、サンプルの会話の背後で壁紙を全画面プレビュー。Android + iOS

ウェーブ2:ステッカーライブラリ

週
1–2
画面
2
  • ステッカーライブラリ:インストール済みのパック、入手可能なパック、受信したが未インストールのパック。Android + iOS
  • インストール前のステッカーパック:カバー、グリッド、インストール操作。Android + iOS

ウェーブ3:外観とアプリアイコン

週
1–4
画面
3
  • 外観:テーマ、チャットの色と壁紙の入口、アプリアイコン。Android では言語と文字サイズも。Android + iOS
  • 代替アプリアイコンのグリッド。Android + iOS
  • アプリアイコンを変更すると何が起きるかの説明。Android + iOS

ウェーブ4:安全番号

週
1–4
画面
2
  • 連絡先1人の安全番号:QR コード、数字、確認済みへの設定、共有。Android + iOS
  • 安全番号の確認におけるカメラのステップ。Android + iOS

ウェーブ5:連絡先カード

週
1–3
画面
2
  • チャットで受け取った連絡先カードの詳細と、その相手に応じた操作。Android + iOS
  • 送信前に連絡先カードの内容を絞り込み:電話番号、メール、住所をそれぞれチェックできる行で表示。Android + iOS

ウェーブ6:カメラ、ギャラリー、メディアの送信

週
2–6
画面
8
  • メディアの添付・送信フロー全体のコンテナ:撮影またはギャラリーから、編集を経て送信先まで。Android + iOS
  • 写真・動画モードを備えたアプリ内カメラと、クロスフェードで切り替わるテキストストーリー作成画面。Android + iOS
  • メディア送信前の確認・編集ステップ:アイテムを切り替えるページャー、編集ツール、送信バー。Android + iOS

ウェーブ7:ヘルプとデバッグログ

週
2–3
画面
3
  • ヘルプページ:サポートセンター、お問い合わせ、デバッグログ、ライセンス、アプリのバージョン。Android + iOS
  • お問い合わせフォーム:説明、カテゴリ、気分、デバッグログのスイッチ。メールアプリに引き渡し。Android + iOS
  • 送信前に表示されるデバッグログ本体と、送信およびファイル保存の操作。Android + iOS

ウェーブ8:プライバシー、ブロック、アプリロック

週
3–7
画面
9
  • プライバシー:電話番号のプライバシー、ブロック中のユーザー、既読通知、デフォルトのタイマー、アプリのセキュリティ、決済ロック。Android + iOS
  • 電話番号を表示できる相手と、電話番号でアカウントを検索できる相手。Android + iOS
  • 高度なプライバシー設定:検閲回避、プロキシの入口、通話の中継、Sealed Sender のスイッチ。Android + iOS

ウェーブ9:メディアビューアとチャットのメディアライブラリ

週
3–8
画面
5
  • メディアビューア:会話の添付ファイルをスワイプで切り替えて再生し、共有、転送、保存、削除。Android + iOS
  • ズーム可能な添付ファイルを表示するメディアビューアの1ページ。Android + iOS
  • 会話のメディアライブラリのコンテナ:メディア、ドキュメント、音声、リンクのタブ。Android + iOS

ウェーブ10:データとストレージ

週
4–11
画面
2
  • メディアの自動ダウンロード条件、送信メディアの画質、ネットワークに応じた設定。Android + iOS
  • ストレージページ:メディアの使用容量、ストレージ最適化のスイッチ、チャットの整理設定。Androidのみ

ウェーブ11:チャットとチャットフォルダ

週
4–7
画面
4
  • チャット全体の設定:リンクプレビュー、連絡先の写真、ミュート中のチャットをアーカイブしたままにする設定、エクスポート操作。Android + iOS
  • チャットフォルダの一覧:並べ替え、削除、おすすめのフォルダ。Androidのみ
  • フォルダエディタ:名前、含めるチャットと除外するチャット、フィルター。Androidのみ

ウェーブ12:通知プロファイル

週
4–8
画面
7
  • 通知プロファイルの入口:空の状態、または有効なプロファイルの説明付きの一覧。Androidのみ
  • 通知プロファイルの名前と絵文字の設定。Androidのみ
  • 通知プロファイルがオンの間も通知を許可する相手の選択。Androidのみ

Convergeが役立つチーム

  • iOSとAndroidのネイティブアプリを運用している

    どちらも本番稼働中で、画面をFlutterへ移す間もリリースを続けます。

  • Flutterへの移行を決めている

    社内でFlutterはすでに使われている。足りないのは、アプリ全体の移行計画です。

  • 予算化の前に数字が必要

    ウェーブごとの期間、コスト、人員を、自社のコードから算出します。

  • チームがすぐに動ける計画が必要

    画面をウェーブにまとめ、実装の順番に並べて、そのままスプリントに落とし込めます。

デモの前によくいただく質問

iOSとAndroidのネイティブアプリを持ち、一括でのフルリライトをせず、ユーザーが日々使うアプリを危険にさらすことなく、ひとつのFlutterコードベースに統合したい企業向けです。Convergeは移行をウェーブ単位で計画するため、add-to-appのどの段階でも新機能のリリースを続けながら、アプリの安定性を保てます。

AndroidアプリとiOSアプリのソースコードへのアクセスです。Convergeはコードそのものを読み込むため、ドキュメントやFigmaファイルには依存しません。

はい、コードの読み込みに使っています。AIが両方のコードベースを読み込み、Androidの各画面を対応するiOSの画面と組み合わせます。ウェーブと見積もりは、LeanCodeの移行実績で調整した決定論的なアルゴリズムが算出するため、同じコードからは常に同じ計画が得られます。

計画には、コードから算出したウェーブごとの見積もり、期日、体制が含まれます。移行中は進捗チャートで、すでにどれだけFlutterに移ったか、いつ100%に達するかを確認でき、スプリントごとに再計算されます。

各ウェーブはフィーチャーフラグの裏でリリースします。フラグをオフにすれば数分でユーザーはネイティブ画面に戻り、その間にFlutter側の画面を修正できます。

はい。Convergeは両方のネイティブアプリに加えて既存のFlutterコードも読み込み、残っている作業や不足している部分を示したうえで、そこから先の計画を立てます。

自社アプリの移行計画をご覧ください

Marcin Chudy

シニアFlutterデベロッパー(LeanCode)

ご連絡先をご記入ください。デモの日程調整のため、メールでご連絡します。

貴社のことや、開発中のプロダクトについてひと言お聞かせください。