JavaScriptを有効にしてください

【超具体的に】慶應理工の4年間を振り返る

 ·  ☕ 34 min read

この記事は慶應理工アドベントカレンダー2022の7日目の記事です.

6日目 | 8日目

この記事の読み方/想定読者について

ご自由にお読みください。記事自体結構長いので、ご自身の興味のあるところだけ読んでもらっても構いません。目次から気になるところを見てもらえると嬉しいです。(もちろん通しで読んでもらうのが一番嬉しい。) 想定読者は特に決めておりませんが、B4以下の慶應理工生(特にJ科)の方々がこの4年間をどのように過ごせばよいかの一例を提示するつもりですので、慶應理工生で何となく路頭に迷った感覚に陥った方にオススメです。

キーワード : OSS開発・文学・小説執筆・Web開発・機械学習・精神疾患

はじめに

はじめましての方、はじめまして。2019年に慶應義塾大学へ入学し、その後情報工学科に進学して今現在B4、無事ストレートでの卒業ができそうなYuWdと申します。

ですが、入学してすぐ、4月5月あたりでしょうか、僕は大学生としての自分のあり方、生き方に苦闘する日々を過ごしていました。というのも当時の僕は、大学受験という大きな壁を自分なりにも何とかぶち壊し、受験生の頃には肌で感じていた、前へと前進しているという明確な実感を欠いていたのです。
… (中略) …
そのようにして僕は、吸収していったたくさん知識の追い風によって、思考が正しい軌道で渦を巻いていった、そんな実感を抱くようになります。
…いや、実はそれだけでは留まらず、正しく進んでいった思考の渦は、その軌道の先に隠されていた、生活の「ぼろ」をも掬い上げていきます。
(その話については、また今度機会があればします。デタッチメントとコミットメントに関わるお話です。)

引用: 【超具体的に】大学一年生としての2019年度を振り返る

B1からB2に上がる頃の私は、苦悩に満ちた生活を送っていました。
その様子は上にぶら下がっている記事が示す通りです。(上の記事が2桁RTされたのでこの記事を読んだことがある方もいらっしゃるかもしれません)
要は自分自身のやってきたことに自信が持てなかった。大学一年生という、ある意味で貴重なチケットを俺は無駄にしたんじゃないだろうか、そういう衒学少年らしい、憎たらしく陰惨たる思案を抱えて一晩中、日吉と元住吉の街を徘徊し、ふと「こんな記事を書こう」とひらめいたあの日のことを私は鮮明に覚えています。

しかし、結局の所私は、貴重なチケットを無碍にしたかどうかの判断を未来の自分へと投げ込んだ。いわば思考を放棄した。そして、これを数理最適化になぞらえ、思考の放棄を正当化することで、私の"陰惨たる思案"に終止符を打ったかのような文章を最後に叩きつけた格好で、この記事を終えたのでした。だから、結局のところどうだったのか、私の見た(かもしれない)「大局的最適解」はどんなものだったのか。今、宙吊りとなった最適解は私に牙を向いている。つまり、私は3年前の、暴力的に未来へ希望を託した自分自身に対して返答をしていないのです。

大学一年生として過ごした2019~2020の僕の行動は、ある意味失敗だったかなと思います。
もちろん、こうした生活を送ることがプラスに働いた部分も大きい ー しかし、前述の導入部分でも書いたように、生活を送っていく中で、それらの「ぼろ」は見過ごせないほど肥大化していたのです。
… (中略) …
しかし、それと同時にやはり、この「吸収と苦闘の一年」は成功だったと言えるのかもしれません。いや、より正確な言葉を用いるならば、「必然的で絶対的に必要であった」のでしょう。
僕はこの一年、僕が高校の時に望んでいた"理想の大学生活像"みたいなものを完璧に体現しているような気がするんです。ですが、それは局所的な最適解であって、大学生活全体としての最適解ではなかった。
想定している解が局所的かどうかは、実際にそこに立ってみて、ある程度先の形までもを自分で見てみる必要がある。そうして初めて、それがどうやらグラフ全体としての最適解ではないことが確認できるんです。
僕はその「思い込んだ幻想の最適解」の上に、実際に立ってみなければならなかった。そのプロセスこそがこの2019~2020の1年です。
デタッチメントではなくコミットメントへ、局所的最適解ではなく大局的最適解へ。B2の目標です。

引用: 【超具体的に】大学一年生としての2019年度を振り返る

またそれと同時に、あれだけ壮大な記事を書いた過去の自分に対する対抗心を起点として、記事には記事という形で手紙を書かなければならないという、ある種の使命感のようなものを胸の内に宿しているみたいなのです。
そういうわけで、この大学4年間をどのように私が過ごしてきたのか、どういう指針を標榜し、どういう行動原理を持って、その結果どうであったのかをここに記しておく必要がある。もちろん、これはただの自己満でしょう。しかし、これは因縁を持つ過去の私との対決でもあって、ある種の客観性を帯びている。つまり、読者は過去の私と現在の私の相対的なやり取りの「観客」であるのです。故に私は記事の粒度を調整し、想定読者の範囲を措定しておかなくてはならない。
したがって、過去の自分への「懇篤な回答」と「繽紛たる決闘」という「両極端の中心」に、ある程度の読者を抱えうる記事を書き、この大学4年間に対する"思案"に終止符を打ちたいと思います。

