初めて Hello World と画面に表示させた時のこと

は覚えてないんだけれど、初めてじゃないタイミングなら思い出せるのがある。大学の実験でTCPサーバ実装したときとか。

俺には地獄がお似合い*1、という話は置いておいて。ある程度Unix Processに親しんだ状態だと、標準出力に文字列を出力できただけで「ああ、よし、これでもうなんでもできるぞ」という感覚が芽生えると思う。*2

一方で、初めてHello Worldとコンソールに出した時のことを思い出せないのは、自分が何をできるようになったのか理解してなかったからなんだと思う。

たぶん、「ふーん、数行なんだかよくわからないテキストを打ち込んで、コマンドを実行したらテキストが出たけど、これならecho Hello, Worldでいいんじゃないの?」とか「で、この文字はどうやってコンソールに出たんだろう(このprintf()ってのは何をしてるのかな?」とか、そんな気持ちになってたんじゃないだろうか。

初学者にHello Worldをさせたって、ゴールが見えない状況でただ一歩前に進めさせられるようなもので、我々が感じるような感動はない。そうは言っても、Androidアプリを作りたいと思っている人に対して、「じゃあまずはUnix Processから勉強していきましょう」と言っても大体は続かないと思う。

反面、普段の仕事や生活の中で「これってなんの意味があるんだろう」と思うこでも、背景知識を持った時に理解できるようになるものがあると思う。自分にわからないから無意味なもの、というふうに考えるのはちょっと短絡的に過ぎる。

しかし人間自分の知らないことについて想像力を働かせるのは大体困難なので、最終的に我々がとりうる態度は「わかってる人に聞く」「わからないものはわかるようになるまで、わからないものとして放っておく」ぐらいなんじゃないか。少なくとも、想像力で解決できる物事には限界がある。

先週コワーキングスペースに行ったところ隣の席でAndroidアプリ開発の家庭教師みたいなことをしている人たちがやってきて、初学者への手ほどきの様子を見ながら、こんなようなことを考えた。

*1:https://twitter.com/songmu/status/1236228443798298625

*2:Windows まじでわかんないのだけれど、まあめちゃくちゃ違うということはないであろう。