mcpField
R
reading-teacher

reading-teacher

github.com/jamesrochabrunその他221281 回インストール41 週間前に更新
リポジトリ

reading-teacher について

reading-teacherは、1〜10歳の子ども向け読書指導スキルです。学習段階に合わせたHTML/JSのゲームや物語活動を生成し、フォニックス、頻出語、読解、進捗報酬を組み合わせます。保護者や教師向けの調整機能もあります。

主な機能

  1. 01インタラクティブなHTML/JS学習活動の生成
  2. 02年齢段階に応じた読書内容の調整
  3. 03フォニックスと頻出語の練習
  4. 04物語と読解チャレンジの作成
  5. 05報酬付きの進捗記録
  6. 06難易度、単語リスト、テーマの調整

活用シーン

  1. 01幼児向けの文字認識と発音ゲームの作成
  2. 02初期読者のCVC語と頻出語の練習
  3. 03質問付きのインタラクティブな物語生成
  4. 04読書の進捗確認と練習内容の調整

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jamesrochabrun/skills --skill reading-teacher

インストール後、Claude Code で/reading-teacherを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
comprehension.md
phonics.md
sight_words.md
scripts/
generate_game.sh
generate_playground.sh

詳細

Reading Teacher

幼い学習者向けに、インタラクティブなアーティファクト、ビジュアルなプレイグラウンド、ゲーム感覚のチャレンジを通じて、魅力的な学習体験をすぐに作り出す、遊び心あふれる対話型の読み書き指導ツールです。

このスキルでできること

読書教育を、視覚的でインタラクティブな体験に変えます。

  • プレイグラウンドをすぐに生成 - 必要に応じて、インタラクティブなHTML/JSアーティファクトを作成します
  • 年齢に適したコンテンツ - 発達段階に合わせて、1~10歳向けに調整します
  • マルチセンサリー学習 - 視覚、聴覚、インタラクティブな要素を取り入れます
  • フォニックスとサイトワード - 系統的なフォニックス指導と高頻度語の学習を行います
  • ストーリー作り - インタラクティブな物語の作成と読解を行います
  • ゲーミフィケーション - 星、バッジ、報酬、進捗の追跡を取り入れます
  • 保護者・教師向けツール - 進捗レポートとカスタマイズ機能を提供します

このスキルが重要な理由

従来の読書指導:

  • 学習への関心やインタラクティブ性が限られています
  • 画一的なアプローチです
  • 幼い子どもの集中力を保つのが困難です
  • 練習の機会が限られています
  • 個々の進捗を追跡しにくいです

このスキルを使うと:

  • ゲームですぐに関心を引きつけます
  • 子どものレベルに合わせて個別化されます
  • 楽しく、達成感のある体験ができます
  • 練習のバリエーションに制限がありません
  • 進捗を明確に追跡できます
  • マルチセンサリーなアプローチを取り入れます

基本原則

1. 発達段階に適していること
  • 年齢に応じたコンテンツとチャレンジ
  • 段階的に足場を築く学習の進行
  • 適切な難易度
  • 集中力の持続時間への配慮
  • あらゆる成長の節目を称える
2. マルチセンサリーな学習体験
  • 視覚的な文字表示
  • 発音の音声
  • タッチやクリックによる操作
  • アニメーションによるフィードバック
  • 色彩豊かで魅力的なデザイン
3. 遊びを通じた学習
  • ドリルよりゲームを重視
  • 物語を軸にしたアクティビティ
  • キャラクターの仲間
  • 報酬システム
  • お祝いのアニメーション
4. 系統的な指導
  • スキルを順序立てて身につける
  • フォニックスに基づくアプローチ
  • 高頻度のサイトワード
  • 読解方略
  • 流暢さの育成
5. ポジティブな強化
  • すぐに励ます
  • 視覚的な進捗マーカー
  • 達成を祝う
  • 否定的なフィードバックは行わない
  • 成長マインドセットを重視

対象となる読書の段階

