差しだされるアンパン一片

天文学的数字の量の記事を殴り書きたい。

プログラミングは既得権益である

プログラミングは既得権益である

はじめに断っておくと、以下の内容はネット上での学習を想定している。

 

ここでいう既得権益とは、プログラミング初学者が、ヨチヨチ歩きが出来るようになるまでの壁の高さについてである。ヨチヨチ歩きについても補足すると、初学者がプログラミングにおいて実現したいことを、自ら調べながら実現できる状態のことである。もちろん他のスキルについても、同様のことが当てはまるとは思われるが、ことプログラミングに関してはその壁が非常に高い。たとえば、学びはじめてから、指定した時刻になったらアラームがなるという、シンプル極まりないデスクトップアプリケーションを作れるようになるまでに、初学者はいったい何度挫折するのであろう。また、何%の人たちが実際にアプリを作れるのだろうか。

問題は努力などではない

上述を読んで、それは努力が足りないだけと考える人がいるかもしれないが、問題はそこではない。何かを学ぼうとするとき、それ相応の努力が必要となるのは当然である。だがプログラミング学習はそもそも、努力することがままならない、という大問題を抱えている。現在の自分がどんな情報が必要で何をすべきか、ということが分からないという状況に陥りやすいのだ。たとえば、上記のアラームアプリをつくる場合を考えてみる。詳細なプロセスはどのプログラミング言語を使うかにもよるが、少なくてもデスクトップ上にウィンドウを表示しないことには始まらない。次に、現在時刻の取得も必須だ。さらに任意の時間を入力するためのコントロールも必要で、オブジェクト指向の言語なら、クラスという概念も必要になってくるだろう。つまり、一つのアプリをつくるには、複合的な知識が必要なのだ。もし、あなたがプログラムを書ける人間なら、上の文章はすらすら読めるに違いない。だが、あなたが初心者だとしたらどうだろうか。初心者は、クラスという言葉も知らなければ、コントロールという言葉も知らない。そんな状況で、初心者のあなたはどうやってそれらの言葉にたどり着くのだろうか。そう、ざっくり言ってしまえば、無理なのだ。

不親切な入門サイトたち

右も左もわからない初学者が、はじめに頼りにするのは入門サイトだ。「c# 入門」などと調べると、入門サイトそれ自体は多く出てくるが、内容はどれも似たり寄ったり。まず、IDEの導入の仕方からはじまり、int型やstring型、for文やif文、メソッドやクラスの説明が書かれている。そして、そこで終わりなのだ。それらの知識をいくら頭に叩き込んでも、目的のアプリケーションは作れない。作れるのはせいぜい、"hello,world"とコンソール上に表示させるコードくらいだろう。皮肉なことにこれらの入門サイトは、学んだことを復習するにはもってこいだが、入門するには不適切だ。多くの初学者たちは、入門サイトに対して「このサイトを読み進めれば、きっとプログラミングできるようになる」という期待を抱いてサイトを訪れるが、残念ながらその願いはかなわない。プログラマーが持っている知識が、次の世代に渡りにくい。以上が、プログラミング学習の壁が高いと考える理由である。まさに、既得権益だ。

プログラミングには複合的な知識が不可欠

簡単なアラームアプリ一つとっても、さまざまな要素がつまって出来ている。実用的なアプリをつくるには、コントロールの種類や使い方、標準ライブラリの種類や使い方、そもそものPCの仕組みを知らなければならないが、それらの知識同士をつなげるのは容易ではない。そして、それらの知識をつないでくれる入門サイトがない以上、多くのプログラミング初学者は、知識と知識の溝にハマってしまうのだ。

必要なのは体系的に学べる環境

以上の問題を解決する方法はいたって簡単だ。IDEの導入からアラームアプリを作るまでを解説すればいい。作るアプリはなんでもいいが、実際に具体的なデスクトップアプリケーションをつくるまでを解説すれば、必要な知識を包括的に学べる。人でもいい。というより、ベストはプログラミングできる人に教えてもらうことである。そうすれば、個別具体的な方法を明示してくれるであろう。プログラミング界隈は、下手に一般化をしすぎなのだ。実際のプログラミングは、一般化できるところは一般化するというのがセオリーだが、人に教えるという点に関していえば、必ずしもそうとは言えない。その具体例が、まさにこの問題だ。

さいごに...

こんな記事を書いた理由は、筆者自身がそのような経験をしたからだ。幸い、筆者の身近にはプログラミングができる人たちがいたので、学びたてのころは、よく教えてもらっていた。そのおかげで、今では自身で問題解決ができるほどにまで成長した。教えてくれる人がいなければ、きっと今もプログラミングなんてできなかっただろう。そんなことで筆者としては、近いうちに、『0から10まで学べるプログラミング入門』のようなサイトを開設したいところである。すこしでも、プログラミングの既得権益性をなくしていきたい、とおもう今日このごろ。