メニュー

堺市で運営しているプログラミングスクールADVANCEの教室の様子

プログラミングを用いた極限の学習:高校生の道具的行動スキームの発達

📌 この記事の結論

  • プログラミングは、高校生が極限の概念を「動的プロセス的見方」で理解する上で非常に有効なツールとなる。
  • 教師が提供する構造化されたコードテンプレートは、生徒がプログラミングを数学的ツールとして使いこなす能力を大きく向上させる。
  • しかし、プログラミングを使った学習は、生徒が独立変数と従属変数のプロセス間の関連性を統合的に理解することの難しさも浮き彫りにする。
  • 教師はプログラミングを数学教育に統合する際、それが生徒の数学的概念の認識にどう影響するかを慎重に考慮する必要がある。

1. プログラミングが数学教育にもたらす可能性と課題

近年、教育改革の一環として、多くの国の学校カリキュラムにプログラミングが導入され、特に数学教育と連携することが増えています。プログラミングを学校の数学で活用することは、新たな数学的探求の可能性を広げる一方で、生徒と教師の両方に新たな課題をもたらします。

本記事では、スウェーデンの高校生を対象としたあるケーススタディを紹介します。この研究は、生徒の極限概念の認識が、プログラミングの使用によってどのように影響を受けるかを、「道具的アプローチ(Instrumental Approach)」という理論的枠組みを用いて調査したものです。

この論文から、プログラミングが数学学習のツールとして、どのように生徒の「道具的生成(instrumental genesis)」、すなわちプログラミングというアーティファクト(人工物)を用いて数学的課題を解決するための「道具化された行動スキーム(instrumented action schemes)」を発達させるかを探ります。特に、プログラミングが極限の理解にどのように作用し、どのような影響を与えるのかを、ADVANCEの視点も交えて解説していきます。

2. 紹介する論文の概要

📄 論文情報

タイトル Students’ Development of Instrumented Action Schemes for Numerically Determining Limits Using Programming
著者 Andreas Borg, Maria Fahlgren
掲載誌 Digital Experiences in Mathematics Education (2025) 12:95–127
研究対象 スウェーデンの高校生(17-18歳、32名)
研究期間 2022年秋

研究の目的

本研究の目的は、プログラミングを数学的ツールとして利用する高校生の道具的生成、特に数値的に極限値を決定する際の道具化された行動スキームがどのように発達するかを明らかにすることです。生徒がプログラミングという人工物(アーティファクト)をどのように扱い、その行動が教師の授業デザインとどう関連しているのかを調査しました。

研究の方法

このケーススタディは、スウェーデンの高校で実施されました。研究者は、生徒がプログラミングを用いて数学的課題を解決する際の画面と会話を記録し、そのデータを分析しました。

  1. **参加者**: 理数系プログラムの高校2年生(17-18歳)32名。生徒たちは事前にプログラミングの基礎(Mathematics 2cコースに10時間追加)を学習していました。
  2. **ツール**: 各生徒はChromebookを使用し、Google CoCalc環境でPythonを用いてコーディングを行いました。
  3. **授業設計**: 期間中に計5回のプログラミングを活用した数学の授業が行われ、この論文では最初の3回(すべて関数の極限に関連)に焦点が当てられました。
  4. **アーティファクト**: 教師は、コース全体で利用可能な特定の事前設計されたコード構造(WHILEループを含むテンプレート)を提供し、生徒はその構造を修正して課題を解くことが求められました。
  5. **データ収集**: 4組の生徒ペアの画面と会話(音声のみ)が記録されました。特に、全ての授業で一緒に活動した「ベラとデイビッド」というペアのデータが詳細に分析されました。
  6. **分析枠組み**: 道具的アプローチに基づき、生徒の道具的生成道具化道具使用による変化)および道具化された行動スキームの構成要素(概念的要素と技術的要素)が特定されました。

ADVANCEでもPythonを学ぶことができます。この論文のように、数学的思考とプログラミングを結びつける学習は、子どもたちの論理的思考力と問題解決能力を同時に育む上で非常に効果的です。

3. 研究結果のポイント3つ

堺市で運営しているプログラミングスクールADVANCEの教室の様子

生徒たちの道具的生成の分析を通じて、以下の3つの主要なポイントが明らかになりました。

✅ ポイント1:教師による慎重な指導設計は、プログラミングを数学的ツールとして活用する能力を高める

教師が提供した構造化されたコードテンプレート(アーティファクト)とそれに付随する例は、生徒が数学的課題を解決するためにプログラミングを利用し、修正する能力を大幅に助けました。生徒たちはこのアーティファクトを修正することで、4つの異なる道具化された行動スキームを発展させました。これらのスキームは、レッスンの進行とともに安定し、生徒たちはコード構造の利用とプログラム出力の解釈において流暢さを示すようになりました。

しかし、より複雑な修正(例:独立変数が0以外の特定の値に近づくようにコードを調整する)が求められた際には、生徒たちは困難に直面しました。これは、教師の作成物を利用する段階から、自分自身のものを作成する段階への移行が依然として挑戦的であることを示しています。

✅ ポイント2:プログラミングによる数値的な極限決定は、極限の「動的プロセス的見方」を促進する

プログラミングを用いて数値的に極限を決定する活動は、生徒の極限概念に対する「動的プロセス的見方」を主に促進することが明らかになりました。生徒たちは、「10に近づくが、10を超えない」といった表現を用いるなど、極限を特定の値へ向かう動的なプロセスとして捉える傾向がありました。

この見方は、極限の導入としては自然な初期段階であると論文は指摘しています。プログラミングによって生成される数値の羅列は、独立変数と従属変数が連続的に変化し、特定の値に「近づいていく」様子を視覚的に提示するため、このプロセス的理解を強化すると考えられます。

