メニュー

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

プログラミングを用いた極限値決定が高校生の数学的認識に与える影響に関する研究

📌 この記事の結論

  • 慎重に設計されたプログラミング活動は、生徒がプログラミングを数学的ツールとして活用する能力を大幅に向上させることが示された。
  • プログラミングを用いて数値的に極限を決定する方法は、生徒に極限の「動的なプロセスビュー」を育む傾向がある。しかし、その際、独立変数と従属変数のプロセス間の協調理解が課題となる可能性がある。
  • 教師は、プログラミングを数学教育に統合する際に、その使用が極限などの数学的概念の生徒の認識にどのような影響を与えるかを慎重に検討する必要がある。

1. プログラミングと数学教育の新たな課題

プログラミングは近年、多くの国の学校カリキュラム、特に数学教育と連携して統合が進んでいます。これにより、数学的な可能性が広がると同時に、生徒と教師双方に新たな課題が生まれています。本記事では、プログラミングが高校生(中等教育後期)の数学の学び、特に「関数の極限」という概念の理解にどのように影響するかを探る研究論文を紹介します。この研究は、「器械的アプローチ」という理論的枠組みを用いて、生徒がプログラミングを数学的ツールとして使いこなす過程、すなわち「器械発生(インストゥルメンタル・ジェネシス)」を詳細に分析しています。生徒たちがプログラミングを通じて、極限という複雑な数学的概念をどのように認識し、その理解を深めていくのか、またその過程でどのような課題に直面するのかを明らかにします。

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歳)の生徒
研究期間 2022年秋

研究の目的

本研究の目的は、プログラミングを数学的ツールとして利用する高校生の「器械発生」を明らかにすることです。具体的には、プログラミングが関数の極限という数学的概念の生徒の認識をどのように形成するかを、器械的アプローチという理論的枠組みを用いて調査しました。器械発生とは、生徒が特定の数学的タスクを解決するために、アーティファクト(この場合はプログラミング)を使用するための精神的なスキーム(行動パターンや知識構造)を開発するプロセスを指します。

研究の方法

この研究は、スウェーデンの中等教育後期の生徒を対象としたケーススタディとして実施されました。

  1. **参加者と環境**: 17~18歳の生徒32名が参加し、数学の第3コースでPythonをGoogle CoCalc環境で利用しました。生徒は全員 Chromebook を使用しました。
  2. **教師の指導**: 教師は、以前の数学コースにプログラミングの基礎(10時間)を組み込み、主に数学的タスクを数値的に解くツールとしてプログラミングを使用するよう指導しました。
  3. **アーティファクト(コード構造)**: 教師は、コース全体で生徒が利用できるよう、特定の事前設計されたコード構造(Boolean型の制御変数 `rep` を用いた `WHILE` ループと `IF` 文)を提供しました。この構造が、生徒が操作する主要なアーティファクトと見なされました。これは、Pythonで例えるなら、`while rep:` と `if condition: rep = False` のような形です。
  4. **授業内容**: 極限、導関数の定義、指数関数の導関数に関連する3つの授業(プログラミングを用いた数値計算)に焦点が当てられました。各授業は、数学的概念の導入、コード構造のデモンストレーション、そしてプログラミングを使ったタスク解決という流れで進行しました。
  5. **データ収集**: 4組の生徒ペアのスクリーンと会話(音声のみ)を録画し、生徒のワークフローと意思決定の根拠を分析しました。特にBellaとDavidというペアのデータが詳しく分析されました。
  6. **データ分析**: 器械的アプローチに基づき、生徒の器械化(アーティファクトの修正)と器械化(アーティファクトの使用が生徒の認識に与える影響)のプロセスを分析しました。この分析を通じて、生徒が開発した「器械化された行動スキーマ」(概念的要素と技術的要素が相互に関連したもの)を特定しました。

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

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

この研究では、プログラミングを学んだばかりの高校生が、与えられたPythonのコード(アーティファクト)を修正しながら極限値を求める中で、4つの「器械化された行動スキーマ」を習得していきました。これは、ScratchRoblox Studioでいう「ブロックを組み合わせて動かす」レベルから、少しずつ「既存のコードを読み解いて修正する」レベルへと移行していくイメージです。

✅ ポイント1:コードの構造は学習を促進するが、応用には課題も

教師が提供した事前設計のコード構造と具体的な例は、生徒がプログラミングを数学的タスクに利用する能力を大きく助けました。生徒たちは、数学的な関数や変数を変更するといった簡単なコード修正にはすぐに慣れ、プログラムの出力結果を解釈できるようになりました。これは、Pythonでいうなら、あらかじめ用意された計算スクリプトの数式部分だけを書き換えるような作業です。

しかし、より複雑な修正、例えば「変数が無限大に近づく」場合や「特定の負の値に近づく」ようにコードを調整するようなタスクでは、生徒は困難に直面しました。これは、プログラミングの技術的な側面だけでなく、極限という数学的概念への深い理解が不足していることが原因でした。与えられたコードを「使う・修正する」段階から「自分のニーズに合わせて創造する」段階への移行が、プログラミング経験の浅い生徒にとっては大きな挑戦だったと言えます。

✅ ポイント2:プログラミングは「極限の動的なプロセスビュー」を助長する

プログラミングを使って数値的に極限を決定する活動は、生徒に極限の「動的なプロセスビュー」を強く育むことが分かりました。例えば、生徒が「値が10に近づくが、10を超えない」と表現するように、極限を「ある値にどんどん近づいていく過程」として捉える傾向が顕著でした。これは、Pythonwhileループを使って変数を繰り返し更新し、その結果を順に表示するような処理が、この「動的に変化するプロセス」を直接的に可視化するためです。

