一般のChromebookで保護者キオスクを使う
Google管理コンソールに登録していないChromebookで、保護者の登園・降園受付を行うための手順です。アプリ側に専用入口 /guardian/terminal を追加しました。端末ではChromeのウェブアプリとしてインストールし、毎朝、職員がランチャーから起動します。
この方式では、ChromeOSのログインや別アプリへの切り替えをロックしません。電源投入からの完全自動起動やOSの操作制限は管理端末向けの別設定です。一般端末でのウェブアプリ追加はGoogleのインストール手順、管理端末の自動起動はGoogleのキオスク設定を参照してください。
サーバーの準備
既存のキオスク用トークン認証を使用します。本番環境には次の設定が必要です。設定済みの秘密鍵や登録トークンはそのまま使用してください。
HOIKUICT_KIOSK_ACCESS_MODE=token
HOIKUICT_KIOSK_TOKEN=<施設内で保管する既存の端末登録トークン>
HOIKUICT_SECRET_KEY=<既存のアプリ秘密鍵>
HOIKUICT_COOKIE_SECURE=1
HOIKUICT_CSRF_ENFORCE=1
施設のHTTPS URLで使用します。プロキシやCloudflare Accessなど既存の接続制限は維持し、端末からアクセスできることを確認してください。設定は職員画面の「保護者キオスク」からも確認できます。実際の設定値をURL、Git、チャットへ載せないでください。
同梱の deploy/truenas/compose.yaml は HOIKUICT_KIOSK_ACCESS_MODE: disabled が初期値です。この構成では .env への追加だけでは有効になりません。実際に使用するComposeの services.app.environment に、次の設定を反映してください。他の環境変数は維持します。
HOIKUICT_KIOSK_ACCESS_MODE: "token"
HOIKUICT_KIOSK_TOKEN: ${HOIKUICT_KIOSK_TOKEN:?required}
.env 等の秘密値の保管先へ登録トークンを設定し、既存の更新手順でアプリコンテナーを再作成します。単なる再起動では環境変数は更新されません。本番更新の順序はTrueNAS導入手順の第18章を参照してください。
初回確認は本ページの手順に沿って行い、実際の配備版を管理者が記録してください。端末名・監視時間・無応答時の確認は日常運用を参照します。
端末を準備する
- 園の共用端末用GoogleアカウントでChromebookを使用します。個人のGoogleアカウント、ゲストモード、シークレットウィンドウは使用しません。
- Chromeで
https://施設のホスト名/guardian/terminalを開きます。日付、園児ID、秘密値をURLに追加する必要はありません。 - 端末登録画面が出たら、職員が登録トークンを入力します。アプリの職員アカウントへログインする必要はありません。過去に職員としてログインした端末なら、先に職員画面からログアウトしてください。
- クラス選択画面が出たら、Chromeのメニューで「キャスト、保存、共有」→「ページをアプリとしてインストール」を選びます。アプリ名は「保護者キオスク」です。
- インストールしたアプリをランチャーから開き、当日の日付、クラス名、「接続済み」を確認します。
- 必要に応じてChromebookの全画面キーを使用します。アプリにも「全画面」ボタンがありますが、Webの全画面表示は画面遷移などで解除されることがあります。端末のキー操作はGoogleのキーボード案内を参照してください。
登録状態はブラウザーの署名付きCookieで保持します。有効期限は既存仕様の365日です。閲覧データの削除、Cookieの期限切れ、登録トークンや秘密鍵の変更後は再登録が必要になります。トークン変更は全登録端末に影響します。
毎日の受付
- 職員がアプリを起動し、当日の日付と接続状態を確認します。
- 保護者はクラス、園児を選び、登園打刻とお迎え予定の確認を行います。お迎え予定の保存後は初期画面に戻ります。
- 降園時は園児を選び、降園の確認・決定を行います。完了表示後、約1秒で初期画面に戻ります。
- 途中で操作をやめた場合は90秒で選択を解除します。残り15秒になると「操作を続ける」が表示されます。「最初に戻る」でも選択を解除できます。
- 専用画面では職員メニューを表示せず、日付を当日に固定します。日付をまたいだ古い画面からの送信は保存せず、初期画面からの操作を案内します。
画面消灯の抑止に対応するブラウザーでは、表示中にScreen Wake Lockを要求します。端末の電源設定や省電力状態によっては消灯するため、開園中の実機状態を確認してください。
通信断と復旧
接続状態は画面を開いた時と30秒ごとに確認します。通信断や端末登録の無効化を検出すると送信操作を止めます。回復を確認すると初期画面へ戻ります。園児名や打刻内容をService Workerなどへ保存するオフライン機能、未送信の打刻を後から自動送信する機能は設けていません。
通信断が続いたまま90秒の無操作時間を過ぎた場合は、園児の表示を隠して接続待ちにします。接続が戻ったことを確認してから初期画面を読み込みます。
送信中に通信が切れた場合は、職員が出欠一覧で記録の有無を確認してください。「接続済み」は直近の接続確認結果であり、送信完了の保証ではありません。Cookieが無効な場合はアプリを開き直して職員が再登録します。
検証方法
サーバー側の回帰テストは、仮想環境で python -m pytest -q test_guardian_terminal.py test_guardian_kiosk.py test_security_controls.py を実行します。
ブラウザー確認は node tools/test-guardian-terminal-browser.cjs で行います。必要なら TEST_PYTHON に仮想環境のPython、PLAYWRIGHT_MODULE にPlaywrightの場所を指定します。テスト専用アプリと架空の園児データをメモリー上に作り、本番DBは使用しません。
Chromebookでの受入確認では、アプリのインストールと再起動後の端末登録保持、タッチ操作、登園・お迎え予定・降園、90秒の無操作、Wi-Fi切断と復旧、スリープからの復帰、日付変更を確認してください。コードの実装とWindows上のChromiumでの検証は、Chromebook実機での受入確認とは区別します。