役に立たないことを学ぶということ

ロボ太
·

私は大学の理工系の学部で、PythonとGit/GitHubを教えています。Pythonが学部2年生、Git/GitHubが学部3年生向けで、どちらも必修です。

これらの講義の中で、私は「今日は重要な回だから集中して聞いて欲しい」「今日はあまり重要でない回だから気軽に聞いて欲しい」と重み付けをしています。その中で、「今日やることはこれからの人生で全く役に立たないから、気軽に聞き流して欲しい」と言う回があります。Pythonでは「Pythonが動く仕組み」という回で、Pythonが入力されたプログラムを抽象構文木を経由してバイトコードに変換して、それがスタックマシンとしてVMで実行される様子を学びます。Gitでは「Gitの中身」と題して、Gitのコマンドが裏で実際になにをやっているのか、特にコミットオブジェクトやブランチがどのように実装されているのかを学びます。

PythonでもGitでも、それらが実際にどのように実装されているかを知る必要なんてほとんどありません。よほどマニアックな職業につかない限り、それらの知識は今後の人生で不要でしょう。にもかかわらず、私が学部の必修講義でこれらを教えるのは、理工系の学生の教養として「全てのものには実装がある」という感覚を身につけて欲しいからです。

日常生活で電子レンジを使って食品を温めることは多いでしょう。また、トースターでパンを焼くこともあるでしょう。電子レンジもトースターも「食品を加熱する」という機能は同じですが、その実装方法はまったく異なります。

電子レンジは、マグネトロンと呼ばれる真空管がマイクロ波を発生させ、そのマイクロ波により食品を温めます。トースターは、ヒーターと呼ばれる熱源から赤外線が放出され、それにより食品を加熱します。どちらも電磁波を発生させるという点では同じですが、その発生方法が真空管かヒーターかで異なり、さらに発生する電磁波の波長が異なります。

これらの仕組みを全く知らなくても、とにかく食品を入れて、スイッチを押せば食品が加熱される、ということだけ知っていれば電子レンジもトースターも使えます。ですが、おぼろげながらでも仕組みを知っていれば、電子レンジにアルミホイルを入れると火花が散って危険だけれど、トースターにアルミホイルを入れても火花は散らないのはなぜか、ということを理解することができます。

世の中には便利なもので溢れています。いまこの文章を見ているブラウザも、誰かががんばって実装したものです。どこかにサーバがあり、そこにブラウザがデータを要求し、そのデータをブラウザが受け取り、レンダリングにより画面を作っています。どのように文字を数値化し、どのようにネットワークを流して、どのように受け取るのか、誰かが仕組みを考え、誰かがそれを実装しています。それらを全て理解し、仕組みを覚える必要はありません。しかし、アプリでも機械でも、何かが動いている時、その裏に「それらを動かす仕組みがある」という感覚を持つことが大事だと思うのです。

理工系の学生の教養として「物が動く仕組みに思いを馳せる」のが大事だと書きました。教養として大事なのは理工系の学問だけではありません。中学や高校で、古文や漢文を習ったでしょう。しかし、日常会話で古文、漢文を使うことなんてありません。したがって、これらは「役に立つか、立たないか」で言ったら「役に立たない学問」に分類されるかもしれません。しかし、1000年も前の日本人が書いた日記をなんとなく読める、ということは、日本人としてとても大事なことだと思うのです。ラテン語が読めたなら、さらに昔の、より広い分野の古典を直接読めるようになることでしょう。大事なのは古文、漢文、ラテン語が読めることそのものではありません。1000年前にも人間がいて、何かを考えていて、それを後世に残すために古文、漢文、ラテン語という形で文章を書いた、ということを知っていることが大事だと思うのです。

学問は役に立つか、立たないかが、たまに議論になります。そういう意味では、学校で学んだことのうち、99.9%があなたの人生にとって役に立たないことでしょう。しかし、役に立つことだけが学問の本質ではありません。私はむしろ、役に立たない部分こそ、学問の本質だと思っています。

役に立たないことを覚える必要はありません。しかし、一度学んだことは、どこか頭に残っているものです。冬の星空を見て大三角を見つけ、「春はあけぼの」という言葉の意味がわかり、電子レンジを使ったらWifiが切れる理由に思い至る、そういう「学んだことを全て忘れたあとに残っているもの」が人生を豊かにするのだと信じて、私は今年も「役に立たないこと」を学生に教えています。

@kaityo256
記事中に明示されていない場合、私の記事はCC-BY 4.0で、記事に含まれるソースコードはMITライセンスで公開します。 github.com/kaityo256