ずんだもん「Power PagesとAzure Static Web Apps、外部ユーザー向けならどっちなのだ？」

はーい！みんな、お待ちかね！  
ずんだもんと、しっかり者の四国めたんが、  「**[Azure Static Web Apps（SWA）](https://learn.microsoft.com/ja-jp/azure/static-web-apps/overview)**」と「**[Power Pages](https://learn.microsoft.com/ja-jp/power-pages/introduction)**」で、外部ユーザー（マルチテナント）に利用してもらう場合の、アレコレを解説するのだ！

# どっちがお得で便利？SWA vs Power Pages マルチテナント対決！なのだ！

<table>
  <tr>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/c0f938e8-bc8c-40c7-8ba6-db76fe6fe150.png" alt="Image 1" width="150"></td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/f319f9e8-c0dc-479b-8f85-fe44cec2547b.png" alt="Image 2" width="150"></td>
  </tr>
</table>


**めたん：** ずんだもん、今日は複数の外部テナントユーザーにアプリを提供する際の、プラットフォーム選びについてですね。ギャグは控えめに、分かりやすくお願いしますね。

**ずんだもん：** まかせるのだ！今回は、SWAは「**お客さんごとに専用アプリ（お部屋）を用意する方式**」、Power Pagesは「**大きな一つのアプリ（公民館）でみんなをおもてなしする方式**」で比較するのだ！

---

## 比較スタート！レディー・ゴー！なのだ！

|項目|SWA（1テナント1お部屋方式）|Power Pages（みんなで公民館方式）|
|---|---|---|
|**お客さんいっぱい対応**|〇（個室がいっぱい作れるのだ！）|〇（公民館だから、みんなウェルカムよ！）|
|**プライバシー（分離性）**|◎（完全に個室！壁も厚いのだ！）|△（大広間だから、仕切りは工夫次第ね）|
|**お値段（コスト）**|〇（一部屋9ドル！ずんだ餅より安いかも？）|×（利用人数や広さで結構お高いのよ…）|
|**自分好みにできるか**|〇（お部屋の模様替え自由なのだ！）|△（公民館のルールは守ってね）|
|**お世話（運用管理）**|△（部屋が多いと鍵の管理が…）|〇（公民館の管理人さんにお任かせ！）|
|**みんなまとめて新しく！**|〇（ロボが一斉にお掃除！CI/CD！）|〇（公民館の設備一新は楽ちんね）|
|**誰か失敗したら？**|◎（自分の部屋だけ！隣は平和なのだ）|×（公民館で騒いだら全員出禁かも…）|
|**安全（セキュリティ）**|◎（各部屋に屈強なガードマン！）|〇（公民館の入口に警備員さんはいるわ）|
|**お客さんごとの特別対応**|〇（Aさんには畳、Bさんにはベッド！）|△（みんな同じイスとテーブル、が基本よ）|
|**お客さん増えたら？**|〇（どんどんお部屋を増築なのだ！）|△（公民館がパンクしないか心配ね…）|
|**助っ人（サポート）**|△（ご近所さんに聞く感じなのだ）|〇（Microsoft先生が教えてくれるわ！）|

**めたん：** なんで公民館...?　まあアパートとかでもいいよね（笑）


# くわしく比較するのだ！

<table>
  <tr>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/c0f938e8-bc8c-40c7-8ba6-db76fe6fe150.png" alt="Image 1" width="150"></td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/f319f9e8-c0dc-479b-8f85-fe44cec2547b.png" alt="Image 2" width="150"></td>
  </tr>
</table>

**ずんだもん：**
めたん、Power PagesとAzure Static Web Apps（SWA）のマルチテナント運用を比べてみるのだ！
得意なところは〇、工夫が必要なところは△、苦手・非対応なところは×で表してみたのだ！

**めたん：**
表の下には、それぞれのポイントについても分かりやすく解説していきますわね。

| 項目          | Power Pages           | Azure Static Web Apps（SWA）          |
| ----------- | --------------------- | ----------------------------------- |
| マルチテナント対応   | 〇（公式にmulti-tenant可）   | △（分離運用は〇、1インスタンスでのmulti-tenantは工夫要） |
| テナント分離性     | △（アプリ内ロジックで分離）        | 〇（インスタンス単位で完全分離）                    |
| コスト         | ×（ユーザー数・PV課金で高額）      | 〇（1テナント月9ドル程度で安価）                   |
| カスタムドメイン    | 〇（柔軟に対応）              | △（標準5つまで、Front Door併用で拡張）           |
| Entra連携     | 〇（DataverseやAPIで可）    | 〇（Functions+Graph APIで可）            |
| ノーコード開発     | 〇（GUIで容易）             | ×（コード実装が基本）                         |
| 拡張性・柔軟性     | △（ローコードの範囲内）          | 〇（フルカスタム可能）                         |
| 運用・保守性      | 〇（GUI・一元管理）           | △（IaCやCI/CD自動化で効率化可）                |
| セキュリティ/認証   | 〇（Entra IDマルチテナント可）   | 〇（Entra ID認証、分離で高セキュリティ）            |
| サポート・エコシステム | 〇（Microsoft公式/パートナー多） | △（SWAはコミュニティ中心）                     |

## 解説・ポイント

- **マルチテナント運用**
    
    - Power Pagesは「1つのアプリで複数テナントの認証を許可」することが公式にサポートされています
        
    - SWAは「1インスタンスで複数テナント認証」は標準非対応。顧客ごとにインスタンスを分ける「物理分離型」なら容易です（セキュリティ・障害切り分けも高評価）
        
- **コスト**
    
    - Power Pagesはユーザー数やPV数に応じた従量課金で高額になりやすい。
        
    - SWAは1インスタンス月9ドル程度で、テナントごとに分離してもコストが比較的抑えられます。
        
- **カスタムドメイン**
    
    - Power Pagesは柔軟に設定可能。
        
    - SWAは標準で5つまで。
        
- **開発・拡張性**
    
    - Power Pagesはノーコード・ローコードで業務ポータルが簡単に作れるが、細かいUI/UXやAPI連携は制約あり。
        
    - SWAはコード実装前提なので、自由度・拡張性は高いが、ノーコード運用は不可。
        
- **運用・保守**
    
    - Power PagesはGUIで一元管理。運用負荷が低い。
        
    - SWAはIaCやCI/CD自動化を使えば効率化できるが、初期構築はやや手間。
        
- **セキュリティ・認証**
    
    - どちらもEntra ID（Azure AD）による認証・権限制御が可能。
        
    - SWAはインスタンス分離により、顧客ごとのセキュリティ境界が明確。
        

# もうすこし深掘りしてみるのだ！

<table>
  <tr>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/c0f938e8-bc8c-40c7-8ba6-db76fe6fe150.png" alt="Image 1" width="150"></td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/f319f9e8-c0dc-479b-8f85-fe44cec2547b.png" alt="Image 2" width="150"></td>
  </tr>
</table>

**ずんだもん：**
めたん、SWAを「1テナント1アプリ」で分離する方式と、Power Pagesを「1アプリでマルチテナント」にする方式で、いろんな観点から比べてみるのだ！

**めたん：**
それぞれの特徴や得意・苦手なポイントを、〇・△・×で整理してみましたわ。どちらが自分たちの運用に合っているか、じっくり見ていきましょうね！


| 項目             | SWA（1テナント1アプリ分離）   | Power Pages（1アプリでマルチテナント） |
| -------------- | ------------------ | ------------------------- |
| マルチテナント対応      | 〇（分離で高い独立性・セキュリティ） | 〇（公式に1アプリで複数テナント対応）       |
| テナントごとの分離性     | ◎（完全分離、障害・設定影響なし）  | △（アプリ内ロジックで分離、影響波及あり）     |
| コスト            | 〇（1テナント9ドルで明瞭）     | ×（ユーザー数・PV課金で高額になりやすい）    |
| カスタマイズ性・拡張性    | 〇（フルカスタム可、個別調整も容易） | △（ローコード範囲内、個別調整は工夫要）      |
| 運用管理           | △（数が増えると管理負荷増）     | 〇（1アプリで一元管理）              |
| 一括アップデート       | 〇（CI/CD自動化で一括反映可）  | 〇（1アプリなので一括反映が容易）         |
| 障害・トラブル影響範囲    | ◎（1テナントのみ、他へ波及なし）  | ×（全テナントに影響するリスク）          |
| セキュリティ         | ◎（物理分離で高い）         | 〇（アプリ内制御、柔軟な認証設定可）        |
| テナントごとのUI/機能差分 | 〇（個別実装・設定が容易）      | △（ロジックで分岐、設計に工夫必要）        |
| スケーラビリティ       | 〇（テナント増加にスケーラブル）   | △（大規模化で複雑化しやすい）           |
| サポート・エコシステム    | △（コミュニティ中心）        | 〇（公式サポート・パートナー豊富）         |


## 解説

- **SWA（1テナント1アプリ分離）**
    
    - テナントごとに完全分離されるため、**セキュリティ・障害切り分け・カスタマイズ性が非常に高い**です。
        
    - コストも1テナント9ドルと明瞭で、顧客増加時もスケーラブル。
        
    - 運用管理はテナント数が多いと負荷が増えますが、CI/CD自動化で一括アップデートも可能です。
        
    - テナントごとにUIや機能差分を持たせやすく、顧客ごとの要望に柔軟に対応できます。
        
    - サポートやエコシステムはPower Pagesに比べると限定的ですが、開発自由度は高いです。
        
- **Power Pages（1アプリでマルチテナント）**
    
    - 公式にマルチテナント対応で、**1つのアプリで複数テナントを管理可能**。
        
    - 運用管理や一括アップデートは容易ですが、**障害発生時は全テナントに影響が及ぶリスク**があります。
        
    - コストはユーザー数やPV数に応じて高額になりやすく、スケール時のコスト増が課題です。
        
    - テナントごとのカスタマイズや分離性はアプリ内ロジックで実装するため、設計に工夫が必要です。
        
    - サポートやエコシステムはMicrosoft公式で充実しています。
       
---

::: note
- **Power Pages**は「1つのポータルで複数テナントを柔軟に扱いたい」「ノーコードで素早く作りたい」「公式サポートやエコシステム重視」の場合に有利。
    
- **SWA**は「コスト重視」「顧客ごとに完全分離したい」「フルカスタマイズや拡張性重視」「セキュリティや障害切り分けも重視」する場合に最適です。    

> どちらも一括アップデートは自動化で対応可能ですが、「分離性・障害リスク・コスト」の観点ではSWA分離運用が有利です。
:::

# まとめ

<table>
  <tr>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/c0f938e8-bc8c-40c7-8ba6-db76fe6fe150.png" alt="Image 1" width="150"></td>
    <td><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790864/f319f9e8-c0dc-479b-8f85-fe44cec2547b.png" alt="Image 2" width="150"></td>
  </tr>
</table>

**ずんだもん：**  
外部パートナーやお客さんごとに「安くて、安全で、自分だけの特別なサービス」を提供したいなら、SWAを一部屋ずつ貸し出すのがオススメなのだ！

**めたん：**  
一方で、「ローコートで簡単に、たくさんの人が使える窓口を作りたい」「Microsoftの手厚いサポートが欲しい」という場合は、Power Pagesも選択肢に入りますわね。ただし、コストと、みんなで使うことのリスクはしっかり考えないといけませんわ。

**ずんだもん：**  
というわけで、どちらが良いかは「どんなサービスを、誰に、どれくらいの予算で提供したいか」で変わってくるのだ！

**めたん：**  
まるで、ずんだ餅も「つぶあん派」と「こしあん派」がいるみたいに、好みが分かれるところですわね！


# リンク集
https://www.qes.co.jp/media/PowerPages/a313

https://qiita.com/tags/powerpages

---

https://www.zead.co.jp/column/azure-static-web-apps/

https://qiita.com/tags/azurestaticwebapps

https://qiita.com/tags/staticwebapps



## 利用キャラクター

- ずんだもん：[VOICEVOX:ずんだもん](https://voicevox.hiroshiba.jp/)

本記事で使用しているキャラクター画像の著作権は、それぞれの権利者に帰属します。
非商用目的での利用に基づき掲載しています。