✅ ポイント3:独立変数と従属変数のプロセス間の関連性を統合的に理解することの難しさ

生徒たちは、独立変数の値(例: xやh)を画面に表示することの必要性を十分に認識していないようでした。彼らは主に、関数値(従属変数)が何に近づくかに焦点を当て、独立変数のプロセスと従属変数のプロセスの連携(coordination)に苦労しました。

この結果は、プログラミングによる数値的なアプローチが、生徒の注意を数値的な出力に過度に集中させ、極限のより深い概念的理解(プロセプト的見方)の発展を妨げる可能性があることを示唆しています。生徒は、極限値を決定できる一方で、その数学的意味や導出過程の完全な理解に至らない場合がありました。

4. ADVANCEの現場から見た実感

堺市で運営しているプログラミングスクールADVANCEの教室の様子
▲ ADVANCEの教室で学ぶ様子(イメージ)

堺市南区のプログラミングスクールADVANCEで実際にプログラミングを教えている講師としての意見は以下の三つです

🎮 現場で感じる3つの変化

コードテンプレートの力:生徒の初期学習を加速

論文で指摘されているように、ADVANCEでもPythonJavaScriptを用いた授業で、最初から全てを記述させるのではなく、骨格となるコード(テンプレート)を提供することがよくあります。これにより、生徒は構文の複雑さに戸惑うことなく、「何をどう変えれば、望む結果が得られるのか」という思考に集中できます。これは特に、ゲーム制作(Roblox StudioUnity)でキャラクターの動きやスコア計算のロジックを組む際に有効です。既にあるコードを「使う」から「修正する」段階への移行はスムーズに進みます。

「動的プロセス的見方」はScratchでも顕著

論文の「動的プロセス的見方」は、Scratchのようなビジュアルプログラミング環境で学ぶ低学年の生徒にも顕著に現れます。例えば、キャラクターを動かすプログラムを作る際、生徒は「何歩動かすか」「どう回転させるか」といったプロセスの連続としてプログラムを捉えます。「このブロックが実行されると、次に何が起こるか」という思考は、まさに動的な変化に焦点を当てたものです。数値の極限を学ぶ高校生と同様に、彼らも「動きの最終的な状態」よりも「どのように動いていくか」に興味を持つことが多いです。

変数間の関係性理解には意図的な指導が必要

極限の概念において、独立変数と従属変数の関係性を統合的に理解することの難しさは、プログラミング学習全般で共通する課題です。Pythonで複雑な計算やシミュレーションを行う際、生徒はしばしば「何を入力すれば、どんな結果が出るか」という部分には集中しますが、「入力値の変化が、出力値にどのように連動して変化するか」という関数的な関係性を見落としがちです。ADVANCEでは、このような時に、数値の変化をグラフ化したり、デバッグモードでステップ実行して変数の変化を追跡させたりすることで、複数の変数の相互作用を視覚的に理解させる工夫をしています。

プログラミングは、単に結果を出すためのツールではなく、その「プロセス」を深く理解するための強力なツールです。しかし、教師は生徒が独立変数と従属変数のプロセス間の関連性を理解できるように、意図的に介入し、両方のプロセスに注目させる指導が不可欠であると強く感じます。

5. 保護者の方へ:家庭でできること

プログラミング学習を通じてお子さんが数学的な概念をより深く理解するために、ご家庭でもできることがあります。この研究結果を踏まえて、いくつか具体的なアドバイスをご紹介します。

🏠

プロセスと結果の両方に注目させる会話を心がける

お子さんがプログラミングで何かを達成した時、最終的な結果だけでなく、「どうやってその結果になったのか?」「何が起きてこうなったの?」というプロセスにも関心を向けて質問してみましょう。例えば、Scratchでキャラクターが動くプログラムを作ったなら、「このキャラクターが動くとき、数字はどのように変化していくの?」といった問いかけです。

📅

「変数」の役割を意識させる日常会話

プログラム内の「変数」は、変化する値を格納する箱のようなものです。日常の中にも変数の概念は隠されています。例えば、「今日は気温が1度上がったから、いつもより服を一枚多く着ようか」という会話で、「気温」という変数の変化が「服装」という結果にどう影響するかを話すことができます。お子さんが作った簡単なゲームで、「このキャラクターの速さは何によって変わるの?」「得点が増えるのはどの数字が変化するからかな?」など、変数の役割について会話してみましょう。

👏

プログラミングを数学学習の「道具」として捉える

プログラミングは、数学的なアイデアを探求する強力なツールになります。家庭で簡単な計算問題やパターン認識の問題に取り組む際、電卓だけでなく、簡単なコード(例えば、Pythonで計算式を入力する)を使って試してみることを促してみましょう。これにより、プログラミングが単なる遊びではなく、数学の理解を深めるための具体的な道具であると認識できるようになります。

🎮 ADVANCEで一緒にプログラミングを始めませんか?

堺市南区のプログラミングスクールADVANCEでは、Scratchからはじめて、Roblox、Unity(C#)まで段階的に学べます。

研究で効果が実証されたプログラミング教育を、ゲーム制作を通じて楽しく体験できます。

🕹️ ▶ ぼうけんを はじめる 無料体験会に申し込む! 🎮

6. 参考文献

  1. Borg, A., & Fahlgren, M. (2025). Students’ Development of Instrumented Action Schemes for Numerically Determining Limits Using Programming. Digital Experiences in Mathematics Education, 12(95–127). https://doi.org/10.1007/s40751-025-00177-w
👨‍🏫

この記事を書いた人

ADVANCE 講師

堺市南区のプログラミングスクールADVANCEで、Scratch・Roblox・Unity等を用いたプログラミング教育を担当。子どもから大人まで幅広い年齢層への指導経験を持つ。