高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

世の中にはプログラミング的思考を学べる場所がもっと必要

以前にも書いたとおり、先日から、プログラミング講習のお手伝いをちょこちょこ行っています。メソッドの流れとかの基本的なところから、オブジェクト指向のメリット・その使い方などの概念まで幅広く実施。内容が濃いだけあって結構ついていけてない人も多く、質問があったら順次対応しているところ。


さて、そんなことをやっていて思ったのですが、日本にはプログラミング的な思考を学べる場所が、学校以外にもっと必要なのではないか ということ。


今回自分が教えている人たちは絵に描いたような文系の人も多く、プログラミングというもののイメージが全くつかめない という人も多かった。プログラミングというのは特に「原則を把握するまで」がとても大変で、あとは関連技術に疎くてもある程度のところまではできるものだと思います。

実際個々の言語の使い方とか、特殊なモジュールの使い方とかを覚えるより、メソッドを呼んだら(一般的には)どう動くかとか、オブジェクト指向の概念とは何かを覚える方がよほど大変。
その後は案外それの応用だけですし、オブジェクト指向がしっかりできてるプロジェクトであれば、本質を理解できてなくてもプログラミングは出来るんじゃないかな と思います*1


こういう人たちに、プログラミングの概念を理解してもらうのには、結構時間がかかる。動かせる教材だとか、物理的に触れるもの、見えるもので提示していかないと、なかなか理解はできない。プログラミングの素養自体は案外文系・理系関係ないものですし*2、その先プログラミングというものへの才能が開花するかもしれないのに、このままで終わってしまうのは、とても勿体ない。

そういう人にプログラミングを学ばせられる場所が、現状ないんですよね。最近は学校教育でもプログラミングを扱うことがあるようですが、まだまだ講師がたりないという話も聞くし、そもそもその授業を受けてこなかった人のうち、実はプログラミングが必要 という人もいる。そういう人はプログラミングから距離を置くか、ひたすら自習するしかない。それでは最初から自習するほどの情熱があるか、もとからセンスがある人しかプログラミングが出来ないということになってしまう。

プログラミングが必要な場所

今現在、なんらかの形でコンピューティングが必要な業種はとても多い。小売業や卸売業なんかは帳簿の管理にExcelくらいは使えると便利でしょうし、農業だって仕入れや出荷の関係でコンピューティングを使っているところはあると聞きます。保育福祉関係だって、周辺の関連団体との連携が必要でしょうしインターネットを使った情報のやりとりくらいは必要でしょう。

むしろ(現状使ってないというだけでなく)コンピューティングが不要 という業種はほぼ皆無なのではないか?と思います。

コンピューティングが必要な分野では、必然的にプログラミングの感覚も必要になるのではないかと思います。

プログラミング自体は必要ない分野でも、日々の業務を効率化するために、VBA程度の簡単なプログラミングや、Excelの数式を組み合わせる知識くらいは必要だと思う*3

そしてなにより、プログラミングが分からないと、プログラマにただしく要望を伝えることも出来ない。プログラマにしっかりわかるとおりにやりたいことを伝えることや、プログラムをより業務に最適化させるための要望をするためにも、プログラミングの知識がある程度必要なんじゃないかな と。


そういう「プログラミングについて学ぶ機会はなかったけど、プログラミングについて知って損はない」という人に、プログラミングを教えられる場所がない。結果、なにかの途中でふとプログラミングの必要性に気づいたりしても、学びようがないということなんだな と、講師をやっていて感じました。本を読んで自習しろ というのは簡単ですが、(数百円の文庫本くらいしか読んだことのない)初学者に3000円前後の本を薦めるのはさすがにどうかと思いますし、そもそも本を選ぶ時点である程度の理解が必要になってしまいますから。

そのほかにもある、大人にプログラミングを教える理由

大人にプログラミングを教えるべき理由は、他にもあります。

子どもがプログラミングしやすい環境を作れるのは大人

まず一つは、子どもがプログラミングをする環境を作れるのは、結局大人であるということ。子ども向けプログラミングワークショップが増えたり、学校教育でプログラミングに関わる機会が増えたりしても、結局親や地域の人など大人が理解者にならなければそれ以上には成長できません。
結局、子どもが才能を開花する環境作りは、大人がしてやらないといけないのだと思います。

「分からない人にも分かる」コンピュータを作る

現状表舞台に名の上がるようなプログラマは、経験も知識も豊富で、ある程度のことは独力でできるような人ばかり。
そういう人ばかりがアプリケーションを作る環境では、どうしてもそういう人向けのものばかりが増えてしまいます。
地域向けだとか、コンピュータに詳しくない人でも分かるアプリケーションを作るには、専門家でない大人がプログラミングをする必要があるのではないかと思います。

子どもがプログラミングの技術を身につけても、当面意思決定権は今の大人にある

たとえ子どもたちがプログラミングの技術を身につけたとして、そういった会社の意思決定権はまだまだ当分は今の大人世代ものです(もちろんそうでない会社があることも理解していますが、そんな会社は決して多くありません)。
現状プログラミングに知識のない上司がプログラミングについて的外れな指摘をする という例をたまに聞きますが、そういう状況は大人にプログラミングを知ってもらわない限り変わりません。

自分たちが、プログラミング・コンピューターに関わるネガティブなイメージを知る

最後におしえる側も、おしえることを通して、プログラミングや、コンピューターに関するネガティブなイメージをリアルに知ることが出来ます。

情報が展開されてないことによるデメリット

プログラミングでもなんでもそうですが、正しいやり方が展開されていなかったり、展開されていてもほとんどの人が理解できなかったりすると、その情報を理解できなかった人は、結局自己流でなんとかしようとしてしまう。結果それに関わる周りの人々にその自己流を押しつけてしまうことになる。
「技術者が情報展開を怠ったこと」により、結果的に技術者がイヤな目に遭う と言うことは多いのではないか と思います。プログラミングもそうですが、もうそろそろ技術情報をもっと多くの人に分かりやすい形で、展開しないといけないのかな と思います。


そのためにも、プログラミングを勉強できる、学校以外の場所が必要なんだろうなと思います。できるのであれば、大人も子どもも誰でも気軽に参加出来る場所に、参加出来る価格で。


プログラミングの講師を手伝っていて、そんなことを思いました。

*1:例えばネットワークの動作原理が完璧に理解できてなくても、HTTP関連クラスさえしっかりしていれば最低限のHTTP通信プログラムは書ける みたいな。もちろんネットワークの動作原理の理解は必要ですが、モジュールをこねこねしているうちに体感的に理解出来てれば十分。それがプログラミングだと思います

*2:どちらかというと文系で、数学が壊滅的に苦手だったわたしでも出来るのだから

*3:「論理的に思考する」という意味では、Excelの数式を組み合わせて使うということも、プログラミング的なセンスが必要なんだろうな と思います。プログラミング的センスがまったく0の人はSUM関数ですら苦戦するし、そうでない人は複数の関数を使ったセル操作なども案外あっさり出来たりする