1. 高見知英のAI音声解析チャンネル
  2. テキストベースプログラム言語..
テキストベースプログラム言語の学習環境:ヘディ:子供のための段階的プログラミング言語(既存言語の学習向け開発環境)
2026-10-17 23:40

テキストベースプログラム言語の学習環境:ヘディ:子供のための段階的プログラミング言語(既存言語の学習向け開発環境)

既存言語およびプログラミング学習向け開発環境に関するブリーフィング・ドキュメント

エグゼクティブ・サマリー

プログラミング教育における最大の障壁の一つは、既存のテキストベース言語(PythonやJavaなど)が持つ厳密な「構文バリア(Syntax Barrier)」と、プログラム実行時の内部状態の不可視性である。初心者はコードのコンパイル・実行時に頻繁に構文エラーを起こし、プロフェッショナル向けコンパイラの難解なエラーメッセージによって過度な認知負荷(Cognitive Load)を強いられている。

本ドキュメントは、提供されたソース資料に基づき、初学者(特に小・中・高校生)のテキストベース言語習得を支援するために開発・提唱されている革新的な開発環境、教育用言語、および指導手法を統合・要約したものである。主な知見は以下の通りである。

  1. 段階的プログラミング言語(Hedy): 自然言語学習における記号・規則の段階的導入(ひらがな/小文字から句読点や大文字への移行)に着想を得て開発された。構文要素(括弧や引用符、インデントなど)を排除した最小限の文法から始まり、全13〜18レベルを段階的に通過することで最終的にPython構文へ移行する。実証実験(9,714プログラムの分析)では、エラー率が12.2%に抑えられ、従来のテキスト言語に比べ構文バリアを大幅に低減できることが示されている。
  2. コード動作可視化とAIアシスタントの統合環境(PyPLAS): 高校生向けPython学習支援システムとして、Python Tutorを埋め込んだ実行プロセスの可視化、ローカルLLM(Ollama / Qwen2.5-Coder)を活用した3段階の非代行型ヒント(L1: 概念、L2: 戦略、L3: エラー指摘)、および4次元学習分析モデル(エンゲージメント、推論戦略、学習ペース、ツール使用率)を単一インターフェースに統合した。パイロット運用により、過度な試行錯誤(無計画な再提出)が抑制されることが確認された。
  3. ビジュアルブロックからテキスト言語への移行アプローチ: Block-based(Scratch等)からText-based(Python等)への移行には、「ライブコーディング」「構文学習(単語帳やビンゴなど)」「ティンカリング(試行錯誤による探求)」の3つの教授法と、MakeCodeやTrinket(ブロックとコードの相互変換機能)等のツール活用が有効である。

1. 初心者が直面する構文バリアと認知負荷問題

1.1 構文エラーの現状と統計データ

プログラミング教育に関する先行研究によると、初心者が提出するソースコードの過半数に構文エラーが含まれている。

  • エラー発生率: デニー(Denny)らの研究によれば、成績の低い学生の73%、成績が最も優れた学生であっても50%のケースで構文エラーを含むコードを提出する。
  • 大規模データ分析: アルトドムリとブラウン(Altadmri & Brown)による25万人・3,700万回のコンパイル分析では、最も頻出するエラーは「括弧の不一致(mismatched brackets)」であり、約80万回のコンパイルで発生していた。
  • 言語理解度: JavaやPerlといった一般的なプログラミング言語は、ランダムに生成されたキーワードを持つ言語と比較しても初心者にとって理解しやすさに差がないという研究結果もあり、構文理解の根本的な難しさが浮き彫りとなっている。

1.2 既存コンパイラの問題点と認知負荷理論

従来のコンパイラやインタープリタはプロの成人開発者向けに設計されており、初心者に対して不適切なフィードバックを提供する。

  • 不親切なエラーメッセージ: 例えばPythonで閉じ括弧や引用符を忘れた場合、SyntaxError: unexpected EOF while parsing や NameError といった専門用語が出力され、10歳前後の児童を混乱させる。
  • 認知負荷(Cognitive Load)の超過: 初心者は「ループ」や「変数」といったプログラミング概念の理解と同時に、コロン(:)、括弧(())、引用符('')、インデント(空欄)などの記号配置に脳の容量を奪われる。結果として概念学習に集中できなくなる。

2. 段階的プログラミング言語「Hedy」の設計と実証

フェリエヌ・ハーマンス(Felienne Hermans)教授らによって開発された「Hedy」は、構文バリアを排除しながら段階的にPythonへ移行する教育用プログラミング言語である。

2.1 設計思想と教育学的裏付け

Hedyの根幹には、自然言語や算数の学習プロセスからの着想がある。

  • 自然言語学習との類似性: 6〜7歳の児童が文字を書く際、最初から大文字・小文字・ピリオド・カンマを同時に学ばず、まずは小文字のみで単語や短い文を書く。記号や大文字は後から段階的に導入される。
  • ピアジェの発生的認識論とスパイラルアプローチ: シュナイダーマン(Shneiderman, 1977)が提唱した「スパイラルアプローチ」に基づき、文法と概念を最小単位で追加・更新し、以前の知識を活用しながら段階的に高度な形へと発展させる。

2.2 レベル別構文展開(レベル1〜13/18)

Hedyはレベルごとに文法ルールが変化する(以下は主要レベルの概要)。

