前回、Wolfram Cloudによる授業について少し書きました。今回は、さらに突っ込んだ内容と生徒の成長に焦点を当ててご紹介したいと思います。
これまでの【竹内薫のトライリンガル教育】はこちら
私がWolfram Cloudを使い始めた理由
私がWolfram Cloudの「母体」であるMathematicaという数学プログラミング言語に出会ったのは、カナダで大学院生活を送っていたときでした。いまから30年以上前になります。
当時は、コンピューター上でできる数学のほとんどは「数字」を扱うもので、「数値計算」と呼ばれていました。まだまだ、xやyの入った方程式を変形するような「記号処理」は、実用化されていなかったのです。
私は、電子と陽電子がぶつかってトップクオークになる確率計算を大学院でやっていました。当時はトップクオークの重さがわかっておらず、さまざまな重さを仮定して、衝突実験の結果、どんな素粒子がどれくらいの割合で出現するのか、シミュレーションをやっていたのです。
その計算は「ファインマン図」と呼ばれるものを駆使する、複雑極まるもので、われわれ大学院生たちは自らのことを「計算奴隷」と蔑んでいました。毎日、毎日、ひたすら手計算をやらされていたからです。
当時、私が2週間かけて数学記号をいじくって、さらに2週間かけてコンピューターの数値計算をやっていたのと同じことをMathematicaは、数時間でやってしまいます。一ヶ月が数時間に短縮されるのです。
ただし、当時の私の指導教官はコンピューター以前の教育を受けた人で、おまけにけちん坊でしたから、計算奴隷にMathematicaを買ってくれることはありませんでした。私は、自分の小さな容量のパソコンにMathematicaのサンプルを入れて遊んでいましたが、数学にとって「道具」がいかに大切であるかを痛切に感じていたのです。
そのMathematicaは、ブラッシュアップされ、今ではパソコンのデスクトップとインターネット上のクラウドがシームレスにつながるようになりました。それがWolfram|Oneというサービスです。
子どもたちの目の輝きが違う
さて、子どもたちが授業で使うのは、無料で公開されているインターネット上のWolfram Cloudです。最近、ようやく生徒全員に教科書を買いました。
これは英語の教科書と同じ位置づけです。英語の代わりに「数学言語」を学ぶのです。著者のSteven Wolframは、記号処理計算の天才で、Mathematicaを作った人物です。Wolfram Languageは、きわめて強力で、さきほど触れた物理学の素粒子計算から、最近流行の人工知能の機械学習まで、あらゆる数学計算に使えます。
世の中にはいろいろなプログラミング言語があり、それぞれ一長一短がありますが、「高等数学を学んでそのまま使う」という用途であれば、Wolfram Languageの右に出るものはないと私は考えています。
さて私は、今は週に4回、数学好きの4年生〜中学生を教えています。私の授業では、挨拶もそこそこに、
Open Wolfram Cloud and get ready!(Wolfram Cloudにつないで準備して!)
と声がけをします。子どもたちの準備が整ったら、
Okay, play with Wolfram Cloud. You can do whatever you want.
(さあ、Wolfram Cloudで遊ぼう。なにをやってもいいよ。)
と、子どもたちに自由にプログラムを書いてもらうときと、
Today, I will give you an exercise. Don’t worry, here’s my sample. Change parameters and play with it.
(今日は課題を出すよ。心配しないで、ここに私が書いたサンプルプログラムがあるから。パラメーターを変えたりして遊んでみて。)
と、課題をやるときがあります。
いずれにしろ、子どもたちの食いつきは、普通の算数の授業とは次元が違います。コンピューター・インターネット・ゲームのネイティブ世代の彼らにとって、紙と鉛筆という原始的な道具ではなく、「今」の道具で算数や数学ができることは、純粋な喜びなのです。
私の授業に出ている小学5年生のRくんは、紙と鉛筆の算数のときは、問題を解くのがクラスで一番遅く、まわりのみんなが彼を助けていました。ところが、今年から始まったWolfram Cloudの授業では、なんと、Rくんが一番先に問題を解いてしまうのです。そして、うまくいかない他の生徒に「コマンドとシフトとイコールを一緒に押したらうまくいくよ」などと、操作方法を教えてくれるのです。
完全に立場が逆転しました。クラスのお荷物(失礼!)的存在だったRくんは、いまでは、数学の「天才」として他の生徒たちから一目置かれるようになりました。
Rくんの数学の才能は、紙と鉛筆という道具では引き出すことができませんでしたが、Wolfram Cloudという魔法の道具を与えられたことにより、Rくんの才能が一気に開花したのです。
この連載で繰り返し述べていることですが、第四次産業革命の時代において、絶対になくならないのは「計算」にかかわる仕事です。そして、本当に「計算」で生計を立てるためには、高度な数学技能をプログラムで表現するスキルが必須です。昔はいざ知らず、これからは、紙と鉛筆ではなく、数学プログラミング言語で育った子どもたちが、世界を動かすようになるのです。
円周率を計算してみよう!
実は、計算精度という面ではあまりよくないのですが、教育効果が抜群なので、先月、私がZoom授業で子どもたちとやったプログラムをご紹介しましょう。円周率πをシミュレートするプログラムです。
アイディアは単純です。まず、一辺が2の正方形を考えます。それに内接する円を考えます。この正方形の中にランダムに点を打っていきます。何個でもいいのですが、数が多いほど、計算精度が上がります。
たとえば100回、点を打ったとしましょう。正方形の面積は2×2=4ですよね? では、円の面積はどうなるでしょう? 4より少ないことは明白ですが、このシミュレーションでは、100回のうちx回が円の内部にあったならば、円の面積は「4かけるx割る100」だ、ということになります。
なぜでしょう? これは簡単な比の計算なのです。
100回:正方形の面積=x回:円の面積
となるからです。仮にプログラムを走らせた結果、76回が円内にある点だったなら、円の面積は、
100回:4=76回:円の面積
から計算して、
円の面積=4×76÷100=3.04
となります。そう、これが計算シミュレーションによる「円周率」なのです!
まだ誤差が多いわけですが、ランダムな点の数を増やしていけば、答えはどんどん3.14……に近づきます。とても簡単なアイディアですが、このようなシミュレーションは(カジノで有名な地名から)「モンテカルロ法」と呼ばれており、素粒子の計算から経済学のシミュレーションまで、幅広く使われています。
参考までに、私が子どもたちに教材として与えたファイルを載せておきますね。
なお、このプログラムを(一緒に教えている物理学者の)田森佳秀先生が書くと、こうなります。
4 Count[Map[Norm,RandomReal[{-1, 1}, {100000, 2}]], _?(# <= 1 &)]/100000
同じ計算をするプログラムです。最初の長ったらしいプログラムが教育用であり、田森先生の1行のプログラムがプロ仕様ということです。子どもたちは、同じ計算が、たった1行のプログラムで表されることを知り、驚嘆の声を上げました。
Wolfram Languageで世界を変える準備をしよう
残念ながら、私の優秀な生徒が1名、中学受験の準備のために学校を去ることとなりました。せっかく、将来の成功をつかみ取るための最強の武器を学んでいたのに、いったん、旧態依然とした受験勉強をするため、公立学校と塾、という生活に戻らざるを得ないのです。
使い古された過去問を延々と解く作業と、Wolfram Languageで世界を変える準備をすることと、どちらが大事なのか……無事に中学に入り、ふたたび、数学プログラミングの世界に戻ってきてほしいと願いつつ、忸怩たる想いで送り出しました。
ちょっと愚痴が入ってしまいましたが、ぜひご家庭でも、Wolfram Languageを学んでほしいなと願っています。
この記事が気に入ったら「フォロー」&「いいね!」をクリック!バレッドプレス(VALED PRESS)の最新情報をお届けします!
毎週最新情報が届くメールマガジンの登録はこちらから!