tech
「読む」といったら一字一句──エンジニア・光成 滋生(2)
サイボウズ・ラボの西尾 泰和さんが「エンジニアの学び方」について探求していく連載の第19回(これまでの連載一覧)。サイボウズ・ラボの光成 滋生さんにお話を伺うシリーズ(2)です。
本連載は、「WEB+DB PRESS Vol.80」(2014年4月24日発売)に掲載された「エンジニアの学び方──効率的に知識を得て,成果に結び付ける」の続編です。(編集部)
光成さんは未踏ソフトウェア創造事業で楕円曲線上のペアリング暗号を開発し、天才プログラマー/スーパークリエータ認定を受けています。楕円曲線という言葉を聞いたことのある方は多いでしょうが、数学的にきちんと理解している人は少ないかと思います。今回は楕円曲線を糸口に、光成さんの数学の学び方を探求していきます。
光成さんが楕円曲線を理解したのは、どのタイミングだったんですか?
「理解した」なんて大層なことは言えないけど、勉強したのは大学の4回生くらい。
なぜ、それを学ぼうと思ったんですか?
数学の啓蒙書で「一番きれいなジャンルのひとつだ」と書いてあったから、ですかね。
きれいなジャンルっていうのは、整数論ということですか?
いや、違います。楕円曲線は「解析」っていう積分とかを使うジャンルと、「幾何」っていう位相空間とか多様体とかそういう図形の形を扱うジャンルと、「代数」っていう足し算、引き算の延長の世界が、1点で交わる概念なんです。逆に言えば楕円曲線はどのジャンルとも密接に関係している。
幾何と代数と解析がつながり合う、交通の要所みたいなところが楕円曲線だっていうこと?
そうですね、って言い切っちゃうと詳しい人に怒られるかもしれないですけど。そういう部分らしいと啓蒙書で読んで、知っておきたいと思って学んだ。
何か使おうという目的があったわけではなく、知りたいから学んだんですね。
そうです。
どう学ぶか?
なるほど。新しいものを学ぶとき、具体的な方法としてはどういうことをしていますか?
教科書を読む感じですね。
えっ、……教科書を……、読む……ですか?
それしかないですね。
そ、そうですか……。教科書を読んでいて「よく分からないな」と思うところが出てきて、心が折れそうになることはありました?
それはいくらでもある。
じゃあ、心折れそうな状況を解決するために、どういう行動をしましたか?
そういうときは考えるしかないですね。
考える……ですか。……ええと、何をどう考えるんです?
何で分からないのか。
うーん……じゃあ、具体的に僕がつまずいたことを例にあげましょう。光成さんの高校生向けの講義「新しい暗号技術」で「楕円曲線はトーラスと一致する」と紹介されているのを聞いて、僕はその理由が気になったのでWikipediaの説明を読んだのだけど、よく分からなかった。
ああ、それは、無理ですね。
無理ですか!
なぜ無理かというと、バックグラウンドの知識と、述べられてることのギャップが大きすぎるから。それはどうしようもない。
Wikipediaの解説文の書き方が、現時点で僕が持ってる知識では理解できない書き方になってる?
そうですね、届かない。
その問題を解決するには、僕は何をすれば良かったのでしょう?
それは難しいな。あまりそういうやり方ってしたことがないですね。数学の普通の教科書なら前提知識がゼロの状況から、いきなりそんなことを説明したりはしないのです。
なるほど。
どう学んだか?
光成さんが何かを学んだ過程を具体的に聞きたいです。
例えば「球の体積が4/3 πr3になることは積分を使えば分かる」と本に書いてあったら「積分ってなんだろう」って思うわけです。で、積分の解説が書いてある本を見る。見たら三角関数とかがいっぱい出てくるわけです。じゃ「今度は三角関数の本を読んでみよう」となる。そのうち「そもそも関数がよく分かんない」となって、関数の本を見て、というのを3年くらいかけて知りたいことにたどり着いたことありますけど、そういうのですかね?
それって、期待通りの挙動をしないプログラムの「悪さをしてる原因」がどこにあるのか犯人捜しをやっていくのと同じで、「積分で球の体積が求まる」を「自分が理解できていない」という問題の犯人はどこかを探していった感じですか?
そうですね。
本を読んで分からない単語、分からない概念をどんどんと掘り下げていくんですね。
戻っていってようやく、「あ、こうやって計算してできるんだ」と分かる。
このプロセスが「考える」ということですか?
いや、これは単に欲しい情報を探してるだけですね。
なるほど、これは情報を探してるだけで、「考える」というのは別のことだと。
数学科の「教科書を読む」訓練
そうですね、工学系と数学系の人の一番の違いは、1冊本を与えられて「ちゃんと読め」と言われたときにちゃんと読む訓練の量だと思うんです。
例えば「この本が教科書です」と先生に言われたとする。
そうですね。「読む」といったら、一字一句読むわけです。何か分からないなら進まない。セミナーに行くと「説明してください」と言われる。そこで「これはこうです、こう書いてます」って言うと、先生に「本当ですか」って言われるんです。「本当だと思います」と言ったら「じゃあ、示してください」と言われる。全部自分の言葉で説明できなければいけない。
という訓練を大学でさせられているということですか?
させられることが多いんですよね。「今日のセミナーは5時間やって1行しか進んでません」とかいうことが普通にあるわけです。それが2、3回続くとかだってあるはず。それに対しては先生は怒らない。分かってないのに分かるって言ったら怒る。プログラムのデバッグと一緒で「ここは絶対大丈夫」っていうのをちょびっとずつでも増やしていく感じ。
「自分が分かっている」と自信の持てるゾーンと、持ててないゾーンを明確に分ける、と。なるほど。それは「考える」とは別なんですか。
そのときは考えますよね、自分の境界を広げるときは。
今すでに持っている知識があって、与えられた知識が「分からない」ときに、それを「分かる」ようになるためには、持ってる材料で「考え」てたどり着くしかないということですか?
そうですね、増やす。何かの定理だったら、証明を読んで、まず写経しますよね。そして、1文ずつ「確かにそうだな」と確認する。そのときに「この条件がなかったら駄目なんだ」っていう反例を作るわけです。
例えば「3つの条件A、B、Cが満たされるならば、Xが成り立つ」って書いてあるときに「Aがなかったらなぜ成り立たなくなるのか」を「考える」?
はい。無くても成り立つんだったら、無くていいはずなんで、どこかに使ってるから書いてあるんですね。そのギャップを見る。優れた人は、反例を作るのが上手な人が多いですね。私は、あんまりできなかったけど。
正直なところ、新しいものを学ぶための具体的な方法論として「教科書を読むしかない」、読んでよく分からないときの対処として「考える」という回答には面食らいました。
よくよく聞いてみると、この「読む」という言葉は私がイメージしていたものよりも狭い意味で使われていることが分かりました。「『読む』といったら、一字一句読むわけです。何か分からないなら進まない」とのこと。
読むことや考えることに対する考え方が、私とは大きく違うのだなと痛感させられました。
ところで、この読み方は小崎さんが第6回で語っていた「分からなくてもとにかく読み進めることが大事」という主張とはまったく逆です。この違いはなぜ起こるのでしょう? 次回はここを掘り下げていきます。(つづく)
「これを知りたい!」や「これはどう思うか?」などのご質問、ご相談を受け付けています。筆者、または担当編集の風穴まで、お気軽にお寄せください。(編集部)
謝辞:
◎Web+DB Press編集部(技術評論社)のご厚意により、本連載のタイトルを「続・エンジニアの学び方」とさせていただきました。ありがとうございました。
変更履歴:
2014年12月22日:「球の体積が3/4 πr3になることは」で、球の体積を求める式が間違っていました。正しくは「4/3 πr3」です。編集部のチェックミスでした。お詫びして訂正いたします。
2014年12月12日:「幾何学」を「幾何」に変更しました。ご指摘いただき、ありがとうございました。
2014年12月11日:「『例えば3つの条件A、B、Cが……」の部分、カギ括弧の始まり位置を、「例えば『3つの条件A、B、Cが……」のように修正しました。
SNSシェア