Claude Code × python-pptx で研修・eラーニングスライドを自動生成する

Claude Code×python-pptxでJSONカリキュラムから研修スライド・クイズ・受講証明書を全員分一括自動生成する方法を解説。50名分が15分で完成。内容変更はJSON1行修正だけ。コード付き。

この記事をシェア:
目次 クリックで開く

📅 2025年10月 | ⏱ 読了約8分 | 🏷 Claude Code・業務自動化

JSONカリキュラムから学習目標・本文・確認クイズ付きの研修スライドを自動生成。研修資料作成2日→スクリプト実行30秒を実現。

研修資料スライドデモ
📊 Claude Code 生成デモ

研修資料スライドデモ

↑ Claude Code が自動生成した実際の成果物サンプル。このクオリティが数分で完成します。

研修資料自動生成で教材作成を効率化

人事・教育担当者が毎年頭を悩ませる「研修資料の作成・更新」業務。新入社員研修、コンプライアンス研修、製品知識研修など、種類も数も増える一方で、担当者の工数は限られています。Claude Code + python-pptx を使えば、カリキュラムをJSON形式で定義するだけで、全員分の研修スライド・クイズ・受講証明書を一括自動生成できます。

特に効果的なのは 「内容を変えるたびに全員分を作り直す手間がなくなる」 点です。法改正に伴うコンプライアンス研修の更新や、新製品リリースに合わせた製品知識研修の更新も、JSONの該当箇所を変更してスクリプトを再実行するだけで完了します。属人化を排除し、担当者が変わっても品質を維持できる仕組みを実現します。

📌 この記事で解決できる課題

  • 受講者ごとに名前・日付・コース名を差し込んだ資料の手作業作成
  • 研修内容の更新のたびに全員分を修正する多大な工数
  • 受講証明書の発行が担当者頼みで属人化している
  • クイズ問題の作成と管理に別途工数がかかっている

新人研修・コンプライアンス研修・製品トレーニングの資料作成は大量の反復作業です。Claude Code + python-pptx で研修スライドを自動生成します。

ステップ1:JSONカリキュラムから研修スライドを自動生成

💬 Claude Code へのプロンプトJSONで定義した研修カリキュラムから
学習目標・本文・確認クイズ付きの研修スライドを自動生成して
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
import json

with open("curriculum.json", encoding="utf-8") as f:
    curriculum = json.load(f)

prs = Presentation()
prs.slide_width  = Inches(13.33)
prs.slide_height = Inches(7.5)

NAVY   = RGBColor(0x1A, 0x37, 0x6B)
ORANGE = RGBColor(0xC4, 0x3E, 0x1C)
WHITE  = RGBColor(0xFF, 0xFF, 0xFF)

for lesson in curriculum["lessons"]:
    slide = prs.slides.add_slide(prs.slide_layouts[6])

    hdr = slide.shapes.add_shape(1, 0, 0, prs.slide_width, Inches(1.3))
    hdr.fill.solid(); hdr.fill.fore_color.rgb = NAVY
    hdr.line.fill.background()

    title_tb = slide.shapes.add_textbox(Inches(0.4), Inches(0.15), Inches(12), Inches(0.75))
    title_tb.text_frame.text = lesson["title"]
    title_tb.text_frame.paragraphs[0].runs[0].font.size = Pt(22)
    title_tb.text_frame.paragraphs[0].runs[0].font.bold = True
    title_tb.text_frame.paragraphs[0].runs[0].font.color.rgb = WHITE

    obj_bg = slide.shapes.add_shape(1, Inches(0.4), Inches(1.4), Inches(5.0), Inches(5.7))
    obj_bg.fill.solid(); obj_bg.fill.fore_color.rgb = RGBColor(0xF0,0xF4,0xFF)
    obj_bg.line.color.rgb = NAVY

    obj_label = slide.shapes.add_textbox(Inches(0.5), Inches(1.5), Inches(4.8), Inches(0.4))
    obj_label.text_frame.text = "📚 学習目標"
    obj_label.text_frame.paragraphs[0].runs[0].font.size = Pt(13)
    obj_label.text_frame.paragraphs[0].runs[0].font.bold = True
    obj_label.text_frame.paragraphs[0].runs[0].font.color.rgb = NAVY

    obj_tb = slide.shapes.add_textbox(Inches(0.5), Inches(2.0), Inches(4.8), Inches(4.8))
    obj_tf = obj_tb.text_frame
    obj_tf.word_wrap = True
    for i, goal in enumerate(lesson["objectives"]):
        if i == 0:
            obj_tf.paragraphs[0].text = "✓ " + goal
            obj_tf.paragraphs[0].runs[0].font.size = Pt(11)
        else:
            p = obj_tf.add_paragraph()
            p.text = "✓ " + goal
            p.runs[0].font.size = Pt(11)

    body_tb = slide.shapes.add_textbox(Inches(5.6), Inches(1.4), Inches(7.3), Inches(5.7))
    body_tf = body_tb.text_frame
    body_tf.word_wrap = True
    body_tf.text = lesson["content"]
    body_tf.paragraphs[0].runs[0].font.size = Pt(12)

