2020振り返り

Thu, Dec 31, 2020

今年結局全然更新してないですが、年末なのでまとめ。 スタートアップと大学院の両立はかなりの気合が必要なことがわかった一年でした。

目次

  • ざっくり一年振り返り
  • 今年読んで良かった本
  • 各イベントに対する考察

ざっくり一年振り返り

1月

  • 大学院の願書を出した

  • レコメンデーションのPJの担当になる

2月

  • 院試

  • フリーランスから社員への転換

3月

  • コンピュータビジョン周りの論文を読み始める

4月

  • 関数プログラミング・統計的信号処理論・音響信号処理を受講する

5月

  • レコメンド機能をリリースする

6月

  • MLOps構築

7月

  • 期末試験で5時間数学を解き続ける
  • ベクトル検索の導入(Bert)

8月

  • 若干の炎上PJが始まる

9月

  • 炎上で勤務時間350時間超える

  • 脆弱性診断を初めてした

  • Expressに結構詳しくなる

10月

  • 会社組織がスクラム体制に移行し始める

  • RustのOSSにコミット開始

  • 多くの講義の受講が始まる

    • ネットワーク・OS・ソフトウェア設計論・パターン認識・画像情報処理・データベース基礎論

11月

  • DDDでリアーキテクチャ、リファクタリングが始まる

12月

  • DDDちょっとわかる。Kotlinの導入

  • 全フロントエンドTS化

今年読んで良かった本

技術書

一般書

各イベントに対する考察

所感

今年は大学院とリードエンジニアという二つの立場で振る舞う必要がありスイッチングコストが高いと週末になるたびに感じた。しかし、年の後半に差し掛かるとそれも慣れてきてTodoリストを捌くのが楽しくなっていく感覚も途中から出てきた。実際生活は土日の明るい時間は全て授業でアウトドアなどは行くことが一切できなかった。 これは良し悪しあるが、今年に関して言えば世界がコロナで停止したのもあってそれ程苦に思うことが無く過ごせた気がする。

大学院授業について

これは完全に正解な選択だった。Slackで基本的にやりとりを同級生たちとはするが、皆有名企業だったり優秀なエンジニアなこともあり会話のレベルが非常に高い。授業などの講義後の議論も熱心で、自然と会話に参加したくなるような熱い雰囲気がある。個人的には授業でCSの学びなおしがある程度できる点で非常に満足している。関数プログラミングでは如何に複雑なアルゴリズムを再帰処理で解くのかをひたすら考えた。統計的信号処理では尤度推定やホワイトノイズの意味などを厳密に学んだのでデータサイエンスの書籍を読む際の理解度が一段上がった。 オペレーティングシステム特論やソフトウェア設計論ではマルチスレッドプログラミングの歴史や実装、アルゴリズムの考え方を幅広く学ぶことができたのでメモリ管理などの低レイヤに対しての理解が非常に深くなった。 コンパイラの実装や設計などの課題もあり、CSで学びたかったがハードルが高かった部分を一気に学習できたと思う。

研究について

コンピュータビジョン関連の研究なので深層学習方面で行くか、アルゴリズムや物理シミュレーションで行くかを絶賛悩んでいる。バーチャルメイクは Make Transfer か 化粧品の物性を元にKubelka-Munk式などを用いた物理シミュレーションによる実装で実現できる。どういった切り口で新規性・未解決問題の解を見つけていくかが来年問われそうでちょっと心配。バックアッププロジェクトでGANを使用する研究も少し考えている。

リードエンジニアの感想

今までより視野を広げる必要が言わずもがな出た。マネジメント的な意味や技術選定のやり方も組織のフェーズや採用など、ソフトスキルな方面でも考えることが多くなったように感じる。他の部署のメンバーの動きや問題にも目を向ける必要があるので周りをどうやったらよく見ることができ、何が起きたら危険なサインか?のようなソフトスキルが習得できた。動き自体は去年から似たような動きをしていたが、周りからの期待など明確に変わったなと。そんな一年でした。

技術・スキルについて

レコメンド機能を追加した時にFactorization MachineやRNNなどに触れることができたので楽しかった。MLOpsについてもデータソースに対してAthenaでクエリを発行し、AWS StepFunctionsとAWS Batchを利用したサーバーレスなフローを構築できたので満足している。効果検証でTurkey法を使って分析し、有意差検定なども行ったのでデータサイエンス方面の知見が溜まった。年の後半は炎上PJでマルチテナント設計を経験できた。データベースがどう設計すれば複雑にならないか常に考えたので力が付いた感覚がある。それらの後に外部の有名な方にDDDを取り入れるための講義を行ってもらいながらUMLやシーケンス図をビジネスサイドのメンバーと一緒に作っていくのはプロダクト開発とはこれ!!というものだった。実際Kotlinでドメインモデルをコードに落とし、集約やRepositoryを意識して書けるようになってきたので来年は設計・実装両面で更に深く経験していくことになると思う。

読んだ本について

ドメイン駆動設計入門は聖書のレベルで読んでいる。何をすればいいコードにできるかが段階を踏んで記載してある。動的な言語だとDDDを行う際にInterfaceなどを言語の機能として定義しにくいことからKotlinに移行を開始したのもこの書籍や授業あってのことなので設計関連の書籍は定期的に読もうと改めて思った。

モダンオペレーティングシステムは授業の教科書だった。この本はプロセスやスレッド、スケジューラなど基礎的な部分はほぼ完全に説明されており、図解が大変わかりやすいので寝る前に少し読んで寝るというのを繰り返している。

実践Rustプログラミング入門もコンピュータサイエンスの内容を入門内容に混ぜて進んでいける書籍なので自分との相性が良かった。この本でRustが楽しくなってOSSにコミットし始めた。

他にも色々読んだが思い出した時に追記していこうと思う。

総まとめ

超忙しかったけどソフトウェアエンジニアとしてかなり重要な一年間だった。 来年再来年も大学院は続くので更に精進していきたい。