管理者・インテグレーター向け

🛠️ はなみずき園 カメラシステム サーバー側セットアップ手順書

新規テナント(新規園)への導入時に実施するAzure・Power Platform側の作業手順

📘
このドキュメントの対象:新規の保育園を本サービスへ追加するときに、Azure/Power Platform 側を構築するエンジニア向けの手順書です。先生・保育士向けの操作ガイドは こちら を参照してください。

システム全体像(4つのリソース)

🗃️

Cosmos DB

クライアント・園児・保育士・メール設定を保持するNoSQL DB

データ層
📱

Power Apps

管理画面(顔登録/写真DL/笑顔レポート)のフロントエンド

フロント
⚙️

Azure Functions

Power Apps 背後のAPI群。Face API/ZIP/笑顔スコア処理

バックエンド
🔄

Power Automate

OneDrive→Blob移行、OneDrive上のファイル削除

バックエンド
No.リソースレイヤ主な役割
1Azure FunctionsバックエンドPower Apps の全サーバー側機能を実装。Blob からの Face API 処理、Cosmos DB 登録、ZIPダウンロード、笑顔スコアダウンロード
2Power Appsフロントエンド先生・園児のUIデザイン(顔登録/一覧/ダウンロード/メール設定)
3Power AutomateバックエンドOneDrive から Blob への日次移行、OneDrive 上のファイル削除
4Cosmos DB(child-camera)データClients / Children / Staff / Settings コンテナを保持
🧭
導入作業の流れ: ① Cosmos DB に新組織を追加(ClientID採番) → ② Power Apps Solution をクライアント環境へインポート → ③ 8つのコネクタの ClientID を書き換え → ④ 動作確認 → ⑤ 納品。所要時間の目安は約 2〜3 時間。
🗃️ Cosmos DB — Clients テーブルに新組織を追加

リソース名:child-camera(Azure Cosmos DB アカウント)/ コンテナ:Clients

フェーズ1:Clients コンテナに組織レコードを追加する

  1. 1
    Azure Portal にサインインし、Cosmos DB「child-camera」を開く
  2. 2
    左ペインから「Data Explorer」を選択
  3. 3
    コンテナ「Clients」を選択
  4. 4
    上部ツールバーの「New Item」をクリック
Cosmos DB Data Explorer で New Item ボタンをクリック

▲ Data Explorer → Clients.Items を開き「New Item」を押す

  1. 5
    右ペインに以下のJSONテンプレートを貼り付け、園情報を書き換える

    idClientID既存最大値+1 を採番(既存が 1 なら 2)。PersonGroupId / StaffGroupId連番ルール(下記)で採番。

{
    "id": "2",
    "ClientID": 2,
    "OrganizationName": "ORGANIZATION NAME",
    "ClientName": "CLIENT NAME",
    "ClientKanaName": "KANA NAME",
    "ClientAddress": "ADDRESS",
    "ClientPhoneNo": "MOBILE NUMBER",
    "ClientPrefecture": "Japan",
    "Status": true,
    "CreatedDate": "2025-09-12T10:00:00Z",
    "UpdateDate":  "2025-09-12T10:30:00Z",
    "PersonGroupId": "hana-mizuki-g004",
    "StaffGroupId":  "hana-mizuki-s004"
}
JSONを貼り付けて Save ボタンをクリック

▲ 右ペインへJSONを貼付し、上部ツールバーの「Save」を押す

  1. 6
    「Save item」をクリックしてレコードを保存

PersonGroupId / StaffGroupId の採番ルール

🔢
連番で増やすこと。Face API 内のディレクトリ名として使われるため、既存の最大番号+1 を割り当てます。Blob Storage のフォルダー作成にも同じ値が使われます。
項目既存(例)新規割当(例)
PersonGroupIdhana-mizuki-g005hana-mizuki-g006
StaffGroupIdhana-mizuki-s005hana-mizuki-s006
⚠️
Face API ディレクトリは Azure Portal から作成する画面がありません。PersonGroupId / StaffGroupId を変更・追加した場合は 必ず開発担当(クラウドパワー)に連絡してください。こちらでディレクトリを作成します。
▲ 上に戻る
📱 Power Apps Solution のエクスポート・インポート

Power Apps の管理画面は Solution(ソリューション)単位で他環境へ移送します。開発元環境から ZIP エクスポートし、クライアント環境へインポートします。

フェーズ1:Power App を Solution に追加する

  1. 1
  2. 2
    対象の環境を選択する
  3. 3
    左メニュー「Solutions(ソリューション)」へ移動
  4. 4
    「New Solution(新しいソリューション)」をクリック

    名前(例:ChildCameraSolution)/発行元/バージョン を入力

  5. 5
    作成した Solution を開く
  6. 6
    「既存を追加」→「App」→「Canvas App」をクリック
  7. 7
    対象の Power App を選択して追加する

