大規模言語モデル講座 基礎編 2025 Autumn 敗因を勝因に
https://qiita.com/kaizen_nagoya/items/34ffd2b0c47a5f3665d9
Google Classroomをつかうことがあるかも。
講師側でも受講側でも使ったことがなく、なんじゃらほい状態。
ChatGPT
Google Classroomを使ったことがありません。これはなんですか。
ChatGPT:
わかりました!では、Google Classroomについて、初心者向けにわかりやすく説明します。
Google Classroomとは?
Google Classroom(グーグル クラスルーム)は、学校や塾、オンライン講座で使うことができる学習管理ツールです。
簡単に言うと、**「先生と生徒がネット上でつながって、授業の資料配布・課題提出・連絡を一括で行えるアプリ」です。
主な特徴
授業の管理
先生が授業ごとに「クラス」を作成できます。
生徒は招待コードやリンクでクラスに参加します。
課題の配布・提出
先生は課題やテストをオンラインで配布できます。
生徒はパソコンやスマホから課題を提出できます。
コミュニケーション
クラス内で質問したり、先生からの連絡を受け取ったりできます。
コメント機能やお知らせ機能があります。
Googleサービスとの連携
Googleドキュメント、スプレッドシート、スライドなどと連携して課題を作成・提出できます。
メリット
紙の資料やプリントが不要。
課題の提出期限や進捗を簡単に管理できる。
先生と生徒がネット上で直接やり取りできる。
もしよければ、次に実際に生徒としてGoogle Classroomを使う場合の手順も簡単に説明できます。
それも見たいですか?
あなた:
他の類似ツールを8つ示し、損得をしめしてください。
ChatGPT:
もちろんです。Google Classroomに似た学習管理システム(LMS: Learning Management System)や教育用プラットフォームを8つ紹介し、それぞれの利点(得)と欠点(損)**もまとめます。
- Microsoft Teams for Education
得: Officeアプリ(Word、Excel、PowerPoint)と連携可能。ビデオ会議やチャットも一括管理できる。
損: インターフェースがやや複雑で、初心者には操作が難しい場合がある。- Moodle
得: オープンソースで自由にカスタマイズ可能。大規模クラス向けの機能が豊富。
損: 初期設定や管理が複雑で、ITスキルがないと運用が難しい。- Canvas
得: UIが直感的で使いやすい。課題管理や成績管理が充実。
損: 無料版は機能制限があり、学校全体で使う場合はライセンス費用がかかる。- Schoology
得: SNS風の操作感で使いやすい。教材共有やコミュニケーションがスムーズ。
損: 高度な機能は有料。日本語対応がやや不十分。- Edmodo
得: 学生とのコミュニケーションに特化。小・中学生向けに親しみやすい。
損: 高度な課題管理や分析機能は弱め。- Blackboard
得: 大学や専門機関での実績が多く、成績管理・試験機能が充実。
損: UIが古く、操作がやや複雑。導入コストが高い。- Seesaw
得: 小学生や幼児向けに最適。作品や学習記録の共有が簡単。
損: 高学年や大学向けには機能が限定的。- ClassDojo
得: 行動評価やコミュニケーションに特化。保護者との連携も簡単。
損: 課題やテスト管理は弱い。教育の総合管理には不向き。
💡 まとめのポイント:
小中学生向け: Seesaw、ClassDojo、Edmodo
高校・大学向け: Google Classroom、Canvas、Blackboard、Moodle
Officeとの連携重視: Microsoft Teams
操作の簡単さ: Google Classroom、Canvas、Edmodo
もし希望なら、私は**「初心者向けで使いやすくコストが低い順」にこれらをランキング化**して比較表も作れます。
作ってほしいですか?
Notion.siteは別物ですか?
ChatGPT:
はい、Notion(Notion.site)はGoogle Classroomとは別物です。ただし、使い方によっては教育目的でも活用できます。
Notionとは?
本質: ノート、データベース、タスク管理、Wikiなどをまとめられる多機能な情報整理ツール。
特徴: ページを自由に作れる、テンプレートが豊富、チームや個人で情報共有可能。
Google Classroomとの違い
項目 Google Classroom Notion
主目的 学習管理・課題提出・授業運営 情報整理・ノート作成・タスク管理
課題管理 あり(提出・採点・期限管理) 基本的には手動でタスクや進捗管理
コミュニケーション コメントや通知でやり取り可能 コメント機能ありだが通知は限定的
対象 主に学校教育(先生と生徒) 学生・先生だけでなく誰でも使用可能
連携サービス Google Drive, Docsなど Slack, Google Calendar, Notion APIなど
まとめ
Google Classroom: 「オンライン授業・課題管理専用」
Notion: 「自由度の高い情報整理ツール」
教育でNotionを使う場合は、自分で課題提出や進捗管理の仕組みを作る必要があります。
希望なら、私は 「Notionで学校や授業を管理する場合の具体的な使い方」 を例で示すこともできます。
それも見ますか?
はい。
ChatGPT:
わかりました。では、Notionを使って学校や授業を管理する具体例を順を追って示します。ここでは「生徒・先生両方で使える仕組み」を想定します。
- クラスページの作成
Notionで「クラス名ページ」を作る(例:数学1年A組)
ページ内にサブページを作る:
授業資料
課題一覧
成績管理(先生用)
お知らせ- 授業資料の管理
教科書やプリントをPDFやリンクで貼り付け
動画やウェブ教材も埋め込める
テンプレート例:
「授業日」ページ → 今日の内容+資料リンク+練習問題- 課題の配布・提出
課題用データベースを作成
カラム例:
課題名
期限
担当教師
提出状況
添付ファイル(生徒が提出できる)
生徒は自分のページで課題をアップロード
先生は進捗状況を一覧で確認可能- コミュニケーション
コメント機能を使い、課題や資料に質問可能
お知らせページに授業や試験の情報をまとめて掲載
Slackやメールと連携すれば通知も飛ばせる- 成績や進捗の管理(先生用)
データベースで生徒ごとの提出状況や得点を記録
表やカレンダー表示で進捗を可視化
生徒には閲覧権限を制限することで個人情報を守れる- メリットと注意点
メリット:
自由度が高く、授業スタイルに合わせてカスタマイズ可能
資料や課題、進捗が一元管理できる
注意点:
課題の自動採点機能はない
Google Classroomのような通知や提出期限の強制力は弱い
初めて作る場合、ページ構造を設計する手間がある
💡 補足:
Notionは「自由度の高い学習管理ツール」と考えると理解しやすいです。Google Classroomが「授業に最適化された完成品のLMS」だとすれば、Notionは「自分で作れるカスタムLMS」といったイメージです。
希望なら、私はこの説明を元に 実際のNotionテンプレート例を作って、すぐ使える形 にもできます。
作りますか?
Google Classroomで利用可能な便利スクリプトをお示しください。
ChatGPT:
わかりました。Google Classroomは公式APIがあり、課題管理やクラス情報取得などを自動化できます。ここでは便利に使えるスクリプト例をいくつか示します。すべてPythonで、Google Classroom APIを利用します。
- クラス一覧を取得するスクリプト
from googleapiclient.discovery import build
from google.oauth2 import service_account
SCOPES = ['https://www.googleapis.com/auth/classroom.courses.readonly']
SERVICE_ACCOUNT_FILE = 'service_account.json'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('classroom', 'v1', credentials=credentials)
results = service.courses().list().execute()
courses = results.get('courses', [])
for course in courses:
print(f"Class: {course['name']} (ID: {course['id']})")
用途: 自分が管理するすべてのクラス名とIDを一覧表示
便利: クラスIDを使って課題や生徒情報の取得に活用
2. 課題一覧を取得するスクリプト
course_id = 'YOUR_COURSE_ID' # 取得したクラスIDに置き換え
results = service.courses().courseWork().list(courseId=course_id).execute()
courseworks = results.get('courseWork', [])
for cw in courseworks:
print(f"Assignment: {cw['title']} | Due: {cw.get('dueDate')}")
用途: クラス内の課題をまとめて確認
便利: 期限管理やリマインダー作成に使える
3. 生徒の提出状況を取得するスクリプト
course_work_id = 'YOUR_COURSEWORK_ID'
submissions = service.courses().courseWork().studentSubmissions().list(
courseId=course_id, courseWorkId=course_work_id
).execute()
for s in submissions.get('studentSubmissions', []):
print(f"Student ID: {s['userId']} | State: {s['state']}")
用途: 課題の提出済み/未提出を確認
便利: 提出漏れリストを自動生成できる
4. 課題を自動作成するスクリプト
new_assignment = {
'title': '自動作成課題',
'description': 'この課題はスクリプトで作成されました',
'workType': 'ASSIGNMENT',
'dueDate': {'year': 2025, 'month': 10, 'day': 15},
'dueTime': {'hours': 23, 'minutes': 59}
}
created = service.courses().courseWork().create(
courseId=course_id, body=new_assignment).execute()
print(f"Created assignment ID: {created['id']}")
用途: 定期課題やテンプレ課題を自動作成
便利: 同じ課題を複数クラスに一括配布可能
ポイント
Google Classroom APIを使う場合、サービスアカウント or OAuth2 認証 が必要
Pythonだけでなく Apps Script でも同様の自動化が可能
スクリプト化することで、課題管理、提出確認、通知送信などを自動化できる
希望なら、私は 「Python + Google Classroom APIで生徒への自動リマインダー送信まで行う実用サンプル」 を作ることもできます。
作りますか?
はい。
ChatGPT:
では、PythonとGoogle Classroom APIを使って、生徒への課題提出リマインダーを自動送信するスクリプト例を作ります。ここでは、提出期限が近い課題をチェックして、未提出の生徒にメールで通知する仕組みを示します。
前提
Google Classroom API と Gmail API の有効化
サービスアカウントまたは OAuth2 認証の準備
google-api-python-client と google-auth のインストール
pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
サンプルスクリプト
from googleapiclient.discovery import build
from google.oauth2 import service_account
from datetime import datetime, timedelta
# 認証情報
SCOPES = [
'https://www.googleapis.com/auth/classroom.coursework.students.readonly',
'https://www.googleapis.com/auth/classroom.rosters.readonly',
'https://www.googleapis.com/auth/gmail.send'
]
SERVICE_ACCOUNT_FILE = 'service_account.json'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
classroom_service = build('classroom', 'v1', credentials=credentials)
gmail_service = build('gmail', 'v1', credentials=credentials)
# 対象クラスID
course_id = 'YOUR_COURSE_ID'
# 課題一覧取得
courseworks = classroom_service.courses().courseWork().list(courseId=course_id).execute().get('courseWork', [])
# 今日から3日以内の課題を対象
today = datetime.today()
target_date = today + timedelta(days=3)
for cw in courseworks:
due = cw.get('dueDate')
if due:
due_date = datetime(due['year'], due['month'], due['day'])
if today <= due_date <= target_date:
# 提出状況確認
submissions = classroom_service.courses().courseWork().studentSubmissions().list(
courseId=course_id, courseWorkId=cw['id']
).execute().get('studentSubmissions', [])
for s in submissions:
if s['state'] != 'TURNED_IN':
# 生徒IDからメール取得
student_id = s['userId']
student = classroom_service.courses().students().get(
courseId=course_id, userId=student_id
).execute()
email = student['profile']['emailAddress']
# メール作成
message = {
'raw': base64.urlsafe_b64encode(
f"To: {email}\nSubject: 課題提出リマインダー\n\n課題「{cw['title']}」の提出期限が近づいています。提出を忘れないでください。".encode('utf-8')
).decode('utf-8')
}
# メール送信
gmail_service.users().messages().send(userId='me', body=message).execute()
print(f"Reminder sent to {email} for assignment {cw['title']}")
仕組みの説明
課題取得: 指定クラスの課題一覧を取得
期限チェック: 今日から3日以内の課題のみ対象
提出状況確認: 未提出の生徒のみ抽出
メール送信: Gmail APIを使って自動リマインダー送信
💡 補足ポイント
Gmail API での送信は base64 エンコードが必要
提出済み/未提出の判定は state フィールドで行う
cron やスケジューラーに登録すれば毎日自動でリマインダー送信が可能
希望であれば、私はこのスクリプトを さらに「複数クラス対応+Slack通知対応」に拡張した実用版 にアップデートできます。
作りますか?
はい。
ChatGPT:
了解です。それでは、先ほどのスクリプトを複数クラス対応+Slack通知付きの実用版にアップデートした例を示します。
前提
Google Classroom API と Gmail API の有効化
Slack Incoming Webhook URL の取得
Python ライブラリのインストール
pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib requests
サンプルスクリプト(複数クラス+Slack通知)
import base64
from googleapiclient.discovery import build
from google.oauth2 import service_account
from datetime import datetime, timedelta
import requests
# --- 認証情報 ---
SCOPES = [
'https://www.googleapis.com/auth/classroom.coursework.students.readonly',
'https://www.googleapis.com/auth/classroom.rosters.readonly',
'https://www.googleapis.com/auth/gmail.send'
]
SERVICE_ACCOUNT_FILE = 'service_account.json'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES
)
classroom_service = build('classroom', 'v1', credentials=credentials)
gmail_service = build('gmail', 'v1', credentials=credentials)
# --- Slack Webhook URL ---
SLACK_WEBHOOK_URL = 'YOUR_SLACK_WEBHOOK_URL'
# --- 対象クラスIDリスト ---
course_ids = ['CLASS_ID_1', 'CLASS_ID_2'] # 複数クラス対応
# --- 日付設定 ---
today = datetime.today()
target_date = today + timedelta(days=3)
# --- メイン処理 ---
for course_id in course_ids:
# 課題取得
courseworks = classroom_service.courses().courseWork().list(courseId=course_id).execute().get('courseWork', [])
for cw in courseworks:
due = cw.get('dueDate')
if due:
due_date = datetime(due['year'], due['month'], due['day'])
if today <= due_date <= target_date:
# 提出状況確認
submissions = classroom_service.courses().courseWork().studentSubmissions().list(
courseId=course_id, courseWorkId=cw['id']
).execute().get('studentSubmissions', [])
for s in submissions:
if s['state'] != 'TURNED_IN':
student_id = s['userId']
student = classroom_service.courses().students().get(
courseId=course_id, userId=student_id
).execute()
email = student['profile']['emailAddress']
student_name = student['profile']['name']['fullName']
# --- Gmail通知 ---
message_text = f"課題「{cw['title']}」の提出期限が近づいています。提出を忘れないでください。"
message = {
'raw': base64.urlsafe_b64encode(
f"To: {email}\nSubject: 課題提出リマインダー\n\n{message_text}".encode('utf-8')
).decode('utf-8')
}
gmail_service.users().messages().send(userId='me', body=message).execute()
print(f"Gmail reminder sent to {student_name} ({email}) for {cw['title']}")
# --- Slack通知 ---
slack_text = f"⏰ {student_name} さんへリマインダー: 課題「{cw['title']}」の提出期限が {due_date.strftime('%Y-%m-%d')} です。"
requests.post(SLACK_WEBHOOK_URL, json={"text": slack_text})
print(f"Slack notification sent for {student_name} ({cw['title']})")
特徴
複数クラス対応: course_ids に複数クラスIDを設定可能
Gmail通知: 未提出の生徒にメールで自動リマインダー
Slack通知: 教師用チャンネルなどに同時に通知
期限設定: 今日から3日以内の課題を自動抽出
💡 運用ポイント
cronやWindowsタスクスケジューラで毎日定期実行すると自動化が完了
Slack通知で教員も未提出状況を把握できる
Gmail送信は一度に大量に送ると制限に引っかかるため注意
必要であれば、私はこのスクリプトを 「提出済みもまとめて進捗管理表をGoogle Sheetsに自動出力」 まで拡張した完全版にすることもできます。
作りますか?
はい。
ChatGPT:
了解です。それでは、先ほどのスクリプトをさらに拡張して、提出状況を自動でGoogle Sheetsに集計・出力する完全版を示します。これにより、先生はGmailやSlack通知だけでなく、進捗表としても一目で確認できます。
前提
Google Classroom API + Gmail API + Google Sheets API + Slack Webhook が有効
サービスアカウント or OAuth2 認証
Python ライブラリインストール
pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib requests
Google Sheets 上に進捗管理用のスプレッドシートを作成し、IDを取得
完全版サンプルスクリプト
import base64
from googleapiclient.discovery import build
from google.oauth2 import service_account
from datetime import datetime, timedelta
import requests
# --- 認証情報 ---
SCOPES = [
'https://www.googleapis.com/auth/classroom.coursework.students.readonly',
'https://www.googleapis.com/auth/classroom.rosters.readonly',
'https://www.googleapis.com/auth/gmail.send',
'https://www.googleapis.com/auth/spreadsheets'
]
SERVICE_ACCOUNT_FILE = 'service_account.json'
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES
)
classroom_service = build('classroom', 'v1', credentials=credentials)
gmail_service = build('gmail', 'v1', credentials=credentials)
sheets_service = build('sheets', 'v4', credentials=credentials)
# --- Slack Webhook URL ---
SLACK_WEBHOOK_URL = 'YOUR_SLACK_WEBHOOK_URL'
# --- Google Sheets ID ---
SHEET_ID = 'YOUR_SHEET_ID'
SHEET_NAME = '進捗管理'
# --- 対象クラスIDリスト ---
course_ids = ['CLASS_ID_1', 'CLASS_ID_2'] # 複数クラス対応
# --- 日付設定 ---
today = datetime.today()
target_date = today + timedelta(days=3)
# --- スプレッドシート初期化 ---
sheet_values = [['クラス名', '課題名', '生徒名', 'メール', '提出状況', '期限']]
# --- メイン処理 ---
for course_id in course_ids:
# クラス情報取得
course = classroom_service.courses().get(courseId=course_id).execute()
course_name = course['name']
# 課題取得
courseworks = classroom_service.courses().courseWork().list(courseId=course_id).execute().get('courseWork', [])
for cw in courseworks:
due = cw.get('dueDate')
if due:
due_date = datetime(due['year'], due['month'], due['day'])
if today <= due_date <= target_date:
# 提出状況確認
submissions = classroom_service.courses().courseWork().studentSubmissions().list(
courseId=course_id, courseWorkId=cw['id']
).execute().get('studentSubmissions', [])
for s in submissions:
student_id = s['userId']
student = classroom_service.courses().students().get(
courseId=course_id, userId=student_id
).execute()
email = student['profile']['emailAddress']
student_name = student['profile']['name']['fullName']
state = s['state']
# --- Gmail通知(未提出のみ) ---
if state != 'TURNED_IN':
message_text = f"課題「{cw['title']}」の提出期限が近づいています。提出を忘れないでください。"
message = {
'raw': base64.urlsafe_b64encode(
f"To: {email}\nSubject: 課題提出リマインダー\n\n{message_text}".encode('utf-8')
).decode('utf-8')
}
gmail_service.users().messages().send(userId='me', body=message).execute()
print(f"Gmail reminder sent to {student_name} ({email}) for {cw['title']}")
# --- Slack通知 ---
slack_text = f"⏰ {student_name} さんへリマインダー: 課題「{cw['title']}」の提出期限が {due_date.strftime('%Y-%m-%d')} です。"
requests.post(SLACK_WEBHOOK_URL, json={"text": slack_text})
print(f"Slack notification sent for {student_name} ({cw['title']})")
# --- スプレッドシートに追加 ---
sheet_values.append([
course_name,
cw['title'],
student_name,
email,
state,
due_date.strftime('%Y-%m-%d')
])
# --- スプレッドシートに書き込み ---
sheets_service.spreadsheets().values().update(
spreadsheetId=SHEET_ID,
range=SHEET_NAME + '!A1',
valueInputOption='RAW',
body={'values': sheet_values}
).execute()
print("Google Sheetsに提出状況を更新しました。")
特徴
複数クラスに対応
Gmailで生徒にリマインダー送信
Slackで教員向け通知
提出状況をGoogle Sheetsに自動集計
今日から3日以内の課題のみ対象
💡 運用のコツ
定期実行: cron または Windows タスクスケジューラで毎日自動実行
カスタマイズ: 提出期限の範囲や通知文を自由に変更可能
進捗確認: Sheetsでフィルターをかければ未提出一覧だけ表示可能
必要であれば、私はこのスクリプトをさらに 「提出期限が過ぎた課題だけを抽出し、ペナルティ対象リストも作成」 まで自動化するバージョンにもできます。
作りますか?
ChatGPT の回答は必ずしも正しいとは限りません。重要な情報は確認するようにしてください。