【振り返り①】プログラマになるまで: 学生時代編

Profile Icon
2024年10月15日
Junichi Sato
【振り返り①】プログラマになるまで: 学生時代編

プログラミングを初めて体験したのは確か2008年の高校生のときだった。 当時、自分のデスクトップコンピュータを手に入れて、Ubuntuをインストールして遊んでいた。 シェルでコマンドを打ちながらコンピュータを操作するのが新鮮で、当時はとても楽しかった。

シェル経由で操作すると簡単に自動化でき、Linuxコマンドを極めればコンピューターを使いこなすことができるだろうと思っていた。 そんな感じでコマンドを並べてるだけだけど、僕にとってのプログラミングは、まずはシェルスクリプトから始まった。

その後、シェルスクリプトで遊んでいるだけではなく、本格的なプログラミングを覚えようと思った。 「プログラミングを覚えるならC言語が良い」というネットの評判を見て、 「しろうとクマ君とC言語の授業」という本を購入した。

一通り読んで「わかった気」になったけれど、今思えば当時はFizzBuzzですら怪しいレベルだったかもしれない。

その次に手を出したのが、Windows向けのゲームプログラミングの本だった。

この本を読んで、横スクロールアクションゲームをC言語で簡単なゲームプログラムを書いた。 ただ、ほぼ写経だったので、かなり無理やり動かしていた記憶がある。 一応動いていたが、十分に理解していたとは言えなかった。

そんなこんなで高校生活を過ごしていたのだけれど、大学では情報系か電気・電子系のどっちに行くのかを迷っていた。 結局どちらも学べる、電気通信大学の情報・通信工学コースに進学した。

• • •

大学1年生では、C言語のプログラミングの授業があった。 高校時代の知識はもう結構忘れていて、また1から覚え直しだった。 プログラミングの授業では課題を終わらせるのが異様に早い人がいて驚きだった。 大学にはすごい人がいるもんだなあと感心していた。 あと、授業ではプログラミングにEmacsが必須だったので、いつしか熱心なEmacsユーザーになっていた。

その後、プログラミングをもっとできるようになりたいと思ってPythonを学び始めた。 今でこそ人気No. 1の言語だけれど、当時は日本でPythonがまだあまり流行っていなくて、 周りがあまりやっていなかったことが、逆に魅力的に感じた。

Pythonを学ぶためには、はじめにみんなのPythonという本を読んだのを覚えている。 Pythonを学んで、ようやく実用的なプログラムを書けるようになった。

大学では、バイトもせず、友達とも遊ばず、家にこもってプログラミングをしていた。 一人暮らしをしていたので、何日も誰とも会わずに家にこもっていた日々だったので、 このままで自分の将来は大丈夫なのかと感じていた。

Pythonが一通りマスターした後は、低レイヤーの知識を身につけたいと思い、低レイヤー関連の本を読んでいた。 印象に残ってるのが、「Hacking: 美しき策謀」という本で、主にセキュリティ関連の内容なのだけど、この本を読んで、C言語をようやく理解したように感じた。

あとはアセンブリ言語も学んでおくべきだと思い、アセンブリ言語も学んでいた。

他にもたくさん本は読んだと思うけど、当時はアプリケーションの開発にはあまり興味がなかったので、 あまり実用的な本は読んでいなかった。

そもそも当時は、プログラマとして就職しようとも思ってなくて、プログラミングは完全に趣味のつもりだったので、 実用性はあまり気にしていなかった。

• • •

大学4年生になると、Brain Computer Interface(BCI)の研究室に入った。主にMATLABやOctaveを使ってプログラミングをしていた。 視覚刺激によって誘発される脳波を使ったBCIの実験で、PsychoToolboxというフレームワークを使ってPC上で視覚刺激を与えるプログラムを書いていた。

BCI

当時は、Pythonが一番書けたので、実験アプリケーションをPythonで少し無理をして頑張って作っていた。 ctypesを使って脳波計のDLLをPythonから操作するのだけど、 使い方間違えるとブルースクリーンでPCがクラッシュすることもあり大変だった。

最終的に、実験用のアプリケーションはMATLABに落ち着き、Pythonは分析や可視化に使用するようになった。

ちょうどその頃、機械学習が注目され始め、自分もその流れに乗ってscikit-learnを使って機械学習を学び始めた。 ビショップの「パターン認識と機械学習」という黄色い本も、ゼミでこれが読みたいと言って読んでいた。

その後、データ分析もできるようになりたいと思い、Pandasを使ったデータ分析を学んだ。Pandasのスキルは、今でも時々役に立っている。

• • •

修士1年になると、アルバイトやインターンで実際に仕事としてプログラミングを始めた。 検索の改善やランキングの予測モデルを作ったりしていた。 当時は、現在のような大規模な言語モデルはまだ存在しておらず、 さまざまな手法を使ったFeature Engineeringを試し、改善していくのが面白かった。

インターンで実務に近いプログラミングをやっていると、 これまでの積み重ねで結構スキルがある程度あることが分かってきた。

大学院での研究もそこそこ成果が出せていて、研究のようなひたすら突き詰めていく作業は性に合っていたので、 博士課程に進もうかとも考えていたけれど、 インターンではほとんど実務に近い内容で、これは仕事にしても楽しそうと思ったので、就職してプログラマになろうと思った。

こうして、ヤフー株式会社にソフトウェアエンジニアとして就職するのであった。


次の記事