フェーズ2:Solution を ZIP エクスポートする

  1. 1
    Solution 内で「Export」をクリック
  2. 2
    「Next」をクリック
  3. 3
    Managed / Unmanaged を選択し「Export」をクリック

    Managed:クライアント納品用(編集不可の封入形式)
    Unmanaged:開発用(編集可能)

  4. 4
    ZIP ファイルがダウンロードされる

フェーズ3:クライアント環境へ Solution をインポート

  1. 1
    クライアント環境(Power Platform テナント)にログイン

    https://make.powerapps.com

  2. 2
    環境セレクタで正しい環境を選択
  3. 3
    左メニュー「Solutions」へ移動
  4. 4
    「Import Solution」をクリック
  5. 5
    エクスポートした ZIP をアップロード
  6. 6
    「次へ」→「インポート」をクリック

フェーズ4:アプリケーションを確認する

  1. 1
    インポート後、Solution を開く
  2. 2
    以下を確認する
    • アプリが利用可能であること
    • 接続設定が正常に動作していること
  3. 3
    実機アクセスして基本動作をテストする
📝
簡易フロー: 開発元環境(Solution 作成 → ZIP エクスポート) → 本番環境(ZIP インポート → アプリ実行)
重要事項
  • クライアント納品時は Managed Solution を使用してください。
  • インポート後、以下の再設定が必要な場合があります:
    API 接続 環境変数 権限設定
  • インポート後は必ず動作確認を実施してください。
▲ 上に戻る
🔑 クライアントID の変更(8つのコネクタ)

Cosmos DB の Clients コンテナで新規採番した ClientID(例:2)を、Power Apps 側の 8つのコネクタ呼び出しに反映します。 初期値はすべて 1(はなみずき)になっているので、新テナント用に書き換えてください。

ℹ️
最初のパラメータが ClientID を表します。書き換え後は アプリを保存し、公開 してください。

コネクタ一覧(全8個)

#コネクタ名使用画面/イベント
1StudentListChild List 画面 OnVisible / 削除確認 Yes ボタン
2StudentRegistrationChildren Registration 保存ボタン OnClick
3Download_ChildrenDownload Children ダウンロードボタン OnClick
4StaffListStaff 画面 OnVisible / 削除確認 Yes ボタン
5Teacher_RegistrationTeacher Registration 保存ボタン OnClick
6DownloadSmileScoreTeacher List 笑顔ダウンロードボタン OnClick
7getEmailList設定 → メール画面 OnVisible
8Email_RegistrationEmail Settings 保存ボタン OnClick
1StudentList

A. OnVisible(Child List 画面)

  1. 1
    Child List 画面へ移動
  2. 2
    左ツリービューで 「いちらんがめん」 をクリック
  3. 3
    右プロパティパネルで OnVisible イベントを選択
  4. 4
    以下の関数が表示される
Before(ClientID=1)
Set(
    varChildResp,
    StudentList.Run("1").studentdata
);
After(ClientID=2)
Set(
    varChildResp,
    StudentList.Run("2").studentdata
);

B. 削除確認(Yes ボタン)

  1. 1
    「削除」ボタン → 確認メッセージで Yes ボタンをクリック
  2. 2
    Yes ボタンの OnClick イベントを開く
  3. 3
    同じく StudentList.Run("1")"2" に変更
変更後「保存 → 公開」してください。
2StudentRegistration
  1. 1
    Children Registration ページへ移動
  2. 2
    「保存」ボタンをクリック
  3. 3
    右プロパティパネルで OnClick を確認
Student_Registration コネクタの OnClick 画面

▲ 「保存」ボタンの OnClick に Student_Registration.Run が記述されている

Before
Student_Registration.Run(
    1,
    Trim(NameInput.Text),
    Trim(NameInput_1.Text),
    Dropdown.Selected.Year,
    JSON(attachments)
)
After
Student_Registration.Run(
    2,
    Trim(NameInput.Text),
    Trim(NameInput_1.Text),
    Dropdown.Selected.Year,
    JSON(attachments)
)
アプリを保存し、公開してください。
3Download_Children
  1. 1
    Download Children ページへ移動
  2. 2
    「ダウンロード」ボタンをクリック
  3. 3
    確認メッセージで Yes ボタンをクリック
  4. 4
    右プロパティパネルで OnClick を確認
Download_Children OnClick 上部

▲ ボタン_9 の OnClick(Download_Children.Run の 3番目引数が ClientID)

Download_Children OnClick 詳細

▲ IfError / Notify を含む Full コード

Before
Set(
    Response,
    Download_Children.Run(
        DownloadKanjiName,
        DownloadChildId,
        1
    )
)
After
Set(
    Response,
    Download_Children.Run(
        DownloadKanjiName,
        DownloadChildId,
        2
    )
)
アプリを保存し、公開してください。
4StaffList

