Skip to content

Latest commit

 

History

139 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📮 宿題ポスト (Shukudai Post)

小学校の朝の時間を劇的に変える、完全ブラウザ完結型の「宿題提出&きもち記録」アプリです。

毎朝の「宿題出した?」「今日の体調はどう?」という確認作業をデジタル化し、先生の働き方改革と、子どもたちの自己管理能力・自己表現力の育成を同時に実現します。

✨ 特徴 (Features)

  • 🚀 基本機能はサーバー不要・スタンドアロン

    • 外部のデータベースやサーバー設定(GASなど)は一切不要です。ブラウザの記憶領域(LocalStorage)を利用するため、インターネットが不安定な教室でもサクサク動きます。

    • Gemini教師支援を使う場合だけ、APIキーを隔離する安全なバックエンドプロキシが必要です。児童の入力・日常業務はAI未設定やオフラインでも継続できます。

  • 👧 子どもが毎日触りたくなる直感的なUI

    • 大きなテンキーで出席番号を入力。

    • その日に提出すべき課題だけが自動表示され、タップするだけのカンタン操作。

    • 4つのアイコン(げんき・ねむい・イライラ・かなしい)から、今の「きもち」を直感的に記録。

  • 👩‍🏫 先生用ダッシュボード(見るだけでなく、その場で直せる)

    • 「誰が何を提出していないか」「今日のクラスの気分はどうか」が一目でわかる一覧表示。表示期間は「今日/今週/今月/先月/期間指定」から選べます。

    • 課題名のバッジを押すだけで、提出記録をその場で追加・取り消しできます。端末を触れなかった児童の分を、先生が後から入力できます。

    • 提出もきもちも記録がない児童には、「欠席」「遅刻」をワンタップで記録できます(記録がある児童は自動で「出席」扱いになり、上書きされません)。

    • 名簿は名前を改行で貼り付けるだけで一括登録でき、出席番号は空き番号を自動で割り当てます。課題ルール(毎日(平日)・曜日固定・週回数・日付指定)の設定もブラウザ上で完結。

  • ⏱️ 今日の校務オペレーション

    • 朝の未確認、気になるチェックイン、提出の残り、忘れ物、児童支援・家庭連携・学級改善の期限を、一つの優先行動リストへ統合します。各項目から該当する管理画面へ直接移動できます。

    • 専科・支援員・代理の先生へ渡せる「校内引き継ぎブリーフ」を自動作成します。家庭から聞いた校内限定内容や自動診断は含めず、共有前に内容を確認できます。

  • Geminiによる教師支援(任意)

    • 学級の週次サマリー、保護者面談文案、校内引き継ぎの整文、支援観察メモの構造化を、Geminiの編集可能な下書きとして作成します。AIは診断・順位付け・自動送信・自動保存を行いません。

    • 送信前に児童名と連絡先を仮名化し、学級分析では集計値だけを利用します。実際にGeminiへ送るJSONを画面で確認し、先生が明示的に同意したときだけ通信します。

    • APIキーはブラウザへ置かず、固定タスクだけを許可するCloud Run向けプロキシに保存します。プロキシはレスポンス形式を固定し、Gemini側の保存を無効化し、CORS・Bearer認証・レート制限を適用します。

  • 🛡️ 自動復元ポイント(先生用メニュー →「設定」タブ)

    • 変更中は30分ごと、ファイル・クラウド復元や年度更新の直前には必ず、整合性付きの復元ポイントを端末内へ保存します。最新5世代から件数差分を確認して安全に戻せます。「今すぐ保存」で任意のタイミングでも作れます。

    • Googleドライブと端末の両方で更新された場合は自動上書きを停止し、教師が採用する版を選択します。選ばなかった版も復元ポイントへ退避します。

    • バックアップには破損検知用の整合性値を付与し、復元前に形式・バージョン・重複・参照関係を検査します。旧形式バックアップも警告を表示したうえで移行できます。

  • 📈 学級DXインサイトと改善サイクル

    • 直近14日間を前の14日間と比較し、提出・きもち・忘れ物・支援運用から、学級全体で確認したい変化と具体的な改善候補を表示します。児童名や個人順位は表示しません。

    • 改善候補をそのまま期限付きプランに変換し、根拠、試すこと、確認指標、実施後の変化を記録できます。「分析して終わり」ではなく、学級経営の小さな改善を継続的に蓄積します。

  • 🎒 忘れ物・学習準備のクイック記録

    • 児童・教科・時限・忘れた物・授業への影響・その場の対応を、選ぶだけで記録できます。品物(筆箱・教科書・宿題・タブレットなど)も対応(貸し出し・友達と共有・代用品など)も選択式なので、授業中に数タップで終わります。

    • 直近28日の件数、困った児童数、よくある品物・教科の傾向を自動で整理します。児童を評価するためではなく、時間割や持ち物案内など、学級全体の支援改善に活用する設計です。

  • 🤝 児童タイムライン・支援フォローアップ

    • 提出、きもち、出欠、忘れ物、支援記録を児童ごとの時系列で確認できます。情報が別々の帳簿に分散せず、最近の変化を短時間で振り返れます。

    • 最近の記録と振り返り期限から「今日の確認候補」を表示し、確認した事実、学校で試す支援、目指す状態、実施後の変化を分けて記録します。自動表示は診断や児童の順位付けではなく、先生の確認を助けるためのルールベースの候補です。

    • 支援開始前後を同じ日数(最大14日)で比較し、提出率、忘れ物、きもち、出欠の記録変化を「効果レビュー」に表示します。データが少ない場合は判断を促さず、記録の継続が必要であることを明示します。

  • 💬 家庭連携CRM

    • 電話、面談、連絡帳などで学校から共有した事実、家庭から聞いた内容、合意した対応、次回確認日を児童ごとに記録します。期限を迎えた連絡は管理画面で通知され、対応漏れを防ぎます。

    • 家庭から聞いた内容は校内限定として管理し、保護者配布用レポートや児童タイムラインには自動転載しません。タイムラインには学校が共有した事実と合意事項だけを表示します。

  • 🖨️ 目的別レポートセンター

    • 従来の学期末レポートに加えて、「保護者面談サマリー」と「校内支援ケース資料」を、クラス全員または選択した児童についてA4形式で出力できます。

    • 保護者用には提出・きもち・忘れ物・出欠の集計と学校での具体的な支援だけを掲載し、教師の内部観察メモや振り返り予定日は自動的に除外します。校内用には取扱注意を明示し、事実・支援・目標・次回確認を一続きで掲載します。

    • PDFで残したいときは、印刷画面の送信先を「PDFに保存」に変更してください(背景色を出す場合は「背景のグラフィック」を有効に)。

  • 📲 PWA対応(アプリとしてインストール可能)

    • インストールできる状態のときだけ、ヘッダー右上に「ホームに いれる」ボタンが現れます。Chromeのアドレスバー右端のインストールアイコン(またはメニューの「アプリをインストール」)からでも同じことができます。iPadではSafariの「ホーム画面に追加」を使ってください。

    • Service Workerによるキャッシュで、2回目以降の起動が高速になり、オフラインでも動作します(一度も開いたことがない端末がオフラインの場合は、案内画面を表示します)。

    • 新しい版が用意できても勝手には切り替わりません。画面下に「あたらしい ばんが あります」と出るので、児童が操作していないときに「さいしんに する」を押してください。朝の受付中に打ちかけの入力が消えるのを防ぐためです。

  • 🗓️ 柔軟な課題ルール設定

    • 課題ごとに「おやすみ日」を設定でき、「平日毎日の課題だけど今日だけお休み」のような運用が可能です(おやすみ日は必要回数にも数えられません)。

    • 🌙 おやすみ日の自動提案:ある日の提出率が20%に満たなかった課題は、「そもそもその日は宿題を出していなかった」可能性があります。アプリが過去60日の提出記録からそうした日を自動で洗い出し、課題ルールの一覧で提案します。1件ずつでも「すべておやすみ」でも採用でき(必要回数から除外されます)、「この日は本当に必要だった」場合は提案を消せます。実際に提出のなかった日を、後から不当な未提出扱いにしないための機能です。

      • 提出率の母数は在籍児童からその日の欠席者を除いた人数です(遅刻は登校しているので母数に含みます)。
      • 対象は「毎日(平日)」「曜日固定」「日付指定」です。「週回数」は日によって提出が偏るのが通常運用のため、提案しません。
      • 提案は1課題あたり最新12件まで表示します。当日はまだ締め切られていないため対象外です。
    • 「毎日(平日)」「曜日固定」「週の回数指定」の課題には**有効期間(開始日・終了日)**を設定できます。開始日は課題の登録日が既定でセットされ、あとから任意の期間に変更することも可能です。開始日より前・終了日より後は提出率の「必要回数」に数えないため、まだ課題を出していなかった時期が未提出として集計されることを防ぎ、正確な提出率を把握できます。

    • 課題ルールを削除しても提出記録は失われず、「終了した課題」としてレポートの提出率集計に反映され続けます。誤って削除した場合は復元も可能です。

