別世界への扉

結城浩

2005年1月24日

何となく、思うことを書く。

私は「説明できないなら、理解していない」と思っている。 自分が理解していなければ、人に説明することはできない。 説明は、理解を前提とする。 それはプログラミングの話でも、文章の話でも、数学の話でも同じだ。 言い換えれば、自分が本当に理解しているかどうかを知りたかったら、 人に説明してみればよい。うまく人に説明できたら、自分も理解していることになる。 うまく人に説明できなかったら、理解していない可能性が高い。 読みやすい本を書こうとするときにも同じことが起こる。 自分が書いた本が読みにくかったら、それは自分の理解が足りないのだ。

(もちろん「人には説明できないけれど、自分としては理解している」という状況も考えられないではない。 でもそれを他人が検証することは難しい)

本を書くのは挑戦的だが楽しい作業だ。 それは自分の子供に何かを説明するのと似ている。 子供に何かを説明していると、思いがけない疑問を提示されることがある。 自分は、それに即答できるだろうか (少なくとも子供を納得させるだけの答えを返すことができるだろうか)。 うまく答えられるときもあれば、答えられないときもある。 自分としてはうまく答えたつもりなのだが、子供は納得しないときもある。 子供はその点において、よい話し相手になる。「わかったふり」をしないからだ。 良い編集者も同じかもしれない。「わかったふり」をせず、著者に 「ここは読みにくいです」と提示する役割。

子供が小学校で習ってくることでも、 改めて自分で説明しようと試みると難しい。 自分って本当にものを知らないのだと痛感する。

私は、自分で本を書いた範囲については一通り理解していると思っている。 つまり、C, CGI, Perl, Java, 暗号技術, Wikiなどに関してだ。 でも、それ以外のことはよくわからない。わからないことはたくさんある。 自分が「わかっているのかいないのか」がわからないこともたくさんある。

本を書き始めるときには「自分は、いま書こうとしている内容を理解している」と思っている。 でも、いざ実際に書いてみると「いや、ちがうな。私はよく理解していない」ということに気がつくことが多い。 説明が書けなかったり、書いても読みにくかったり、読み返して理解できなかったりするからだ。 そういう場合には、再度詳しく勉強する必要が出てくる。

何も書かれていない白い紙を机に広げる。 参考書も、コンピュータも机の上には置かない。 そして筆記用具を取り、説明の文章を書いてみる。 面倒だったら書かずに、説明の文章を声に出してみるだけでもよい。 大事なことは、頭の中で説明するのではなく、文字や音など「自分の外」に出すことだ。 ごまかさずに、よどみなく説明できるなら、よく理解しているといえるだろう。 つっかえったり、「たとえば」と言った後に言葉につまるようなら、本質を理解していないのだ。

いうまでもないけれど、自分をごまかすことはいつでもできる。 自分が理解しているふりをすることは簡単だ。 「これは当たり前のことだから説明不要」 といってしまえばよいからだ。

当たり前に感じることであっても、自分なりにきちんと説明しようと試みる。 その報酬は2つある。 1つは「自分は実は理解していないのだ」と気づくこと。 もう1つは「別世界への扉の発見」である。

別世界への扉?

自分が理解していないことを知り、改めて勉強する。 すると「当たり前だ」と思っていたときには通り過ぎていた場所に、 扉があることに気づく。 古ぼけた扉で、さびついていて、開きそうにない。 でも、引っ張ると、開く。こことは違う別世界がその先に広がっている。 それが「別世界への扉」だ。 開けるのはそれほど苦労はない。 必要なのはその扉の存在に気づくことなのだ。

私はそんな風に考えている。