レベル導入される概念・構文構文例Pythonとの違い・特徴
Level 1出力(print)、入力(ask)、反響(echo)print Hello World括弧・引用符が不要。純粋なテキストのみ。
Level 2変数定義(is)、リスト、ランダム参照name is Hedy<br>print hello name=の代わりにisを使用。文字列と変数の区別記号は未導入。
Level 3引用符(文字列と変数の分離)print 'Hello ' name文字列リテラルを明確化するための引用符を初導入。
Level 4単一行条件分岐(if / else)if name is Bert print 'Yellow' else print 'Orange'インデントや改行を排除し、自然言語に近い単一行構造。
Level 5単一行繰り返し(repeat x times)repeat 5 times print 'Hello'forやwhileの代わりに直感的なrepeatを使用。
Level 6数値計算(+, -, *, /)x is 5 * 3四則演算の導入。
Level 7ブロック構造・インデントrepeat 5 times<br>  print 'Hello'<br>  print 'World'複数行処理のためのインデント構造を解禁。
Level 8ループ変数付きfor構文for i in range 0 to 5ループ変数iへのアクセス。コロンや括弧はまだ不要。
Level 9コロン(:)の導入インデントブロック直前のコロン指定ブロック開始記号としてコロンを導入。
Level 11丸括弧(())の導入print('Hello')関数呼び出し等の丸括弧を追加。
Level 12角括弧([])の導入リスト参照をatから[]へ変更配列・リストアクセス構文の標準化。
Level 13/18代入・比較演算子(=, ==)isを=および==へ置換完全に機能的なPythonのサブセットに到達。

2.3 Hedyの独自機能と教員支援

  • 多言語対応(Multilingual / Localization): 31種類の自然言語に対応(オランダ語、スペイン語、アラビア語等)。右から左へ書く言語(RTL)やアラビア文字にも完全対応。キーボードの言語切替(英語キーボードとアラビア語キーボードの頻繁な切り替え)に伴うエルゴノミクス(操作性)のストレスを解消する。
  • 授業管理とアドベンチャー(Adventures): 教室内の児童の習熟度差(ディフレンジエーション)に対応するため、教員は特定のレベルや課題(アドベンチャー、パズル、クイズ)をカスタマイズして解放/制限できる。

2.4 評価データとエラー分類分析

9,714件のユーザー提出プログラム(レベル1〜7)を対象とした実証評価の結果、**全体のɀエラー率は12.2%(1,363件)**であり、従来のテキスト言語(50〜73%)に比べて極めて低い水準となった。

エラー原因の11分類(全1,363件のエラープログラムの分析)

  1. 不完全なコード(Incomplete code): 253件 (18.6%) - キーワードや引数、リストのカンマ欠落。
  2. 異なるレベルのコード実行(Code ran at wrong level): 251件 (18.4%) - 解放されていない上級レベルの構文を使用(207件)、または旧レベルの構文を上級レベルで混用。
  3. キーワードの誤字・誤配置(Misspelled/misplaced keyword): 233件 (17.1%) - 大文字化、スペルミス、自然言語(オランダ語等)の混入。
  4. 無効な文字(Invalid character): 219件 (16.1%) - HTMLタグの混入、不要なカンマ、アクセント記号など。
  5. スペースの不適切な使用(Use of invalid spaces): 171件 (12.5%) - 行頭の不要なスペース(インデント違反)など。
  6. 引用符のトラブル(Quotes): 111件 (8.1%) - ダブルクォーテーションの使用、閉じ忘れ、引用符の意味の逆転理解。
  7. 複数行コマンドの誤用(Multiline command): 72件 (5.3%) - 1行構文時代に複数行へ跨がせて記述。
  8. Python構文の先行混入(Python): 26件 (1.9%) - 他言語経験者によるカンマ区切り等。
  9. 行番号の誤入力(Line numbers): 13件 (1.0%) - 教材の行番号をコード本文にコピー。
  10. ネスト構造の不備(Nested code): 10件 (0.7%) - 未サポート段階でのifの多重ネスト。
  11. 根本的な誤解(Misconceptions): 4件 (0.3%) - コンピュータが自然言語を理解するという誤解や、実行順序の無視。

3. 可視化と段階的AIアシスタントを統合した「PyPLAS」

「PyPLAS(Python Programming Learning Assistant System)」は、特に高校生のPython初学者を対象とし、実行状態の可視化、段階的AIヒント、およびログに基づく自己省察(リフレクション)を統合したWeb学習支援環境である。

3.1 設計コンセプトと二重ループ学習ワークフロー

初心者が陥る「内部動作の不可視性」「無計画な試行錯誤(Trial-and-Error)の反復」「エラー原因の解釈力不足」を解決するため、以下の二重ループを導入している。

  • マイクロループ(Task-level): 問題解法中、コード修正 ➔ 実行 ➔ 可視化トレース観察 ➔ AIヒント参照 ➔ 再修正を繰り返す。
  • マクロループ(Chapter-level): 章の終わりに、蓄積されたログから自身の学習行動(4次元分析)をAIが診断し、メタ認知(自己調節学習)を高める。

3.2 統合インターフェースの主要機能

  1. 埋め込み型コード動作可視化(Python Tutor統合): 練習画面内に「Python Tutor」をiframeで直接埋め込み。別タブや外部サイトへ移動する際のコンテキストスイッチング(認知性オーバーヘッド)を排除し、変数状態の推移、分岐判断、ループの反復、関数呼び出しスタックをステップ実行で視覚的に追跡できる。
  2. 非代行型・段階的AIアシスタント(Staged AI Hints): ローカルLLM環境(Ollama + Qwen2.5-Coder)を利用。直接的な正解コードを出力することを厳格に禁止し、以下の3段階でヒントを提供する。
    • Level 1(概念的指導): 問題が求める概念の解説と確認の問いかけ。
    • Level 2(戦略的指導): アルゴリズムの手順分解と処理順序のアドバイス。
    • Level 3(エラー重点指導): 誤り箇所の指摘と最小限の修正方向の示唆。
  3. 4次元学習分析モデル(Four-Dimensional Learning Analytics): 操作ログ(イベントストリーム)から以下の4指標を算出し、章末のリフレクションレポートを生成する。