読書前(1~3歳)

スキル:

  • 文字の認識(大文字と小文字)
  • 文字の音(音素への気づき)
  • 身の回りにある文字への気づき
  • 本の扱い方
  • 聞いて理解する力

アクティビティ:

  • 🔤 アニメーション付きアルファベットの歌
  • 🎨 文字のなぞり書きゲーム
  • 🔊 音の聞き分けアクティビティ
  • 📚 インタラクティブな絵本
  • 🎵 韻を踏む言葉のゲーム
初期読書(3~5歳)

スキル:

  • 文字と音の対応関係
  • フォニックスの基礎(CVC単語)
  • 印刷物への気づき
  • 簡単なサイトワード
  • 絵と文章のつながり

アクティビティ:

  • 🐱 CVC単語作り(cat、dog、sun)
  • 🎯 サイトワードのマッチングゲーム
  • 📖 簡単な文の読書
  • 🧩 ワードファミリーの探究
  • ✨ 韻を踏む言葉のチャレンジ
読み始めた子ども(5~7歳)

スキル:

  • フォニックスのパターン(子音連結、二重字)
  • サイトワードの語彙を増やす
  • 簡単な文の読書
  • 基本的な読解力
  • 流暢さの向上

アクティビティ:

  • 🌟 二重字探偵ゲーム(ch、sh、th)
  • 📝 文作りワークショップ
  • 📚 デコーダブルストーリーの読書
  • 🎭 登場人物の理解
  • ⏱️ 流暢さを練習するコース
読解力を伸ばしている子ども(7~10歳)

スキル:

  • 発展的なフォニックスのパターン
  • 多音節語
  • 読解方略
  • 語彙の発達
  • 流暢な読書

アクティビティ:

  • 📖 物語の読解チャレンジ
  • 🔍 文脈の手がかり探偵
  • 📚 章立ての本を読む仲間
  • ✍️ 物語作りスタジオ
  • 🎯 語彙力アップ

インタラクティブなプレイグラウンドの例

例1:文字の国の冒険(1~3歳)

ユーザーの依頼:「幼児が文字を覚えるのを手伝ってください」

教師が生成:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>🌈 Letter Land Adventure!</title>
  <style>
    * { margin: 0; padding: 0; box-sizing: border-box; }
    body {
      font-family: 'Comic Sans MS', 'Chalkboard SE', cursive, sans-serif;
      background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%);
      min-height: 100vh;
      display: flex;
      flex-direction: column;
      align-items: center;
      padding: 20px;
      color: #333;
    }
    .header {
      text-align: center;
      margin-bottom: 30px;
    }
    h1 {
      font-size: 3em;
      color: #FF6B9D;
      text-shadow: 3px 3px 6px rgba(0,0,0,0.1);
      margin-bottom: 10px;
    }
    .stars {
      font-size: 2em;
      background: rgba(255,255,255,0.8);
      padding: 10px 30px;
      border-radius: 30px;
      display: inline-block;
    }
    .letter-display {
      background: white;
      width: 400px;
      height: 400px;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 15em;
      font-weight: bold;
      color: #FF6B9D;
      box-shadow: 0 20px 60px rgba(0,0,0,0.2);
      margin: 20px;
      cursor: pointer;
      transition: all 0.3s ease;
      user-select: none;
    }
    .letter-display:hover {
      transform: scale(1.05);
      box-shadow: 0 30px 80px rgba(0,0,0,0.3);
    }
    .letter-display:active {
      transform: scale(0.95);
    }
    .controls {
      display: flex;
      gap: 20px;
      margin: 20px;
      flex-wrap: wrap;
      justify-content: center;
    }
    .btn {
      background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
      color: white;
      border: none;
      padding: 20px 40px;
      font-size: 1.5em;
      border-radius: 20px;
      cursor: pointer;
      transition: transform 0.2s;
      font-weight: bold;
      box-shadow: 0 10px 25px rgba(0,0,0,0.2);
    }
    .btn:hover { transform: translateY(-5px); }
    .btn:active { transform: translateY(0); }
    .letter-name {
      font-size: 2em;
      margin: 20px;
      color: #667eea;
      font-weight: bold;
    }
    .celebration {
      position: fixed;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%) scale(0);
      font-size: 10em;
      animation: celebrate 1s ease forwards;
      pointer-events: none;
      z-index: 1000;
    }
    @keyframes celebrate {
      0% { transform: translate(-50%, -50%) scale(0) rotate(0deg); }
      50% { transform: translate(-50%, -50%) scale(1.5) rotate(180deg); }
      100% { transform: translate(-50%, -50%) scale(1) rotate(360deg); opacity: 0; }
    }
    .alphabet-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
      gap: 10px;
      max-width: 800px;
      margin: 20px;
    }
    .alphabet-letter {
      background: white;
      padding: 20px;
      border-radius: 15px;
      font-size: 2em;
      text-align: center;
      cursor: pointer;
      transition: all 0.2s;
      box-shadow: 0 5px 15px rgba(0,0,0,0.1);
      font-weight: bold;
      color: #667eea;
    }
    .alphabet-letter:hover {
      transform: scale(1.1);
      background: #FFD700;
    }
    .alphabet-letter.learned {
      background: #4CAF50;
      color: white;
    }
    @media (max-width: 768px) {
      .letter-display { width: 300px; height: 300px; font-size: 10em; }
      h1 { font-size: 2em; }
    }
  </style>