📱 使い方 (How to Use)

1. アプリを開く

このアプリは GitHub Pages で公開されています。以下のURLをiPadやPCのブラウザで開いてください。

👉 宿題ポストを開く

💡 おすすめの運用方法: 教室のiPadでURLを開き、Safariの「ホーム画面に追加」機能を使ってアプリアイコンを作成すると、全画面表示になり本物のアプリのように使えます。

2. 初期設定(先生用メニュー)

画面右上の「歯車アイコン」をタップし、先生用メニューを開きます。

  • 初期PINコード: admin

設定画面から、まずは以下の準備を行ってください。

  1. 設定タブ →「セキュリティ設定」: 新しいPINコード(英数字6文字以上)に変更してください。PINはハッシュ化して保存され、そのままの文字では端末にもバックアップにも残りません。先生用メニューは10分間操作がないと自動で受付画面に戻ります

  2. 名簿管理タブ: クラスの児童の名前を改行して貼り付け、一括登録します。初期状態では見本として「さとう 花子」「すずき 太郎」の2名が入っているので、削除してください。

  3. 課題ルールタブ: 「毎日の音読」「月曜日の図書バッグ」「週3回の自主学習」など、クラスのルールを設定します。こちらも見本として「音読(毎日)」「自主学習(週3回)」が入っています。