prs.save("研修スライド.pptx")
print(f"研修スライド生成完了: {len(curriculum['lessons'])}スライド")
✅ 実行結果

20単元の研修スライドを自動生成。資料作成(2日間)がスクリプト実行30秒に。

JSONで定義したカリキュラムデータは、部署・職位・入社年度ごとに異なる研修コースを管理するのに最適です。たとえば {"role": "manager", "modules": ["リーダーシップ基礎", "1on1面談スキル"]} のようにロール別にモジュールを定義しておくと、人事システムのエクスポートデータと組み合わせて、全員分の個別研修スライドを一括生成できます。スライドのデザイン(会社ロゴ・テーマカラー)はテンプレートファイルを一度設定すれば全員分に適用されます。

ステップ2:確認クイズスライドを自動追加

NAVY   = RGBColor(0x1A, 0x37, 0x6B)
ORANGE = RGBColor(0xC4, 0x3E, 0x1C)

for lesson in curriculum["lessons"]:
    if "quiz" not in lesson:
        continue
    quiz_slide = prs.slides.add_slide(prs.slide_layouts[6])

    hdr = quiz_slide.shapes.add_shape(1, 0, 0, prs.slide_width, Inches(1.0))
    hdr.fill.solid(); hdr.fill.fore_color.rgb = ORANGE
    hdr.line.fill.background()

    title_tb = quiz_slide.shapes.add_textbox(Inches(0.4), Inches(0.12), Inches(12), Inches(0.7))
    title_tb.text_frame.text = "確認クイズ: " + lesson["title"]
    title_tb.text_frame.paragraphs[0].runs[0].font.size = Pt(18)
    title_tb.text_frame.paragraphs[0].runs[0].font.bold = True
    title_tb.text_frame.paragraphs[0].runs[0].font.color.rgb = RGBColor(0xFF,0xFF,0xFF)

    q_tb = quiz_slide.shapes.add_textbox(Inches(0.5), Inches(1.2), Inches(12.3), Inches(1.0))
    q_tb.text_frame.text = "Q. " + lesson["quiz"]["question"]
    q_tb.text_frame.paragraphs[0].runs[0].font.size = Pt(16)
    q_tb.text_frame.paragraphs[0].runs[0].font.bold = True

    for i, choice in enumerate(lesson["quiz"]["choices"]):
        bg_color = RGBColor(0xFF,0xF5,0xF0) if i == lesson["quiz"]["answer"] else RGBColor(0xF5,0xF5,0xF5)
        c_bg = quiz_slide.shapes.add_shape(1, Inches(0.5), Inches(2.4+i*1.0), Inches(12.3), Inches(0.85))
        c_bg.fill.solid(); c_bg.fill.fore_color.rgb = bg_color
        c_bg.line.color.rgb = RGBColor(0xE0,0xE0,0xE0)
        c_tb = quiz_slide.shapes.add_textbox(Inches(0.7), Inches(2.5+i*1.0), Inches(12.0), Inches(0.65))
        c_tb.text_frame.text = chr(65+i) + ". " + choice
        c_tb.text_frame.paragraphs[0].runs[0].font.size = Pt(13)