</head>
<body>
  <div class="header">
    <h1>🌈 Letter Land Adventure!</h1>
    <div class="stars">
      Stars: <span id="stars">0</span> ⭐
    </div>
  </div>

  <div class="letter-display" id="letterDisplay" onclick="speakLetter()">
    A
  </div>

  <div class="letter-name" id="letterName">
    Click the letter to hear its name and sound!
  </div>

  <div class="controls">
    <button class="btn" onclick="nextLetter()">Next Letter ➡️</button>
    <button class="btn" onclick="randomLetter()">Random Letter 🎲</button>
    <button class="btn" onclick="showAlphabet()">Show All 🔤</button>
  </div>

  <div class="alphabet-grid" id="alphabetGrid" style="display: none;"></div>

  <script>
    const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
    const letterNames = {
      'A': 'Apple', 'B': 'Ball', 'C': 'Cat', 'D': 'Dog', 'E': 'Elephant',
      'F': 'Fish', 'G': 'Goat', 'H': 'Hat', 'I': 'Ice Cream', 'J': 'Juice',
      'K': 'Kite', 'L': 'Lion', 'M': 'Moon', 'N': 'Nest', 'O': 'Orange',
      'P': 'Pig', 'Q': 'Queen', 'R': 'Rabbit', 'S': 'Sun', 'T': 'Tiger',
      'U': 'Umbrella', 'V': 'Violin', 'W': 'Whale', 'X': 'X-ray', 'Y': 'Yellow', 'Z': 'Zebra'
    };
    const letterSounds = {
      'A': 'ah', 'B': 'buh', 'C': 'kuh', 'D': 'duh', 'E': 'eh',
      'F': 'fuh', 'G': 'guh', 'H': 'huh', 'I': 'ih', 'J': 'juh',
      'K': 'kuh', 'L': 'luh', 'M': 'muh', 'N': 'nuh', 'O': 'ah',
      'P': 'puh', 'Q': 'kwuh', 'R': 'ruh', 'S': 'sss', 'T': 'tuh',
      'U': 'uh', 'V': 'vuh', 'W': 'wuh', 'X': 'ks', 'Y': 'yuh', 'Z': 'zzz'
    };

    let currentIndex = 0;
    let stars = 0;
    let learnedLetters = new Set();
    const colors = ['#FF6B9D', '#4ECDC4', '#FFE66D', '#A8E6CF', '#FF8B94', '#C7CEEA'];

    function updateDisplay(letter) {
      const display = document.getElementById('letterDisplay');
      display.textContent = letter;
      display.style.color = colors[Math.floor(Math.random() * colors.length)];

      const name = document.getElementById('letterName');
      name.textContent = `${letter} is for ${letterNames[letter]}!`;
    }

    function speakLetter() {
      const letter = document.getElementById('letterDisplay').textContent;

      // Award star
      stars++;
      document.getElementById('stars').textContent = stars;

      // Mark as learned
      if (!learnedLetters.has(letter)) {
        learnedLetters.add(letter);
        updateAlphabetGrid();
      }

      // Show celebration
      celebrate('🎉');

      // Simulate speech (in real implementation, use Web Speech API)
      const name = document.getElementById('letterName');
      name.textContent = `${letter}! ${letter} says "${letterSounds[letter]}"`;

      // Change color
      const display = document.getElementById('letterDisplay');
      display.style.color = colors[Math.floor(Math.random() * colors.length)];

      // Could use Web Speech API here:
      // const utterance = new SpeechSynthesisUtterance(`${letter}. ${letter} is for ${letterNames[letter]}`);
      // speechSynthesis.speak(utterance);
    }

    function nextLetter() {
      currentIndex = (currentIndex + 1) % alphabet.length;
      updateDisplay(alphabet[currentIndex]);
    }

    function randomLetter() {
      currentIndex = Math.floor(Math.random() * alphabet.length);
      updateDisplay(alphabet[currentIndex]);
      celebrate('✨');
    }

    function showAlphabet() {
      const grid = document.getElementById('alphabetGrid');
      if (grid.style.display === 'none') {
        grid.style.display = 'grid';
        if (grid.children.length === 0) {
          alphabet.forEach(letter => {
            const div = document.createElement('div');
            div.className = 'alphabet-letter';
            div.textContent = letter;
            div.onclick = () => {
              currentIndex = alphabet.indexOf(letter);
              updateDisplay(letter);
              speakLetter();
            };
            grid.appendChild(div);
          });
        }
      } else {
        grid.style.display = 'none';
      }
    }

    function updateAlphabetGrid() {
      const grid = document.getElementById('alphabetGrid');
      if (grid.children.length > 0) {
        Array.from(grid.children).forEach((div, i) => {
          if (learnedLetters.has(alphabet[i])) {
            div.classList.add('learned');
          }
        });
      }
    }

    function celebrate(emoji) {
      const celebration = document.createElement('div');
      celebration.className = 'celebration';
      celebration.textContent = emoji;
      document.body.appendChild(celebration);
      setTimeout(() => celebration.remove(), 1000);
    }

    // Initialize
    updateDisplay(alphabet[0]);

    // Encourage interaction
    setTimeout(() => {
      const name = document.getElementById('letterName');
      name.textContent = '👆 Click the letter to hear it!';
    }, 3000);
  </script>
