Ruby:p

 もしも今プログラミング言語を1つ学ぶならPythonがいいなと思っているのだけど、ちょっと理由があってRubyの勉強を始めた。
 僕のプログラミング経験は非常に限られていて、今までに触れた言語はCとFortranのみだ。それもCは大学に入った頃、20年近く前に少しやっただけで、大学院時代に使っていたFortranも数値計算の為にルンゲクッタ法で積分したりとか、数値計算の為のプログラムしか書いていない。さらに言うとFortranは77を使っていたのでコードを書く時に左から6つスペースを開けるという化石みたいなことをしていた。
 最近もArduinoを少し触ったりはしたけれど、拾ったコードを改造したくらいで大したことはしていないので別に何かを学んだりはしなかった。
 だから、プログラミングというものに向き合おうと思ったのはものすごく久しぶりで、オーバーな表現をすると今回のRubyでプログラミングの進化を20年分一気に味わった気がする。変なことを言っているのは分かっていて、Rubyはそれこそ僕が大学に入るより前の1995年に発表されているから新しい言語でもなんでもない。はじめて取り組むオブジェクト指向に圧倒されているだけなのかもしれない。なんだか良くわからないのだけど、Rubyが便利で驚いている。
 
 僕が大学に入学にしたのは1998年で、大学へ入ると同時に生まれて初めてのPCを買ってもらった。OSはWindows95でCPUはペンティアム1だったと思う。メモリは頭に浮かぶ数字がそんなわけないだろというくらいに低いもので32メガだった気がする。そんなわけ無いですよね?そんなだったのだろうか。大学の情報センターに並んでいる端末は全部UNIXだったし、ブラウザはネットスケープだった。今から思えば信じられない話だけど、ネットをするために「席が空いてるかな」と情報センターに入って行って、運良く空いていればログインして稚拙なサイトを眺めていた。グーグルなんてまだ存在していなくて、Yahooを「ヤッホー」と読むのだと信じている人がそれなりの数いた。
 入学したのは電子情報工学科だった。
 電子情報工学は今でこそアートやデザインと一緒になったりして、それなりに華やかだけど、僕が入学した当時はほとんど全員が男で、それもオシャレとはあまり縁のなさそうな学生ばかりだった。デザイン系の学科にいた女の子の友達に「電子情報ってオタクみたいな人と、せいぜい頑張ってもホストみたいな人しかいないね」と鼻で笑われていた。
 プログラミングの授業は当時それなりに活躍していた情報理論の教授が受け持っていて「パソコンの使い方とかそんなことはここでは教えないから、君らそれは勝手になんとかして、ここ大学だから、パソコンの使い方みたいな低レベルなことは町のパソコン教室でも行ってやってきて」というような感じでCを教わった。当時はまだキーボードすら満足に打てなくて、大学院生のTAが助けてくれるときにカタカタカタっとキーを叩くのがカッコよく見えた。そんな時代だった。誰か友達の部屋に集まってプログラミングの課題をやっていたとしても、全員のラップトップがオフラインだった。ネットはまだ遠かった。大学の図書館など数カ所にある情報コンセントと呼ばれていたソケットにLANケーブルを繋いでようやくネットが可能だった。どこか外でどうしてもネットに繋ぎたいときは公衆電話からプロバイダに電話を掛けて接続していた。まだホリエモンが買う前だと思うけれど、ライブドアは広告が出るのを気にしなければ無料でアクセスできるプロバイダで便利だった。
 思い出しついでに書くと、入学試験前、僕はどこの大学へ行くかを結構慎重に調べていて、大学のシラバスを貰ったりネットカフェで大学のサイトを覗いたりしていた。大学へ入る前のことなのでパソコンを触ったこともネットを触ったこともなかったはずで、ネットなしにどうやってネットカフェを見つけたのかは分からない(たしか京都西院のツタヤの隣にあった)。知らない人は絶対にものすごく驚愕すると思うけれど、当時のネットカフェには大きな電話帳みたいなものが何冊も置いてあった。その電話帳には電話番号の代わりにURLが載っている。もしも京都大学のサイトを見たいと思ったら、その電話帳みたいな本を引っ張り出してきて、「あいうえお、かき」>「きょうとだいがく」という感じで紙をめくって辞書を引くようにURLを探し出し、それをブラウザに打ち込むというわけだ。先程も書いたようにグーグルなんてまだなかった。グーグルが創業したのは1998年の夏、つまり僕が大学1年だった夏だ。Yahooはあったけれど、検索というよりはツリーを辿ってカテゴリから何かを見つけるという色合いが強かったのではないかと思うし、そもそも登録されているサイトが少なかった。
 
 さて90年代の終わりから2016年に話を戻そう。
 誰の手にもスマートフォンがあって、LTEがいつも繋がっていて、そこらじゅうをWi-Fiが飛んでいて、グーグルはバリバリと何でも探し出してくれる。これはもちろんとてつもない進化だ。
 ところが、さっき進化を味わっている気がするとかいたプログラミングだけど、コードを書くということに関してはどれくらいの進化があったのだろうか。
 コードを書くことには、思考を記号として並べるような心地よさと、キーボードからあらゆるものを生み出すような心地良さがある。だけど、やっていることはとても古臭い。たとえばウェブプログラミングはもう「こういう構成で、ここのウィンドウにはユーザの検索結果が出る」みたいな感じで、画像と、普通の日本語や英語でできても良いはずだ。実際にそれに近いサービスは存在するけれど、まだ全然普及していない。
 これはとても古臭いと思うし、10年後のウェブサービス構築者がコードをカリカリと書いているとは思えない。分野によってはコードを書くことが残るだろうけれど、多くの「一般的な」ジャンルではコードを書くことはなくなって、ビジュアルと自然言語での構築が普通になるはずだ。プログラミング言語は、今の僕達にとってのマシン語みたいな扱いになって、存在はエンジニアの教養として知っておく必要があるものの、実務では使われないものになる。
 
 だから、学ぶことを勿論全然否定しないけれど、プログラミングに関しては今の一部のSTEM教育の読みは外れると思う。一部のというのは具体的には、プログラミングを子供にやらせておけば将来稼げるだろうという目論見のことだ。コードを書くという行為は「ネジを締める」みたいな作業と同じものになる。
 プログラミングを知っていることは、知らないことよりは良いけれど、それがクリティカルな問題になるかというとそうではない。料理のことも知らないよりは知っている方がいいし、古式泳法も知らないよりは知っている方がいいし、というのと同じようなことになると思う。好きならすればいいけれど、そうでなければやっても仕方ないということだ。
 
 プログラマにならなくても論理的に考える力が養われる云々は、数学が思考力を養う云々に似ていてきな臭い。
 宿題の内容は役に立たなくても、宿題を我慢してやることで忍耐が身に付くみたいな詭弁だ。
 流行っているデザインシンキングとか、考え方の方法論には色々なものがあって、考えるということを考えることはきっと大事なことだとは思うけれど、何かのメソッドにしたりすると幅が狭くなるのではないかと思う。足場を組む方法はいろいろあって、足場を組むことでより高くより遠くへ行ける可能性は増えるけれど、どの足場をどうやって組むのかという地面の部分はメソッドの外側にある。そのあたりの方法論でカバーできない領域がまさに今人工知能に求められていることで、アルゴリズムでは書けなかったから人工知能という一種のブラックボックスに頼っているのだ。人工知能だってコードで書かれているじゃないかというふうに言われるかもしれないが、始点がそうであっても学習させた後の入出力関係はブラックボックスになっていて人が論理立てて説明できるものではない。人工知能の”ヒラメキ”は論理的に考えても分からない。
 願望は願望にすぎないが、1人の人間として、人間のヒラメキや思考も論理的に考えても分からない、幾分非科学的な、ロジックを超越したものであって欲しいと思う。条件分岐とループ如きで育まれる程度のものであってほしくないし、もっと言えば自由闊達にしていてわけがわからないまま自在に育まれるものであってほしい。