しかし、このプロセスビューへの偏りは、独立変数(x)が近づくプロセスと、それに対応して従属変数(f(x))が近づくプロセスとの「協調」を疎かにするという課題も生みました。生徒は、独立変数の値を出力することの重要性をあまり認識せず、多くの場合、極限式の計算結果(従属変数の値)のみに注目していました。これは、極限という概念をより深く理解するために必要な、両プロセス間の相互関係を捉えることの難しさを示しています。

✅ ポイント3:手続き的習熟度と概念的理解のギャップ

生徒たちは、プログラミングコードを適切に修正し、数値的な極限値を正確に計算することには成功しましたが、その計算結果の数学的な意味を深く理解し、説明することには苦労する場面が多く見られました。例えば、ある極限値が「1」になることをプログラムで確認できても、「なぜ1になるのか」を導関数の定義や数学的性質と結びつけて説明できないケースがありました。

これは、プログラミングが「手続き的な理解」(どうやって計算するか)を促進する一方で、「概念的な理解」(なぜそうなるのか、それが何を意味するのか)が追いつかないというギャップを示しています。プログラミングは強力な計算ツールですが、それ自体が数学的概念の深い理解を保証するわけではないということを示唆しています。

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

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

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

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

課題解決能力の向上と論理的思考の育成

ADVANCEの授業では、ScratchRoblox Studioでゲームを作る中で、「キャラクターが壁をすり抜ける」「スコアが正しく加算されない」といった様々な問題に直面します。生徒たちは、これらの問題を解決するために、試行錯誤しながらコードを修正したり、新しいロジックを考えたりします。これは、論文で示された「コードを修正するスキーマ」や「問題解決のための器械化」と重なる部分です。特に、自分でエラーを見つけ、解決策を導き出す過程で、論理的思考力が飛躍的に向上していると感じます。

「動的なプロセス」の理解促進と次のステップ

論文にある「極限の動的なプロセスビュー」は、私たちの現場でも強く実感します。例えば、Unity (C#) でキャラクターの移動速度を徐々に変化させるプログラムを作成する際、生徒は「時間が経つごとに速度が増していく(あるいは減っていく)プロセス」を直接目で見て、数値の変化を体験します。これにより、変化の概念や連続性を直感的に捉えやすくなります。しかし、論文の指摘と同様に、その「なぜそうなるのか」という深い数学的・物理的原理まで理解を促すには、教師による丁寧な解説と、それをさらに探求するような課題設計が不可欠だと感じています。

個別指導における「足場かけ」の重要性

論文では、教師が提供するコード構造が学習を促進すると述べられていますが、これはADVANCEの個別指導で特に重要です。生徒一人ひとりの理解度や経験に合わせて、適切な「足場かけ(スキャフォールディング)」を提供することで、より複雑なプログラミング概念や数学的概念にも挑戦できるようになります。例えば、最初は簡単なScratchのブロックから始め、慣れてきたらPythonの基本構文へと移行し、最終的にはUnity (C#) のスクリプトでより高度なゲームロジックを実装するといった段階的なアプローチを取っています。この足場かけが、生徒の「器械発生」をスムーズにし、技術的な障壁を乗り越え、数学的思考力を養う上で不可欠であると強く感じています。

プログラミングは、単にコードを書くスキルだけでなく、数学的思考や問題解決能力を育む強力なツールです。しかし、その教育効果を最大限に引き出すためには、教師の意図的な指導と、生徒のレベルに合わせた「足場かけ」が不可欠であると、この論文は私たちに示唆しています。

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

この論文の研究結果は、ご家庭でのプログラミング学習や、お子様の数学的思考の育成においても示唆を与えてくれます。家庭でできることとして、以下の3つのポイントが考えられます。

🏠

「なぜそうなるの?」を一緒に考える習慣を

プログラミングを使って何かを作ったり、計算したりする際に、お子様が「なぜこのコードでこんな動きをするんだろう?」「この計算結果はどういう意味?」と疑問を持つことを促し、一緒に考える時間を設けてみてください。論文が指摘するように、プログラミングは「どうやって計算するか」という手続き的な理解を深めやすい一方で、「なぜそうなるのか」という概念的な理解が追いつかないことがあります。例えば、Scratchでキャラクターが動くプログラムを作ったら、「どうして右に動いたの?」「この数字を変えたらどうなる?」など、結果だけでなくプロセスや原理にも目を向けさせることが大切です。

📅

小さな成功体験を積み重ね、自信を育む

プログラミング学習では、最初は簡単なタスクから始め、小さな成功体験を積み重ねることが重要です。論文で示されたように、いきなり複雑なコードを書かせたり、高度な数学的概念を要求したりすると、生徒は挫折感を味わう可能性があります。例えば、教育版マインクラフトRoblox Studioで簡単なゲームを作ることから始め、少しずつ機能を追加していくなど、難易度を段階的に上げていくことで、「自分にもできる」という自信と学習意欲を育むことができます。

👏

プログラミングを「思考のツール」として捉える

プログラミングは単なる「技術」ではなく、「思考を整理し、問題を解決するためのツール」として捉える視点をお子様と共有しましょう。論文が強調するように、プログラミングは数学的思考を豊かにする可能性を秘めています。例えば、お子様がプログラミングで何か課題に直面したとき、「どうすればこの問題を解決できるかな?」「どんな手順で考えたらいいかな?」と問いかけ、論理的な思考プロセスを一緒にたどってみてください。これは、将来、どのような分野に進むにしても役立つ汎用的なスキルとなります。

🎮 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等を用いたプログラミング教育を担当。子どもから大人まで幅広い年齢層への指導経験を持つ。