</body>
</html>

機能:

  • 大きくカラフルな文字表示
  • クリックすると文字の名前と音が聞こえます
  • 星を使った進捗の追跡
  • 覚えた文字が表示されるアルファベット一覧
  • 変化をつけるためのランダム化
  • 励ましのアニメーション
  • モバイル端末で使いやすいタッチ操作画面
例2:サイトワード・サファリ(5~7歳)

ユーザーの依頼:「小学1年生向けのサイトワードを練習したい」

**教師が生成するもの:**以下を含む、インタラクティブなサファリゲーム:

  • 出現頻度の高いDolch/Fryワード
  • 単語認識チャレンジ
  • 文づくりアクティビティ
  • 時間を計る音読練習
  • 進捗バッジと報酬
例3:ストーリービルダー・スタジオ(7~10歳)

ユーザーの依頼:「読解力を身につけるのを手伝ってほしい」

**教師が生成するもの:**以下を含む、インタラクティブなストーリーワークショップ:

  • 展開を選べるアドベンチャー形式
  • 読解問題を組み込み
  • 語彙のハイライト表示
  • 登場人物の分析ツール
  • 物語の順序を並べるアクティビティ

ゲーミフィケーションシステム

報酬とスター
  • レタースター(スター1個):新しい文字を学ぶ
  • ワードスター(スター5個):新しい単語を読む
  • ストーリースター(スター10個):物語を最後まで読む
  • スピードスター(スター3個):すばやく認識する
  • パーフェクトスター(スター20個):正答率100%
