ツテあってHour of Codeの日本事業局、みんなのコードが主催する小学生1万人プログラミングの東京会場に行ってきた。
2020年から小学校で必修化する「プログラミング教育」について、主催者側ならびにIT関係エンジニアから話を聞けたので、少しまとめる。
プログラミングを習得してほしい訳ではない
参加した小学生の両親、主催者、協賛企業代表、会場を提供した日本マイクロソフト社の代表等々、全員が共通して答えたのは、「プログラミング技術を習得してほしい訳ではない」ということだ。
詳細な発言はここには書けないが、全員が共通する意識として「プログラムを書く人間と関わらない仕事はない」という未来像があるように思う。プログラミングと聞くとパソコンやスマートフォンのアプリを想像してしまいがちだが、この世のあらゆる製品は今やプログラムによって動いている。
IoTという考え方の登場で、ますますIT技術はその裾野を広げる。どんな業種であってもプログラムと無縁には生きられないというのが共通した意見だった。
以下に会場で聞いた話に加え、私見を交えて記す。
ITエンジニアと会話するスキル
身の回りを見渡して、電気で動く製品の9割は何らかのプログラムが制御している。そして誰もが一度は思ったことがあると思う。「この端末上で○○ができたらいいのに」と。
そうした思いが実現しつつある動きが本当に多い。
タイムカードや面倒な画面で出退勤を入力せず、パソコン画面上からラインスタンプを送信するだけで出退勤を管理できる。有給の申請もスタンプでできる。こうした技術はすでに現実のものになっている。
CMでも見たことがあるだろう。会社や部署単位で名刺情報を共有し、誰が誰とつながっているかを全体的に把握できる。営業部隊ではこうした協力プレーができるかできないかは命運を分けるかもしれない。
こうした開発は、プログラマーだけではできない。世の大抵のプログラマーは会議や営業といった業務が嫌いだし、そうした仕事の苦労がわからない。出退勤の入力が面倒なら自動で入力するプログラムを書けばいい、というのが彼らの感覚だ。
仕事を便利に、世の中を豊かにしたいと思った時、ITエンジニアたちの協力で簡単に実現することは多い。
このとき、ITエンジニアたちがどういった情報を求めているのか。彼らの会話の理由は何なのか。それがわからなければ、協力を求めることもできない。
将来の産業において、プログラム知識は前提となるという意見もあった。
何らかの専門技術とプログラム知識、両方を持って初めて通用するという。ありとあらゆる専門家はプログラムの知識を持ち、プログラムを作る人間と障害なく会話できる必要があるという。
少し暴言になるが、プログラムなんてのは書きたい人間に書かせておけばいいと思っている。ただし、書かせる側はプログラマーが必要な情報を必要な形で提供し、不要な作業を貴重な人員にさせない配慮が欲しい。
アイデアを生み出すのは誰か
では「○○できればいいのに」と発想できるのはどういう人か。これは私見だが、仕事に従事しているだけの人間にこうした発想は生まれないと思う。
もちろん、まったく発想がないとは言わない。必要は発明の母であり、世の不便を訴える声があるから製品ができる。
ただ、一方で「これは解決できるかもしれない」という感覚がなければ不便を訴える声もあがらない。
本当に多くの人間が、プログラムを効果的に使えば簡単に済むことを躍起になって手作業していることがある。あるいは、意思疎通が取れずに開発された使いにくいプログラムに振り回されている。
こうした不便、不満に対して「こうしてほしい」と声をあげるためには、まずプログラムに何ができるのかを知る必要がある。
「プログラムのできること」の感覚が変わる
プログラムは今、さらなる変革の兆しを見せている。機械学習が本格的に産業利用されている。
個人的に、プログラミング手法は手続き型、関数型、オブジェクト型と変化してきたと感じている。経験的に、オブジェクト型への変化は知識や理解という面において教えるのが難しかったと感じているが、一方で「別に関数型でも同じような動きをするプログラム開発は不可能じゃない」という意見も持っていた。
つまり、ITエンジニアに依頼する立場が理解するべき「プログラムでできること」のイメージ像はさして変化しないという意味では、一般的に求められいたプログラム知識は大して変わらないように思う。(実際にはオブジェクト型を使わなければ現実的でない技術も多いとは思うが)
ところがる機械学習は、従来の手法ではまず不可能といっていいかもしれない。そもそも、従来の手法は究極的には人間がどうやったら実現できるかを最初から最後まで考えている。ところが機械学習は人間が考えることを放棄した。私自身、機械学習についてはほとんど知識がないため間違っているかもしれないが、そのように感じている。
「これだけの事象からデータを収集し、良い結果を効率よく叩きだす方法は”たぶん”ある」と思えば、あとは情報収集部分と結果の良し悪しを判定する部分を作り、”たぶん”の中身をプログラム自身が探していく。
こうした手法で実現できる新しい便利な”何か”は、従来の「プログラムのできること」から大きく感覚の異なることのように思う。
また、機械学習は同時に「機械学習には向かない」といった事象も出てくるように思う。(たとえばデータ点数が極めて少ない事例)
こうした意識の変革に付いていく良い学習方法はわからない。ただ確実に言えることは、理解できていなければプログラムは書けないということだ。
興味深い意見
少し興味深い意見もあった。「小学校で必修化すれば、大人も学んでくれると思う」という意見だ。
もちろん、小学生にプログラミング学習する機会を与えることも大事だが、社会全体に対して”IT知識不足”を意識して欲しいという。
確かに、これは効果的かもしれない。少なくとも先生はプログラミングを勉強しなければいけない。おそらく、親も多少は興味を持つだろう。
こうした動きが社会全体の機運につながるかもしれない。