(つまるところ、過去の自分と決着を付けるつもりで記事書くけど、読んでもらえる内容をちゃんと書くよ、ということです。)

各学年における行動の指針

私は毎年、この年はこういう年にしようと指針を立てることにしています。ただ、指針が立つのがいつかはわかりません。1月かもしれないし、5月かもしれない。
逆説的ですが、後から振り返って「これはこういう指針を無意識に標榜していたのか」、そう思うこともあります。これを指針と呼ぶかは怪しいですが、少なくとも無意識レベルであろうと、私の場合は年度ごとの行動に一貫性があるようです。

ということで、B1からB4にかけての指針を以下に書いてみます


  • B1 : 「デタッチメント」
  • B2 : 「文学とコンピュータサイエンスを磨く」(CS基礎編)
  • B3 : 「Web開発・機械学習を磨く&仕事に熱中する」(CS応用編)
  • B4 : 「コミットメント」

それぞれについて軽く補足を加えて、次章からは具体的に話を進めていきましょう。 


  • B1 : 「デタッチメント」
    • 基本デタッチメント。とにかく一人で開発をする。
    • 学部一年でGitHubのスター数を130ほど稼ぐほど開発に邁進する日々を送っていた。
  • B2 : 「文学とコンピュータサイエンスを磨く」(CS基礎編)
    • 文学理論の勉強や競プロなどをやった。群論など、数学にも手を出し、足繁く日吉図書館(メディア)に通う。
    • 小説も書いた : 『ウサギちゃんは残酷な月
    • とにかく, 地盤を固める年度だと思って猛進した日々であった。
  • B3 : 「Web開発・機械学習を磨く&仕事に熱中する」(CS応用編)
  • B4 : 「コミットメント」
    • 初めて精神科に通った.
    • そして足繁く彼女の家に通う.
    • なるだけ人としゃべるようにしたり, 苦手なことになるだけ挑戦したり。
    • もちろん他のこともいっぱいやってるけど、主軸はコミットメント。

では、具体的にそれぞれの学年について見ていきましょう。

B1 : 「デタッチメント」