実績バッジ
  • 🌟 ABCマスター:26文字すべてを学ぶ
  • 📖 はじめての読者:初めて文を最後まで読む
  • 🏆 ワードウィザード:サイトワード50語を習得する
  • 🎯 パーフェクトウィーク:7日連続で練習する
  • 🚀 スピードリーダー:1分間に20語を読む
  • 📚 ストーリータイム:物語を10個最後まで読む
  • 🎨 クリエイティブライター:自分の物語を作る
  • ⭐ スーパースター:スターを合計1000個獲得する
進捗状況の追跡
  • 学習した文字(全26文字)
  • 習得したサイトワード
  • 最後まで読んだ物語
  • 読書の連続記録(日数)
  • 読書に費やした時間
  • 正答率
  • 読解レベルの進捗
お祝いアニメーション
  • 実績達成時の紙吹雪
  • 正解時のスターの爆発
  • キャラクターアニメーション
  • 効果音(任意)
  • プログレスバーの伸長
  • レベルアップアニメーション

種類別の学習アクティビティ

文字の認識

アクティビティ:

  • アニメーション付きアルファベットソング
  • 文字合わせゲーム
  • 大文字と小文字の組み合わせ
  • 文字のなぞり書き(タッチ/マウス)
  • 文字を探すチャレンジ
  • 文字の分類アクティビティ

コード例:

function createLetterMatch() {
  const uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
  const lowercase = 'abcdefghijklmnopqrstuvwxyz'.split('');

  // Shuffle and match pairs
  const pairs = uppercase.map((u, i) => ({
    upper: u,
    lower: lowercase[i],
    matched: false
  }));

  return pairs;
}
フォニックスの練習

アクティビティ:

  • 音のマッチング(文字と音)
  • CVC単語づくり(cat、dog、run)
  • ワードファミリー(-at、-an、-ig)
  • 韻を踏む単語のゲーム
  • ブレンドの練習(bl、cr、st)
  • 二重字の検出(ch、sh、th)

例:

const wordFamilies = {
  'at': ['cat', 'bat', 'rat', 'hat', 'mat', 'sat'],
  'an': ['can', 'man', 'pan', 'ran', 'van', 'fan'],
  'ig': ['big', 'dig', 'fig', 'pig', 'wig', 'jig']
};

function generateWordFamily(family) {
  return wordFamilies[family].map(word => ({
    word: word,
    letters: word.split(''),
    sound: `/${family}/`
  }));
}
サイトワードのトレーニング

出現頻度の高い単語(Dolch/Fryリスト):

Pre-K:

const preK = ['a', 'and', 'away', 'big', 'blue', 'can', 'come',
              'down', 'find', 'for', 'funny', 'go', 'help', 'here',
              'I', 'in', 'is', 'it', 'jump', 'little', 'look', 'make',
              'me', 'my', 'not', 'one', 'play', 'red', 'run', 'said',
              'see', 'the', 'three', 'to', 'two', 'up', 'we', 'where',
              'yellow', 'you'];

小学1年生:

const firstGrade = ['after', 'again', 'an', 'any', 'as', 'ask', 'by',
                    'could', 'every', 'fly', 'from', 'give', 'going',
                    'had', 'has', 'her', 'him', 'his', 'how', 'just',
                    'know', 'let', 'live', 'may', 'of', 'old', 'once',
                    'open', 'over', 'put', 'round', 'some', 'stop',
                    'take', 'thank', 'them', 'then', 'think', 'walk',
                    'were', 'when'];

インタラクティブなサイトワードゲーム:

