7,8月に参加したインターンの記録

 概要

7,8月にとある企業でソフトウェアエンジニアとしてインターンシップに参加しました。こういうの公に書いていいのかわからないので社名は伏せますが、割と成熟したフェーズに入ったベンチャーで、今も成長をぐいぐい続けている楽しい企業でした。

まとまって参加したインターンは初めてだったので今後の自分のために記録をします。若干ポエムが入っています。

 

何をしたか

使ったスキルセットだけ書いておくと

です。具体的なテーマは書けませんが、所謂コンピュータビジョン分野のとあるアルゴリズムを扱いました。

 

何を得たか

C++とCUDA、そしてGPUアーキテクチャに関して解像度が上がりました。特にGPUは何も分からん状態からだったのでキツかったですが、メンターの方々が神だったので何とかなりました。C++も、ある程度規模の大きいコードを書いたり、あるいは既存のクソデカプロジェクトに自分のコードを挿入したり、普段1人でやる規模ではなかなか体験できないことを体験できました。ロバストなコード・メモリや実行速度を気にしたコードを書く癖も付いたと思います。GitHubでのコミュニケーションやレビューの流れ、あとテストの重要性など、ソフトウェアエンジニアリングの基本的な考え方も身につけられました。

アルゴリズム面については、ちょっと論文読んだりしたけどお気持ち理解で終わってしまった感じがあるので、終わった後に↓の有名な三次元幾何の本を読んでいます。

 

www.cambridge.org

 

次に生活的なところですが、フルタイム(8h x 5日)で働いたのが初めてだったので、リモートとはいえ疲れました。これは頭をかなり使っているからで、適切に休憩を取ったり、持久力を上げたりすることの大切さを身を持って知りました。

夏休みだったので他にもやりたい勉強(積み本)がたくさんあり、それも消化したかったのですが、期間中は余り他の勉強に手を回せませんでした。仕事後に勉強してる社会人の人強すぎぃという気持ちになりました。

 

これを受けて、特にコンピュータサイエンスの基礎的なところ(アルゴリズムアーキテクチャ、OS、コンパイラ、データベース、ネットワークなど)と、物理・数学は学生のうちにできるだけ勉強しておきたいという気持ちが強くなりました。もちろん社会人になっても勉強は続けなければだろうし、むしろしたいのですが、時間が十分かというと全くそうではないと気づきました。

所属している学科的にCSのトピックと通信工学周りのトピック(信号処理・制御とか)は抑えられそうで、工学・物理に使う範囲の工学部的な数学の授業も結構あるので、授業を真面目にやっていれば最低限は身につくはずと思っていますが、独学も結構必要そうです。今の所専門はコンピュータビジョンの辺りにしたいなぁと思っていますが、CSの基礎と物理、あとできる限りの数学も頑張って勉強したいです。

今回は数学というより低レイヤな部分を頑張るという感じだったのですが、CVのアルゴリズムについて調べるときに、独学していた連続最適化の知識が役立って嬉しかったです。好きな(というか抵抗が無い)数学は幾何・線形代数・最適化・数値計算とかで、これらは割と順調に身につけられている気がします。ただ他の分野、特に基礎論や解析(厳密な)、整数などには苦手意識があり、克服したいと思っています。いわゆるパズルゲー(競プロの数学問題みたいなやつ)も昔から苦手で、ガチガチにコンプを持っているので、ちょっとは得意になりたいですね....。

最後に、メンターの方々の神対応を受けていて思ったのが、「言語化能力の高さ」です。アルゴリズムアーキテクチャの説明が非常に上手く、適切な抽象度と一般化度合いで表現し、自分でやるべきところは適切な資料を投げておく、というのが大変助かりました。自分もそうなりてぇ~。

 

今後の方針

インターンはもっと圧倒的技術的成長を遂げるもんだと思っていましたが、流石にそこまででは無かったです。3ヶ月とか半年行けば流石に違ってくると思うけど。でも十分な成果と成長を得ることができたと思います。

しかしそれ以上に、何が好きなのか・何がやりたいのかが分かってきたのがよかったです。日々の効率と楽しさが向上しています。上に書いたようにまずは学部の内にしっかり基礎をやって、長期休暇にはまたインターンに行きたいなと思っています。

大変楽しく素晴らしい企業で、少なくともチームとの相性は良かったので、また何かの縁があると嬉しいなと思っています。