大学生活の勉学まわりの回顧録

大学生活も終わりを迎えようとしているので、過去6年間の大学生活で勉強したことを大まかにまとめつつ振り返ろうと思います。 当時読んだ書籍に沿って書こうと思うので、タイトルを拾うことで僕と近しい進路の人が学ぶことの一例を垣間見えるかもしれません。 各本に付属する本文は思い出話で書評ではないので留意してください。 書籍は大学の講義に直接関係あるか、或いは専門である情報系の物とその周辺分野(機械学習に用いる数学/物理など)で、記憶にもある物に限定します。 オンラインリソースや論文などは基本的に割愛します。 また、情報系の書籍でもソフトスキル系の話は省きます。 繰り返しになりますが、この文章全体は広義の日記で、何かを薦めたり批評したりする意図はありません。

大学1年

所属は理科一類でした。 初めての一人暮らしやサークルなどに時間を取られ最初の数週間は講義から置いていかれがちだったことを覚えています。 ですが、鬼のように自己肯定感が高かったので特に気後れせずに済みました。 入学前はあまり座学に時間を割く予定も興味もありませんでしたが、様々な過程があり、30度ほど方針転換して勉強にも真摯に取り組みました。 昔は最終的には営業やマーケティングなどをして生きていくことになるのかなと考えていた気もしますが、今では理系専門職をやっています。

大学演習 力学
大学演習 力学

とりあえず理物の院に進学できる程度の実力をつけておこうと思い、薦められたこの本のA問題とB問題を解きました(11章まで)。 特別に物理に力を入れていた理由には自身の進路上の都合もありましたが、同じクラスの上位陣が軒並み物理系志望だったことがより大きな要因だった気がします。 僕の入学した頃は学年全体の傾向としても情報系より物理系の方が人気があったように思います。

大学演習 熱学・統計力学
大学演習 熱学・統計力学

熱力のA問題のみ取り組みましたが、Aだけでも難しかったです。 高校の頃より随分難易度が上がったように感じました。 力学などに比べて使えた時間が短かったこともやや苦手意識を覚えた要因だったと思います。

新版 現代物性化学の基礎 (KS化学専門書)
新版 現代物性化学の基礎 (KS化学専門書)

入学後すぐ分子軌道の話がでた時はついていけず、理解が追いつくのが周回遅れになった記憶があります。 講義に行っていなかったのが悪いのですが、講義資料に謎の軌道の図が書いてあり理解不能でした。 高校までのモデルと異なり最初は戸惑いが多かったです。 やや発展的な大学受験の参考書で得られる知識などと比べてギャップを感じました。

大学演習 電磁気学 全訂版
大学演習 電磁気学 全訂版

友人から借りてコピーを取り、A問題だけ途中まで取り組みました。 しかし途中で厳しいなとなって問題集の難易度をこの本から下げました。 ところでこの本を貸してくれた友人は僕より数学や物理の適性が高いタイプの人の一人でした。 彼らは面倒な計算への耐性の高さを感じます。

電磁気学 (基礎演習シリーズ)
電磁気学 (基礎演習シリーズ)

前述の大学演習は時間がかかりすぎたのでこちらを一冊解きました。 静磁場で一回つまずいた記憶があります。 クラスの人に聞いても微妙に解決しなくて困ったところまでは覚えていますが、どう乗り越えたのかわかりません。 もしかしたら飛ばしたかもしれません。 こういった理数系の科目でもわからないところを飛ばしたりできてしまうことができる僕の精神構造がより理解度の高い人たちとの差を生んでしまっている気もします。

電磁気学 (現代物理学[基礎シリーズ])
電磁気学 (現代物理学[基礎シリーズ])

最後の2章(電磁放射と特殊相対性理論)は勉強していません。時間が足りませんでした。 全ての範囲をカバーできなかったので覚悟して期末試験に臨みましたが、磁界以降は試験範囲ではなかったようで助かりました。

統計力学 (岩波基礎物理シリーズ 7)
統計力学 (岩波基礎物理シリーズ 7)

5(/8)章までを勉強しました。 近似計算で数式をきれいにしていく過程は個人的に結構好きです。 講義の演習プリントか何かでイジング模型を扱ったことも平均場近似を一度は学んだことも覚えているので、 本の5章までの内容よりは少し多くの内容を勉強しました。 Deep Learningの研究でもごく稀に平均場近似を使っているものを見かけます。 理解の仮定で所々物理実験のペアに助けてもらったのですが、彼も優秀で専攻に進んだ後も精力的に研究して論文を出しているみたいです。

量子論の基礎―その本質のやさしい理解のために (新物理学ライブラリ)
量子論の基礎―その本質のやさしい理解のために (新物理学ライブラリ)

Spectral theoremはこの本が出会ったのがタイミング的には一番早かった記憶があります。 情報理工の院試の過去問などでも頻繁に使えたはずで、便利な定理だなと思っています。 量子論の詳細に関しては今はさほど覚えていませんが、量子論自体はおもしろかった記憶があります。

振動と波動
振動と波動

年末年始の帰省時にも勉強していて、妹に大学で何を勉強しているのかと聞かれた時、例えば今話した声がその柱の裏でどう干渉するかを計算したりしている、という話をして酷くディスられたことを覚えています。

振動と波 (基礎演習シリーズ)
振動と波 (基礎演習シリーズ)