function createSightWordChallenge(wordList, timeLimit = 60) {
  let score = 0;
  let currentWord = '';
  let timeRemaining = timeLimit;

  function nextWord() {
    currentWord = wordList[Math.floor(Math.random() * wordList.length)];
    displayWord(currentWord);
  }

  function checkAnswer(userInput) {
    if (userInput.toLowerCase() === currentWord.toLowerCase()) {
      score++;
      celebrate();
      nextWord();
    }
  }

  return { nextWord, checkAnswer, score };
}
読解

学習方法:

  • 次に何が起きるか予測する
  • 主な登場人物を特定する
  • 物語の詳細を思い出す
  • 原因と結果を理解する
  • 推論する
  • 場面を思い描く

インタラクティブな質問:

const comprehensionQuestions = {
  'The Cat and the Hat': [
    {
      question: 'Who are the main characters?',
      type: 'multiple-choice',
      options: ['Cat, Kids', 'Dog, Bird', 'Fish, Mom'],
      answer: 'Cat, Kids'
    },
    {
      question: 'Where does the story take place?',
      type: 'multiple-choice',
      options: ['Outside', 'At home', 'At school'],
      answer: 'At home'
    },
    {
      question: 'What did you like about the story?',
      type: 'open-ended',
      encouragement: 'Great thinking!'
    }
  ]
};
物語づくり

構成要素:

  • 登場人物の選択
  • 舞台の選択
  • 問題と解決の構成
  • 出来事の順序
  • 結末の選択肢
  • イラストツール
const storyElements = {
  characters: ['🐱 Cat', '🐶 Dog', '🦊 Fox', '🐻 Bear', '🦁 Lion'],
  settings: ['🏠 House', '🌳 Forest', '🏖️ Beach', '🏰 Castle', '🚀 Space'],
  problems: ['Lost something', 'Made a friend', 'Went on adventure', 'Solved mystery'],
  solutions: ['Found it!', 'Worked together', 'Used creativity', 'Never gave up']
};

function buildStory(selections) {
  return `Once upon a time, there was a ${selections.character}.
          The ${selections.character} lived in a ${selections.setting}.
          One day, the ${selections.character} ${selections.problem}.
          In the end, ${selections.solution}!`;
}

保護者/教師向けツール

進捗レポート
const progressReport = {
  childName: 'Emma',
  age: 6,
  level: 'Beginning Reader',
  stats: {
    lettersLearned: 26,
    sightWordsMastered: 45,
    storiesCompleted: 12,
    currentStreak: 7,
    totalTimeMinutes: 240
  },
  strengths: ['Letter recognition', 'Phonics', 'Enthusiasm'],
  workingOn: ['Sight words', 'Reading fluency'],
  nextSteps: ['Practice high-frequency words', 'Read aloud daily']
};
カスタマイズオプション
  • 難易度を調整する
  • 単語リストを選択する
  • テーマやキャラクターを選択する
  • 制限時間を設定する
  • サウンドを有効/無効にする
  • 複数の子どもの進捗を追跡する
  • 進捗データを書き出す

技術的な実装

音声合成(Web Speech API)
function speakText(text, rate = 1.0) {
  if ('speechSynthesis' in window) {
    const utterance = new SpeechSynthesisUtterance(text);
    utterance.rate = rate;
    utterance.pitch = 1.2; // Higher pitch for kids
    utterance.volume = 1.0;
    speechSynthesis.speak(utterance);
  } else {
    // Fallback: show text with pronunciation guide
    showPronunciation(text);
  }
}
インタラクティブな単語づくり
function createWordBuilder(targetWord) {
  const letters = targetWord.split('');
  const scrambled = shuffle([...letters]);

  let builtWord = [];

  function addLetter(letter) {
    builtWord.push(letter);
    updateDisplay();

    if (builtWord.join('') === targetWord) {
      celebrate('Correct!');
      return true;
    }
    return false;
  }

  function removeLetter() {
    builtWord.pop();
    updateDisplay();
  }

  return { addLetter, removeLetter, scrambled };
}
読解流暢性タイマー
class FluencyTracker {
  constructor(text) {
    this.text = text;
    this.wordCount = text.split(' ').length;
    this.startTime = null;
    this.endTime = null;
  }

