Skip to content

feat(drive): Googleドライブ同期のクライアントIDを配信物に埋めこむ - #72

Merged
GIGAyama merged 1 commit into
mainfrom
claude/app-manual-portal-display-ojm94c
Sep 1, 2026
Merged

GIGAyama merged 1 commit into
mainfrom
claude/app-manual-portal-display-ojm94c

Conversation

@GIGAyama

@GIGAyama GIGAyama commented Sep 1, 2026

Copy link
Copy Markdown
Owner

何をしたか

先生が画面に OAuth クライアントIDを貼りつける形をやめ、配る側がリポジトリに一度だけ登録する形にしました。ノート見本作成ツール PRO(NotebookSample_Generator)とデジタル教材メイカー(Digital_textbook)が先に採っている形にそろえています。

設定が済んだあと、先生がするのは先生用メニュー →「設定」→「Googleでログインして接続」を押すことだけです。

変えたところ

  • src/googleDrive.jsCLIENT_ID / isConfigured を足しました。値はビルド時の VITE_GOOGLE_CLIENT_ID から埋めこみます(import.meta.env はテストの素の Node に無いので、存在を確かめてから触る形も参照実装と同じにしています)
  • .github/workflows/deploy.ymlnpm run check に env を足しました。本番ビルドはこの中で走ります
  • 設定タブの貼りつけ欄と「クライアントIDを変更/削除」を外しました。埋まっていない配信では「この配信では同期が使えません」と出し、設置した人向けに GOOGLE_DRIVE_SETUP.md へ案内します
  • .env.example を足し、.env.gitignore に入れました
  • GOOGLE_DRIVE_SETUP.md を新しく置きました(Google Cloud の手順 → Variables への登録 → 使えているかの確かめ方)

使うために必要な操作

このリポジトリの Settings → Secrets and variables → Actions → VariablesVITE_GOOGLE_CLIENT_ID を登録し、配信し直してください。登録するまでは同期の欄が「この配信では同期が使えません」の表示になります(受付もバックアップも従来どおり動きます)。

⚠️ Secrets(秘密)ではなく Variables(変数)に置いてください。 Web 向けの OAuth クライアントIDは、どのみち配信物とブラウザの通信に出てくる公開の識別子で、隠しても意味がありません。なりすましを防いでいるのは Google Cloud 側の「承認済みの JavaScript 生成元」の設定です。Secrets に入れるとビルドのログで伏字になり、埋めこめたかを目で確かめられなくなるほうが困ります。

端末に残っている古い設定について

⚠️ 端末に保存された古いクライアントID(hp_gdrive_client_id)は消していません。消すと、まだ Variables を登録していない学校では今日から同期が止まります。埋めこみが無いときの引き継ぎとしてだけ読み、埋めこみがあればそちらを優先します。

画面写真とマニュアル

書き替えた画面は撮り直しました(docs/manual/images/37-drive.png)。貼りつけ欄が写ったままだと、マニュアルのほうが古いと気づけません。あわせて使い方マニュアル・MANUAL.mdREADME.md の「貼りつける前提」の記述も直しています。

検査

  • npm run check(lint → test → build → gate)… 0 error / 0 warning
  • node .claude/skills/giga-manual/scripts/lint-manual.mjs docs/manual/manual.md … 警告 0 件
  • node .claude/skills/giga-changelog/scripts/lint-changelog.mjs docs/CHANGELOG.md … 通過
  • check-drift … 正本と一致
  • 埋めこみありのビルドで、配信物の JavaScript にクライアントIDが入ることを確認。実ブラウザで「Googleでログインして接続」が出ることも確認
  • 埋めこみなしのビルドで、「この配信では同期が使えません」が出ることを実ブラウザで確認

Generated by Claude Code

先生が画面に OAuth クライアントIDを貼りつける形をやめ、配る側が
リポジトリに一度だけ登録する形にした。ノート見本作成ツール PRO と
デジタル教材メイカーが先に採っている形にそろえる。

- src/googleDrive.js に CLIENT_ID / isConfigured を足した。値はビルド時の
  VITE_GOOGLE_CLIENT_ID から埋めこむ(import.meta.env はテストの素の Node に
  無いので、存在を確かめてから触る。参照実装と同じ)
- deploy.yml の npm run check に env を足した。ビルドはこの中で走る
- 設定タブの貼りつけ欄と「クライアントIDを変更/削除」を外した。埋まって
  いない配信では「この配信では同期が使えません」と出し、設置した人向けに
  GOOGLE_DRIVE_SETUP.md へ案内する
- .env.example を足し、.env を .gitignore に入れた

⚠️ 端末に残った古いクライアントID(hp_gdrive_client_id)は消していない。
   消すと、まだ Variables を登録していない学校では今日から同期が止まる。
   埋めこみが無いときの引き継ぎとしてだけ読み、埋めこみがあればそちらを優先する。

⚠️ Variables に置く。Secrets ではない。Web 向けの OAuth クライアントIDは
   どのみち配信物とブラウザの通信に出てくる公開の識別子で、隠しても意味がない。
   Secrets に入れるとログで伏字になり、埋めこめたかを目で確かめられなくなる。

書き替えた画面は撮り直した(docs/manual/images/37-drive.png)。貼りつけ欄が
写ったままだと、マニュアルのほうが古いと気づけない。使い方マニュアルと
MANUAL.md と README の手順も、貼りつける前提の記述を直した。

検査: npm run check(0 error / 0 warning)、lint-manual 警告 0 件、
lint-changelog 通過、check-drift 一致。埋めこみの有無それぞれで本番ビルドを
作り、実ブラウザで両方の表示を確かめた。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cr3ptejpAPzJkhsqCJwr3g
@GIGAyama
GIGAyama marked this pull request as ready for review September 1, 2026 11:44
@GIGAyama
GIGAyama merged commit 3517cc5 into main Sep 1, 2026
2 checks passed
@GIGAyama
GIGAyama deleted the claude/app-manual-portal-display-ojm94c branch September 1, 2026 11:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants