きっかけ
Google Forms や Drive で権限エラーが出たときにアカウント切替を簡単にするため、個人で https://github.com/minagishl/google-account-permission-handler を公開し学内向けに運用した経緯を書き残します
当時、学内では既にヘルプセンターが稼働しており、そこにシームレスに統合することが必須でした
アプリ概要
- 最初は React で開発していたが、低スペック端末での描画負荷を下げるため SolidJS に移行
- SolidJS 版はバンドルが小さく、iframe 埋め込み環境でもメモリ使用量が減ってローディング時間が短縮、ヘルプセンターの他ウィジェットとの共存性が向上
- リポジトリは MIT License で公開、サンプル動画や dev サーバー起動手順
pnpm run devも README に整理済み - URL を貼り付けてボタンを押すだけでアカウント切替を誘導できるシンプル設計!
学内展開と PHP 化
在籍していたデジタル委員会 ナレッジベース部門(旧ナレッジベース実行委員)で既存の学内ヘルプセンターに組み込むことになり、まず個人で公開していたフロントエンド版を学内で案内し、次にバックエンドを PHP API に書き換えた
ヘルプセンターに iframe で資料を埋め込む際に表示されない問題や、フォームにアクセスできない問題をこの API で解消し、学内ポータルからシームレスに使えるようにした
PHP 版は学内専用として非公開運用に切り替え、CORS 設定やトークン検証フィルターを追加し、ログを Cloud Logging に集約するなど運用面も整備した
運用実績
- 現在は学内ヘルプセンターで常時稼働し、API 平均利用率は一日約 100 リクエスト
- 選挙期間中に通学コース生が集中アクセスした際は一時間に約 4 万リクエストを記録、それでもレスポンス低下やユーザー体験の悪化はなし
利用方法メモ
- フロントエンド版: 権限エラーが出たフォームやドライブの URL を入力し「Open account switching screen」を押すだけ
- PHP 版 API:
docker-compose up --buildで起動し、http://localhost:8080/chooser?url=<対象URL>にアクセスすれば学内ポータルや iframe 経由でも同じ体験を提供できる
学んだことと今後
- 個人開発でも学内ニーズを拾い、組織のヘルプセンターに組み込むことで利用者規模を一桁以上伸ばせた
- 自動遷移を組み合わせることで問い合わせ件数を大きく減らせた
- CI に依存パッケージの脆弱性スキャンとビルド確認を組み込み、リリース前に自動で安全性を担保する運用に寄せたい