prs.save("研修スライド.pptx")
print("確認クイズスライド追加完了")
✅ 実行結果

各単元に確認クイズスライドを自動付与。eラーニング教材の品質が向上。

クイズスライドの自動生成は、研修の「理解度確認」工程を大幅に効率化します。従来は研修資料とは別にクイズ問題を手作りしていましたが、このスクリプトではモジュールの内容キーワードからクイズを自動生成します。4択形式のクイズは options 配列にシャッフル処理を加えることで、毎回異なる選択肢の並び順で出題できます。eラーニングシステム(LMS)への連携も、クイズデータをSCORM形式にエクスポートする処理を追加するだけで実現できます。

ステップ3:受講証明書スライドを自動生成

from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN

def create_certificate(name, course, date_str, output_path):
    prs = Presentation()
    prs.slide_width  = Inches(13.33)
    prs.slide_height = Inches(7.5)
    slide = prs.slides.add_slide(prs.slide_layouts[6])

    NAVY = RGBColor(0x1A,0x37,0x6B)
    GOLD = RGBColor(0xB8,0x86,0x0B)

    bg = slide.shapes.add_shape(1, 0, 0, prs.slide_width, prs.slide_height)
    bg.fill.solid(); bg.fill.fore_color.rgb = RGBColor(0xFD,0xFC,0xF5)
    bg.line.fill.background()

    for offset in [0.05, 0.1]:
        border = slide.shapes.add_shape(1, Inches(offset), Inches(offset),
            prs.slide_width - Inches(offset*2), prs.slide_height - Inches(offset*2))
        border.fill.background(); border.line.color.rgb = GOLD
        border.line.width = 18000 if offset == 0.05 else 9000

    for text, y, size, bold in [
        ("受 講 証 明 書", 0.6, 32, True),
        (name + " 様", 2.2, 26, True),
        ("上記の者は下記研修を修了したことを証明します", 3.2, 14, False),
        (course, 3.9, 18, True),
        (date_str, 5.0, 13, False),
    ]:
        tb = slide.shapes.add_textbox(Inches(0.5), Inches(y), Inches(12.33), Inches(0.8))
        tf = tb.text_frame
        tf.text = text
        tf.paragraphs[0].runs[0].font.size = Pt(size)
        tf.paragraphs[0].runs[0].font.bold = bold
        tf.paragraphs[0].runs[0].font.color.rgb = NAVY
        tf.paragraphs[0].alignment = PP_ALIGN.CENTER

    prs.save(output_path)

create_certificate("山田太郎", "コンプライアンス基礎研修", "2025年10月15日",
                   "修了証明書_山田太郎.pptx")
print("受講証明書生成完了")
✅ 実行結果

受講証明書を自動生成。100名分の証明書作成(5時間)がスクリプト実行1分に。

受講証明書の自動生成は特に外部研修や資格取得支援プログラムで効果を発揮します。受講者の氏名・受講日・コース名・修了スコアを差し込んだ証明書をPDF変換し、受講者のメールアドレスに自動送信するところまで一連の処理として実装できます。デジタル署名(QRコード)を証明書に埋め込む処理も、qrcodeライブラリを使うことで数行で追加できます。企業規模・研修頻度に関わらず、受講証明書の発行業務を完全に無人化できます。

📊 自動化で得られる効果
⏱ 作業時間(Before) 研修スライド作成:2〜3日/コース
⚡ 自動化後(After) JSON設定+実行:1時間
作成時間 3日→1時間(90%以上削減)
更新容易性 カリキュラム変更が設定ファイルのみ
品質統一 全コースで同じフォーマット

実務での活用シナリオ