教科書だけでは理解が怪しいので問題集も一冊解きました。 当時は教科書だけで勉強する習慣があまりなくて、勉強することの中心は問題集を解くことでした。 その後、周囲の影響もあり、教科書中心の勉強にも慣れました。 ネット上で見つかる最も極端な文化圏(e.g. https://dl.ms.u-tokyo.ac.jp/~yasuyuki/sem.htm)に所属している人々とは残念ながら交流がないですが、それに自分より近い人たちに大学で触れられたのはよかったと思います。 とはいえ、今でも問題集が整備されている分野なら演習中心のやり方の方が自分には合っているなと感じます。

物理のための数学入門 (講談社基礎物理学シリーズ)
物理のための数学入門 (講談社基礎物理学シリーズ)

大学に入って最初の頃は物理科目の数学パートがかなり酷で、この手の本で必要な部分は補強しました。 大学物理は初っ端から知らない数学を持ち出されて最初期は一度置いて行かれました。 まあ、追いついたところでその後の僕の人生では物理はほとんど出番はありませんでしたが。

統計学入門 (基礎統計学Ⅰ)
統計学入門 (基礎統計学Ⅰ)

有名な本で、必修を除くと最も多くの駒場生が読む本の一つだと思います。 その割には所々理解に時間がかかった記憶があります。 7月に試験のあった科目の中では多めにリソースを割きました。

情報: 東京大学教養学部テキスト
情報: 東京大学教養学部テキスト

必修の情報の教科書です。 簡易なCPUの原理説明をされた記憶がありますが、そのときには特に心に響いたりはしませんでした。 微妙だった高校の頃の情報の講義の印象を引きずっていたとも思います。 もちろん内容はちゃんと勉強しましたが、重要なことを学んでいる認識はありませんでした。 今目次を見返すと記憶にあるよりもちゃんとした講義内容だなと思うので、分野間理解の難しさを感じます。

解析入門 Ⅰ(基礎数学2)
解析入門 Ⅰ(基礎数学2)

初心者キラーとして有名な本です。 解析入門2と更に演習本まで揃え、多少は手をつけましたが、1年の頃は3冊ともほぼ積んでしまいました。 試験は教員が配布した資料に乗っていた定理の証明を全て覚えていくことで対処しました。 暇だった学部2年の前期に1だけ読みました。 この本以外だと解析概論などが有名な印象を受けました。 大学院に入って以降に読む人も一定数見かけます。

線形代数入門
線形代数入門

二次形式あたりまでこの本で勉強しました。 解析と線形代数は二次試験の後に多少勉強しておいたので余裕をかましていたのですが、事前に学んだものより講義は抽象度が高く、可換図式が出てきたあたりでは一度理解が置いていかれました。 当初は完全に舐めていたので、講義中は同級生が資格を所持していて興味をもった中小企業診断士の勉強などをしていたことを覚えています。

生命科学 改訂第3版
生命科学 改訂第3版

ほとんどの科目は計画的に学びましたが、これは試験前の一週間ほどで詰め込みました。 僕の頃は文系科目の試験は7月、理系科目の試験は9月にあったので試験前でも十分時間がありました。 ところでこの間、他専攻同士での交流になった時に生命科学クイズが発生したのですが、5年を経ても細かく覚えている人がいて驚きました。

東京大学教養英語読本I
東京大学教養英語読本I

クラスに全国模試一位、進振り96点弱をとった友人がいたのですが、試験後に彼に自分は結構できたという話をしたら、全然できなくて辛かったと返され、しかし彼は100優だったということがありました。 これだから東大生はと思いました。 彼からは4年の頃なっても幾何学とかを少し教えてもらったりしました。 入学して一年たった頃、クラスのお互いが誰が何を書いたか把握できるアンケートがあり、そこで彼が東大は学問を志す人々が集まる場所だと期待していたが失望した、という趣旨のコメントを残していたときにはこいつマジかと思いましたが、それはおいておくとして、彼のような人が近くにいたのは良い環境でした。

東京大学教養英語読本Ⅱ
東京大学教養英語読本Ⅱ

英語を真面目に勉強したい思いはあったのですが、大学生活を通してあまりできませんでした。 一年次は一応英語ディベート部などにも所属していて、 二年の春だったか夏だったかの合宿に参加するあたりまでは居ましたがなかなか難易度の上昇についていくのが難しかったです。 部で印象的だった人はマッキンゼーなどに就職していました。 同じコンサルで勝負したら絶対僕より仕事取れるだろうなという雰囲気がありました。

情報科学入門―Rubyを使って学ぶ
情報科学入門―Rubyを使って学ぶ

所謂シケ対に選ばれていましたが、何もしませんでした。 申し訳ない。 Rubyを使って逆行列を計算する課題が出て、それで夜7時くらいまで大学に残った記憶があります。 当時はそれだけで課題が重めだなあと思った記憶があります。 あの頃は平和でした。

新・明解C言語 入門編 (明解シリーズ)
新・明解C言語 入門編 (明解シリーズ)

昔からロボットに興味があり、1年の冬までRoboTechというサークルに所属していました。 RoboTechには機械/回路/制御の3つのグループがあり、最初は機械に入ろうと思っていたのですが、try&errorのサイクルがより速そうだったので制御に入りました。 どのグループに入るか決めるときに制御屋を代表して新入生にスピーチをした先輩は、 後にインターン同期となり、今は僕の就職予定先で働いています。 ちなみに当時の機械屋長も就職先にいます。世界は狭い。 RoboTechで制御屋に入ったことがきっかけでC言語を学びました。

その他

2外(僕の場合、中国語)や体育の必修などもありました。

大学2年

学部2年の前半はさほど熱心に勉強しておらず、必修に加えて進学振り分けで候補に上がっている学科で学ぶことを調べたり先取りして適正を測った程度でした。 候補に上がったのは理情、計数、機情、電情、経済、法あたりでした。 その中で理情に進学した理由はいくらかありますが、 強いて言えば、個人の人間が到達可能な演算能力やデータ収集能力、記憶能力などの限界を超越したいという素朴な欲求があり、 その可能性をコンピューターに見出していました。 当時は不人気な学科でなぜ進振りの点数を捨ててまで進学するのかとよく言われましたが、今のところ選択を後悔したことはありません。 進学後の最初の半年(2年後半)に関しては、情報科学よりもむしろ数学科の科目に割く時間が支配的でした。

量子化学 基礎からのアプローチ
量子化学 基礎からのアプローチ

夏の必修でした。もう何も覚えていませんが教科書を見るととりあえず全ての問題は解いた形跡があります。 2年の夏学期は全般的に勉強量が少なめでした。 毎日二時間ほどジムにいたことは覚えています。 スポ愛テニパというテニサーで新歓担当などやっていたのですが、そこで先輩にどうせ必要になったら勉強することになるからやらなくていいよと唆され、微分方程式などは履修しませんでした。 ですが、どう考えてもこのタイミングで学んでおくべきだったので判断ミスです。 他にこの時点までに既習にしておいた方がよかった科目には解析力学があります。

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

プログラミングを始めた人が最初に学ぶべき言語ことShell(実際にはinteractive shellが何か使えれば十分だと思います)。 初めて黒い画面を触り始めた時に何が起こっているのか、 打ち込んでいる謎のコマンドは何なのか、という情報に自力で至るのは結構難易度が高いと思います。 少なくとも僕は時間がかかりました。 僕は高校の頃もプログラミングに挑戦してみようとしたことがあるのですが、その時は環境構築で躓いてしまいました。 こういったところからちゃんと教えてもらえる環境にいられたらまた違う世界に出会えたのかなと思います。

Land of Lisp
Land of Lisp

関数型言語に興味が出始めたころです。 この頃はEmacsを使っており(Emacs Lispで拡張したかった)、また理情でSchemeを習うことを聞いていたので、まずLispの勉強に手をつけました。 今の僕なら遠回りせずにEmacs LispとSchemeをそれぞれ勉強します。 理情の2年は1,2ヶ月でC言語を学び終えて冬休みにはSchemeでScheme処理系を書かせることで(一部界隈で)有名ですが、 実は処理系を書くと言ってもフルスクラッチするわけではなく、ほとんど動く状態のものに機能を足していくだけです。

徹底攻略 応用情報技術者教科書
徹底攻略 応用情報技術者教科書

理情に進学するに当たって何を勉強したらいいか分からず、とりあえず応用情報を夏休みに勉強して取りました。 分野に入門する時の初手としては悪くなかったと思います。 ただ、僕の周囲ではIPAの資格を取得している人やそれを目指している人はあまり見かけません。

マスタリングTCP/IP 入門編 第5版
マスタリングTCP/IP 入門編 第5版

応用情報を取得する際のネットワーク分野の対策に読みました。 Googleに行った後輩もこの間この本を読み始めたという話をしていました。 ネットワークは重要性に対してやや自身の理解がまだ甘い気がしているのですが、どのように学ぶのが良いのか未だに結論づいていません。

スッキリわかるSQL入門
スッキリわかるSQL入門

応用情報を取るためのSQLの練習用に購入しました。 帰省したときに地元に新しくできた図書館で解いたりしていたのを覚えています。 僕の頃はそんな綺麗な図書館はなかったので下の世代が羨ましい限りです。

ロベールのC++入門講座
ロベールのC++入門講座

競技プログラミングをする時やPythonから呼べて速度の必要なモジュールを作成する際などはC++を使っています。 C++関連だと、あとはEffective C++, Modern Effective C++, Optimized C++と Googleのコーディング規約(当時はまだC++03だったと記憶してますが嘘かもしれない)あたりを(2-4年次に)読んだりしました。 このあたりは今読み返したらまた学びが多そうな感じがします。 大学3年までは機械学習の課題などを含めたほとんどをC++で書いていました。

Introduction to Algorithms
Introduction to Algorithms

理情に入るに当たって何を勉強しておいたら良いか分からなかったのでこれを夏に読みました。 その後の人生でも参照する機会が度々ありました。 3年の頃、赤コーダーの同期とこの本の話になったときに、 この本の演習に載っているものよりも計算量の改善されたアルゴリズムの話をしてくれたことを覚えています(アルゴリズムそのものは覚えていませんが)。 今の自分はそういった話はほとんどできないので、当時の彼らのレベルにも今の自分は全然追いつけていないんだなと実感します。

深層学習 (機械学習プロフェッショナルシリーズ)
深層学習 (機械学習プロフェッショナルシリーズ)

この頃はまだDeep Learning Book (Goodfellow et al.)などはありませんでした。 初めてDeep Learningに触れたときは、なんだこの合理性のかけらもない手法は、と思ったことを覚えています。 今も慣れただけで納得はしていません。 あまり気に入らなくてその後しばらく勉強しませんでしたが、 3年の時に秋葉さん(当時は一方的に認識していただけでした)がPFNにjoinして、そこでインターンしたいと思ってから再開しました。 3年の冬からUdacityでDeep Learningコースを履修し、その後Deep Learning関連のバイトで開発や論文解説をして勉強し、4年の夏に無事PFNでインターンできました。 PFN自体は秋葉さんが入社する前の3年前期から知っていました。

情報理論
情報理論

情報数学の講義対策に買いました。 試験内容とはあまり関係がありませんでした。 知識が忘れ去られようとしているのを感じるのでそろそろ復習しないといけませんが、 同じことを漫然と思いながら一向に立ち止まることなく卒業を迎えそうになっています。

コンピュータの構成と設計 第5版
コンピュータの構成と設計 第5版

読んだ、というよりは一通り目を通した、程度だった気がします。 有名なので一読はしたはずですが、あまり真面目には読んでいなかったはずです。 数学科の科目に時間を割きすぎたことが原因です。

ディジタル回路
ディジタル回路

ハードウェア構成法という講義があり、前提知識が明らかに一般常識を逸脱していてついていけなかったのでこれを買って読みました。 ちょうどこの本くらいの内容が前提知識の範疇だった感じがします。 講義時間中、担当講師の方が"情報系で生きていくなら少なくとも1年は篭って勉強しなければ話にならない"、という話をしていました。 実際に篭もる必要はないと思いますが、専門に分化する前の基礎的なコンピュータ・サイエンスに関する勉強時間がフルタイムの学生一年分くらいはあった方が望ましい、程度の主張であればそれを言いたくなる気持ちは分かります。

定本 ASICの論理回路設計―高速・高信頼ディジタル・システムのための設計ノウハウ
定本 ASICの論理回路設計―高速・高信頼ディジタル・システムのための設計ノウハウ

ハードウェア構成法の参考書籍の一つでした。 年間30~40冊ほど売れます、とのことでしたので理情生以外には馴染みがなさそうです。 もう一冊指定教科書があり、その本も含めて僕自身はあまり真面目に読んだ記憶がないので載せるか迷いましたが、 一応必修の本でしたので載せました。

VHDLデジタル回路設計 標準講座
VHDLデジタル回路設計 標準講座

講義ではハードウェア記述言語に触れなかったのに冬休みの課題がVHDLで時計の回路(だったはず、少なくともカウンターを使った気がする)を書くというものでした。 勉強しないと無理なので本を買って読みました。 ちゃんと取り組んで動くものを出せればだいたいA+がつく雰囲気だったので、そこだけが良心的でした。

データ構造とアルゴリズム (新・情報 通信システム工学)
データ構造とアルゴリズム (新・情報 通信システム工学)

講義を担当した教授はこの講義の時はかなりテンションが低かったです。 その教授はユーザーインターフェースのプロフェッショナルですが、 その専門分野の講義の時はもっと楽しそうだったので、 押し付けられたのだろうなと察しました。

C言語ポインタ完全制覇 (標準プログラマーズライブラリ)
C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

ポインタが微妙に分からなくて課題が解けなかった時にちょうど学科Slackで言及された書籍でした。 ポインタ周りの知識がかなりわかりやすくまとまっていた記憶があります。 ところで、難しい課題の情報が常にオンラインで共有されていたわけではなく、 (3年以降は)むしろ地下室に来た人たちだけでオフラインで情報共有や助け合いが行われていました。 大学に来る習慣がないと大変なことも多かったかと予想します。 僕は活動時間の大半を地下で過ごしました。

線形代数の世界―抽象数学の入り口 (大学数学の入門)
線形代数の世界―抽象数学の入り口 (大学数学の入門)

数学科の必修が3つ、線形代数、集合位相、複素解析とあって、全て履修しました。 ただし、理情の必修との兼ね合い上、各講義に付随する演習講義は取れませんでした。 その3科目のうち一つの指定教科書です。 載っている問題はとりあえず全て手をつけました。 この線形代数を履修していた理情の人はそこまで多くなかったと記憶していますが、 機械学習でも数値計算でも使うので、集合と位相くらい多くの人が履修した方が良いのではと思います。

集合と位相 (数学シリーズ)
集合と位相 (数学シリーズ)

数学科の必修の中でも特に理情との関わりが深く、履修者が多かったです。 実際、学部3年の情報論理学演習では位相の知識だけで解ける問題もいくらか出てきます。 僕は集合論も位相もこの時に触れるのが初めてだったのですが、 最初の講義で、この講義は素朴集合論を扱います、 と話があった瞬間に前の方の人たちが失笑していてなんでこいつら既習なんだよ、と思ったことを覚えています。 数学科の人だけでなく、学科の同期にも既習の人はいました。 その人たちの間では松坂集合位相を読んでいる人の方が多そうな雰囲気を感じました。

集合・位相演習 (数学演習ライブラリ)
集合・位相演習 (数学演習ライブラリ)

教科書だけでは理解に問題があったのでこの問題集を一冊解きました。 学部3年以降でもしばしば位相の知識を使うことがあり、 また、大学の講義と別でルベーグ積分などを学んだりしていたので、必要に応じて教科書とこの演習書を参照しました。

複素解析
複素解析

数学科必修の3科目の中では一番難易度が高いように感じました。 年末年始の休みを複素解析に溶かしたことを覚えています。 講義は1と2に分かれていて、1のみ履修したので、実はまだ解析接続などは学んでいません。 ですので、たまに飛んでくる解析接続ジョークなどは対応しかねます。 複素解析は関数解析の勉強とあと何かのゼミで使用しました。

Machine Learning: a Probabilistic Perspective
Machine Learning: a Probabilistic Perspective

機械学習にはこの本で入門しました。 大学で読んだ最も印象に残っている書籍の1つです。 一周目はバイトで読んで、その後も度々読み返し、各章2~7周、平均4周ほどは読みました。 僕がこの本を読み始めた大学2年の頃(2015)は既にAIブームには火がついた後で、 もっと情報感度の高い人たちは僕より半年ほど早くからPRMLのゼミなどをしていたことを覚えています。 これに手を付け始めた頃は最適化なども何も知らなかったのでかなり苦戦しました。 英語の教科書に慣れていなかったというのも苦戦した一因だったと思います。

最適化法 (工系数学講座 17)
最適化法 (工系数学講座 17)

前述のMLaPPを読んでいる時に最適化数学の部分が未知すぎて辛かったので読みました。 LPの解説部分は特にわかりやすく学部3年の離散数学の講義の時にも役に立ちました。

独習C#
独習C#

Unityを使ったバイトをしていたので、それで勉強しました。 Unityに関しても本を読んだりしたはずですが、何だったか忘れました。 Unityの知識は4年の時のUIの授業で役に立ちました。

Category Theory
Category Theory

学科の人たちと自主ゼミをしました。 申し訳ないことに当時は圏論にあまり興味がありませんでしたが、 圏論ゼミに参加する人たちに興味があったので声をかけて入れてもらいました。 院試の時を機に止まってしまい、全体の2/3あたりで終わりました。 実はゼミが止まった時の担当は僕で、僕がやる気を出して予習をしたからやろうぜと声をかければ続行されていたと思いますが、そこまでの情熱がありませんでした。 すまん。 日本語版の誤訳はゼミの時に度々問題を引き起こしたので英語版を読んだ方が良いです。

実践VIM
実践VIM

このリストに入れるべきか迷いましたが、 僕はツールへの習熟は本質的な競争力になると考えているので、 その例として含めました。 この本は少なくとも2周は読んでいて、今でもvimの基本操作は周囲と比べると詳しい方だと思います。 大学3年の途中からはJetBrains社に魂を売っていますが、それでもkeymapはvimのままです。 使えない機能もありますが、全般的にvim emulationがかなりよくできています。 今からプログラミングを始める人にはvimよりemacsキーバインドなどの方が他のツールとの兼ね合いも考えると良いのかなと感じます。

情報処理教科書 情報セキュリティスペシャリスト
情報処理教科書 情報セキュリティスペシャリスト

なんとなくセスペを取るかという気持ちになり、春休みに勉強して取りました。 この手の資格を持っている領域は残念ながら面接で突っ込まれると困る程度の知識しかないので、就活の時の履歴書には資格欄は載せませんでした。

CODE COMPLETE 第2版
CODE COMPLETE 第2版

上下巻読みましたが、この時はあまり響きませんでした。 この手の本はある程度経験を積んでから読んだ方が良い感じがします。 リーダブルコードも読んだはずですが1年の頃だったか2年になってからだったか忘れました。

その他

触れられなかった必修科目について言及しておきます。 形式言語の講義は学内アクセス限定の講義資料を用いて勉強しました。 また、情報科学演習の参考書籍にSICPが指定されていたことを覚えていますが、僕は本当に最初の方しか読めませんでした。

大学3年

大学在籍期間はそれまでの人生と比べてよく勉強していたと思いますが、その中でもこの1年は特に勉強量が多かったと思います。 特に大学の課題には多くの時間を使いました。 どの分野でも自分より優秀な人を同期や先輩の中にすぐ見つけられる環境だったことが良い動機付けになっていたと思います。

Operating System Concepts
Operating System Concepts

OSの講義の指定参考図書でした。 理情の学生控室(俗に言う地下)にはかなり多くのバージョンが置いてあり、 歴代の先輩たちも読んできたんだなあと思ったことを覚えています。 僕は初手大著通読とか初手ソースコード通読とか初手仕様書通読といったことをしがちです。 最初に広くカバーすることも良いですが、その後何かわからないことがあった時にこまめに調べることはより重要だと思います。 後者も技術を要すると思っていて、例えば比較的よく会う学科の後輩はそれがかなり上手だなと感じます。

グラフ理論入門
グラフ理論入門

講義で言及されたのはDiestelだった気がしますが、それを読む時間はなかったのでこちらで軽くすませて残りは演習で補いました。 理情では理論系の演習科目も一応存在していて、前期は離散数学と情報論理学の2つが対象でした。 離散数学の方の演習は紙での提出でした。 僕なら僕の手書き答案は絶対に読みたくありません。

Compilers: Principles, Techniques, and Tools
Compilers: Principles, Techniques, and Tools

俗にドラゴンブックと呼ばれる本です。 型システム好きの同期が2年の頃これを読んでいてそれで僕もこれを読みはじめました。 講義が始まる前から読み始めていて、講義の中盤がすぎるまでこの本で学んでいましたが、最後は講義の指定教科書だったタイガーブックの方に切り替えました。

Modern Compiler Implementation in ML
Modern Compiler Implementation in ML

俗にタイガーブックと呼ばれる本です。 必修の教科書として指定されていたのはこちらでした。 この本は課題や期末対策などでドラゴンブックより都合が良いことが多かったので、その該当場所とドラゴンブックの方で読んでいなかった部分を読みました。

コンピュータネットワーク 第5版
コンピュータネットワーク 第5版

この時は流し読みをしました。 3年当時はそこまで時間をかけられなかったので珍しく日本語版の書籍を手に入れましたが、 それでもリソースが足りずちゃんとは読めませんでした。 少しのネットワークプログラミングを除けば演習の機会もあまりなく、やや浅い理解で通り過ぎてしまったと思います。 この時読んだだけではあまりに理解が足りなかったので修士2年の時に(所用もあり)読み直しました。 今なら当時よりは少しはわかります。

Advanced Programming in the UNIX Environment: Advanc Progra UNIX Envir_p3 (Addison-Wesley Professional Computing Series)
Advanced Programming in the UNIX Environment: Advanc Progra UNIX Envir_p3 (Addison-Wesley Professional Computing Series)

システムプログラミング実験の課題が出るたびに該当範囲を含む章を読みました。 課題でカバーされなかった部分はあとで読み直しました。 通読しておいて言うのもどうかと思いますが、リファレンスとして使う方が適切な感じがします。 システムプログラミング実験では一度だけ本番に強いと言われる同期競プロerの課題コードを見たことがありますが、かなり綺麗でした。 月並みな感想ですが、緊張感の高い環境でミスをしない人には理由があるのだなと思いました。

数値計算の常識
数値計算の常識

数値計算関連だとよく名前の聞く本だと思います。 偏微分方程式の数値計算に関して、```いざというときには、しかるべき専門家に相談すべきであるということを"常識として"知っているべきではなかろうか```と言うフレーズがあり、このtopicに限らずその通りだなあと思います。 CSの勉強全般が、最後はしかるべき専門家にあたれ、必要な時に適切な専門家を頼れるように普段からよく学んでおけ、という話に落ちるように思います。

数値解析 (共立数学講座)
数値解析 (共立数学講座)

数値解析の講義の試験がやや難易度が高かった記憶があります。 この周辺は計算物理系の人たちの方が詳しそうだなと思います。 PFNのインターン同期にも計算物理の人がいましたが、コーディングも慣れていてかなり手が動く印象をうけました。 小規模開発でのプログラミング能力だけではCS専攻でない人相手にも優位性が少ないなと感じる機会は多いので、立ち回りに気をつけたいところです。

Pattern Recognition and Machine Learning (Information Science and Statistics)
Pattern Recognition and Machine Learning (Information Science and Statistics)

夏休みに同期とゼミをしました。 初等微積分反復演習講座。 ゼミをした同期は日本語版の上巻を読んだ後だったので下巻に相当する部分のみ付き合いました。 教科書上で一行の計算に半日とかかかる時などもあってので時間がかかりました。 ゼミの参加者全員が卒論をトップカンファに通せました。 このころトップカンファの論文を読むゼミも行いました。 カナダにインターンに行った時のホストはそのゼミで読んだ論文の著者の一人でした。 世界は狭い。

Matrix CookBook
Matrix CookBook

PRMLゼミの続きで、行列の微積とかにより精通するために、この公式集を上から順番に証明していくゼミをしていました。 所々導けず、例えばトレースを使う公式の導出を諦めてスキップした記憶があります。 後に擬似逆行列の章あたりから辛さが募ってきて途中で挫折しました。 企画そのものの無茶振り感を踏まえれば十分頑張った方だと思います。 行列を含む微積分、計算機であまりうまく行かなくて手計算することがしばしばありますが、今時公式を当てはめるだけの計算に人間の時間が使われるべきではないですよね。

CUDA C プロフェッショナル プログラミング
CUDA C プロフェッショナル プログラミング

演習でCUDAを扱ったことをきっかけに読みました。 正確にはこの時途中まで読んで、残りはM1で読みました。 内容が少し古くなっているので、今は公式docを読んだ方が良いそうです。 CUDAプログラムをフルスクラッチする機会はその後ほとんどありませんでした(部分的にならありました)。 定期的に書いたりしていないのでそんなに身についている感じはしていません。 知識レベルは、docやプログラムを読んでいるときにCUDA特有のジャーゴンが使われた見出しや変数から意図を察せられる程度です。 割と真面目に幅広くCSを勉強しているといっても、普段使い慣れていなければその程度だという認識でいるのですが、 もしかして他の人たちは全方位もっと深い理解をしているとするとちょっとまずいですね。

入門Python3
入門Python3

データ解析系のバイトをしていたので勉強しました。 本格的に使うようになったのは学部4年以降です。 他にもPythonの書籍をいくつか読んだり、オンラインドキュメントにある公式モジュールの説明はほとんど読んだりしました。 普段はPyCharmで書いていますが、とても良いです。 Jupyter Notebookもよく使っていて、Pythonを使用する以外に、数式がでてくる思考をする時は手書きやtexよりJupyter Notebookを使って計算したり考えたりすることが多いです。

トピックモデルによる統計的潜在意味解析 (自然言語処理シリーズ)
トピックモデルによる統計的潜在意味解析 (自然言語処理シリーズ)

これもバイト先で読んだのですが、実はこの本の著者が後の指導教員になります。 正誤表を作成したはずですが、渡す前に無くしました。

ルベーグ積分入門―使うための理論と演習
ルベーグ積分入門―使うための理論と演習

ゼミで使用し、それなりに時間をかけました。 確率論(伊藤清)を読むために勉強していました。 機械学習に測度論は必要か談義がありますが、僕の今までの人生では必要なかったです。 基本的な定義を抑えておく程度で十分だったと思います。 一方で僕より理論寄りの同期はかなり使っているようなので、人によっては必要なことも確かです。 必要としない人の方が割合としては多いと思いますが、勉強した上でしばらく研究生活を送ってみないと各個人にとっての重要度の判断は難しい気がします。

組合せ最適化 第2版 (理論とアルゴリズム)
組合せ最適化 第2版 (理論とアルゴリズム)

同期の競プロerに話を聞いていた時にしばしば話に登場したので、ルベーグ積分ゼミをやっていた人たちに声をかけてゼミをしました。 この頃は離散数学系の研究室も考えていてその布石を打っておく必要があったというのもこの本に手をつけた理由です。 証明を一つ一つ追って行きましたが、行間が広く大変でした。 一年ほどかけてマトロイドあたりまでやりました。 相当労力がかかる本の一つで、あの時点で僕が読むべき本ではなかったと今では思います。 難しくて読めなかったという主張ではなくて、僕のレベルだとその時間でもっと他に学ぶべきことが色々とあったように思う、という話です。

コンピュータ設計の基礎
コンピュータ設計の基礎

コンピュータアーキテクチャの講義の参考図書の一つでした。 ハードウェア実験で不動小数点加算器を実装する課題の時などにも参照しました。 当時のハードウェア実験はなかなか酷で、 課題締め切り日を一週間すぎてもTAを含め誰も課題が完成しないという自体が起こったりしました。 シャワー以外一週間大学に寝泊りしたことを覚えています。 最近は相当改善されて講義時間中に課題が終わるほどになったそうです。 今の形式の方が学習効果も高そうで良いと思います。

高性能コンピュータ技術の基礎
高性能コンピュータ技術の基礎

CPU実験の時にもっとも参考にした教科書です。 OoO実行などができるCPUを書こうと思った時に必要な構成要素を学ぶことができます。 ところでCPU実験というとCPU実験神資料と呼ばれる資料があり、それが僕の代でも流通していました。 それを書いた先輩も僕の代のCPU実験の担当教授だった方も今はPFNにいらっしゃいます。 世界は狭い。 ひとつ上の代で数千行のコードでCPI 1未満のCPUを書いた先輩がいました。 その先輩は全方位で異常な優秀エピソードが絶えませんが、これもとんでもないです。 その人もPFNに就職されたそうです。

Computer Architecture, Fifth Edition: A Quantitative Approach
Computer Architecture, Fifth Edition: A Quantitative Approach

ある面接を受けている時に一瞬この本の話になりました。 選考や評価に直接関わるか不明ですが、コンピュータ・サイエンス一般教養トークが突然始まることはランチタイムなどを含めてしばしば経験があります。 その手のエピソードとして今でも記憶に強く残っているものに、PFN西川さんらとした会食があります。 食事の中で西川さんが情報科学科で記憶に特に残っているものとしてトマスロのアルゴリズムと情報論理分野の何らかの定理の名前を上げたのですが、僕はその定理に聞き覚えがないかあるいはパースに失敗しました。 お酒の席でしたし話も相手のターンという感じだったので僕はそこで流してしまったのですが、 隣にいた秋葉さんは(秋葉さんにも伝わらなかったらしく)すぐに後半の定理がどういうものか西川さんに質問していました。 話がすぐにトマスロの方に流れたか何かでその質問自体は話の流れ上なかったものになってしまったのですが、その時は秋葉さんとの姿勢の差を反省してややその後の食事が辛かったです。

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~
プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~

大して真面目に取り組んでいないのでリストに入れるか迷いましたが、競プロも手をつけていたという話をするために入れました。 周りが競プロの話をしてくれるのですがそこまでついていけず、それはつまらなかったので僕も競プロをやるようになりました。 少なくともセグ木やsuffix array、アホコラ、高速ゼータ変換あたりは食事や地下での雑談中に最初に習った記憶があります。 AtCoderの履歴を見てみると初めて参加してから5ヶ月弱くらいでAtCoder青になりいくつかオンサイトのコンテストにも参加させてもらいましたが、その後はあまり成長していません。 僕くらいのレベルだとまだ競技プログラミングの練習が業務プログラミングに役に立つ割合も高い実感があります。 学生時代は四方八方をIOI金やICPC WF金の人たちに囲まれていた(今もですが)ので、活かせていたかは別として環境としてはよかったと思います。

線形代数汎論 (基礎数理講座)
線形代数汎論 (基礎数理講座)

線形代数飛び道具集として参照しました。 Twitterで学科の先輩が言及していたのをきっかけに購入し、当時は必要なところだけ摘み読みしていました。 修士一年で改めて手をつけましたが、その時も定理の証明をちゃんと追ったりはせず、定理だけさらって試験などで使えるようにだけしました。

確率論 (岩波基礎数学選書)
確率論 (岩波基礎数学選書)

ルベーグ積分の勉強をしたのは、この確率論のゼミをするためでした。 一応この本も最初に少し測度論の導入などをしたりするのですが、あまりに進度が速いのでこれだけだと中々辛いと思います。 4年の夏まで1年くらいかけてゼミをやって、その後少し一人で勉強して4章(5章からようやく確率過程)の途中までやりました。 なので、実は僕は確率過程をまともに勉強したことがなく、ほぼ確率論は勉強できていないと言って差し支えない(?)です。 確立過程は他のゼミや論文の証明を追う過程で必要になったところくらいなら別途勉強しました。 せっかくなら5章までやったほうが楽しいしもったいない、といったことは聞いていますが、それにしても時間がかかりすぎました。

その他

触れられなかった必修科目について言及しておきます。 情報論理の講義は学内アクセス限定の講義資料を用いて勉強しました。

大学4年

前半はそこまでに勉強し損ねたことを手広くさらい、夏/秋はPFNのインターンに参加し、冬は卒論を書きました。 この頃はO'Reilly Safariに登録していて色々と読み漁っていたはずですが、手当たり次第に読んだ本は内容は記憶に残ってもどの本だったかまでは覚えていないのでこういったエントリでは書きづらいです。 特に実績もなかったのでPFNのインターンに入れてもらえることに必然性はなかったのですが、 後から話を聞くと先にバイトしていた先輩が口を利かせてくださったようです。 実は翌年のGoogleでのインターンも選考がやや正規ルートから逸れました。 MILAでのインターンもコネです。 周囲の温情、運、コネ、口コミ、学位、学歴。 PFNのインターン(8-9月)が終わった翌月に様々な援助を受けてICLRに論文を投稿したのですが、その経験が10月以降の卒論にかなり役立ちました。 卒論はこれまでで圧倒的に執筆に労力を割いた論文でした。 Major revisionが7回、もう少し細かい校正を入れると20版を超える書き直しをしました。 また、通訳の仕事の経験のある同期を雇って校正を手伝って貰いました。 トップカンファ相当の業績を持っていなかったので、卒論は確実に業績に結びつける必要がありました。 願わくば校正一回分の時間で公開コードもきれいなものに変えておいてほしかったですが、まあ良いです。 この頃になると知識獲得手段として教科書は主要なものではなくなりましたが、とはいえ教科書は効率の良いリソースの1つだと思いますので、読む時間をなるべく確保したいものです。 耳が痛い。

型システム入門 −プログラミング言語と型の理論
型システム入門 −プログラミング言語と型の理論

学科に食事の時など会うたびに型システムの話をしてくれた同期がいました。 あまりにその話をするのでそれをなるべく楽しめるようにこれを読みました。 とは言っても読んだのは半分程度です。 その後ろの章も例えばlambda cubeの話とかは何度か会話に出てきたので雰囲気はわかりますがちゃんとは理解していません。 ちなみにその同期も同じ会社に就職します。 本当はこの本は3年の頃に読めると良かったのですが、時間が足りませんでした。 この本自身は関数論理型演習の参考書籍だった気がします。

クラウドを支える技術 ―データセンターサイズのマシン設計法入門 (WEB+DB PRESS plus)
クラウドを支える技術 ―データセンターサイズのマシン設計法入門 (WEB+DB PRESS plus)

スパコンの配置などについて書いてある数少ない書籍の一つです。 講義で参考書籍になっていて購入したまま読まずに積んでいたのですが、PFNのインターンに行った後改めて興味を持って読みました。

大学数学の入門5 幾何学II ホモロジー入門
大学数学の入門5 幾何学II ホモロジー入門

多様体の勉強をしようと思って幾何学の講義を取ったら特異ホモロジー論の講義でした。 $R^n$と$R^m$を区別するにはどうしたらいいか、という話をテーマにした講義でしたが、もうあまり覚えていません。 いくつか講義をスキップした結果わからなくなったので、その部分をこの本(これは公理的ホモロジー論の本ですが)で補いました。 講義で出された演習がわからなかったりして、すごく久しぶりに教養学部時代の同期を頼ったりしたことを覚えています。 僕はそこそこ苦労したのですが、同期の競プロer(アホコラなどを解説してくれた人と同一人物)は講義に全く来ることなくそこまで勉強しているそぶりも見せず(実際競プロの練習に励んでいたようでそんなに時間をかけていないと思います)、 しかし試験ではきっちり完答して帰っていきました。

Markov Chains and Mixing Times
Markov Chains and Mixing Times

研究室体験の講義があり、そこで今所属している研究室に行った時に1ヶ月ほどかけて読めるだけ読みました。 MLaPPやPRMLでMCMCがよく出てきますが、ろくに勉強したことがなかったので学んでおきました。 後2つ研究室を周り、それぞれDensest Subgraph Problemの亜種とAsynchronous SGDについて取り組みました。

量子コンピュータ入門(第2版)
量子コンピュータ入門(第2版)

初回の講義で同期がどこまでが定義でどこからが性質かを質問した時に曖昧な返事が返ってきたことなどが原因でその後一定数が講義に顔を出さなかったことを覚えています。 格子暗号について数本論文を読んで対量子暗号についてレポートを書いたなあという記憶もあります。

代数学1 群論入門 (代数学シリーズ)
代数学1 群論入門 (代数学シリーズ)

特に必要性に駆られてはいませんでしたが、ろくに群論を学んでいないのはよくないなと思って勉強しました。

関数解析 共立数学講座 (15)
関数解析 共立数学講座 (15)

関数解析は使えた方がよいらしいということで勉強しました。 途中で複素解析の知識が必要になって、せっかくだからと学部二年で読んだ複素解析(アールフォルス)の既習の部分を読み返したら夏学期が終わってしまい、それ以降の部分はあまり手を付けられていません。 正確には修士1年で関数解析の講義を履修した時に講義範囲を見直しましたが、その程度です。 なのでこのリストに含めるべきかはやや微妙です。

GPUを支える技術
GPUを支える技術

高性能コンピュータ設計の基礎を書いたHisa Andoさんの本です。 ちょうどPFNのインターンが始まる前あたりに発売されたことを覚えています。

ロバスト統計:外れ値への対処の仕方 ISMシリーズ:進化する統計数理
ロバスト統計:外れ値への対処の仕方 ISMシリーズ:進化する統計数理

卒論でロバストネスを取り上げたので、指導教員から読んだ方が良いと言われて読みました。 卒論の内容にはそれほど関係ありませんでしたが。 研究室の先輩は卒論配属後にこのトピックでAISTATSに通していました。 その人は論文を出しながらもHigh Dimensionalシリーズを走破したりしてきちんと次への布石を打っていて、そのバランス感覚に見習うことが多いなと思います。

ガベージコレクション
ガベージコレクション

PFNのインターン説明会に行った時、CPythonインタプリタを読もう、ガベコレの知識が大事、などと秋葉さんに唆されて読みました。 某型理論の話が好きな友人がそれ以前にガベコレにはまっていた時期があって、その時にこの本の話を聞いていたと言うのも読んだ理由の一つです。 思い返すとCPythonのソースコードを読んでいた時期もありました。 何かコミットして爪痕を残しておいた方がよかったかなと今なら思います。

Reinforcement Learning: An Introduction
Reinforcement Learning: An Introduction

強化学習はあまり気合を入れて勉強したことはありませんが、研究室のゼミや研究、インタビューなどで必要になった時などを通して勉強しました。

その他

4年で存在した卒業研究以外の必修はコンピュータグラフィクスの講義でした。 研究室の古のライブラリを使って課題をやるか一から自分で書くかの2択だったので、後者を選択してThree.jsなどを勉強したことを覚えています。 GLSLも少し触りましたが、ほとんど覚えていません。 選択科目では自然計算、リアルタイムシステム、ユーザーインターフェイスなども履修しました。

修士1年

大学院に入ってからは海の向こうからも情報が送られてくるようになったので、 例えば指導教官のアイディアを実装しただけでトップカンファのベストペーパーの著者に名を連ねているような、業績を重ねるために自分より遥かにうまく立ち回っている人や、 学部生の時から引用数1000超えのヒット論文を複数出している才能にも運にも恵まれた化物や、 学生の間に引用数数万超えの論文を出していてキャリアにまったく不自由しない一方で、それと同時に億を超えるオファーを断ってしまうのに十分な資産を学生時代の投資で築いた全方位戦闘力の高い人など、 色々な人が目につくようになり、また時に彼らと話す機会を得たりするようになりました。 本当は彼らと同じ次元で楽しめるとよかったのですが、そうも言っていられないので、自分に可能で楽しめる範囲で堅実に取り組みました。 大学院以降は親からの仕送りなども受け取っていませんでしたが、周囲の温情や時流などのおかげで金銭的にはまったく不自由せずに済みました。 進振り時点で考慮していたことの一つなので全くの偶然ではないですが、それにしてもかなり時代に恵まれたように思います。 人生の9割5分くらいは運と環境だと感じます。

代数学2 環と体とガロア理論
代数学2 環と体とガロア理論

隔年で開講されている代数学の講義を履修して、その勉強のために購入しました。 一応勉強したものの演習不足を感じていた群論を復習したいと思って履修しました。 しかし群論は既知としてガロア理論の講義が始まってしまいました。 ちなみにこれは学部の数学科の講義なんですが、情報理工学系研究科はAまでしかない一方で学部の講義はA+まであるので成績表の見た目を気にする人は注意が必要です。 就活などで使用します。

Understanding Machine Learning: From Theory to Algorithms
Understanding Machine Learning: From Theory to Algorithms

カナダに2ヶ月ほど研究インターンに行っていた時に読みました。 僕の研究室などで機械学習の研究をする場合は、PRMLやMLaPPなどよりも優先度の高い本だと思います。 数学としての難易度は高くないので、学部2年あたりの暇な時期に読めていたらよかったなと思います。

独習PHP 第3版
独習PHP 第3版

このポストの執筆時点ではこのサイトはGitHub Pages上のjekyllで動いているのですが、それをWordPressに以降しようかと考えていた時期があり、そのためにPHPを勉強しました。 ICFPCの強いチームがPHPで簡易なダッシュボードを作成しているのを観測していたことも手をつけた理由の一つです。 実際にWordPressのdocumentも読んでWordPress版も作ったのですが、GitHub Pagesで十分だなと思って移行しませんでした。 時間の使い方が富豪的すぎて涙が出てきます。

その他

大学院ではほとんど講義を履修する必要がありませんが、それでも8つほどは履修する必要がありました。 信号処理、関数解析、線形代数、統計モデリング、クラウド基盤あたりを履修しました。 過去のツイートを見ると、TDDやアジャイル開発の書籍を読んだりもしていたようです。 DockerやAnsibleなどを使い始めたのは修士になってからだったと思います。

修士2年

インターンに行っていたので就活はかなり早く終わりました。 PFNからはコンピューターサイエンスの幅広い分野を意欲的に勉強している姿勢を評価していただけた印象を受けました。 Googleはインターンで無をしていた上に面接も反省点が多かったので落ちてもおかしくなかったのですが、何らかの評価基準のもとで及第点に達したようです。 海外PhDも現実的な選択肢でしたが、そこまでして取り組みたいアカデミックな研究テーマもありませんでした。 国際会議などでAIブームのおかげで向こう5年のお金には困らないから来るなら今だぞという話をされました。 この一年は研究室にいても研究より他のことに時間を使ったほうが良いのではとアドバイスされる始末でしたし、実際良い機会だったので色々と気ままに手を出していました。 しかし振り返るとあまり情報系の書籍を読んでいなかったようです。 やはり教科書はかなり知識獲得効率の高いリソースの1つだと思いますので、読む時間をなるべく確保したいものです(再掲)。 自分で書いていて胃が痛くなってきました。 今年度は学外のトークや論文査読などアカデミアっぽい仕事のごく一部にも触れてみましたが、それらはわざわざボランティアでやりたいようなものではなかったです。 とコメントを残しておくとEmergency Reviewなどが降ってきづらくなるかもしれない。 ある著名な学科の先輩はその実績と長文お断りメールの合わせ技で院生時代のあらゆる雑用をはねのけていたという逸話があります。

Googleを支える技術
Googleを支える技術

Googleにインターンに行った記念に読みました。 インターン前にこれを読んだり、中の技術で外に出ているものを触っておいた方がよりよかったと思います。 この本で参照されていた論文やこれには載っていないけれど社内では見たシステムの論文なども読みました。 Googleすごいなあという気持ちになります。 Googleに関して、元上司の上司は、皆不満は持っているけれどメタなプロセスがうまく回っていて同じ不満をずっと抱くことは少ない、という話をしていて、組織としても高度な場所なんだなと思います。

ビッグデータを支える技術
ビッグデータを支える技術

Apache Beamなどをさくっと使えるようになりたいという思いがあり(それっぽいもののC++版は使ったことがあります)、JVMを使っている言語を書くようにしたいなといいつつ随分経過してしまいました。 自宅で僕個人が扱う量のデータだと分散させるメリットはないのですが、スキルアップのためには非効率的なものも織り交ぜないとなという思いもあり、バランスが難しいです。

The Rust Programming Language
The Rust Programming Language

C++を使っていた部分をすべてRustに置き換えたいと言い続けて数年経っていたのでついに勉強しました。 とはいえRustで出ようと思っていたICFPCもRustで出てしまい、また諸々の置き換えも済んでいません。 時間がある時に少しずつ意識してコードを書いていこうかなと思います。 ICFPC2018の時にチームの人がサクっとWebサーバを立ち上げていて良いなと思ったことを理由にGoの勉強も平行して行いました。 とはいえ僕はろくにWebサービスを作ったりしていない一方、CS同期のトップ競プロerは気づいたらもう半年以上開発をしていて、これが差だよ、という気持ちになります。

データ志向アプリケーションデザイン
データ志向アプリケーションデザイン

同期と旅行に行った時の暇な時間などに読んでいました。 学部2年くらいでこの知識があったらよかったなと思う一方で当時の僕に重要性が分かったかは判断しかねます。 無闇に機械学習の講義を増やしたりするよりはこのあたりを学ぶ時間を確保する方がよほど優先度が高いと思います。

SDN and NFV Simplified
SDN and NFV Simplified

諸事情があって、ネットワークの本を読み直したり、SDN/NFVあたりを調べたり、k8sの通信周りを調べたりしていました。 ひたすら公式docを読んだりもしました。 この本はこの分野に関わる非技術者向けに書かれた本ですが、理解しやすくてよかったです。 このくらいの難易度で幅広い分野を学んでおきたいという気持ちがあります。 最終的には然るべき専門家に頼ることになったとしても、自分が関わる/使う技術は概要だけでもちゃんと学んでおきたい/いきたいです。

入門 監視
入門 監視

ネットワークの勉強をした流れで監視も齧るのは自然な流れな気がします。 情報系に関わるものに限らず可観測性の確保とログの管理は重要だと思いますが、いつも難しさを感じます。

詳解システムパフォーマンス
詳解システムパフォーマンス

就職先でこの周辺知識が必要な可能性があったので読んでおきました。 最初と最後以外はリファレンスとして使えという趣旨の話が書いてありましたが、各論の復習にもちょうどよかったので、結局通読する形になりました。

Database System Concepts
Database System Concepts

今読んでいる本です。 実は理情ではデータベースの講義がありません。 選択講義などで分散データベースについても触れているので全く学んでこなかったわけではないですが、幅広く基礎となる分野はどれもこの手の本を通読しておきたいという気持ちがあり、手をつけています。 春休み中には読み終えられるといいなと思っています。

積ん読

大量の本を入手したので、読まずに眠っている本や引き払った本などもまた大量にあります。 一部ここに載せておきます。 途中までしか読んでいない本でかつそれほどの時間をかけていないもの(1ヶ月未満など)もこちらに入れます。

  • High-Dimensional Probability An Introduction with Applications in Data Science
    • カナダにいた時に途中まで読みました
    • 帰国後、研究室の同期からゼミをしたいのでいい本はあるかとおすすめされたのでこれを紹介したところ採用されました、が、僕がインターンに行っている間にゼミが開始されたので参加できませんでした。悲しい。
    • 相対的に見て理論に興味があるわけではないので、就職後に理論をやるチームに配属された場合はその時また読めばよいかなという気持ちでいます。
  • Using MPI: Portable Parallel Programming with the Message-Passing Interface (Scientific and Engineering Computation) (English Edition)
    • PFNのインターンで分散深層学習チームに入ることが正式に決まった後、インターンの期間まで読めるだけ読んでいました。
  • ベイズ統計の理論と方法
    • 途中まで読みました
    • なんとなくこれは理解しておいた方が良い本、みたいな界隈の圧を感じることがあります。
  • Convex Optimization
    • 機械学習やってるなら当然読んでいるだろうという圧を感じますがまだ読んでいません
    • 研究室の輪講でも扱っていたようですがその期間は日本に居ませんでした
  • Hacker's Delight
    • バイナリ演算をする度に適宜参照しました。
  • 組合せゲーム理論
    • 学科の競プロガチ勢と書籍部に行った時におもしろそうだねという話になってそのまま購入しました
    • 春休みに勉強するわwなどと言った記憶がありますが購入後開いていません
  • Optimal Transport
    • 最適輸送はめちゃくちゃ流行っていました、が、まだ腰を据えて勉強したことがありません
  • 自然科学の統計学
    • 学部二年の頃に途中までは読みました
  • Deep Learning Book
    • 必要な時に参照しました
  • Virtual Machines
    • 某型理論の同期がVMの話もしたので入手しましたが手をつけてすらいません
  • ゲームエンジン・アーキテクチャ 第2版
    • ゲーム会社でバイトしていたので買いました
    • Unreal Engineをさわりたいと思っていたはずが結局さわらずに卒業しそうです
    • 高校生のころにInfinity Bradeをやりこんでいました
  • 再生核の理論入門
    • 未だにRKHSに慣れ親しんでいません
  • 場の量子論―摂動計算の基礎
    • たまーに論文に摂動計算とかでてくるのでこれを読み始めたのですが、前提知識が足りず諦めました
  • Computational Geometry
  • Algorithm Design