プログラミングとは生態系を作り出す過程

近年、プログラミングは日本でも小学校教育において導入され、ますます注目を浴びている分野です。 私の周辺でも今までプログラミングに関わってこなかったような人たちが、プログラミングを始めるためにプログラミング教室やプログラミングスクールに通い出したり、本やネットで独学を始めたりしています。日本では特にプログラミングとはプログラムを書く能力だけを指しているように感じられます。実際にプログラミングに携わるとプログラミングはそのプログラムを中心とした生態系を作り出す過程そのものだと感じると思います。

Learn program

日本におけるプログラミング教育について

日本では 2020 年度から小学校でのプログラミング教育が全面的に実施となりました。 この導入の背景として、以下のような不安があると「小学校プログラミング教育の概要」では述べられています。

学習指導要領の改訂の方向性について審議した中央教育審議会の答申では、情報化やグローバル化により社会が大きく変化していくとしています。特に情報化については、人工知能 AI などの技術革新に関連して、将来、今ある仕事の半数近くが自動化されるという予測などがあります。このような急激に変化する社会では、「今、学校で教えていることが通用しなくなる」「人間の職業が AI に奪われる」という不安の声があります。

今回の学習指導要領の改訂は、予測できない変化を受け身で捉えるのではなく、前向きに受け止め、主体的に向き合い・関わり合い、自らの可能性を発揮し、よりよい社会と幸福な人生の創り手となるための力を子どもたちに育む学校教育の実現を目指す、ということで進められています。

小学校プログラミング教育の概要(PDF)より

そしてプログラミング教育を導入することによって、その不安を解消し、次のようになると想定されています。

コンピュータを理解し上手に活用していく力を身に着けることは あらゆる活動においてコンピュータ等を活用することが求められるこれからの社会を生きていく子供たちにとって将来どのような職業に就くとしても、極めて重要

世界中でパソコンやアプリを使わないことの方が多くなりました。コンビニエンスストアに行っても、本屋に行っても、タクシーに乗っても、会社に行っても何らかのアプリケーションを利用しますし、日常生活でもスマートフォンは必須のアイテムになっています。それを使うだけでなく、創り手としての能力も育てようというのは理にかなっています。

では実際の教育内容はどうなのでしょうか? 1つの資料を見てみましょう。そのほかの資料はこちらにもあります。

正多角形をプログラムを使ってかく(PDF)

この資料を見ると、命令をつなげて、結果がどのようになるのかを確認することが主眼となっているようです。まさにプログラムをどうやって書いていくのかということを簡単に理解することができます。このようなことを繰り返すだけでプログラミングを理解できたことになるのでしょうか?一部はもちろん理解できます。しかしながら、それは表面的にすぎるものです。

プログラミングとは生態系を作り出す過程そのもの

プログラミングは実行できるコンピュータプログラムを作成する一連のプロセスのことです。たとえば受信したメールの内容を Excel ファイルに自動的に追記させたいと思ったとします。業務として自分自身で毎日まとめているけれども、それに嫌気がさしたということでしょう。特に日本の会社にいるとこのようなことをよく聞くものです。この課題に対して、プログラミングという方法で解決しようとした瞬間から、プログラミング というものは始まっています。

まずは現状の分析です。今、その業務を誰がどうやって行っているのか。具体的には、メールを受け取っているサービスは Gmail なのか Office365 なのか、どの宛先からのメールを受け取りたいのか、Excel ファイルはファイルサーバかローカルのどちらに置いているのか、リアルタイムか1日1回だけでいいのか。意外とこの段階が疎かになってしまっている人も多いと思います。

次にそのプログラムがどのように実行されるのかを検討します。単に自分自身のローカルで動くジョブとして動けばいいのか、それとも Web アプリケーションやモバイルアプリとして複数人で利用できるようにするのか、はたまた1日1回集計された Excel をメールで送るプログラムをクラウドサービスを使って実現すればいいのか。これらを検討し、優先順位を決めます。

