プログラマが一年かけて数 IA を復習した話

僕はプログラマとして生きている。世間のイメージとは少し違って、プログラマとして企業の中で生きていく上では数学的思考力はあまり必要とされない。これはろくすっぽ勉強してこなかった僕にとってはある意味幸いなことで、数学なんてものはさっぱり出来ないけどプログラミングは好きという僕の性格を世間はある程度受け入れてくれている。

でもプログラマとして生きる以上、日々技術力を磨くのは当たり前の話であり、少し高度な本を読むとすぐ理解できなくなってしまう僕は自分の能力に辟易としていた。


普通の技術書なら僕でもそれなりに読めるのであるが、少しレベルアップしてコンピューターの本質みたいなところに近づこうとすると、すぐに僕は迷子になってしまう。計算機プログラムの構造と解釈(通称 SICP)だとか、コンピュータの構成と設計(通称パタヘネ)だとか、トランザクション技法だとか、世界を支えるような名著を読んで、僕もプログラマとしてできないなりに少しでもウィザードに近づきたかった。

でも頑張って読み返してみてもやっぱり難しくて、僕は、僕以外のプログラマとの間に見えない壁のようなものを今も感じている。僕は幸運だからそれなりに良い会社に入れたのだけど、ついぞまともな情報工学なんてものを学んでこなかった僕は、周りの優秀なプログラマとの間には薄い膜のような隔壁を感じずにいられなかった。せいぜい、技術書を読んでも浅い知識だけ取り入れるだけで、その本を読破したことで満足気になってしまっていた。僕は、こんな僕の将来にもやもやとした不安があった。

2014 年の終わり頃、そろそろこのもやもやにケリをつけてみるかという気になった。何か刺激的な体験があったわけではなく、ただもう、置いてけぼりのプログラマになるんじゃないかという不安にいい加減飽きてきたのだ。

そこで僕は、「チャート式数学I+A」の赤、いわゆる赤チャートを買った。技術書ではないし、三角関数の定理が今の僕の仕事には関係無いことは初めから知っていたのだけど、計算機の基礎である数学をないがしろにした状態ではこれ以上何をやっても付け焼き刃な気がしたから、数学の基礎からやり始めることにした。

範囲的には一応高校生の頃にやったはずだったのに、正直言って、圧倒的に難しかった。数列や二次関数はなんとか昔の記憶をぐいぐいと手繰り寄せて解けた部分もあって、少しだけ「いけるぞ」という手応えを感じた。でもそれ以降の部分、特に図形に関する問題は嵐のように難しく、問題文を読み終わった時点で身動きが取れなくなることもしばしばだった。難しい問題というのは取っ掛かりのないつるつるとした岩壁みたいなもので、圧倒的な登りようのなさに、ただただ「詰み」を受け入れるほかになかった。

少しだけ自分を褒めたい部分もある。何より、赤チャートを全部やりきったことだ。すべての問題を解いたわけではないが、ほとんどは解いた。正確に言えば解いたとは言えないものが多いのだが、それでも、一応ひと通りはやった。およそ 10 ヶ月ほどかかった。僕は社会人だし、高校生は一年かけてこの範囲をやるのだから、それなりに頑張れたと思う。ノートを何冊も買って下手な字や図を何度も書いて、休日には図書館に行って勉強していた。ある程度そういう努力が日常になった時、僕の中の空っぽだった部分が少しずつ満たされてきている感覚を覚えた。

それと同時期、不思議なことに、人前でいまさらな努力をすることが恥ずかしくなくなった。それまでは仕事が終わった後にデスクでノートを出して勉強するというのが少し恥ずかしかったのであるが(しかもみんなは出来て僕だけ出来ない基礎的な部分だから余計にだ)、僕は努力しているのだから、これはもう仕方ない、「この勢いを殺してはならない」という気持ちになって、週に 3 回ほどは仕事終わりに赤チャートを解いていた。もちろん馬鹿にされることはなかったし、「偉いですね」とか「もしわからないところあったら聞いてもらえれば、ひょっとしたら答えられるかもしれません」とか言ってくれる人もいて、結局はプラスの方向に働いたわけだ。最初会社でノートを出して勉強することを恥ずかしがっていた僕は馬鹿みたいだった。

一方で、赤チャートはあまりに難しく、モチベーションを維持するのは大変だった時もある。勢いづいて赤チャートを買ったけど、1 問を解くのに 1 時間以上かかったり答えを見ても理解できないような問題が連続したりしているような時は、「ここを勉強しても仕事にはなんの関係も無いんじゃないか」「僕は別の方向に努力しているのではないか」そんな思いが沸き上がった。息苦しい時間だった。

なんとか僕は赤チャートをやりきって、せっかくだからということで数学検定を受験することを決めた。数学検定準 2 級。範囲的には数学 IA とほぼ同等。申し込みをして、検定料 3500 円を支払い、早稲田大学に行って試験を受けた。そこで出た問題は、範囲は同じとは言えあの赤チャートに比べればほとんどが子供向けにアレンジされた問題のようだった。周りを見れば小学生らしき子もいた。「そうか、僕は難しい問題を解いてここまで来たのだ」。多くの人が解き終わって早めに退出していったけど、僕は残った解けない問題に対して四苦八苦し、時間をめいいっぱい使った。無事、僕は数学検定準 2 級に合格した。レベルで言えば高校 1 年生程度だから全く自慢にはならないけど、僕の努力が形になったようで結構嬉しかった。

これでとりあえずは赤チャート IA は一段落ついた。さて、その後どうなったかというと、まだ難しい技術書を読めるようになるまでには至ってない。でも少しだけ耐性がついたような気がする。理由は 2 つある。ひとつは、難しい問題をそれなりの数、なんとかこなしたという自信がそうさせるのだと思う。もうひとつは、赤チャートの問題を解いていく中で、一見難しそうに見える問題が、解ける問題とそうでない問題に分かれることがわかったからである。

図形の角度を算出する能力はたぶん僕の仕事ではあまり使い道は無いけれど、それを解く上で培った数学的思考力というものは、少しずつ少しずつ、錆がゆっくりと金属を侵食するように、僕の骨身に染みこみつつある。僕が学生の頃に怠けて得られなかったものをこの 10 ヶ月で一部分だけ取り戻した。僕の中のできたてで未熟な数学的思考力は、きっと僕の寿命が尽きるまで、その価値を失わず僕の中に宿っていてくれることでしょう。