この時期は「デタッチメント」を標榜していました。宿痾のこともあって、とにかく人と関わらないようにしようと心に決めていたのです。
しかし、大学生活は集団戦です ─ 人づてに貰う過去レポ、他の学門の授業への参加など、人との関わりがなければどうしようもないことも事実。
そこで、最初は友達を大量に作るために、テニサーと国際系のサークルに入って友達を作りました。もちろん今でも交友があって、みな大切な友達ですが、何かイベントが発生するごとに「俺はいいや」といって、極力デタッチメントを心がけていました。(もちろん宿痾が故にですよ。俗に言う"メンドクサイ"奴・“ヤバイ"奴ではなく、病気だから仕方ないという理由です。) 昼飯に誘われるのが嫌だったので、極力1・2限は切って、3限から行くようにもしていました。

じゃあデタッチメントを標榜して何をしていたかというと、詳しくは下の記事を参照してもらえばわかると思いますが、数学と機械学習の勉強、それからとにかくiOS系統の開発に邁進していました。

当時のGitHubはこんな感じで、記事執筆時総スター130程度を一年足らずで獲得していました。

(ちなみに今はこんな感じ。総スターも500を超え、かなりrepo自体が成長しています。)

当時作ったものを箇条書きで書いておきます.

つくったもの一覧
  • iCimulator: iCimulator simulates camera functions on iOS Simulator with images, videos, or your MacBook Camera. (Swift)
  • PolioPager: A flexible TabBarController library with search tab like SNKRS (Swift)
  • CallSlicer : A tweak that enables your Apple Watch to show a third-party incoming call. (Objective-C)
  • YanagiText: A lightweight TextView where can be attached any UIView. (Swift)
  • MisskeyKit-for-iOS: An elegant Misskey framework written in Swift. (Swift)

B2 : 「文学とコンピュータサイエンスを磨く」(CS基礎編)

この年は、情報工学科への進学が決まった非常に重要な年です。したがって、CS(コンピュータサイエンス)の基礎を磨く必要があると思いました。それと同時に、「オートマトン」の存在を知ってからというもの、「思考」に対する興味が強まったのもこの時期です。(「思考」への興味こそが現在機械学習を研究している動機付けにもなっている)
「思考」を解体するには「哲学」か「文学」と考えた私は、「牡蠣フライ理論」から、より「創造性」へと近い「文学」を基準に選ぶことにしました。
したがって、この年は「文学とコンピュータサイエンスの基礎を磨く」というスローガンを引っ提げることになります。

【Computer-Science】

CSの基礎といえば競プロだろうと思った私は、AtCoderをはじめました。最初はPythonで、途中からC++に切り替え、無事レーティング水色まで到達することができました。(Highest: 1545)
競プロに関しては特にこれといって書くこともないのですが、やはり全然レートが上がらないこと、コンテスト中の失敗したらどうしようという焦燥感から、体中にストレスの鐘が鳴り響くモノであったのは間違いないです。毎日問題を解いて、にも拘らず、土日のいずれかにブチのめされ、夜中の三時まで復習に費やす、そういう日々でした。

また、毎年新しい言語を勉強しようと決めたのもこの年です。B2の年はRustを勉強し、AtCoderへのモチベも高かったので、スニペットを管理するツールをRustで作りました。

あとは、MissCatの開発にもかなり時間を使っていました。

こちらはかなりの時間を費やして開発しました。MisskeyをiOSで再現するのはなかなか大変なもので、簡単に説明するとSlackとTwitterを合体させたものを一人で作るようなものです。半年以上は掛かったのではないかと思います。
個人的には、iOS開発の集大成的な立ち位置に見ていました。というのも、B1の頃に作ったライブラリ(PolioPager, YanagiText, MisskeyKit-for-iOS)を全て使用しています。またMisskeyのWeb PushをそのままiOSの通知へと流すためにRFC8188, RFC8291を読み込んでprime256v1と言う楕円曲線暗号を復号するコードを書いたりと、当時としてはかなり高度なこともやっていて、ここにも集大成たる由縁を感じます。

ただ、今思うと実装に関してはゴミでした。当時からDDDに関する本なども読んでいたのですが、全く実践できず(する気がなく)、ただただゴミコードを量産してました。後に開発するアプリでは、この反省を生かして、様々なデザインパターンを使用するようになります。

つくったもの一覧
  • MissCat: An Optimized Misskey Client App for iOS. (Swift)
  • PortSnippet: PortSnippet monitors source codes and automatically generates snippets. (Rust)

【創作】

B2の終わりごろに三島由紀夫とT.S.エリオットに感化され、一遍の小説を書きました。
詩として内容を分解してみても楽しめるような、そういう物語を書いたつもりです。内容としては、エリオットの『荒野』を換骨奪胎した形態となっており、この作品を極限までバラバラにした状態から再構成して書きました。三島が言う通り「刑事訴訟」と同等のプロセスで書くことが目的だったので(これは村上春樹の影響もある)、結論は何も決めず、自動記述的に書いていきました。書いていくとなぜか不思議と結論へと収束していく。その感覚がどういうわけかとにかく快感でした。一つだけ書き方として決めていたことは、物語で主人公が走り出す直前の独白部分は太宰をモチーフに書いており、ストンと落ちて裏返っていくような、そういう突拍子のない自己開示をテーマに書いています。ちなみに、物語の内容自体は「創作」がテーマです。「何かを作るということ」それ自体をテーマにしています。そこらへんは是非拙作を読んでみて、読解してみてください!

「詩は一人によってではなく、万人によって作られなければならぬ」
by 詩人ロートレアモン伯爵

【文学】

次は文学です。過去の私の記事に倣って、B2の頃に読んだ本の一部を紹介してみようと思います。

隠喩・象徴とテクスト解釈

この本はかなり衝撃を受けた本です。詩とは何か、文学における隠喩とは何か、そういったことを教えてくれる貴重な一冊でした。
T.S.エリオットやウィールライト、それからジョン・ダンといった詩人における隠喩であったり象徴の殻を一つずつ割ってくれるような作品です。
もちろん、私自身の創作にもかなり影響を受けています。

memo: 「隠喩・象徴とテクスト解釈」

文学部唯野教授

この本はちょっと説明が難しいのですが、各章の前半でタダノ教授という教授がいざこざに巻き込まれ、後半には大学で文学理論の講義を行い、それもかなり具体的で読者に教示するような形式で書かれた物語です。文学理論の概略を掴むには非常に良い本だったと思います。目次を見ると概要がわかりやすいかもしれません。

目次

  • 第一講:印象批評
  • 第二講:新批評
  • 第三講:ロシア・フォルマリズム
  • 第四講:現象学
  • 第五講:解釈学
  • 第六講:受容理論
  • 第七講:記号論
  • 第八講:構造主義
  • 第九講:ポスト構造主義

文学論

有名なF+fの奴です。

凡そ文学的内容の形式は(F+f)なることを要す。
Fは焦点的印象又は観念を意味し、fはこれに付着する情緒を意味す。
されば上述の公式は印象又は観念の二方面即ち認識的要素Fと情緒的要素fとの結合を示したるものと云ひ得べし。

かなり近代科学を意識して書かれており、心理や社会学といった視点から文学を解体していき、後半は文学辞書的な意味的最小単位にまで名文をバラバラにしてしまいます。
非常に興味深く、面白かったです。ちなみにですが、「行李の底に収めたり」というこのブログのタイトルはこの本から来ています。

(余談: 大学受験で古典をやっておくと、こういう本でもスラスラ読めるようになるので、やはり大学受験における古典は重要でしょう)

文学とはあまり関係ないですが、以下の文章はとても印象に残っています。

「先づ人に伴ふて活動する実劇と、活人より切り離されたる人事上の議論と、何れが吾人の心に触るること強大なるかは論ずるを待たず、千百の恋愛論は遂に若き男女の交す一暫の一剰那を叙したる小説の一頁に及ばざること明かなり。世に一美婦に悩殺せられ、苦悶の極、自殺を計るは珍しからねど、「愛」なる抽象的性質を熟考して狂へるものは古往今来未だ聞かざるところなり。親のために川竹に身を沈め、君侯の馬前に命をすつるはさまで難きことにされども身を以て国に殉ずといふに至りてはその真意甚だ疑はし。国はその具体の度において個人に劣ること遠し。これに一身を献ずるは余りに漠然たり。抽象の性賀に一命を賭するは容易のことにあらず。もしありとせば独相撲に打ち殺さるると一般なり。故に所謂かく称する人々はその実この抽象的情緒に死するにあらず、その裏面に必ず躍如たる具体的目的物を樹立しこれに向って進み居るものとす。」

結局、重要なのは実体なのです。僕の小説にも同じような思想が滲み出ています。

ああそうか、僕は周りと違う何者かになりたくて、ただただ何かについて考えることでインテリを気取っていたんだ。僕は考える対象に、決して答えの出ない永遠の命題を選択し、例えそれに答えが出ないことを知っていたとしても、ただそれについて真剣に考えて、考えて、考えて、考え抜いた先にある答えの出ない悩みと苦しみを噛み締めて、その作為的なわざとらしい苦悩の道中に落ちている、陰鬱な甘い蜜をちゅうちゅう吸って苦しんでさえいれば、きっと他の奴らとは違った存在になれるんじゃないのかって、本気でそう思っていたんだ。一生涯、何かについて悩み、苦しみ、葛藤し続けていられるように、そして他のみんなと違う何者かになるために、決して答えの出ない自分自身というものを、その思考の対象の中心に据え、ただただ苦しんでいる自分に自惚れていただけの格好だったんだ。僕の悩みは他の奴らの悩みとは違う、僕の悩みは崇高で、美しく、神聖で、果てしなく、哲学的、普遍的、社会的に、どこまでも意味があるものなんだ、僕の悩みは宇宙の悩みだ、歴史の悩みだ、人間普遍のニーチェの悩みだ、そして、こんなにも深く、重く、真剣に、考え抜いてきたのに、全く答えにたどり着かないこと、それこそが僕が他の人間とは違う何よりの証左なんだって、そう信じていたんだ。そうさ、僕は似非インテリだ。ペテン師だ。ゴミ小説家だ。自分と他人を騙す詐欺人間だ。僕を哀れんでくれ。罵ってくれ。あざ笑ってくれ ───

引用 : 『ウサギちゃんは残酷な月

memo: 文学論

漱石を読み直す

文学論を読んだ後は、この本を読むと良いです。
というのも、『文学論』の構成について書かれている箇所があるからです。

ここまで見てきた所から、『文学論』の議論の立て方の原理がわかってくると思えます。意識という一つの場を、「印象」と「観念」の二極に引き裂き、その間の運動を問題化する。逆に「印象」と「観念」という通常の認識ではまったくかけ離れた二つの領域を、意識という一つの場でつないでいく。そして一つの言葉を、「印象」と「観念」の力関係が交錯する場としてとらえていく。これと同じような形で、具体と抽象、認識と情緒、微分と積分、差異と反復といった、位相を異にする、多様な二項対立的布置を一つにしつつ、一つのものを二極に引き裂いて運動化しプロセス化する、という認識方法が、『文学論』を貫いていることがわかります。

引用: pp.114-115

個人的に、この考え方にはかなり影響を受けています。

memo: 「漱石を読み直す」

中動態の世界

二項対立の議論が来れば、次はこれでしょう。

能動と受動の対立においては、「するかされるか」が問題になるのだった。それに対し、能動と中動の対立においては、主語が過程の「外にあるか内にあるか」が問題になる

これこそまさに、上の書が述べた「位相を異にする、多様な二項対立的布置を一つにしつつ、一つのものを二極に引き裂いて運動化しプロセス化する、という認識方法」でしょう。「意思」と「選択」、「権力」と「暴力」、非常に面白い書籍でした。

memo: 中動態の世界

詩の誕生

紀貫之の歌について、大岡信が解説しているのですが、その一文がとても印象深い。

「我が背子が 衣はるさめ ふるごとに 野辺の緑ぞ 色まさりける」(古今和歌集)

若妻が夫の衣を染めて、それを戸外で張っている、そういう季節に春雨が降る、降る旅に野辺の緑も色濃くなって(やはりこれ張って)くるというふうに、一つの歌にいくつか認識が重なり合って表現されている

古今和歌集以前のもっと、素朴な形の詩に対して、層を成して重なり会うイメージの群れに喚起される詩という、もう一つの詩が加えられたらしいのです。古今和歌集というのは、そういう意味で、日本の詩の中のはっきりと新しい言語意識の出発だと大岡は言っている。非常に興味深い議論です。

memo: 詩の誕生

文学をいかに語るか

memo: 「文学をいかに語るか」

「批評理論と社会理論 1: アイステーシス」

表現という観点から文学に接近してみる必要があると思い読みました。
第六章「自己表現と<癒し> ー <臨生>芸術への試論」(荒井裕樹) が面白かったです。第六章は安彦講平が精神科を中心に営む造形教室に通う「実月」という女性の絵・詩についてのお話です。

「学校にも通えず、働いてもいない自分が、「このまま社会や周りの人々から取り残されてしまうのではないか」という強い不安を抱えており、何かをせずにはいられない焦燥感にかられていたようである。かつての実月にとって、描くことは「どろどろした心の中身を吐き出すよう」で、とても辛く苦しかったという。特に自宅で孤独に描くことは、「自分と向き合わなければいけない宿題みたいな作業」であったという。」

引用: p127

そんな実月 ですが、「自分にとって、表現することは許されること」と言います。

「許される」とは、心の底に深い闇を抱えた自分のことを受け止めてもらえること、(…)、負の感情を抱えていることを、注意されたり、批判されたりするのではなく、苦しんでいる事実そのものを受け止め、認めてもらうこと

p137. 「自己が周囲に埋没し、塗り込められた世界だったのでないか。自己が<図>として<地>から分離できず、<場>の次元に押し込められて存在する」

p140. 「実月は、造形教室の人々が「批難も比較もせず、自分を受けいれてくれたことが嬉しかった」という」

私もB2かB3の社会学の授業で期末レポートに自分の宿痾がなぜ生まれたのかについて何万字も使って書いたのですが、社会学の期末レポートを書き終え正当な評定がかえってきた時、「ああ、先生が読んでくれたんだ」という思いがあった。そこには、<図>として<地>から分離していなかった僕の宿痾の輪郭が漸く浮いてきたような気分が芽生え、何かが許された気がしてとても嬉しかった記憶があります。

B3 : 「Web開発・機械学習を磨く&仕事に熱中する」(CS応用編)

B2までの授業は生ぬるかったのですが、さすがにB3にもなると授業が専門性を帯び、やや難解になってきます。そうした変化に伴い、さらなる成長に向け、まずは今現在の自分にあるもの、そして今自分に足りないものをリストアップしました。

ざっとリストアップするとこんな感じです。

  • 今の自分にあるもの
    • iOSの知識
    • 競プロ的知識
    • 機械学習の基礎 (及び数学)
  • 今の自分にないもの
    • Webの知識
    • SQL・Dockerによる開発経験
    • 最新の機械学習に対する知識

ここから、指針としてWeb開発と機械学習へ焦点を当てていくことになります。

【Web開発】

端的に申し上げますと、私はWeb系の技術をバカにしていました。アプリのようにネイティブにヌルヌル動くものこそ正義であり、Webは"ちゃちなもの"と、身勝手にも信じ込んでいたのです。それゆえ、Webの知識がないまま私はB3まで来てしまっていた。
しかし、それと同時に、Web系技術に疎いということが一つの強いコンプレックスとなっていたことも事実でした。そこで、B3の今こそWebに触れる良い機会だなと思い、SQLやDockerといった強力な道具とともにWeb開発をやってみることにしました。

手始めに最初は、AtCoderAlertというものを作りました。
こちらは、毎朝9時にAtCoderの進捗をツイートしてくれるサービスで、Nuxt + Typescript + Firebaseで作りました。フロントエンドとバックエンド両方とも自分で作ったので、Web開発のイロハを学ぶ良い時間となりました。



それなりに使われているようで、下の画像のようなやり取りを見たときは、なんとも言えない嬉しさがこみ上げてきました。



【仕事】

同時に、7月ごろからリモートでのお仕事がかなり活発になってきました。
業務内容はとあるSNSサービスを作るというもので、iOSのアプリからAPI・DB等のバックエンド、それからWeb版のフロント・バックまで、全て私一人で作り納品しました。(実は、B1冬頃から友人と共に法人を立てて受託業務をやっているのですが、業務が重なった結果こんなことになってしまったのでした。)このときの開発経験は、かなり力になったかなと思います。業務では特に指定はないものの、psqlやDocker、HerokuにAWSや、様々なデザインパターンなどを駆使しながら、なんとか開発を終えることができました。地味に、授業や実験で習ったことが仕事に活きたような記憶があります。

【サークル】

KCSというサークルでMastering Bitcoinを読む輪読に参加しました。輪読では楕円曲線暗号やらトランザクションやらP2PKHなど、ブロックチェーンの仕組みをみんなで学びました。個人的にはBloom filterやらMerkle Treeあたりが出てきたところが楽しくて、このあたりから「やはりブロックチェーンはCSの集大成なのでは?!」という謎のワクワク感に包まれた記憶があります。

【機械学習】

まず、春学期に友人と「はじパタ」の輪講をやりました。それと同時に、「ゼロから作るDeep Learning ❷」を読んで実装したり、「はじパタ」から決定木のコード(CART)を自分で書いてみたりして、理論と実装の両方を詰めていきました。 

また, この時期から機械学習の論文を読むのを始めました。最初はSequence to sequence learning with neural networks(NIPS14)に始まり、Neural Machine Translation by Jointly Learning to Align and TranslateからAttention is all you needなど、2014年からTransformerまでの系譜をたどった後、様々な論文を読んでいきました。

【研究室配属】

そうして機械学習の論文を読んでいると、ついに研究室配属の時期がやってきます。
正直、僕の中では機械学習かシステムソフトウェアの研究室か、どちらかの二択でした。
ただ、研究室選びは今後の人生の方向性を決める大事な行事ごとです。そこで、再考しても損するわけじゃないんだから、とりあえずゼロから考え直してみようじゃないかと思い立ちます。「〇〇しても損しない」という考え方は非常に重要です。

まず、研究室を選ぶ上で何を重視するかを以下のように決めました。

  • 自分の興味
  • 自分の戦える分野かどうか / 将来性
  • 研究室の実績
  • 研究室と教授の雰囲気
  • 入れるかどうか

次に、ハード, 通信, ネットワークは自分の勝てるフィールドじゃないなと思って選択肢から外し、インターフェイス系は単純に興味がないので外しました。

残りを見てくと、(一応頭文字だけで表記します)

  • mttn→ FPGA上で機械学習回したりする→ハードっていう制約がでかすぎて違うかも→バツ
  • hgwr→ 先生は好印象だが、自由研究みたいで嫌だ. →バツ
  • ymsk→ 個人的には入ってもいいかなと思ったけど, とある理由でバツ
  • situ→ とある理由でバツ
  • 孔明研→ 機械学習って将来性あるのかな? でも「数学やってると潰しが効く」とはいう. しかし卒論二回書くのやばそう. ただ実績はすごい. → 保留
  • kn→ 一番将来性ありそう. 実績もある. 保留.

となり、孔明研とkn研の二択まで絞りました。
そうして最終的には、研究室の雰囲気と、面接方式の違いによって孔明研への希望を決めました。

特に研究室の雰囲気を実際に見てみるというのは非常に重要です。今になっても思いますが、メンバーと馬が合うか合わないかは研究室での居心地を決める重要なファクターなので侮らないほうがよいです。実際に研究室を見学する際は一人で行くよりも友達を連れて行くと良いでしょう。私は友達と研究室を巡るLINEグループを作って、実際に研究室の雰囲気を見に友達と行きました。

面接方式も重要です。孔明研は書類+面談で配属が決まるので自分をアピールしやすい一方、kn研は雑談方式なのでアピールが難しい。裏を返せば、面接方式から教授が何を重要視しているのかがわかるため、教授の思想との相性を探ることができます。

そうして無事教授に選んでもらい、孔明研への配属が決定です。

【開発】

この年はOCamlを勉強しました。せっかくなのでOCamlで簡単なシェルを作ってみたり。


授業ではOCamlを使って自作言語とコンパイラを作りました。Ocaml + Lex + Yaccにアセンブリを吐かせるのは大変気持が良いものです。AtCoderのARC帯まで解けるレベルの言語を作ることを目標に授業に望みました。


また、孔明研の配属が決まってすぐ、CORSMAL Challengeというものに研究室のB3だけで参加しました。
その結果、3部門でトップ性能を達成し、B3のうちに国際論文を通すこともできました。

(* Equal contribution)



B4 : 「コミットメント」

もはや絶対に避けれられない宿命なのでしょう、コロナによる自粛が次第に解除され、ついにやってきました。そうです、研究室による社会性の要請です。3年越しに嵐が来たのです。デタッチメントを裏返し、自分の宿痾と向き合わなければならない日がついに来たのです。B4の指針は当然「コミットメント」です。社会性を取り戻し宿痾を霧散させるための運動として、徐々にコミットメントへと身を捻転させてゆく必要に迫られたのです。

アドカレを開催した理由

実はこのアドベントカレンダーを企画したのも「コミットメント」の標榜に端を発している節があります。何かを企画すること、人を集めることは分かりやすい「社会性」です。もちろん去年のやぱったーさんが始めて下さったアドカレ文化をこれから先も継承したい・継承すべく開催した節もありますが、一番はやはり「コミットメント」の影響です。

これはアドカレ1日目の記事でも申し上げた通りです。

話は戻る

話を戻します。コミットメントのために、まずは自分の宿痾と向き合わなければならなかった。そこで、まずは精神科に人生で始めて行ってみました。これがビックリ。精神科への通院がかなり功を奏しました。正直、薬がないと今の研究室・社会への適応は厳しかったでしょう。何事もやってみるべきなのですね。同じような悩みを抱えている人にはアドカレ2日目の記事が参考になるかもしれません。

ただ、なぜ私がここまでして「デタッチメント」にこだわってきたのか、そこに疑問を持たれる方もいらっしゃるでしょう。それはここではお話しません。私の母の死とモルヒネと高校3年生のときに付き合っていた彼女とのいざこざと、そうした複合的な結果から生まれた僕のどうしようもないミーイズムの結果です。

社会性を取り戻す上で、なるだけ人と喋ったり、苦手なことに挑戦したり、そうしたことを(できる限りの範囲で)やってきましたが、それらに加えて「アウトプット」も社会復帰の一環として行うことにしました。具体的には「このブログ」のこと、それから輪講資料などです。なるだけ記事を書いて「アウトプット」することで、なんとかエンジニアとしての社会復帰を行っていきました。「アウトプット」のネタについては、この記事を参考にしています。今やこの記事は私にとってのバイブル的な記事になっています。(「技術ブログが書ける開発をする」)

また、前述の通り、なんとか研究者(?)としても社会適応できないかと、輪講資料もインターネットの荒波に放り投げています。

例: Deep Learning without Shortcuts: Shaping the Kernel with Tailored Rectifiers


 

こうして、私は「コミットメント」への長い旅路を歩み始め、時には同じ轍を踏み、時には初期地点にリスポーンしながらも、着実に歩を進め「コミットメント」へと近づいています。(近づいていると信じたい)

【研究】

私の研究室ではB4の間に二回研究を行うという方針がありまして(順にミニ卒論・卒論と呼ぶ)、とある学会でミニ卒論の成果を論文にまとめ、 発表してきました。


 

また、共著論文がACCV22に通りましたので、B4の9月までに国際論文を2本、国内論文を2本出すことができました。 また現在卒論を執筆しており、卒論を国内学会・国際学会にそれぞれ一本ずつ投稿する目処がたったので、研究としては非常に順調に進んでおります。

それについ先日、私のミニ卒論の成果、及び作成したデモシステムがテクノモールでお披露目されるというまたとない機会もありました。デモシステムは実際に裏で推論を走らせてフロントと通信する形態を取っており、10ms程度で太陽フレアを予測することが出来ます。(実はこのデモシステム、本来は学会発表時に披露する用途で開発したもので、テクノモールのために開発したわけではないのが面白い)



【論文読み】

研究室配属前から論文は読んでいたのですが、配属後からは徐々に読むペースを増やしていきました。読んだ論文は時たま論文タグでメモをブログ上に投下しています。また、前述の通り輪講資料は積極的にspeakerdeckに投稿しています。

【開発】

研究と論文を読むのにかなり時間を使っていたので、開発はあまりやっていないのですが、主にWeb開発に勤しみました。私はトップダウン方式で勉強する方が好きなので(要は遅延評価式の勉強)、とりあえず思いついたアイデアは片っ端からメモっておきます。時間が空いたら、何らかの制約(例えばTailwindを使うなど)を自らに課して、必要な知識を勉強しながら開発していきます。今年はnote.comの記事をバックアップするツールだったり、arXivでの引用数を調べるサイトなどを作りました。

note-backup


arxiv Profiler

scrapbox-cli

また、この年はGoの勉強をしました。個人的にScrapboxをよく使うので、今回はGoを使って、モダンなScrapboxのCLI-Viewerを作ってみました。

【何かを作る事と批判】

何かを作り公開するということは、それなりの覚悟がいることです。時には批判もされるでしょうし、出来が悪いと罵られることもあるでしょう。私もB2の頃Computer Scienceの右も左もわからない駆け出しエンジニアとして、随分といろんな人から罵られてきました。(出来が悪いのは確かなのでぐうの音も出ないのだが。)しかし、批判や人の目を恐れていては何も出来ません。「〇〇が足りない」だとか「〇〇がクソだ」と言われたら、じゃあその人が私の代わりに代替物を作ればよいのです。あるいは代替物があるならそれを使えばよい。これはエンジニア至上主義でも何でもありません。創作に携わる人間だったらわかるでしょう、これはリスペクトの問題なのです。あらゆる創作にはリスペクトが必要なのです。多角的に考えられる人間だけが「批評」すべきです。「批判」ではありません。そう考えると、創作物を公開する恐怖心が段々と薄れてきませんか?視野狭窄な批判者など、暗渠に流しておきましょう。

作ったものたちへのリアクション

自分が作ったもの達が何百人、時には何千人ものユーザにリアクトされるのを見るのは非常に面白いです。ほとんど見ないですが、時たま検索して見てます。今では「また批判されてる〜」とか「使ってくれてありがと〜」とか、そういう、ゆるふわ思考で眺めてます。

MissCat



それなりに使われたり批判されたり

 

ソースコードを公開していると、このような嬉しいコメントが来ることもあります。


たまによくわからない勘違いを受ける
AtCoderAlert
かなりのユーザが使ってくれている
Note-Backup
たまには感謝されたり
CallSlicer
誰かが拡散してくれようとしたり
note
noteの記事や創作物が「いいね」をたくさんもらったり

手紙の内容は。

さて、私は前の章で、これは「因縁を持つ過去の私との対決」であり、「記事には記事という形で手紙を書かなければならない」、提示すべきは宙吊りとなった見えぬ最適解への回答であると述べました。

この記事自体が一つの大きな回答になっているのですが、次章にて「結論的回答」を述べたいと思います。そこで、再度、過去の私が書いた記事 ─ すなわち、過去の私が送った手紙の内容を改めて振り返って見ようと思います。

大学一年生として過ごした2019~2020の僕の行動は、ある意味失敗だったかなと思います。
もちろん、こうした生活を送ることがプラスに働いた部分も大きい ー しかし、前述の導入部分でも書いたように、生活を送っていく中で、それらの「ぼろ」は見過ごせないほど肥大化していたのです。
… (中略) …
しかし、それと同時にやはり、この「吸収と苦闘の一年」は成功だったと言えるのかもしれません。いや、より正確な言葉を用いるならば、「必然的で絶対的に必要であった」のでしょう。
僕はこの一年、僕が高校の時に望んでいた"理想の大学生活像"みたいなものを完璧に体現しているような気がするんです。ですが、それは局所的な最適解であって、大学生活全体としての最適解ではなかった。
想定している解が局所的かどうかは、実際にそこに立ってみて、ある程度先の形までもを自分で見てみる必要がある。そうして初めて、それがどうやらグラフ全体としての最適解ではないことが確認できるんです。
僕はその「思い込んだ幻想の最適解」の上に、実際に立ってみなければならなかった。そのプロセスこそがこの2019~2020の1年です。
デタッチメントではなくコミットメントへ、局所的最適解ではなく大局的最適解へ。B2の目標です。

つまり、私は

  1. デタッチメントからコミットメントへ移行できたのか
  2. 局所的最適解ではなく大局的最適解へたどり着いたのか

この二つの問いを時空の裂け目から突きつけられているわけです。

特に二つ目の問いは重要です。局所的かどうかということは、B1の1年間を起点として、そこからどれだけ山や谷を乗り越え、自分自身が成長し、様々な光景を見てきたか、ただ純粋にそれだけが興味の対象となるのです。逆に局所的な最適解とは、あの1年間をただ反復していただけの4年間です。

デタッチメントとコミットメント : 結論的回答

まず、現在の自分がどのような解に位置しているのかについて考えてみますと、俗に言うフルスタックエンジニアのようなことをしていたり、文学を勉強して小説を書いたり、また数学を嗜んだり、国際・国内論文で成果を出したり、それから対人関係といえば、きちんと恋愛をして1年以上も付き合った恋人がおり、また友人関係もある程度に良好でありと、B1の孤独で陰惨たる1年間を基準に見ると比較にならないほど、この4年間は本当に素敵な4年間でありました。したがって、確かに、大きな山や谷を乗り越え、美しき草木の彩る春野 ─ すなわち局所的でない別の最適解まで到達できたことになります。
しかし、コミットメントの問いへの成果は芳しくなかった。コミットメントに関する結論はこうなります ─ 「コミットメントへの移行は完遂できなかった。ただ60%は達成したと言えるかもしれない。」そう、春野を彩る草木の先端は仄かに霞んでいる。

けれども、コミットメントへと完全に移行できないのは自分の宿痾に起因するため、諦念へのある程度の妥当性を持っている。努力だけではどうにもできないことだとも分かっている。だから、そういう意味でもやはり、この今の自分、今の解はなるべくしてなった、大局的最適解なのだと思います。これがB1の自分への結論的回答です。

おわりに

私の4年間について、どうだったでしょうか。普通の4年間と思われた方もいるかもしれないし、ひねくれた4年間だと思った方もいらっしゃるでしょう。しかし、他人の感想など本当はどうでもいいのです。だって、これは自己満ですから。観客はいますが自己満は自己満です。人生を見る上で、主観も客観もありませんから、泥と糞にまみれた局所解の罠にはまらず、大局的に最適であったと、ただ自分がそう感じられればそれで良いのです。

ここから先は、これからの話。私は院進しますが、今までの比にならない程の大いなる社会性を大人の方々から押し付けられることでしょう。そしてその社会性に苛まれ、時には自分を殺めてしまう日が来るかもしれない。しかし、それでも良いのかもしれません。だって、B4の時の社会性の要請が私をコミットメントへと押し上げてくれたのだから。

毒をもって毒を制す。社会の毒には社会性の毒が必要なのでしょう。

終。

共有

YuWd (Yuiga Wada)
著者
YuWd (Yuiga Wada)
機械学習・競プロ・iOS・Web