検討した方法を実現する具体的な方法を考えます。この時点である程度動くプロトタイプを作成することがおすすめです。なぜなら方法によってはプログラムを作成するコストや難易度が恐ろしく高かったり、使ってみたイメージが当初イメージしたものとかけ離れているということが早い段階で把握できるからです。さて、0からプログラムを全て自作してもいいですし、世に出ているサービスを組み合わせてもいいです。もしかしたらある1つのサービスを利用するだけで解決できるかもしれませんし、AWS(Amazon Web Services)のようなプラットフォームで提供されているサービスを組み合わせることで解決できるかもしれません。どの方法を取るのかの判断基準は、コスト・機能・運用の3点が大事です。

  • コスト:その仕組みを作るのにかかる時間および金額と運用コストも含みます。
  • 機能:どれだけの機能を実現できるのか、将来的に発生しうる要望に対してどの程度柔軟に対応できるのか。
  • 運用:リリースした後運用は滞りなくできるのか。運用は運用者も方法も変わります。作った人よりも長く使われる可能性もありますし、そもそもリリースしても日の目を見ないことすらあります。作ることは目的ではなく、運用することが目的です。

Grow program

実現方法が決まれば、その仕組みを作って、テストをします。自分1人だけであれば特に気にしなくてもいいですが、組織の場合は重要なキーパーソンに関わってもらうことが望ましいです。そうしないとその人の一言で一気にひっくり返ったりして、辛い思いをするかもしれません。

最後にリリースと運用です。特にリリースした直後はよくよく動作の確認をしましょう。そして安定的に運用されるようにバグの修正や機能の改善などを行っていきます。

これがプログラミングの一連の過程になります。 この過程の中にプログラミング言語だけではなくて、それに関わる人たちや他のシステム、そして予算などお金の事情も垣間見えました。プログラミングはただ無機質なコードではなく、生み出されたプログラムと関係し合う生態系を作り出し、それを維持または発展していくことです。特には古くなった部分を適切に除去または置き換えることもします。そうやって1つの生態系を維持していくのです。

大事なことは生態系全体を見ること

プログラミングをただプログラム言語を扱って、プログラムを書く能力だと認識しているだけだと、なかなか大きな生態系を築くことはできないでしょう。

日本ではプログラミングをある特定の分野だと理解されているように思われます。 よくあるのは業務改善をするためにシステムを導入しようとした場合、ベンダーに丸投げをしてしまうということです。ある業務に対してシステムを入れるということは、今までのシステム(コンピュータ化されていない手作業の連続の場合もあります)から新しいシステムに移ることです。生態系が変わることです。それなのにそこに関わる人たち(ステークホルダー)が関心を示さず、忙しいからと協力もしなければ、はっきり言ってしまえばゴミができてしまう可能性もあります。ゴミなので早晩その生態系からは取り除かれるでしょう。

しかしプログラミングとは生態系に関わるものだとその中にいる全員が分かっていれば、そのシステムの入れ替えはもっとスムーズに進むでしょう。 その結果、その会社ではIT化(デジタルトランスフォーメーション)は大きく前進する可能性があります。

初めてプログラミングを学ぶ小学生がまず学んでほしいのはプログラムを書くことではなく、様々なステークホルダーがいて、それぞれがその生態系に関わっているという事実です。そうすれば、プログラマーにならなくとも、社長として、マネージャーとして、一般社員として、先生として、学生として彼ら・彼女らの生態系の中にプログラミングというものが存在し、それぞれが関わっているということを自覚できるのです。それが広くは社会の発展に続くのではないでしょうか。

プログラムを書く能力の不都合な事実

忘れてはならないのは60%の人はプログラムを書く素質がないという論文があることです。フタコブラクダの理論とも呼ばれています。

The camel has two humps (working title)

詳しい内容は論文に譲りますが、教える人も教わる人も人間なので、プログラミング教育を取り入れた場合、ただでさえ60%が理解できない可能性がある中で、60%のプログラムを理解できない先生が子供に教えるという冗談のような状況が発生します。そもそも導入した目的の全くの逆効果になる恐れがあります。

義務教育の期間は、総合的な学習、特に言語、数字、論理などを中心に教えるほうが大事になります。プログラムを書く以外にも大切なことはたくさんあります。そういった全体像を鳥瞰できる能力を涵養することに注力したほうがよいと思います。

まとめ

プログラミングとは生態系を作ることであり、多くの人やものがそれに関わっています。電気も来ないような場所に住まない限り、私たち全員は様々なプログラミングが生み出す生態系の一部に入っているのです。

Updated at: Thu Jun 25 2020

© 2020-presentTerms|Privacy