E = \alpha \cdot \frac{T_{active}}{T_{target}} + (1 - \alpha) \cdot \frac{N_{complete}}{N_{assigned}} \quad (\alpha = 0.5)

R_{val} = \frac{Vis\_Open\_Count}{Vis\_Open\_Count + Answer\_Submit\_Count}

CV_{val} = \frac{\sigma(\Delta t)}{\mu(\Delta t)} \quad (\text{操作間隔の変動係数})

U_{ratio} = \frac{N_{L1} + N_{L2} + N_{L3}}{N_{attempt}}

3.3 パイロット実験結果(高校生 N=20)

高校生20名を対象に、6つの基礎課題(P1:出力〜P6:リスト内包・ループ条件)を実施した結果は以下の通りである。

課題解答実績データ

  • 完成率: 20名中19名が全課題を完了(P1〜P4は20名全員完了、P5・P6は19名完了)。
  • 試行回数とヒント数:
    • P1(変数・出力): 平均試行 1.4回 / ヒント 0.1回 / 平均時間 2.5分
    • P2(四則演算): 平均試行 1.9回 / ヒント 0.4回 / 平均時間 4.2分
    • P3(if-else分岐): 平均試行 2.5回 / ヒント 1.2回 / 平均時間 7.1分
    • P4(forループ基礎): 平均試行 3.2回 / ヒント 1.8回 / 平均時間 9.8分
    • P5(whileループ): 平均試行 4.4回 / ヒント 2.7回 / 平均時間 14.5分
    • P6(リスト・ループ): 平均試行 3.8回 / ヒント 2.3回 / 平均時間 12.0分

難易度の高いP5・P6においても、平均試行回数が4.5回以下に抑えられており、可視化と段階的ヒントが無計画な再提出の繰り返しを抑制したことが伺える。

アンケート評価(5段階リカート尺度: 1〜5)

  • Q1 (可視化による変数変化の理解): 4.45 \pm 0.60
  • Q2 (L1-L3ヒントによる思考ガイド): 4.15 \pm 0.81
  • Q3 (4次元分析レポートの有用性): 3.80 \pm 0.89
  • Q4 (画面遷移のない統合UIの使いやすさ): 4.30 \pm 0.73
  • Q5 (エラー時の挫折感・ストレス軽減): 4.25 \pm 0.71

4. ビジュアルブロックからテキストコードへの移行手法

Scratchなどのビジュアルブロック言語からPython/JavaScriptなどのテキスト言語へスムーズに移行するための指導法・ツール・プロジェクトパターン。

4.1 3つの核心的教授法(Pedagogical Practices)

  1. ライブコーディング(Live Coding): 教員がスクリーンでコードを打ちながら、1行ごとに意味を口頭説明する。ビジュアルブロックの対応する要素(例: Scratchの「10回繰り返す」とPythonのfor i in range(10):)を比較・並記しながら解説する。
  2. 構文学習(Syntax Learning): プログラミング構文を伝統的な言語学習の「単語・文法」と同様に扱う。単語帳(フラッシュカード)、用語と定義の照合練習、構文ビンゴ(Syntax Bingo)などを活用して記号の配置ルールを暗記・定着させる。
  3. ティンカリング(Tinkering): 明確な採点目標を設けず、コードの値を自由に変えて動作の変化を実験・遊破する手法。失敗をリスクではなく学習機会と捉えさせ、心理的ハードルを下げる。

4.2 移行支援ツール

  • Trinket (trinket.io): ブロックでコードを作成すると、右側にリアルタイムで対応するPythonコード(import turtle, for ループ, penup()/pendown(), インデント構造など)が生成・表示される環境。
  • Microsoft MakeCode: ブロックコードとJavaScript / Pythonコードを双方向に自動変換・相互切り替えできる環境。

4.3 概念の対比マップと推奨初等プロジェクト

ビジュアル言語とPythonの概念対応、および移行期に適した実践プロジェクト:

概念の対比

  • 変数:
    • Scratch: 「変数を作る」ブロックをドラッグ&ドロップ。
    • Python: score = 0 のように直接記述して値を代入。
  • ループ:
    • Scratch: 「10回繰り返す」「ずっと」ブロック。
    • Python: for i in range(10): または while True:。

おすすめの移行プロジェクト

  1. 数当てゲーム(Guessing Game): random.randint()、while ループ、if / else 条件分岐、input() を組み合わせる定番プロジェクト。
  2. Python Turtle グラフィックス: Scratchのスプライト(猫)を動かす感覚で、turtle.forward() や turtle.right() を使って直線や多角形を描画・アニメーション化する。
  3. 簡易電卓(Simple Calculator): 関数の定義(def add(x, y):)と四則演算、ユーザー入力処理を学ぶ。

5. 環境構築・運用およびプライバシーの考慮事項

学校現場や学習環境においてプログラミング開発環境を導入・運用する際の技術的・法律的要件。

5.1 ローカル環境 vs クラウド環境

  • クラウド環境(Web IDE): インストール不要でChromebookやタブレットから即座にアクセス可能(Hedy, Trinket, PyPLAS等)。ただし、インターネット接続の帯域やセキュリティ制限に影響を受ける。
  • ローカル環境: DockerコンテナやFlaskバックエンド、ローカルLLM(Ollama)を用いることで、ネットワーク環境が不安定な教室でもプライバシーを保護しつつ安定して運用可能。

