2026 年 5 月 26 日、Publickey が ついに Mono ランタイムを脱却する「.NET MAUI」。Xamarin から続いてきた Mono ランタイムを CoreCLR に移行 を報じました。マイクロソフトは、iOS / Android / Windows / macOS を単一コードで対応する UI フレームワーク .NET MAUI の iOS / Android 向けランタイムを、今秋リリース予定の .NET 11 で Mono から CoreCLR へ移行します。Xamarin 時代から十数年続いた Mono がついに役目を終え、起動性能・実行速度・診断ツールの統一といった面で大きく前進します。
これは、いまだ Xamarin や旧バージョンの .NET(Framework / 旧 Core)で業務アプリを運用する企業にとって重要な転換点です。受託でモバイル・業務アプリを支える立場では、これは 「MAUI に移るか否か」ではなく、「どのアプリを、どの順序で、どこまで作り直すか」を判断する近代化フェーズだと捉えています。これまで TypeScript 7 Go ネイティブ移行ガイド(GH Media) で扱った ランタイム世代交代への向き合い方、NestJS v12 ESM 移行受託(GH Media) で扱った 段階移行、AWS WorkSpaces レガシーデスクトップ近代化受託(GH Media) で扱った レガシー資産の延命と刷新の両立と接続して、本記事では 「クロスプラットフォームアプリ近代化」を 受託パッケージとして整理します。
なぜ「いま」アプリ近代化なのか
| 観点 | Xamarin / 旧 .NET(従来) | .NET MAUI + CoreCLR(2026) |
|---|---|---|
| ランタイム | Mono | CoreCLR(デスクトップと統一) |
| 対応 OS | iOS / Android(個別 UI) | iOS / Android / Windows / macOS 単一コード |
| 起動性能 | Mono 依存で遅め | CoreCLR で改善 |
| 保守状況 | Xamarin サポート終了済み | 活発に開発 |
| 診断 / プロファイル | Mono 系ツール | .NET 標準ツールに統一 |
| AOT / トリミング | 限定的 | Native AOT 対応強化 |
| エコシステム | 縮小 | NuGet / .NET 本流と共通 |
つまり今回の移行は、「Xamarin をそのまま動かし続ける延命戦略」が限界に近づき、CoreCLR ベースの MAUI へ刷新する合理性が一気に高まったことを意味します。サポート終了済みの Xamarin を放置することは、セキュリティパッチ断絶・OS アップデート追従不能・人材枯渇という三重のリスクを抱えることに他なりません。
受託案件で活きる 3 つの構造変化
構造 1: 「サポート切れ放置」から「計画的近代化」へ
Xamarin は既にサポートが終了しており、新しい iOS / Android のストア要件に追従できないケースが増えています。受託では ストア審査要件・OS 最低バージョン・脆弱性を起点に、「いつまでに何を移行すべきか」の期限付きロードマップを提示します。
構造 2: 「個別プラットフォーム実装」から「単一コード」へ
iOS / Android で別実装してきた UI を、MAUI の単一コードベースへ集約できます。受託では 共通化できる層(業務ロジック / API クライアント)と OS 固有層(権限 / 通知)を分離し、保守コストを構造的に下げます。
構造 3: 「アプリ単独刷新」から「バックエンド込みの近代化」へ
アプリだけ新しくしても、古い SOAP API や認証基盤が足を引っ張ります。受託では NestJS v12 ESM 移行受託(GH Media) の知見も活かし、API・認証・データ層まで含めた一体近代化を設計します。
受託で提供する「クロスプラットフォームアプリ近代化」5 フェーズ
フェーズ 1: 現状診断(2〜3 週間)
- Xamarin / 旧 .NET 資産の棚卸し
- 依存ライブラリ / NuGet の互換性調査
- ストア要件 / OS 最低バージョンの確認
- 移行難易度スコアリング(画面数 / OS 固有 API)
フェーズ 2: 設計(2〜3 週間)
- 移行方針(全面刷新 / 段階移行 / 一部 React Native 等)
- アーキテクチャ設計(MVVM / DI / 共通層分離)
- API / 認証 / オフライン同期の再設計
- CI/CD(ストア配信自動化)設計
フェーズ 3: 構築(5〜8 週間)
- MAUI プロジェクト基盤構築
- 業務ロジック / API クライアント移植
- OS 固有機能(通知 / 生体認証 / 権限)実装
- Native AOT / トリミング最適化
フェーズ 4: 検証・リリース(3〜5 週間)
- 実機テスト(iOS / Android / 主要端末)
- 性能 / 起動時間 / クラッシュ率の計測
- ストア審査対応 + 段階リリース
- 旧アプリからの移行導線設計
フェーズ 5: 運用レビュー(継続)
- .NET / MAUI バージョン追従
- クラッシュ / ANR 監視
- OS アップデート対応
- 半期ごとの技術負債棚卸し
受託向け技術スタック標準セット
| レイヤ | 推奨技術 | 代替 |
|---|---|---|
| UI フレームワーク | .NET MAUI | Flutter / React Native |
| アーキテクチャ | MVVM + DI | MVU |
| API クライアント | Refit / HttpClient | gRPC |
| ローカル DB | SQLite / EF Core | Realm |
| 認証 | MSAL / OIDC | 自前認証 |
| CI/CD | GitHub Actions + Fastlane | Azure DevOps |
| クラッシュ監視 | App Center 後継 / Sentry | Firebase Crashlytics |
| 配信 | TestFlight / Play Console | Firebase App Distribution |
どの案件に必要か / 不要か
| 必要な案件 | 不要な案件 |
|---|---|
| Xamarin アプリを本番運用中 | 既に MAUI / Flutter で新しい |
| ストア審査・OS 追従に苦戦 | OS 要件に余裕がある |
| iOS / Android 別実装で保守が重い | 単一 OS のみ対象 |
| 業務アプリで長期運用が前提 | 短命のキャンペーンアプリ |
| 社内に .NET 資産が多い | .NET 資産がない |
受託契約に書く 6 つの条項
| 条項 | 内容 | 顧客が確認すべきこと |
|---|---|---|
| 移行範囲 | 対象アプリ / 画面 / OS | 段階移行の区切り |
| 互換保証 | 既存機能の再現範囲 | 廃止機能の扱い |
| ストア対応 | 審査リジェクト時の対応 | 審査責任の所在 |
| 性能基準 | 起動時間 / クラッシュ率 SLO | 未達時の扱い |
| 退場時引き渡し | ソース / CI / Runbook / 教育 | 自社運用継続性 |
| OS 追従 | 新 OS 対応の保守範囲 | 年次追従の費用 |
価格モデル — クロスプラットフォームアプリ近代化パッケージ
| プラン | 金額 | 対象 | 内容 |
|---|---|---|---|
| 診断 / PoC | 180 万円〜(5 週間) | 棚卸し + 移行設計 + PoC | 移行設計書 + 難易度レポート |
| Lite | 60 万円〜 / 月 | 小規模アプリ保守 | 月次保守 + OS 追従 |
| Standard | 140 万円〜 / 月 | 中規模 + 機能追加 | + 機能開発 + 監視運用 |
| Enterprise | 320 万円〜 / 月 | 基幹業務アプリ | + 専任チーム + SLA |
| 初期刷新 | 600 万円〜(一括) | MAUI 基盤 + 移行 + CI/CD | 全プラン共通 |
顧客側 ROI 試算(Xamarin アプリ 1 本 / iOS+Android 別保守想定)
| 項目 | 既存(Xamarin 別実装保守) | MAUI 近代化後 | 差分 |
|---|---|---|---|
| 機能追加リードタイム | 6 週間 | 3 週間 | -3 週間 |
| OS アップデート対応(年) | 240 時間 | 100 時間 | -140 時間 |
| クラッシュ起因の問い合わせ(月) | 30 件 | 8 件 | -22 件 |
| 起動時間 | 3.2 秒 | 1.6 秒 | -1.6 秒 |
| 年間効果 | — | — | 約 1,500 万円相当 + ストアリスク回避 |
Standard プラン(年額 1,680 万円 + 初期)でも、保守工数削減とサポート切れリスク回避で十分に正当化できます。
ハマりやすい 5 つの落とし穴
落とし穴 1: 「動いているから」と放置する
Xamarin はサポート切れです。OS アップデートで突然動かなくなる前に計画移行します。
落とし穴 2: UI を 1:1 で移植しようとする
旧 UI をそのまま移すと負債を引き継ぎます。業務ロジックと UI を分離し、必要な層だけ作り直します。
落とし穴 3: バックエンドを据え置く
古い API がボトルネックになります。API・認証も同時に近代化します。
落とし穴 4: 実機テストを軽視する
端末差・OS バージョン差で事故ります。主要端末マトリクスで検証します。
落とし穴 5: ストア審査を見積もりに入れない
リジェクト対応で工数が膨らみます。審査バッファを計画に含めます。
90 日アクションプラン
| 週 | アクション |
|---|---|
| Week 1〜3 | 資産棚卸し + 互換調査 + 難易度スコアリング |
| Week 4〜6 | 移行方針 + アーキテクチャ + API 再設計 |
| Week 7〜12 | MAUI 基盤構築 + ロジック移植 + OS 固有実装 |
| Week 13 | 実機テスト + 性能計測 + ストア審査準備 |
| Week 13 | 段階リリース計画確定 + 運用レビュー準備 |
まとめ — 「Xamarin の延命」から「CoreCLR ベース MAUI への近代化」へ
.NET MAUI の Mono 脱却は、サポート切れ Xamarin を放置するリスクと 単一コード化によるコスト削減の両面から、近代化を本気で検討すべきタイミングが来たことを示しています。受託でアプリを支える立場では、期限付きロードマップで段階移行し、UI とロジックを分離し、バックエンドまで含めて刷新する 「クロスプラットフォームアプリ近代化」が新しい主力サービスです。
弊社では 診断 / Lite / Standard / Enterprise の 4 段階で本パッケージを提供しています。「Xamarin アプリの今後が不安」「iOS/Android の別保守がつらい」「業務アプリを単一コードで刷新したい」というご相談は お問い合わせフォーム からお気軽にどうぞ。