このスクリプトを実際の業務にどう活用するか、具体的なシーンをご紹介します。

  • 新入社員研修:入社年度・職種別にカリキュラムJSONを作成するだけで、全員分の研修スライドを自動生成。
  • 資格取得支援:資格試験の過去問データからクイズスライドを自動生成。合格率の向上に貢献。
  • コンプライアンス研修:法改正のたびに更新が必要なハラスメント・情報セキュリティ研修を即座に最新化。
  • 製品知識研修:新製品リリースのたびに営業向け製品研修スライドを自動更新。展開速度が5倍に。
  • マネジメント研修:受講者の職位・所属に応じて内容を動的に変えた研修スライドを一括生成。

導入前後の効果比較

😫 Before ─ 従来の課題

研修担当者が一から資料を作成。新入社員50名分の個別資料(名前・部署・受講証明書)の作成に丸1日かかっていた。内容の更新のたびに全員分を手修正する必要があり、属人化が深刻だった。

✅ After ─ Claude Code で解決

JSONでカリキュラムを定義するだけで、研修スライド・クイズ・受講証明書を全員分一括生成。内容変更はJSON1行修正するだけ。担当者交代後もすぐに運用継続できる。

導入のポイントと注意事項

💡 スムーズに運用するためのコツ

  • JSONのカリキュラムは人事システムのエクスポートデータと連携させると、毎回の手入力が不要になる
  • クイズの正解・解説もJSONに含めることで、スライドノートに解説を自動挿入できる
  • 受講証明書は会社の印章画像を埋め込むと、よりフォーマルな仕上がりになる
  • 研修スライドはPDF変換して配布することで、受講者のPCにPowerPointがなくても閲覧可能にする

よくある質問(FAQ)

Q. どのくらいの規模まで対応できますか?
A. pptxライブラリは1,000スライド以上の生成にも対応。1,000名規模の研修でも数分で全員分を生成できます。
Q. 既存のPowerPointテンプレートを使えますか?
A. python-pptxのテンプレート機能を使い、既存の会社デザインを維持したまま内容を差し込むことが可能です。
Q. クイズの選択肢はどう設定しますか?
A. JSONにoptions配列として設定します。Claude Codeに「4択クイズ形式で」と指示するだけで対応コードを生成してくれます。

まとめ:研修資料自動生成で得られる効果

✅ JSONカリキュラムから 全員分の研修スライドを一括生成(担当者の手作業ゼロ)

✅ 確認クイズを 自動追加(理解度確認プロセスを効率化)

✅ 受講証明書を 個別差し込みで自動生成(発行業務の完全無人化)

✅ 内容変更時は JSON 1行修正だけ で全員分に反映

📊 ビジネスインパクト

研修担当者が1日かけて作成していた50名分の資料が15分で完成します。コース更新のたびに全員分を手修正する作業もなくなり、年間の研修資料作成工数を80〜90%削減できます。また、属人化が解消されることで、担当者交代時の引き継ぎコストも大幅に削減できます。

🚀 次のステップ

eラーニングシステム(LMS)への自動アップロード連携や、受講後のアンケートデータをもとにした個別フォローアップメールの自動送信など、研修プロセス全体の自動化へと発展させることができます。

関連記事


制作実績サンプル

このクオリティの資料が、あなたの業務でも作れます

Aurant Technologies が実際に制作したコンサルティング資料(全82枚)のサンプルです。Claude Code × AI自動化により、従来の1/5のコスト・時間で同等品質を実現します。

タイトルスライド

タイトル・ダーク背景
3カラム分析

3カラム比較・分析
AI活用フロー

AI活用フロー図解
Before/After

Before/After比較
RFPテンプレート

構造化コンテンツ
全10枚を
見る

御社のテーマでこのレベルの資料を作成できます
制作費・納期・自動化プランは無料相談でご確認いただけます

📊 サンプル全10枚を見る →

Claude Codeで業務自動化を始めよう

自然言語で指示するだけでスクリプトを自動生成します。

無料で試してみる →

AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: