計算論的思考, 10年後 Computational Thinking, 10 Years Later

〔学習用翻訳〕

Jeannette Wing
2016年3月23日

原文:https://cacm.acm.org/blogs/blog-cacm/201241-computational-thinking-10-years-later/fulltext


「生きてるうちはないでしょう」

K-12でコンピュータ科学が教えられるのはいつになるかを問われたとき,そう答えていました。2009年,国立アカデミー主催の計算論的思考ワークショップの参加者の集まりに向けて講演していたときです。

いまは「私が間違っていました」と喜んで認めましょう。

私が「計算論的思考」という3頁ほどのViewpointコラム原稿をthe Communication to the ACM誌2006年3月号で書いてから10年になります。この機会に,私たちがどこまで来たかを振り返ってみたいと思います。

2005年を思い出してみましょう。ドットコムバブル崩壊後,コンピュータ科学への学部課程入学者が急激かつ一方的に減少し,終わりが見えませんでした。コンピュータ科学コミュニティは手に汗にぎり,キャンパスにおける学部組織生き残りに気をもんでいたのです。そんな多くの同僚と違って,私が見ていたのはコンピュータ科学のバラ色の未来でした。コンピューティングがあらゆるところに浸透すると見ていたのです。

私は計算論の概念と方法そして道具の活用によって,あらゆる学問分野と専門領域,セクターにおける大きなやり方が転換されると論じました。計算的な効果を利用できる能力を持っている人は,そうでない人よりも,大変有利です。なので,コンピュータ科学コミュニティにとって,コンピュータ科学者がどう考えるのかを将来世代に伝えていくとてもよい機会だと私には思えたのです。それで「コンピュテーショナル・シンキング(計算論的思考)」と相成ったわけです。

計算論的思考が,21世紀中盤の世界であらゆる人にとっての基礎スキルとなる,というビジョンにまで到達したことに私自身が驚きと歓喜を感じていることを認めざるを得ません。

科学的方法の第3の支柱

科学と工学の分野で,計算(computation)が,理論(theory)と実験(experimentation)とならぶ第3の科学的方法の支柱であると私は認識していました。なにしろコンピュータはすでに巨大で複雑な物理的自然システムのシミュレーションに用いられていましたし,遅かれ早かれ,科学者とエンジニアであればどんな分野においてもアルゴリズムとデータ型,そして状態機械といった計算論的抽象化のパワーを認識するようになるでしょうから。

今日では,膨大な量のデータの到来とともに,芸術や人文,社会科学を含むあらゆる分野の研究者が計算論的手段と道具を使って新たな知見を発見し続けています。

過去10年,世界中の100近いカレッジや大学に訪問し,大学学部段階における変革を目の当たりにしました。いまやコンピュータ科学専攻ではない学生にもコンピュータ科学コースが提供されています。そうしたコースはコンピュータプログラミングのコースではなく,むしろコンピュータ科学の核心に焦点を当てたものといえます。ハーバード大学に至っては,このコース(CS50)が大学内はもちろん,ライバル校イェール大学を含めて最も人気のあるコースの一つなのです。そしてコンピュータ科学への入学者は,まさにうなぎ登りです。

おそらく最も驚くべきかつ誇らしい結果は,K-12段階で起こったことでしょう。第一は,英国の草の根運動である「Computing At School」が,2014年9月にK-12学校での「Computing」必修化を教育省が指示することに繋がったことです。国家カリキュラムの法的ガイドラインには「質の高いコンピューティング教育によって児童生徒が世界を理解し変えていくための計算論的思考と創造力を身に付けさせる」とあります。

さらに,BBCは,Microsoftを始めとした企業とともに,BBC micro:bitの設計と配布を予算化しました。百万台ものプログラミング可能な小さなデバイスを英国すべての11-12歳(7年生)に一つずつ無償配布するのは今月(2016年3月)とされています。Microsoftリサーチはデバイスの設計とテストに貢献し,MSR Labs Touch DevelopチームはBBC micro:bitのためのプログラミング言語と環境と,指導用教材も提供しました。