A. OnVisible(スタッフページ)

  1. 1
    Staff ページへ移動
  2. 2
    左ツリービューで 「せんせいいちらんがめん」 をクリック
  3. 3
    右プロパティパネルで OnVisible を選択
Before
Set(
    varStaffResp,
    StaffList.Run("1").staffdata
);
After
Set(
    varStaffResp,
    StaffList.Run("2").staffdata
);

B. 削除確認(Yes ボタン)

  1. 1
    「削除」ボタン → Yes ボタンをクリック
  2. 2
    OnClick を開き、同じ要領で "1""2"
アプリを保存し、公開してください。
5Teacher_Registration
  1. 1
    Teacher Registration ページへ移動
  2. 2
    「保存」ボタンをクリック
  3. 3
    右プロパティパネルで OnClick を確認
Teacher_Registration OnClick 画面

▲ Teacher_Registration.Run の 1番目引数が ClientID

Before
Teacher_Registration.Run(
    1,
    Trim(NameInput_4.Text),
    Trim(NameInput_5.Text),
    JSON(attachments)
)
After
Teacher_Registration.Run(
    2,
    Trim(NameInput_4.Text),
    Trim(NameInput_5.Text),
    JSON(attachments)
)
アプリを保存し、公開してください。
6DownloadSmileScore
  1. 1
    Teacher List ページへ移動
  2. 2
    「笑顔ダウンロード」ボタン → Yes ボタンをクリック
  3. 3
    右プロパティパネルで OnClick を確認
DownloadSmileScore OnClick 画面

▲ DownloadSmileScore.Run の 1番目引数が ClientID

Before
DownloadSmileScore.Run(
    "1",
    {
        date:   Text(DatePicker1.SelectedDate, "yyyy-mm-dd"),
        date_1: Text(DatePicker2.SelectedDate, "yyyy-mm-dd")
    }
)
After
DownloadSmileScore.Run(
    "2",
    {
        date:   Text(DatePicker1.SelectedDate, "yyyy-mm-dd"),
        date_1: Text(DatePicker2.SelectedDate, "yyyy-mm-dd")
    }
)
アプリを保存し、公開してください。
7getEmailList
  1. 1
    「設定」ページへ移動
  2. 2
    左ツリービューで 「メールがめん」 をクリック
  3. 3
    右プロパティパネルで OnVisible を選択
getEmailList OnVisible 画面

▲ メールがめんの OnVisible で getEmailList.Run("1") が呼ばれる

Before
Set(
    varRespEmail,
    ParseJSON(getEmailList.Run("1").emaildata)
);
After
Set(
    varRespEmail,
    ParseJSON(getEmailList.Run("2").emaildata)
);
アプリを保存し、公開してください。
8Email_Registration
  1. 1
    Email Settings ページへ移動
  2. 2
    「保存」ボタンをクリック
  3. 3
    右プロパティパネルで OnClick を確認
Before
Email_Registration.Run(
    1,
    Trim(NameInput_9.Text)
)
After
Email_Registration.Run(
    2,
    Trim(NameInput_9.Text)
)
アプリを保存し、公開してください。
▲ 上に戻る
✅ 納品前チェックリスト
  • Cosmos DB「Clients」コンテナに新組織レコードが保存されている(id・ClientID が連番採番)
  • PersonGroupId / StaffGroupId を連番で払い出し、開発担当に連絡済み(Face API ディレクトリ作成依頼)
  • Power Apps Solution(Managed)をクライアント環境へインポートし、エラーなし
  • API 接続・環境変数・権限設定の再設定が完了している
  • 8つのコネクタすべてで ClientID が新規採番値に置換されている(1→2 など)
  • アプリを保存し、公開済み(Publish 済み)
  • 顔写真登録/一覧表示/写真ダウンロード/笑顔スコアダウンロード/メール設定 が実機で動作する
  • 先生向け操作ガイド(manual.kensetsu-total.support/hanamizuki)のアカウント情報を差し替え済み
  • 納品アカウント情報(OneDrive・Power Apps・Safie)を納品フォルダに集約
▲ 上に戻る
🆘
困ったときは

よくあるトラブル

  • Solution インポート時にエラー → API 接続・環境変数が未設定の可能性。Solutions → 当該 Solution → Connection References で再設定
  • アプリは開くが一覧が空 → ClientID の書換え漏れ。8つのコネクタをすべて確認
  • 顔登録で「登録に失敗」 → Face API ディレクトリが未作成。PersonGroupId / StaffGroupId を開発担当に連絡
  • 笑顔スコアダウンロードでメールが届かない → getEmailList / Email_Registration の ClientID を確認
  • 上記で解決しない場合は開発担当(クラウドパワー)に連絡
▲ 上に戻る