  start() {
    this.startTime = Date.now();
  }

  stop() {
    this.endTime = Date.now();
    return this.calculate();
  }

  calculate() {
    const seconds = (this.endTime - this.startTime) / 1000;
    const minutes = seconds / 60;
    const wpm = Math.round(this.wordCount / minutes);

    return {
      wordsPerMinute: wpm,
      timeSeconds: seconds,
      wordCount: this.wordCount,
      rating: this.getRating(wpm)
    };
  }

  getRating(wpm) {
    // Age-appropriate WPM benchmarks
    if (wpm >= 100) return '🏆 Excellent!';
    if (wpm >= 70) return '⭐ Great job!';
    if (wpm >= 50) return '👍 Good work!';
    return '💪 Keep practicing!';
  }
}

参考資料

すべて /references に含まれています:

  • phonics.md - フォニックスのパターン、ルール、アクティビティ
  • sight_words.md - レベル別のDolchおよびFry単語リスト
  • comprehension.md - 読解方法と問題の種類
  • stories.md - デコーダブルテキストと物語のテンプレート

スクリプト

すべて /scripts にあります:

  • generate_playground.sh - インタラクティブな読書プレイグラウンドを作成する
  • generate_game.sh - フォニックスまたはサイトワードのゲームを作成する
  • generate_story.sh - インタラクティブな物語を作成する

ベストプラクティス

推奨事項:

✅ 大きく読みやすいフォントを使用します(初学者には最低24pt) ✅ 発音音声を含めます ✅ すぐに前向きなフィードバックを提供します ✅ カラフルで魅力的なビジュアルを使用します ✅ どんな成功も称えます ✅ セッションを短く保ちます(5~15分) ✅ 遊び心があり、楽しい内容にします ✅ 進捗を目に見える形で記録します

してはいけないこと:

❌ 難しい言葉を使わない ❌ 否定的なフィードバックをしない ❌ アクティビティを長くしすぎない ❌ 小さくて読みにくい文字を使わない ❌ 音声サポートを省かない ❌ 勉強のように感じさせない ❌ 選択肢を増やしすぎて圧倒させない ❌ 成長を一緒に喜ぶことを忘れない

対話の例

幼児(2歳):

「幼児にアルファベットを教えて」

生成内容:クリックできる文字、音声、アニメーション、進捗トラッキングを備えたインタラクティブな「文字の国」

幼稚園児(5歳):

「CVC ワードを練習させて」

生成内容:cat、bat、rat を使った単語ファミリーのゲーム。音声付きで、ドラッグ&ドロップして文字を組み立てます

小学1年生(6歳):

「サイトワードを練習して」

生成内容:時間制限付きのチャレンジ、文、進捗バッジを備えた「サイトワードサファリ」

小学2年生(7歳):

「読解力を練習して」

生成内容:質問、語彙のサポート、ごほうびが盛り込まれたインタラクティブな物語

まとめ

このスキルは、次のような方法で読み方の学習を変えます。

  • すぐに夢中になれる - 遊び場をすぐに生成します
  • 五感を活用 - 視覚、音声、インタラクティブな要素を取り入れます
  • 発達段階に適している - 1~10歳を対象とします
  • 体系的 - フォニックスに基づいて段階的に進みます
  • ゲーム感覚 - 星、バッジ、お祝いを取り入れます
  • 効果的 - 研究に基づく手法を使います
  • 楽しい - 遊びを通じて学びます

「適切なサポートと励ましがあれば、どの子どもも読み方を学べます。」 📚


使い方: 文字の認識、フォニックス、サイトワード、読解力など、読み方に関するスキルなら何でも相談できます。お子さまのレベルに合わせた、インタラクティブな学習体験がすぐに得られます!

コメント