3. 先生用メニューの11タブ

タブ できること
ダッシュボード 提出・きもち・出欠の一覧。提出記録の追加/取り消し、欠席・遅刻の記録
今日の校務 今日やることを優先順に統合表示。校内引き継ぎブリーフのコピー
AI教師支援 Gemini下書きの作成(任意・要プロキシ設定)。送信内容の確認と利用履歴
学級改善 直近14日と前の14日の比較、改善候補、期限付き改善プランの管理
忘れ物・準備 授業中の忘れ物記録と、直近28日の傾向
児童支援 児童ごとの概要/支援の記録/効果レビュー/タイムライン
家庭連携 電話・面談・連絡帳の記録、次回確認日の管理
名簿管理 児童の追加・一括登録・編集・削除
課題ルール 課題の追加・編集・終了(復元可)、おやすみ日、有効期間、おやすみ日の提案
レポート印刷 学期末レポート/保護者面談サマリー/校内支援ケース資料をA4で出力
設定 PIN変更、ファイルのバックアップ・復元、自動復元ポイント、Googleドライブ同期、年度更新

4. 子どもたちの操作(毎朝)

  1. iPadの前に立ち、自分の「出席番号」を入力。

  2. 今日の宿題が表示されるので、提出するものを選んで「つぎへ」。

  3. 今の「きもち」を選んで完了!🎉

🛡️ データの安全性とバックアップについて

本アプリの業務データは、「アプリを開いている端末のブラウザ(LocalStorage)」へ保存します。Googleドライブ同期を有効にした場合は利用者自身のDriveへ、Gemini教師支援を明示実行した場合は画面に表示した匿名化済みJSONだけを設定済みプロキシ経由でGeminiへ送信します。

⚠️ 注意点とバックアップのお願い

  • ブラウザの履歴(キャッシュ)を消去すると、データも消えてしまいます。

  • 先生用メニューの「設定」タブから、**定期的に「バックアップを保存」**を押し、データファイル(.json)をダウンロードしておくことを強く推奨します。

  • iPadを交換する際などは、新しい端末で「データから復元」を行うことで、簡単に引き継ぎが可能です。

  • 端末内の「自動復元ポイント」は端末が壊れると一緒に失われます。ファイル、またはGoogleドライブのバックアップと必ず併用してください。

  • 「年度更新」は名簿・課題・提出・きもち・出欠・忘れ物・児童支援・学級改善・家庭連携・AI利用履歴をすべて削除します(PINコードの設定は残ります)。実行の直前に自動で復元ポイントを作りますが、先に「バックアップを保存」もしておいてください。

データ形式について

提出、日次チェックイン(きもち)、出欠、忘れ物、児童支援、学級改善プラン、家庭連携、AI利用履歴は、用途ごとに分離して保存します。AI利用履歴には日時・機能・成否・モデル・参照件数だけを残し、送信JSONと生成文は保存しません。旧バージョンのバックアップやブラウザ内データは、初回起動時または復元時に現在の形式へ自動移行されます。

☁️ 複数端末でのデータ同期(Googleドライブ連携)

「職員室のPCで名簿を編集し、教室のiPadでそのまま使いたい」——そんなときは Googleドライブ同期 が便利です。Googleアカウントでログインすると、名簿・課題・提出記録などが自動でGoogleドライブにバックアップされ、別の端末でも同じデータを引き継げます

  • 💾 データはあなた自身のGoogleドライブ(アプリ専用の1ファイル)にのみ保存されます。開発者や第三者のサーバーには一切送信されません。
  • 🔒 このアプリは「自分が作成したファイル」だけにアクセスします(drive.file スコープ)。ドライブ内の他のファイルは見えません。
  • 🔁 「自動同期」をONにすると、データを変更するたびにクラウドへ自動保存し、起動時に他端末での更新があれば復元を確認します。

🛠️ はじめの設定(アプリを配る人が一度だけ行います)

使う先生の設定はありません。 配る側が OAuth クライアントIDを1つ用意してリポジトリに登録すると、先生は先生用メニュー →「設定」タブで「Googleでログインして接続」を押すだけで使えます。

  1. Google Cloud Console でプロジェクトを作り、Google Drive API を有効化します(無料)。
  2. OAuth 同意画面 を「外部」で作成し、利用する先生方のGoogleアカウントをテストユーザーに追加します(最大100名まで、審査不要)。
  3. OAuth クライアントID(ウェブ アプリケーション) を作成し、承認済みの JavaScript 生成元 に配信先のオリジンを登録します。
    • 独自ドメインの場合: https://homework-barcordreader.giga-school.com
    • GitHub Pages の場合: https://<ユーザー名>.github.io
    • 動作確認(ローカル開発)用: http://localhost:5173
  4. GitHub の Settings → Secrets and variables → Actions → VariablesVITE_GOOGLE_CLIENT_ID を登録し、配信し直します(main へ push するか、Actions から Deploy to GitHub Pages を手動実行)。

各手順の詳細と、うまくいかないときの直し方は GOOGLE_DRIVE_SETUP.md にあります。手元で試すときは .env.example.env にコピーして値を入れてください(.env はGit管理外です)。

💡 クライアントIDは秘密の鍵ではありません。 Web向けのOAuthクライアントIDは、どのみち配信物とブラウザの通信に現れる公開の識別子で、知られてもデータは読めません。なりすましを防いでいるのはGoogle Cloud側の**「承認済みのJavaScript生成元」**の設定です。そのため Secrets(秘密)ではなく Variables(変数) に登録します。一方 クライアントシークレットは本物の鍵なので、このアプリでは使用せず、リポジトリにも置かないでください。

⚠️ 未登録のままでも配信は通ります。その場合は設定タブの同期の欄が「この配信では同期が使えません」という表示になるだけで、児童の受付もファイルへのバックアップ・復元も従来どおり動作します。

⚠️ 「テスト」ステータスのため、ログイン時に「このアプリはGoogleで確認されていません」という警告が出ることがあります。ご自身で作成したプロジェクトであれば「詳細」→「(アプリ名)に移動」で続行できます。

💡 各端末での使い方 2台目以降の端末では、接続したあと「復元」または「今すぐ同期」を押すと、1台目のデータがそのまま引き継がれます。以前このアプリで端末ごとにクライアントIDを貼っていた場合、その値はリポジトリに登録するまでの引き継ぎとして使われ、登録後はリポジトリの値が優先されます。

✨ Gemini教師支援の設定(任意)

静的なGitHub PagesへGemini APIキーを埋め込むことは禁止です。server/gemini-proxy を学校・設置者が管理するGoogle CloudプロジェクトのCloud Runへ配置し、APIキーはSecret Managerから渡してください。手順と環境変数は Gemini教師支援プロキシのREADME にまとめています。

配置後、先生用メニュー →「AI教師支援」→「安全な接続設定」に、Cloud Run URLと24文字以上のゲートウェイトークンを登録します。この2項目は端末内に分離保存され、宿題ポストのバックアップやGoogle Drive同期には含まれません。学校・自治体の生成AI利用規程、保護者説明、データ処理契約も確認したうえで有効化してください。

🛠️ 開発者向け情報 (For Developers)

本プロジェクトは Vite + React + Tailwind CSS v4 で構築され、GitHub Pages(/Homework_barcordreader/)で配信しています。

npm ci          # 依存を入れる
npm run dev     # 開発サーバー
npm run check   # 静的解析 → テスト → 本番ビルド → 品質ゲート
npm run icons   # アイコンを作り直す(元絵を差し替えたときだけ)

⚠️ リリースするときは public/sw.jsAPP_VERSION を必ず1つ上げてください。 上げ忘れると、児童の端末に古い版が残ったままになります。

使用技術

  • React (Hooks)

  • Tailwind CSS v4(@tailwindcss/vite

  • Lucide React (アイコン)

  • Google Identity Services + Google Drive REST API (複数端末同期・src/googleDrive.js / src/useGoogleDriveSync.js)

  • Gemini Interactions API + JSON Schema structured output(任意の教師支援・server/gemini-proxy

品質チェック

Pull Requestとmainへのpushでは、GitHub Actionsが静的解析、ロジックテスト、本番ビルド、GIGA Standard v4 の機械検査を必須チェックとして実行します。ローカルでは次のコマンドで同じ検証を実行できます。

npm run check

検査に落ちたときは、検査をゆるめるのではなく quality.config.jsongigaV4.exceptions / securityExceptions理由を書いて明示的に許可してください。

表示・PWA・アクセシビリティの実測結果は AUDIT.md に、教室での使い方と困ったときの対処は MANUAL.md にあります。

©️ 開発・提供 (Author)

GIGA山 お問い合わせや活用事例などは、以下のnoteまでお寄せください。

This project was inspired by the passion of teachers who want to spend more time facing their students.

About

バーコードで一瞬!小学校向け「宿題提出&きもちメーター」アプリ (Google Apps Script + React)。先生のチェック時間をゼロにし、毎朝の健康観察も同時に完了できるアプリです。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages