大学生活振り返り

これは何?

  • 大学を卒業できたので,その振り返りです.
  • 印象に残ったイベント等を時系列順に書いています(一部時系列が前後するところもあります)
  • クリティカルな情報やそれに関するイベントは書かないようにしたつもりですが,削除するべき情報があった場合すぐに対応するのでご連絡ください.

ガイダンス

当時の弊学科は入学後すぐに1泊2日の大学関連ガイダンス兼懇親旅行みたいなのがあって,大学近くの旅館に泊まりました.
大学入学時点で(先輩・同期含め)知り合いが一人もいなかったので,「なんとしても知り合いを作らねば…」となってトランプとかオセロを持って行きました.
結局話しかけるタイミングを失ったり,他の人が持ってきたもので遊ぶなどしたりで一度も使わなかった記憶があります(悲しいね).
ガイダンスでは「気を抜いてると留年するで!」みたいなことを言われた気がします.当時自分の学力にかなり疑問を持っていたため,怖え〜となっていました.
他に記憶に残っているのは,旅館での夕食が想像の10倍くらい豪華だったことと,2日目に電力会社の施設を見学したことくらいで,全体として楽しかったです.

サークル

サークルには入りたいと思っていたため,入学直後にコンピュータ部に入りました.
基本的に部室に集まって雑談しながら各自パソコンをカタカタする感じで,たまに近所の子供達へプログラミングを教えに行くなどしていました.
また,サークル経由で学内バイト(研究室で使うプログラムを作成する)みたいなことを先輩としていたのですが,そこで与えられたタスクがかなり重く,半年くらいで辞めてしまいました.これは自分の中でかなりトラウマになっていて「僕は本当に社会でやっていけるんか………?」と不安になった記憶があります.

1年前期

ガイダンスが無事に終わり,本格的に大学生活が始まりました.
一年前期はまだ情報科学を扱った授業は少なく,linux上での操作を覚える授業があったくらいでした.元々Ubuntuを使っていたのでかなり余裕を持って取り組めていたと思います.(とはいえ知らないコマンドや操作方法も多くて,毎回「なるほどな〜」となっていました). この授業の中で Emacs を使った実習みたいなのがあって,「Vimとの強さがネットで議論されてるやつや!」と一人で盛り上がった記憶があります.
大学入学前はコンピュータや数学などの理系分野に興味を持つ知り合いがあまりいなかったため,授業でそれらの用語が話されるたびにテンションが上がっていました(最悪オタクすぎる).
1年前期で特に面白かったのは一般教養科目の「熱と流れ」という講義でした.毎回熱力学・流体力学の色々な話題をオムニバス形式で紹介していくスタイルの講義だったのですが,それまで全く触れたことのない分野だったのでひたすら「おもしれ〜」となりました.
その他にも,線形代数などの所謂大学数学の講義を,「これが†大学の講義†か…!」と思いながら受けていた記憶があります(どれも大学の講義ではあるんですが).

競プロを本格的に始める

大学に入学してから,競技プログラミング(特にAtCoder)を本格的に始めました.
元々CodeIQを少し触っていたのですが,他人と競い合うというよりはコンピュータを使って面白い問題を解きたいといった部分が大きく,AtCoderには(名前は知っていたものの)なんとなく手を出していませんでした.
大学入学後にサークルの先輩が競プロをしていると知り,せっかくだから僕も本腰を入れてやってみるかと思い立ったのがきっかけです.
当時はまだABCが4問体制だったため,早解きでもそこそこレートを得ることができ,それが続けるモチベーションになりました.
また,ICPCという単語を聞いたのも大学に入ってからで,当時は「せっかくだから1回くらいは出てみたいな〜」とぼんやり思っていました.

夏休み

1年前期が終わり,大学生初めての夏休みが始まりました.が,この夏休みは免許を取りに車校に行っていた記憶しかありません.
「大学生のうちに免許は取っといたほうがいいだろうな〜」とか思って入校したんですが,想像以上に大変でした.
とはいえ免許証を手に入れたときはかなり嬉しくて,「免許を取れるくらい歳を取ったのだなあ」としみじみした記憶があります.

1年後期

1年後期が始まりました.ここで初めて簡単なプログラミングをする講義が登場しました.とはいえプログラミングを経験している人ならかなり余裕を持ってついていけるような内容だったため,あまり「情報系の授業を受けている」という感覚はありませんでした.
この学期の講義で特に印象に残ったのが「対称性と微分方程式」という一般教養科目で,びっくりするくらい内容が難解でした.言語は日本語のはずなのに,何を言ってるのかわからないと感じたのはこれが初めてでした.この時点で微分方程式自体あまり理解していなかったこともあり,大学で受けた講義の中で一番必死で取り組んだ確信があります.

他の競プロerと出会う

大学1年目の12月,AtCoderの順位表に弊学所属の黄コーダーを発見します.leaf1415です.
これを見つけたとき「き,黄コーダー!?」と思わず声が出た記憶があります.それまで僕の知っている弊学の競プロerで,水色より上の方は存在しませんでした.
かなりびっくりしたと同時に「大学生活のどこかで一度合ってみたい」と思いました.当時僕は所属欄を空白にしていたので,取り急ぎ所属を University of Fukui に変えたことを覚えています.
後日Twitterでりーふさんらしき人からフォローされました(かなり嬉しかったです).とはいえこの時点ではオフラインであったことはなく「顔も名前も声も全くわからない,謎の強プロer」というイメージでした.
りーふさんと実際にお会いしたのは日経コンの懇親会時です.当時僕は奇跡的に懇親会への参加枠を手にしており,本戦に出場したりーふさんと懇親会で会うことになりました.
また,同じ大学erのえだまめさんともこの懇親会でお会いすることになりました.普段はみんな福井で生活しているのに,初エンカが東京だということにかなり面白さを感じた記憶があります.
その後,えだまめさんからの紹介で,なゆたさんとも知り合いました.この方たちと2019~2020年のチーム戦コンテストにかなり出た気がします.それまでは基本的に一人でプログラミングをしていたので,チームで一つのコンテストに出るというのは新鮮で,とても楽しかったです.

2年前期

2年前期から徐々にプログラミング/情報工学の授業が増え,盛り上がってきた記憶があります.特に,プログラミングの講義では,関数呼び出しの際スタックがどのように積まれるかのような低レイヤの部分にも若干触れていて,おもしれ〜となった記憶があります.
この講義で得た知識は,後述するコンパイラ作成の際にかなり役立ちました. 他にはある講義で「英語の論文を読んで,その内容を日本語でまとめよ」みたいな課題が出てひょえ〜となっていました.その課題はチームで取り組んでも良かったのですが,当時謎の反骨心があり,「一人でやってやる…!」と思い立ち地獄を見た記憶があります.難しい課題は(可能であれば)協力してやるべきだと気付きました(それはそう).
また,この年に初めてICPCに出ました.コンテスト終了後のお疲れ様会で,解けなかった問題の解説を聞きながら「あああああああああなるほどなあああああ」みたいになったことを覚えています.

夏休み

2年生はどちらかというと夏休みにかなり(当社比)頑張っていて,低レイヤを知りたい人のためのCコンパイラ作成入門コンパイラブック)を読みながらCコンパイラを書いていました.
もともとコンパイラにはかなり興味を持っていて,「プログラムを生成するプログラムってメタ的でかなり面白いな…でもどうやったらそんなことができるんだろう」となって調べ始めた記憶があります.
最終的にCのメチャクチャ小さなサブセットのコンパイラができて,数独を解くプログラムをコンパイルして実行できるまでになりました.
その頃には夏休みが終わり,目標としていたセルフホストは達成できずでした.

2年後期

2年後期に実験が始まりました.複数のテーマがあり,基本ペア or チームでやっていく感じだったんですが,その中のペアを組んで取り組む課題で後のICPCチームメイトと出逢います. 課題は「レゴのマインドストームを使って,何か面白いものをつくれ」というもので,最終的にマインドストームの液晶部分と付属していたジャイロセンサを利用して,3D迷路(マインドストームスマホのように手で掲げ,その場で回転するとジャイロセンサが反応し液晶状の表示も回転する.前進はボタンで行う)を作りました.
個人的には二人で協力しつつ,面白いものが作れたのでかなり満足でした.レゴのブロック要素は全く使っていませんでしたが….
そのほかの講義ではデータ構造とアルゴリズムという授業の演習(与えられたプログラムを時間内に作成する)が金曜日の1限にあったのですが,一番疲れている曜日の初っ端からプログラミングをするのはかなりヘビーに感じました.
それでも,その頃にはAtCoderのコンテストに定期的に参加する程度にはプログラミングをしていたので,比較的余裕を持って取り組めたと思います.
年末に大学の先輩であるくま⚡️さんとお好み焼きを食べに行きました.twitter上でしか話したことがなくかなり緊張してたのですが,実際に会ってみるととても良い方でした.
お好み焼きはくまさんが見つけてくれたお店で食べたのですが,とても美味しい&&当時住んでいたアパートから近かったため「こんなお店があったんか」と驚きました.

3年前期

3年生前期はなかなか始まりませんでした.コロナの影響で学期の開始が遅れたからです.
当時は「なんか大変なことになってるな…」と思いはしたものの,まさか現在に至るまでこの影響が続くとは思いもしませんでした.
そのうち「今学期は基本オンラインになる」との連絡が来て,講義で使う仮想環境一式が入ったUSBが送られてきました.当時は実家に帰省していたので,そのまま授業を受けることにしました.
この時受けた講義は特に問題なく進行したのですが,実家で,かつ自分のパソコンを使って受講するのは初めてだったので,なかなか集中して取り組めないこともありました.
また,受けた中でかなり無を感じる講義があり,少し厳しい気持ちになったりもしました.一般には楽単の部類に入っている講義らしくて確かに楽だったのですが「本当にこれで単位が取れて良いのか…?」みたいなことを思っていた記憶があります.
この時受けた授業で特に面白かったのはJavaを使ったGUIプログラミングの講義で,最終課題として,各人が思い思いのGUIプログラムを作って発表するというものがありました.
自分の想像以上に凝ったプログラムが発表されていて,とても刺激を受けました.オンライン授業で人との関わりが普段以上に少なかったため,いろんな人の発表が見れて普段以上に楽しかった記憶があります.

夏休み

3年目の夏休みはオンラインでインターンをしました.当時の様子は社内ブログに載せていただいています.
やったことは上の記事の通りなんですが,これが学内バイト以来の「プログラムを書き,お金をもらう」という経験であり,(個人的には)ある程度形になるものを残せたため,かなりの成功体験となりました.
また,コンパイラ作成時にかじった構文解析の知識がこのインターンで活かせたため,その点でも良かったと感じています.

インターンの他にも,セキュリティキャンプに申し込んでいて,そちらにも参加することができました.これもオンラインで,夏休みの最後の方〜後期の初め頃までの開催でした. Cコンパイラを作成するコースを受講したのですが,同じ受講者や講師・チューターの方が強い人ばかりで(特に,講師の方の一人は上で紹介したコンパイラブックの作者でした)とても刺激を受けました.
ただ,開発の進捗の面では(多少機能の拡張はあったものの)キャンプ前に想像していたよりは成果が出ませんでした….
2年生の頃に書いたコードをベースにキャンプ中の開発をしていたのですが,これがかなり良くありませんでした.当時の自分が何を思ってそれを描いたのかを完全に忘却していて,「なんやこのコードは…」とひたすら唸っていた記憶があります.半年前の自分は他人なのだなあとここで痛感しました.
この辺りから,「自分は過去の物事を自分で思っている以上に忘れるのだから,未来の自分に対して今やっていることのログを残すのが大切」という意識が(それを実践できているかは別として)生えたように思います.
進捗としてはぼちぼちでしたが,キャンプ中に強い人たちから直々に教えてもらったり,他のセキュリティに関する講義を聞けたりと,今後の人生を変えるような経験ができたと感じています.

3年後期

3年後期が始まりました.卒研配属直前の学期ということもあり,難しい講義が多かった印象でした.それでも内容的には今まで受けた講義や個人的なプログラミングの経験を活かせば理解できるものがほとんどで,「何一つわからん………」みたいな講義はありませんでした.
コンピュータグラフィックスの講義で,自分で3D図形を描画するプログラムを作成する課題があり,それがかなり面白かったです.学んだ線形代数の知識を頼りにプログラムを書いて,実行すると思った通りに三次元の像が描写されるという体験はかなり楽しいものでした(実装途中ではバグらせまくっていて,めちゃくちゃな画像が表示されたりもしましたが).

また,この年もICPCに出ました.当時の感想ははてなブログにあります.この記事中にもありますが,当時の僕のムーブがひどく,「やってしまった…」となっていました.
それでも,2年連続でチームを組みICPCに参加できたことはとても嬉しい経験でした.

サークルの解散

4年生になり,研究が本格的に始まる前に,部長を引き継いだコンピュータ部の解散手続き(部員不足による)をしました.
部での活動で感じたことや解散に至った経緯は(自分の中で折り合いがつけば)またどこかに残したいなと思っているのですが,個人的な感想としては.

  • コロナ以前から部員が少なく,これ以上部員を減らしたくなかった
  • そのため,活動のハードルを下げ,脱落する部員を少なくしようとした
  • その結果,コンピュータ部というより単なる雑談を行うサークルとなってしまい,部としての存在意義が薄くなった
  • その結果,新入生に部としてのアピールがしにくく,さらに人が減った状態で最初に戻る

という悪循環に陥っていたなあと感じています.なんとかしないといけないと思いつつ,結局何もできませんでした.
最後の1年は僕ともう一人の部員でひたすら雑談しながら個人の作業をするみたいな感じになっていて,かなり申し訳ない気持ちでいました.
ただ,これが本当に誰もいない状態だったら本当に苦しかったと思うため,もう一人の部員にはとても感謝しています.

解散するときは正規の手続きを踏み,きちんと解散をしたいと思っていたため(それはそう),大学とのやりとりにはかなり気を使いました.
コロナの影響でしばらくサークル等に入れなかったこともあり,5月に解散届けを出し,最後の作業が完了したのは9月でした.
書類仕事以外にも部室の清掃をする必要があり,もう一人の部員と分担しながらこなしたもののかなり大変でした.
「これを一人でするのは絶対無理だわ…」と思った記憶があります(OBの先輩たちを呼べばよかったのですが…).

院試

4年生の夏に外部の院試を受けました.
外部院試という制度の存在自体は知っていたのですが,なんとなく自分からは縁遠いものに感じており,研究室に入る前までは現在の大学の院へ進学するつもりでいました.
しかし,配属先の研究室のボスが外部院進学をされていて,そのボスの話を聞くうちに「別に特別なことはなくて,申請すれば誰でも受けられるものなんだな」と心持ちが変わりました.
また,卒業研究で僕は研究室の主テーマから若干離れたことをやる予定でいたため,「今の研究分野を深めたいなら,別の研究室を探すのもありだなあ」と外部院進に傾いた記憶があります.
そんなわけで各大学の院進学説明会に参加し,良いと思える研究室を探し,その大学院+自大の大学院の院試を受けました.
ただ,外部の院試は受かると全く思えなくて「せっかくn万円払ったのだから,試験時間の間椅子を温めさせてもらうか……」みたいな気持ちで会場に行きました.
その後,本当にありがたいことに希望する外部院への入学が許可され,大きな山場を超えました.(これは罠で,後の入学手続きにめちゃくちゃ苦しめられました).

ICPC

大学4年目にもICPCに参加することができました.当時の様子ははてなブログに書いているんですが,大学生活最後にして予選を突破することができました.
正直なところ(僕がこの年はあまり競プロをできていなかったこともあり)予選突破できるかかなり不安に思っていたので,本当に嬉しかったです(チームメイトが強かった………!). 初めて参加したアジア予選でも最初の2問を解くことができました.正直もう一問は解きたかった…となりましたが,それでも最後にこの大会に参加できて本当によかったです.

研究

大学生活最後のイベントであるところの卒業研究をしました.僕の学科では4年の4月に研究室へ配属があり,そこから一年間卒業研究に取り組みます.
僕はスパコンで動作するプログラムを実装し,その性能を評価する類の研究をしたのですが,かなり大変でした.
並列プログラミング自体未経験+内部で用いたライブラリの日本語資料がほぼ存在しない+プログラムが実行されるまでにかなりの待ち時間がある(実行結果を見ながらのデバッグが難しい)などがあり「僕は本当に今年卒業できるのだろうか…」とひたすら疑問に思っていました.
また,得られた研究成果を卒論という形に落とし込むことも大変でした.伝えたいことを伝わるように書くのが本当に難しく「もっと長い文章を書く経験を積んでおけば………」とかなり後悔していました.
それでもなんとか卒論を書ききり,卒論&学会発表をし,学位と学長表彰を得ることができました.大学生活終了です.

大学生活を通して

入学当初は「4年で卒業できるんか………?」とひたすら不安に思っていたのですが,蓋を開けてみればとても良い結果に終わり,満足しています.
また,競プロや大学の諸々を通して(ここに名前を載せていない方達も含めた)多くの方と知り合えたのは本当に幸運だったと思っています. ここでは書かなかった/書けなかったこともあり,大変な思いをすることもありましたが,総じてとても楽しい4年間でした.
修士課程も頑張ります!