5.2 児童プライバシー保護基準(COPPA等)

13歳未満の児童を対象としたオンラインツール・開発環境の導入においては、米国連邦取引委員会(FTC)の「児童オンラインプライバシー保護法(COPPA)」等の規制を遵守する必要がある。個人識別情報(PII)の不必要な収集を避け、学習ログの匿名化処理(ハッシュ化・ID化)およびデータの最小化原則を徹底することが求められる。

感想

まだ感想はありません。最初の1件を書きましょう!

サマリー

プログラミング初心者がPythonの厳密な構文や専門的なエラーメッセージにつまずく背景を、ScratchからPythonへの移行を例に考える。段階的プログラミング言語Hedyは、括弧や引用符を省いた構文から始め、18段階で完全なPythonへ近づける仕組みで、多言語にも対応する。PythonTutorなどの可視化ツールは実行順序やメモリ状態を示し、PyPLASのAIは答えを代行せず段階的なヒントで推論を促す。さらに、PychiやWebTigerPythonはScratchの考え方を保った移行や、インストール不要でブラウザ内に本物のPythonを動かす環境を提供する。

構文エラーと認知負荷の壁
スピーカー 2
あの、リスナーのあなたもちょっと想像してみてほしいんですけど、マニュアル車の運転免許の試験中だとしますよね。
スピーカー 1
はいはい。緊張する場面ですね。
スピーカー 2
で、必死にクラッチを踏んでギアを変えようとしているのに、ちょっとでもタイミングがずれてエンストするたびにですね、助手席の教官が、「予期せぬファイル終端です。」っていきなり古代ラテン語でどなってくる
んですよ。
スピーカー 1
それはパニックになりますね。絶対に二度と運転したくないと思いますよ。
スピーカー 2
ですよね。実は今日、あなたと一緒に深掘りしていきたいのが、まさにこの絶望的な問題についてなんです。
スピーカー 1
プログラミング学習における大きな壁の話ですね。
スピーカー 2
はい。先日、ストレンジループ2022っていうカンファレンスでのフェリエンヌ・ヘルマン氏の講演とか、いくつかの大学の研究論文、さらには最新の開発関係に関する学術レポートなんかを山のように読んでいた
んですが、そこでとんでもない数字を見つけちゃいまして。
スピーカー 1
何でしょうか。
スピーカー 2
プログラミング初心者が書いたコードの、実に73%が実行する前から公文エラーで壊れているそうなんです。
スピーカー 1
ああ、なるほど。でも実はですね、その数字の裏にある事実の方がさらに衝撃的なんですよ。
スピーカー 2
え、73%よりやばい事実があるんですか。
スピーカー 1
ええ。成績が優秀なトップクラスの学習者であっても、なんと50%の割合で公文エラーを出しているんです。
スピーカー 2
優秀な人でも半分は間違えるってことですか。
スピーカー 1
そうなんです。
スピーカー 2
つまりコードの書き間違いっていうのは、その人の能力の低さが原因ではなくて、誰もが必ず陥る構造的な罠だということなんですよ。
スピーカー 1
いや、半分も間違えるなら、もうシステムの方に問題があるとしか思えませんね。これまでの深掘りでも色々なテクノロジーを見てきましたけど、今回のテーマはズバリ既存言語の学習向け開発環境です。
スピーカー 2
はい、非常にタイムリーで重要なテーマですね。
スピーカー 1
特に、Scratchみたいなブロックを組み合わせる直感的なプログラミングから、Pythonのような真っ黒な画面にテキストを打ち込む言語へ移行するときに、なぜみんな挫折してしまうのか。
スピーカー 2
そこには巨大なギャップがありますからね。
スピーカー 1
そして最新のツールがその分厚い壁をどうやってぶっ壊そうとしているのかを、今日は色んな資料をもとに紐解いていきます。
スピーカー 2
この膨大な資料全体から浮かび上がってくる最大のテーマっていうのはですね、テクノロジーの厳密なルールに人間が合わせるという時代が終わりを迎えているということです。
スピーカー 1
人間が合わせる時代が終わる。
スピーカー 2
人間の自然な認知プロセスにテクノロジー側が形を変えて寄り添うという大きなパラダイムシフトが起きているんですよね。
スピーカー 1
パラダイムシフト、いいですね。ワクワクします。
よし、じゃあまずは立ちはだかる壁の正体から探っていきましょうか。
スピーカー 2
いきましょう。
スピーカー 1
ScratchからPythonへの移行ってなんであんなにきついんでしょう。
スピーカー 2
Scratchならパズルみたいに10歩を動かすブロックとニャーと鳴くブロックをカチッとつなげるだけで済みますよね。
スピーカー 1
そうですね。非常に直感的です。
スピーカー 2
でもPythonになった途端、急に謎のルールに縛られまくりますよね。
あれはどういう状態なんですか。
スピーカー 1
専門用語ではこれを認知負荷の二重構造と呼んでいるんです。
スピーカー 2
認知負荷の二重構造、なんだか重たそうな言葉ですね。
スピーカー 1
まさに重いんですよ。プログラミング言語を学ぶ際、初心者の脳内では2つの重い処理が同時に走っている状態なんです。
1つはアルゴリズムの論理そのものですね。
スピーカー 2
論理っていうのは、もしAならBをする、それを5回繰り返すみたいな考え方のことですよね。
スピーカー 1
その通りです。そしてもう1つが、それをどうやって書くかという厳密な構文ルールなんです。
項論が必要だとか、括弧を閉じなきゃいけないとか、インデントのスペースはいくつかといった細かいルールですね。
スピーカー 2
ああ、なるほど。さっきの車の例えで言うなら、マニュアル車の運転の仕方を習いながら、同時にエンジンの正しい組み立て方もテストされているような状態ってことですね。
スピーカー 1
まさにそんな感じです。そりゃ脳もパンクしますよ。
しかも、括弧の閉じ忘れや全角スペースがたった1つ混ざっていたといった本当に微細なミスだけで、プログラムは完全に停止してしまいます。
スピーカー 2
うわあ、厳しい。
スピーカー 1
その時に画面に叩きつけられるのが、Unexpected EOF While Passing、つまり構文解析中の予期せぬファイル終端といったエラーメッセージなんです。
スピーカー 2
でたあ、初心者の心をへし折る暗号文ですね。ラテン語にしか見えないやつだ。
はい、これがまさにシンタックスフラストレーション、構文に対する挫折感の根本的な原因です。
スピーカー 2
うーん、でもちょっと待ってください。ここで非常に興味深いというか、気になったことがあるんですけど。
スピーカー 1
何でしょうか。
スピーカー 2
私たちの業界が長年抱えてきた思い込みについてなんですが、特に80年代とか90年代にプログラミングを学んだ世代って、コンパイラー、つまりコードを翻訳して実行してくれるプログラムは親友であるって教え込ま
れてきませんでしたか?
スピーカー 1
ああ、ありましたね。エラーを出して間違いを教えてくれるのだから、コンパイラーは厳しいけれど良き教師なのだという考え方ですね。
スピーカー 2
そうそう、私たちが信じてきたエラーメッセージは成長の糧だっていうスポコンみたいな考え方は、もしかして間違っていたんですか?
ホルマンス氏の言葉を借りるなら、それは開発者が陥っているストックホルム症候群ですね。
スピーカー 2
ストックホルム症候群、自分を苦しめる誘拐犯に愛着を持っちゃうやつじゃないですか。
スピーカー 1
ええ、本当にその通りなんです。コンパイラーっていうのは本来、プロのエンジニアが書いたコードを機械語に翻訳するためのツールなんですよ。
スピーカー 2
なるほど、プロ用なんですね。
スピーカー 1
はい。初心者に優しくフィードバックを与える教育ツールとしては1ミリも設計されていないんです。
だから、教育工学的な観点から見ると、コンパイラーが初心者の良き教師になるという前提自体が完全に破綻していると言わざるを得ません。
スピーカー 2
なるほどな。親友だと思い込んでいた相手は、実はただの超絶スパレタな検査官だったと。
スピーカー 1
そういうことです。
スピーカー 2
じゃあ、リスナーの皆さんも気になっていると思うんですが、その高すぎる高文の壁をどうやって越えればいいんでしょうか。
Hedyの段階的なPython学習
スピーカー 2
ここで資料に登場するのが、段階的プログラミング言語というアプローチですよね。私、これ読んでいてすごくワクワクしたんですよ。
スピーカー 1
非常に画期的なアプローチです。その代表例が、先ほども名前が出たフェリエン・ヘルマンス氏が開発したHEDIという言語システムですね。
スピーカー 2
HEDIですね。
はい。HEDIの根底にあるのは、最初から完全なPythonの文法を押し付けるのはやめようという思想なんです。
スピーカー 2
段階的っていうのは具体的にどう進んでいくんですか。
スピーカー 1
HEDIは全部で18のレベルで構成されています。例えばレベル1では、括弧も引用符も一切必要ありません。
スピーカー 2
え、括弧がいらない?
スピーカー 1
はい。ただプリント括弧ハローと画面に打つだけで、ちゃんとハローと表示されるんです。
スピーカー 2
それ最高ですね。さっきの車の例えで言うなら、まずはアクセルを踏めばとりあえず前に進むゴーカートから始めさせてくれるってことじゃないですか。
スピーカー 1
そういうことです。そしてレベルが進むにつれて徐々にルールが追加されていきます。
レベル4になって初めて、一行で書くシンプルなIF-ELSE文が導入されるんです。
スピーカー 2
ほうほう。少しずつ難しくなっていくんですね。
スピーカー 1
そしてレベルを追うごとに引用符が必要になり、ブロック構造のインデントが必要になりと進化していきまして。
スピーカー 2
最終のレベル18に到達すると、
スピーカー 1
到達すると?
スピーカー 2
なんとそれが、完全なPythonのコードになっているという仕組みなんです。
スピーカー 1
えー、つまり自分でも気づかないうちに補助輪が一つずつ外されていって、最後には本物のバイクに乗れているような感覚ですね。それはすごい。
スピーカー 2
しかもヘリが本当に素晴らしいのは、英語だけじゃないってところなんです。
スピーカー 1
あ、多言語対応のことですね。オランダ語、スペイン語、アラビア語など47言語に対応しているとか。
スピーカー 2
はい。これは認知負荷を下げる上で極めて重要なポイントです。
既存のプログラミング言語のキーワードって、ifとかwhileとかprintとかほぼ全て英語ですよね。
スピーカー 1
確かにそうですね。
スピーカー 2
だから英語を母語としない子どもたちにとってプログラミングを学ぶことは、同時に未知の英単語を暗記する作業でもあったわけです。
スピーカー 1
痛いほどわかります。私たち日本人も、なんでprintなんだ?表示するならshowとかdisplayでもいいじゃないかって心の中で突っ込みながら、まずは丸暗記から始めますからね。
スピーカー 2
ですよね。特にアラビア語のような右から左へ記述する言語のサポートは画期的です。
スピーカー 1
ああ、アラビア語って書く方向が逆ですもんね。
そうなんです。通常のコードエディタでアラビア語と英語の記号を混ぜて書こうとすると、カーセルの位置が飛び交ってしまって文字通り画面が崩壊するんですよ。
スピーカー 1
うわあ、それは学習どころじゃないですね。
ええ。でも、ヘディなら母語で論理構造を学べるため、認知負荷を激減させるだけでなく、これは自分たちのための言語なんだという自信を持たせる絶大な効果があるんです。
スピーカー 1
いやあ、すごく素晴らしいアプローチだと思います。でも、ちょっと待ってください。ここで素朴な疑問というか反論があるんですけど。
スピーカー 2
はい、なんでしょうか。
スピーカー 1
最初にカッコや引用符を使わない間違った構文を教えてしまうと、後になって正しいPythonを学ぶときに、あれ?前はこれで動いたのに、なんで今はエラーになるの?って混乱してしまいませんか?かえって逆効果にな
るような気がするんですが。
スピーカー 2
なるほど。それは非常によくある懸念であり、多くのエンジニアが抱く妥当な疑問ですね。
スピーカー 1
ですよね。
しかし、私たちが日常の他の物事をどう学んできたかを振り返ってみてほしいんです。例えば、自然言語の学習です。
自然言語、つまり言葉の学習ですね。
スピーカー 2
はい。幼児が初めて文字を書くとき、最初から句当点を完璧に使いこなし、主語と述語の係り受けを正確に書くことを求めますか?
スピーカー 1
ああ、いや、絶対に求めないですね。まずは耳ずの張ったような文字でも、形みたいなものが書けたら、よくできたねって褒めちぎります。
スピーカー 2
そうですよね。算数の学習でも同じことが言えます。小学校の低学年では、5-3は2と教えますが、3-5は?と聞かれたら、どう答えるように教わりましたか?
スピーカー 1
えーと、引けない、つまりゼロであるって教わった記憶がありますね。
スピーカー 2
そうなんです。マイナスという概念をまだ処理できない年齢だからです。そうなんです。マイナスという概念をまだ処理できない年齢だからです。
しかし、後になって中学生でマイナスの数を教わったとき、子どもたちは、小学校の先生に嘘をつかれていた、と永遠に混乱して立ち直れるでしょうか?
スピーカー 2
あー、なるほど。言われてみれば完全にその通りですね。徐々に知識をアップデートして上書きしていくわけだ。
その通りです。教育工学においては、これをメンタルモデルを段階的に変化させる、と呼びます。最初から全てが厳密に正解である必要はなくて、学習者の認知能力の成長に合わせてルールを少しずつ更新していく方が、教
育的には遥かに有効なんですよ。
そうか、エディは人間が本来持っている自然な学習プロセスを、ついにプログラミング教育のシステムに落とし込んだってことなんですね?
ええ、まさに画期的な例と言えます。
実行状態の可視化とAIヒント
スピーカー 2
よし、これで構文の壁は段階的なアプローチで越えられそうですね。でも、コードを打ち込む問題が解決したとしても、次に立ちかたかる別の壁がありますよね?
はい、実行ボタンを押した後の問題ですね。
そうなんです。コードを書いて実行すると、一瞬で結果だけが画面に出力されますよね。でも、その裏でデータがどう動いて、どの変数がどう変わったのかは、完全にブラックボックスじゃないですか?
ええ、見えないんですよね。
これって、見えない箱の中でマジックが行われているようなもので、初心者には何が起きたのかさっぱりわかりません。リスナーのあなたもここでつまずいた経験があるんじゃないでしょうか?
まさにそこが次の大きなつまづきの石です。初心者はコードがどの順番で実行されて、変数の値がどう変化しているのかを脳内でシミュレートすることができませんからね。
スピーカー 1
はいはい。
スピーカー 2
そこで重要になるのが、見えない状態を可視化する技術です。資料にあるフィリップ・グウォー氏のPythonTutorというツールは、その先駆的な存在ですね。
スピーカー 1
名前はチューター、つまり家庭教師ですけど、実際にはコードの実行状態を視覚的なアニメーションみたいに見せてくれる強力なツールですよね。
スピーカー 2
はい。PythonTutorは、プログラムが一行実行されるごとに、コンピューターの内部で何が起きているかを図解してくれます。
例えば、コールスタックとヒープメモリの動きをステップごとに可視化するんです。
スピーカー 1
出ましたね、専門用語。コールスタックとヒープメモリ。ちょっとリスナーの皆さんにも分かりやすいように整理させてくださいね。
お願いします。
スピーカー 1
コールスタックっていうのは、コンピューターが今どの作業の途中かを順番に記録している付箋の束みたいなもので、ヒープメモリっていうのはデータやリストを無動作に置いておく巨大な作業机みたいなイメージであって
ますか?
スピーカー 2
完璧な例えです。PythonTutorは、その机の上でどの付箋がどのデータを指し示しているかを矢印のポインターで明確に示してくれるんですよ。
スピーカー 1
それは分かりやすい。
スピーカー 2
さらに、Sony IDEという教育向けの環境では、抽象公文儀、略してASTの評価プロセスを可視化する機能もあります。
スピーカー 1
抽象公文儀、これもまたいかつい名前が来ましたね。
スピーカー 2
難しく聞こえますよね。
簡単に言えば、コンピューターがあなたの書いたプログラムの文章を主語、述語、目的語のように文法構造に分解して、木のような図にしたものです。
スピーカー 1
なるほど。
スピーカー 2
Sonyは、その数式や論理がどういう順番で計算されていくかをマトリオシ化を分けるように一段階ずつ見せてくれるんです。
スピーカー 1
動きが目で見えるようになれば、ここで変数の数字がおかしくなったんだってエラーの原因がはっきりわかりますね。
スピーカー 2
ええ、見えないものを見えるようにする効果は絶大です。
そして、ここでさらに面白いのが、パイプラスという最新システムなんです。
この可視化ツールに加えて、なんとローカルで動くAIアシスタント、オラマとかQNが統合されているんですが、
スピーカー 1
はい、AIの活用ですね。
スピーカー 2
このAIの使い方が今の世間の流行りとは完全に逆なんですよ。
スピーカー 1
ほう、どういうことでしょうか。
スピーカー 2
今のAIって、例えばChatGPTなんかにこのコード直してってお願いしたら、パッと完璧な答えを出してくれるじゃないですか。
つまり、あなたの代わりにコードを全部書きますよっていうアプローチですよね。
スピーカー 1
確かに、すぐに答えを教えてくれますね。
スピーカー 2
でも、パイプラスのAIは答えを教えてくれないんです。
L1、L2、L3ヒントポリシーという段階的なヒントを出すように設計されているそうでして。
スピーカー 1
なるほど、教育的な足場掛け、いわゆるスキャフォルディングですね。
そうなんです。L1は概念的なヒント、L2は戦略的なヒント、そしてL3で初めてエラーの具体的な箇所に焦点を当てるんです。
素晴らしい設計です。
スピーカー 1
つまり、このAIはあなたの代わりに重いパーベルを持ち上げてくれる人ではなくて、
もう少しだ、今はフォームに気を付けろって横でギリギリまで補助してくれるジムのスポッターなんですよ。
スピーカー 2
ジムのスポッター、いい表現ですね。
なぜこの設計が素晴らしいかというと、この可視化とAIスポッターの組み合わせは、
プログラミング初心者が陥る最も悪しき習慣を防いでくれるからです。
スピーカー 1
悪しき習慣。
スピーカー 2
はい、あてずっぽうの修正、ブラインドゲッシングですね。
スピーカー 1
あてずっぽうの修正、やりますやります。
エラーが出たら原因も分かってないのに、とりあえず括弧を足してみたりマイナスをつけてみたりして、
もう一回実行ボタンを祈るように連打するやつですよね。
スピーカー 2
皆さん経験があると思います。
しかし、メモリの動きが可視化されて、さらにAIが答えを出すのではなく、
この変数は今なぜこの値になっていると思う?と戦略的な問いを投げかけることで、
学習者は盲目的な試行錯誤を強制的に立ち止まらされるんです。
なるほど。
スピーカー 2
そして、論理的な推論へと導かれるわけです。
さらに、パイプラスは教師向けに生徒があてずっぽうをしていないかを、
推論戦略やツール使用などの4次元で分析するダッシュボードまで提供しているんですよ。
スピーカー 1
4Dラーニングアナリティクスってやつですね。
移行支援とブラウザ型Python環境
学習言語の文法が優しくなって、見えない動きが可視化されて、
スピーカー 1
AIが絶妙なコーチングをしてくれる。
学習者にとっては本当に至れり尽くせりの環境ですね。
スピーカー 2
理想的な環境に近づいています。
でもですね、これだけ素晴らしいツールがあっても、
実際にこれを学校の教室とか会社の研修で使おうとすると、
また別のものすごく現実的で巨大な壁にぶち当たりますよね。
スピーカー 1
おっしゃる通りです。
インフラと環境構築の壁ですね。
スピーカー 2
そう。Pythonを学ぼうと思ってパソコンを開いたのに、
パスを通すとかバージョンが違うとか、
謎のライブラリのインストールでエラーが出るとか、
本題に入る前に3時間解けるみたいな。
これどうやって解決するんですか?
スピーカー 1
ここに対するアプローチとして、2つの重要なシステムを紹介しましょう。
1つ目は少し視点は違いますが、パイチというシステムです。
スピーカー 2
パイチですか?
スピーカー 1
はい。これはScratchからPythonへのメンタルモデルの架け橋となるツールなんです。
メンタルモデルの架け橋。どういうことでしょう?
スピーカー 1
Scratchの最大の特徴はイベント駆動であることです。
緑の旗が押されたときとか、このスプライトがクリックされたときに動くという考え方ですね。
スピーカー 2
はいはい。直感的ですよね。
スピーカー 1
しかし通常のPythonは、上から下へ順番に処理が進むのが基本です。
そこでパイチはScratchのようなスプライトやイベントの概念を維持したまま、
中身のロジックだけをPythonのテキストで書けるように設計されているんです。
スピーカー 2
へー。頭の中のこう動くはずという考え方はScratchのままで、
各言語だけをPythonに切り替えられるからスムーズに移行できるんですね。
スピーカー 1
そういうことです。これにより環境の構造による学習者の混乱を防いでいます。
スピーカー 2
なるほど。で、もう1つの環境構築時刻を根本から解決する極めつけのシステムって何ですか?
スピーカー 1
それがウェブタイガーPythonというブラウザ型の開発環境です。
スピーカー 2
ウェブタイガーPython?
スピーカー 1
クラウド対ローカルの比較研究でも指摘されている通り、
ローカルのパソコンでの環境構築は、特にデバイスがバラバラな学校現場ではトラブルの温床になりますからね。
スピーカー 2
だからこそウェブブラウザを使うわけですね。でもちょっと待ってください。
私もブラウザ上でコードを書くサービスを使ったことがありますけど、
あれって結局書いたコードをどこか遠くのサーバーに送って、
向こうで実行して結果だけブラウザに返してもらってるんですよね?
スピーカー 1
はい。従来の仕組みはそうでしたね。
スピーカー 2
ってことは、機能が制限された、いわば教育用のおもちゃなんじゃないですか?
本格的な学習には耐えられないような気がするんですが。
スピーカー 1
以前は確かにそうでした。生徒全員が一斉に実行ボタンを押すと、
サーバーがパンクして授業が止まることもありましたし。
ありますよね。
スピーカー 1
しかしウェブタイガーPythonは、
ウェブアッセンブリーとパイオダイドという技術を活用することで、
その常識を完全に覆しました。
なんとサーバーとの通信なしに、
あなたの使っているChromeやSafariといったブラウザの内部だけで、
本物のPythonが完全に動作するんです。
スピーカー 2
え?ブラウザの中で直接Pythonが動いてるんですか?
スピーカー 1
はい。ログインも不要で、
iPadのようなタブレットでもオフラインに近い感覚で動きます。
スピーカー 2
かつてはスカルプトという、
JavaScriptでPythonのフリーをする古い技術が使われていましたが、
非常に遅くて機能も限定的でした。
スピーカー 1
ふむふむ。
しかしパイオダイドはC言語で書かれた本物のPython、
スピーカー 2
いわゆるCPythonをそのままブラウザ用に変換したものなんですよ。
スピーカー 1
本物のPythonが動くなら、もうおもちゃじゃないですね。
でもブラウザの中で動かすと、処理がものすごく重くならないんですか?
データサイエンスみたいな本格的な学習には耐えられないのでは?
スピーカー 2
その懸念もすでに過去のものです。
現在のパイオダイドのパフォーマンスは、
パソコンに直接インストールしたネイティブのPythonと比較しても、
わずか3倍から5倍程度の遅りにとどまっています。
スピーカー 1
へー、そんなに早いんですか?
スピーカー 2
はい。初心者が学ぶレベルの高度なら一瞬ですし、
従来のスカルプトと比較すると、なんと約50倍も高速なんです。
スピーカー 1
50倍?それは革命ですね。
スピーカー 2
ええ。難パイやマットプロットリブを使った本格的なデータ処理のグラフ描画や、
マイクロビットなどのロボティクス制御まで、
すべてブラウザ内で完結する成熟度に達しているんですよ。
スピーカー 1
インストール不要でURLを開くだけで、
すぐに本格的なデータサイエンスまで学べるなんて、
いやー、プログラミング学習環境の進化には本当に驚かされました。
スピーカー 2
本当に目覚ましい進化ですよね。
人間に寄り添う学習環境の未来
さて、そろそろ今回の深掘りをまとめる時間になってきました。
スピーカー 2
ヘディのように最初はカッコもなしで書ける段階的な構文導入、
Pythonチューターやパイプレースによるメモリの動きの可視化と、
答えを教えないAIのスポッター。
スピーカー 1
はい。そしてウェブアセンブリの技術によって、
ブラウザを開くだけで本格的な環境が手に入るWebTigerPython。
これらが組み合わさることで、テキストベースのプログラミング学習環境が、
いかに人間寄りに進化しているかがよくわかりました。
過去数十年間、私たちはコンピュータの厳格な都合に合わせて、
スピーカー 2
自分の思考をねじ曲げることを強いられてきました。
しかし、いまようやくテクノロジーの側が、
人間の自然な認知プロセスや学習のベースに合わせて、
形を変えて寄り添うようになってきたと言えますね。
スピーカー 1
つまり、これってリスナーのあなたにとってどういうことなんでしょうか。
あなたがこれから新しい技術を学ぼうとするとき、
あるいは職場のチームの後輩や自分の子供に何かを教えようとするとき、
ぜひ思い出してほしいんです。
大事な視点ですね。
スピーカー 1
もし相手が、あるいはあなた自身が何度やってもつまずいているなら、
それは学習者の能力やセンスが足りないからだと自分を責める前に、
学習環境のインターフェースやツールの選び方が、
人間の認知に寄り添った適切なものになっているかどうかを、
まず見直すべきだということです。
スピーカー 2
学習の失敗を個人の責任にするのではなく、
システムや環境の設計上の問題として捉え直す視点ですね。
これはプログラミング教育に限らず、
あらゆるスキル獲得において極めて重要な洞察だと思います。
スピーカー 1
まさにその通りです。
さて、最後にあなたへの挑発的な思考の種というか、
スピーカー 1
ちょっと面白い問いを投げかけて終わりにしましょうか。
スピーカー 2
お、何でしょうか。
スピーカー 1
開発環境がこれほどまでに学習者に寄り添うように進化しているのなら、
未来のプログラミング言語はどうなると思いますか?
もしかすると、スマートウォッチなどのセンサーが、
その日のあなたの脳の疲労度や認知負荷を読み取って、
リアルタイムで今日のあなたに一番分かりやすい構文の厳密さへと、
言語自体が自動的に変形するようになるのではないでしょうか。
スピーカー 2
なるほど。脳の状態に合わせて、
環境が自ら難易度を調整してくれる世界ですね。
非常にエキサイティングな未来像です。
スピーカー 1
固定されたプログラミング言語という概念自体が過去のものになるのかもしれません。
次に、あなたが真っ黒な画面で点滅するカーソルを前にしたときは、
絶望する代わりに、
そろそろお前の方が私に合わせて進化する番だぞと、
スピーカー 1
画面に語りかけてみてください。
スピーカー 2
いいですね。
マニュアル車のギアチェンジで悩む時代は、もうすぐ終わるのかもしれません。
スピーカー 1
それでは、今回の深掘りにお付き合いいただきありがとうございました。
23:40

コメント

このエピソードのトピック

すべてのトピック →

それぞれのトピックから、ほかの番組の会話も探せます。

スクロール