米Microsoftは、クラウド、オンプレミス、ソブリン環境、エッジなどの異なるインフラ上で同一コードを実行可能にする建築設計指針「Adaptive Applications(適応型アプリケーション)」を発表しました。AI推論やデータベースなどのサービス依存関係を機能単位で抽象化し、インフラ固有の実装から分離することで、データ居住性やコンプライアンス要件に対応します。
何が発表されたのか
米Microsoftは、公式技術番組「The Azure Essentials Show」にて、インフラストラクチャや依存サービスの違いに影響されずにアプリケーションを実行可能にするアーキテクチャパターン「Adaptive Applications(適応型アプリケーション)」を公表しました。同社のプリンシパル・ソフトウェア・アーキテクトであるハイシ・バイ(Haishi Bai)氏が登壇し、コンセプトと実証デモを披露しました。
本指針は、特定のクラウドサービスに強く依存する従来のクラウドネイティブ開発に対する改善策として位置づけられます。現在、オープンソースプロジェクト「Radius」と組み合わせた建築パターンとして一般公開されており、GitHubおよびAzure Architecture Centerでマニフェストやサンプルコードが提供されています。
発表された機能・アップデートの全容
機能要求とインフラ構築を分離する「機能指向抽象化」
従来の開発手法では、アプリケーションコード内に特定クラウドのSDKや固有エンドポイントが直接埋め込まれる傾向がありました。これに対し、Adaptive Applicationsでは「Capability-oriented thinking(機能指向の考え方)」を採用します。
アプリ側は「AI推論」「データベース」「アイデンティティ認証」といった抽象化されたエンドポイントのみを要求し、その下層で具現化されるインフラ実装を知る必要がありません。例えばAI機能の場合、アプリコードを変更することなく、クラウド上のAzure OpenAI Serviceエンドポイントと、ローカル環境で動く小規模言語モデル(SLM)のエンドポイントを透過的に切り替えることができます。
オープンソース「Radius」を用いたレシピ駆動の環境展開
本パターンの中核には、Microsoftが主導するオープンソースのアプリケーションプラットフォーム「Radius」が利用されます。Radiusでは、アプリケーションの依存関係を「リソース」として宣言的に記述し、実際のプロビジョニング手順を「レシピ(Recipes)」として環境ごとに定義します。
開発者が作成するアプリマニフェスト(Bicepファイル)には、リソース種別として Radius.Resources/postgresDatabases や Radius.Resources/aiModels などを指定します。プラットフォームチームがあらかじめ準備した環境用レシピ(Azure用ARM/BicepテンプレートやAmazon Web Services向けTerraformテンプレートなど)を結びつけることで、同一のマニフェストから異なるインフラ環境へ即座に展開が完了します。
KeycloakからAzure OpenAIまで対応するマルチ環境デモ
動画内では、株式取引シミュレーションアプリ「Portable Trading App」のデモが示されました。本アプリは、Webフロントエンド、バックエンド処理、メッセージングパイプライン、AIアシスタントから構成されるマルチティアーアプリケーションです。
デモでは、ローカル環境においてオープンソースの認証基盤「Keycloak」を用いたログインを実施し、メッセージブローカーにMQTTを、AI機能にローカルモデル管理基盤「Kaito」を採用して動作させました。一方、Azureへ展開する場合は、アプリケーション側のソースコードを1行も改変することなく、Microsoft Entra ID(旧Azure AD)やAzure OpenAI Serviceへ自動的に切り替わる挙動が提示されました。
複数AIエージェントによる既存コードの自動解析とマニフェスト変換
既存のレガシーコードベース(ブラウンフィールド)をAdaptive Applicationsへ移行する作業を支援するため、生成AIを活用したCLIツールの試作版が公開されました。
このツールは「Creator(作成者)」と「Critique(批評者)」という複数の役割を持つAIエージェントフリート(Fleet of Agents)で構成されています。Docker Composeファイルや既存の構成コードを解析し、依存関係の不足やセキュリティ上の不備をエージェント間で相互検証しながら指摘します。最終的に、Radiusに適合したBicepマニフェストと移行内容の要約レポートを全自動で生成する流れが示されました。
性能・ベンチマーク
動画内では定量的なベンチマークスコアや実行速度の測定値に関する提示はありませんでした。
| 評価項目 |
測定値 |
出典 |
Note |
| 処理性能・レイテンシ |
提示なし |
動画内 |
定量数値の言及なし |
| 移行処理時間 |
提示なし |
動画内 |
コマンド実行による自動変換のみ提示 |
競合サービスとの比較
Adaptive ApplicationsおよびRadiusのアプローチを、他のマルチクラウド・アプリケーションプラットフォームと比較します。(※競合製品に関する記述は編集部注)
| 機能・特徴 |
Adaptive Applications (Microsoft / Radius) |
HashiCorp Waypoint |
Google Anthos (Service Mesh) |
| 抽象化の単位 |
機能(AI、DB、認証等)単位のレシピ |
デプロイパイプライン単位 |
インフラ・ネットワークレイヤー |
| AIモデル切り替え |
標準でクラウド/ローカル言語モデルを抽象化 |
カスタムプラグインが必要 |
メッシュ外部のAPIとして処理 |
| 主な対応コード |
Bicep, Terraform, Docker |
HCL, Docker |
Kubernetes YAML |
| 優位点 |
開発者とプラットフォームチームの明確な役割分離 |
ビルド・展開手順の標準化に強み |
マルチクラウドKubernetesの統合管理 |
| 弱点 |
Radiusエコシステムの普及が発展途上 |
アプリ固有の高度な機能抽象化は限定的 |
Kubernetes非依存の環境では導入が難解 |
料金・提供プラン
Adaptive Applicationsの設計指針およびRadiusツールチェーンはオープンソースとして提供されており、追加のライセンス費用は発生しません。動画内で提示された関連ツールの提供状況は以下の通りです。
- Adaptive Applicationsの設計パターンおよびサンプルコード: GitHubにて無料公開中
- Project Radius: オープンソース(MITライセンス)として無料提供中
- 実行インフラ費用: デプロイ先となるAzureの各種サービス(Azure OpenAI、Azure PostgreSQL等)またはオンプレミス基盤の実費のみ発生
日本から使う方法
日本のユーザーが本パターンを検証・導入する手順は以下の通りです。
- 開発環境の準備
- Docker Desktop または Podman をインストールします。
- Azure CLI および Bicep CLI を最新版に更新します。
- Radius CLIの入手
- 公式ドキュメントに従い
rad CLIツールをローカル環境へインストールします。
- サンプルリポジトリの取得
- GitHubリポジトリ(
microsoft/adaptive-apps)をクローンします。
- ローカル環境でのデプロイテスト
- ターミナルで
rad deploy app.bicep を実行し、ローカルコンテナ環境へアプリケーションを起動します。
- 注意点と日本語対応
- 現時点でAI解析ツールおよびCLIの出力メッセージは英語のみ対応しています。
- Azure OpenAIを利用する場合は、日本リージョン(東日本・西日本)または利用可能な近隣リージョンのエンドポイント設定を行ってください。
誰にどう効くのか
エンジニア・開発者
インフラや認証・AIモデルの個別APIに固執することなく、ビジネスロジックの開発に集中できます。クラウド用とローカル検証用でコード分岐を作成する必要がなくなり、テストと展開の効率が向上します。
企画・マーケティング担当
データ居住性や法的規制(EU一般データ保護規則や各国のデータ主権法など)が厳格な地域に対しても、同一のアプリケーション製品を迅速にローカライズ展開できます。市場投入までの期間を短縮可能です。
経営層・CIO
特定クラウドベンダーへのロックインリスクを大幅に軽減できます。障害発生時の事業継続性(BCP)対策として、クラウド障害時にローカル環境や他社クラウドへ迅速に退避させるシステム基盤を確立できます。
まとめ
Microsoftが提唱するAdaptive Applicationsは、AI時代におけるアプリケーションのポータビリティを定義し直す重要な設計指針です。インフラやAIモデルの依存関係を機能レベルで分離することで、変化の激しい技術環境にも柔軟に対応できます。
読者が次に取るべきアクションは、GitHubで公開されている公式サンプルコードをローカル環境にダウンロードし、rad deploy コマンドによる環境分離の挙動を直接体験することです。