📊 対象者視点でのワークショップ体験シミュレーション

🎭 想定対象者プロフィール


🎬 Phase 0: 完成形体験・分析(10分)

対象者の反応シミュレーション

🎮 Step 0-1: デモ体験(5分)

対象者の心境:

つまづきポイント:

🔍 Step 0-2: 機能分解(5分)

対象者の思考:

つまづきポイント:

必要なサポート:


🏗️ Phase 1: HTML構造実装(30分)

対象者の体験シミュレーション

🏗️ Step 1-1: 要素の洗い出し(10分)

対象者の思考プロセス:

「ええと、タイトル部分は...h1タグ?」
「進捗バーは...divかな?でもどうやって棒にするんだろう」
「チェックボックスはinputタグで...」
「ラベルはlabelタグ?でもこんなにきれいになるの?」

つまづきポイント:

必要なサポート:

💻 Step 1-2: HTML実装(20分)

対象者の実装体験:

5分経過時点:

<h1>今日の学習タスク</h1>
<p>目標: CSS装飾とJavaScript動きをマスターしよう!</p>
<!-- 「あれ、header タグを使った方がいいって言ってたな」 -->

10分経過時点:

<header>
  <h1>📚 今日の学習タスク</h1>
  <p>目標: CSS装飾とJavaScript動きをマスターしよう!</p>
</header>

<div>
  <h2>📈 学習進捗</h2>
  <div>進捗バー</div>
  <!-- 「進捗バーってどう書くんだっけ?」 -->
</div>

つまづきポイント:

必要なサポート:

20分経過時点(期待する状態):


🎨 Phase 2: CSS基本装飾(35分)

対象者の体験シミュレーション

🎨 Step 2-1: 完成形との見た目比較(5分)

対象者の反応:

発見するギャップ:

🖌️ Step 2-2: 基本レイアウトCSS(25分)

5分経過時点(全体設定): 対象者の思考:

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  background: #f3f4f6;
  font-family: sans-serif;
}

つまづきポイント:

15分経過時点(カードレイアウト): 対象者の困惑:

.main-header, section {
  background: white;
  padding: 2rem;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}

つまづきポイント:

必要なサポート:

25分経過時点(進捗バー・タスクアイテム): 対象者の実装:

.progress-bar {
  background: #e5e7eb;
  height: 25px;
  border-radius: 12px;
}

.progress-fill {
  background: #10b981;
  height: 100%;
  width: 0%; /* 「なんで0%?」 */
  border-radius: 12px;
}

つまづきポイント:

🔍 Step 2-3: 完成形チェック(5分)

対象者の感想:


⚡ Phase 3: CSSアニメーション(25分)

対象者の体験シミュレーション

Step 3-1: アニメーション要件分析(5分)

対象者の発見:

🎭 Step 3-2: ホバーエフェクト実装(15分)

5分経過時点: 対象者の試行錯誤:

.task-item:hover {
  /* 何を書けばいいんだろう? */
}

つまづきポイント:

10分経過時点:

.task-item:hover {
  background: #f1f5f9;
  /* 「色は変わったけど、浮き上がらない」 */
}

必要なサポート:

15分経過時点:

.task-item {
  transition: all 0.3s ease;
}

.task-item:hover {
  background: #f1f5f9;
  border-color: #4f46e5;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(79, 70, 229, 0.2);
}

対象者の感動:


⚙️ Phase 4: JavaScript動的機能(20分)

対象者の体験シミュレーション

🧠 Step 4-1: 動的機能の特定(5分)

対象者の分析:

⚙️ Step 4-2: JavaScript実装(15分)

3分経過時点(要素取得):

const checkboxes = document.querySelectorAll('.task-checkbox');
// 「querySelectorAllってquerySelectorと何が違うんだっけ?」

つまづきポイント:

7分経過時点(イベント処理):

checkboxes.forEach(checkbox => {
  checkbox.addEventListener('change', function() {
    // 「ここで何をすればいいんだっけ?」
  });
});

対象者の困惑:

必要なサポート:

15分経過時点(進捗計算):

function updateProgress() {
  const totalTasks = checkboxes.length;
  const completedTasks = document.querySelectorAll('.task-checkbox:checked').length;
  // 「:checkedって何?」
  const percentage = Math.round((completedTasks / totalTasks) * 100);
  // 「Math.roundって何だっけ?」
}

つまづきポイント:

最終的な対象者の感想:


🚨 全体的なつまづきポイントまとめ

高頻度でつまづく部分

  1. CSS の box-shadow, rgba構文
  2. JavaScript のquerySelectorAll, forEach
  3. 進捗バーの2重div構造
  4. transform, transition の概念

必要なサポート戦略

  1. 実際に値を変更して効果確認
  2. console.logでデバッグ習慣
  3. ペア作業での相互サポート
  4. 段階的な目標設定

学習効果を高めるポイント

  1. 完成形との比較を頻繁に行う
  2. 動作確認のタイミングを明確に
  3. 「なぜそうするのか」の説明
  4. 成功体験の積み重ね