第二は,code.orgという非営利組織が2013年にスタートしており,すべての人々がコンピュータ科学教育を受けられるようにするという使命に向けて専念していることです。Microsoftや他に何百もの企業や組織がパートナー,スポンサーとしてcode.orgの活動を支援しています。

第三は,K-12段階でコンピュータ科学を指導することへの関心の高まりが世界的であることです。オーストラリア,イスラエル,シンガポール,そして韓国での努力を私は聞いていますし,中国も近いうちに推進されるそうです。

すべての人々にコンピュータ科学を

私にとって最も喜ばしいのは,バラク・オバマ大統領の宣誓によって,米国の学校におけるコンピュータ科学教育に40億ドルもの資金が提供されることです。これは2016年1月30日に発表されたComputer Science for Allイニシアティブの一環としてです。このイニシアティブには,国立科学財団(NSF)からの1億2000万ドルも含まれており,9000人以上の先生たちをコンピュータ科学が教えられるようにしたり,計算論的思考をカリキュラムに盛り込めるように研修するため用いられます。このようなすべての生徒がコンピュータ科学を学ぶという取り組みは,コンピューティングスキルをもった労働人材の引き合いがあることが一因なのですが,単に情報技術分野だけでなくあらゆる分野においてそうであるということです。Microsoftでもこのことを見ることができます。私たちのエンタープライズ顧客も自動車業界,製造業界と医薬業界などすべての分野からコンピュータの専門知識が必要だとしてMicrosoftにやって来ているのです。

それでも実際的な課題や研究の機会は残っています。もっとも実際的な課題は,K-12の児童生徒にコンピュータ科学を教えられる先生が十分いないということです。とはいえ私は時間が経てば問題は解決するだろうと楽観しています。

また興味深い研究課題として,これについてコンピュータ科学者と認知・学習科学のコミュニティが協働した方がいいと思いますが,第一に,コンピュータ科学のどんな概念をいつどのように教えるべきかというものがあります。

数学にあてはめて考えてみましょう。私たちは5歳に数字を,12歳に代数を,18歳に微積分を教えています。何かしら数学における教える概念の進歩過程を見つけ出したわけです。そこでは,新しい概念を学ぶことは,先行概念の理解の上に成り立っており,そして進歩とは,個々の成長として子供たちの数学的素養の進歩を反映したものといえます。

では,コンピュータ科学の進歩とは何か?たとえば,再起(recursion)を教えるのはいつが最良なのでしょうか。子供達がハノイの塔パズル(最小n)を解くのを学び,歴史の授業では戦いに勝つ戦略として「分断と征服」を教えているのに,一般概念は高等学校で教えるのがよいのでしょうか。私たちは割り算の筆算を9歳児に4年生で教えていますが,決して「アルゴリズム」とは口にしないわけです。けれどもそこで教えられている割り算の筆算は明らかにアルゴリズムなのです。では,アルゴリズムという一般概念を4年生に教えることは早過ぎることなのでしょうか。さらに深堀りすれば,コンピューティングに関わる概念で,本質的かつ形式的にでも学習する必要のないものはあるのでしょうか。

第二は,コンピューティング技術を教室でどのように利用するのが最良かを理解する必要があるということです。教室からコンピュータを投げ出してしまうのは,コンピュータ科学の概念を教えるのに最良であるとはいえません。どうすれば技術を使って学習を推し進め,コンピュータ科学の概念を理解してもらうことを強化できるのでしょうか。技術をどのように用いれば,進歩と学習成果,時間経過後の定着を測定することができるのでしょうか。そして,学習ペースが異なり認知能力も異なる個々の学習者のために学習を個別化するためにどのように技術が使えるのでしょうか。

この10年,すべてのフィールドの研究や教育に計算論的思考を浸透させることに関して大きな進歩がありました。私たちはまだ道半ばではあるものの,幸いにして,計算論的思考を一般的なものにするというビジョンの具現化に向けて,産官学が足並みを揃えているのです。

Jeannette M. Wing氏はMicrosoftリサーチ部門の副社長(当時)。