ganyariya の 2021 振り返り

はじめに

2020 年が始まったと思ったらあっという間に年末を迎えました。

このような出だしで去年も振り返りをしたのですが、今年はもっとあっという間に一年が過ぎてしまいました。
今は一生懸命修論を書いています。

そんなわけで、今年もまた ganyariya に関する一年の振り返りをしていこうと思います。

ganariya.hatenablog.com


振り返り

大学編

2020 年に別の大学院に移動し、2021 は M2 として過ごしていました。(別の大学院に移動した理由は、去年の記事をお読みください。)
2021 年は授業はなかったため、2020 年と比較してゆったりと過ごせたかなと思います。 その分、 2021 年は研究をがんばっていた?ようです。
といってもインターンがあったり、自分の好きな開発をしていたので進みは悪かったですが...。
それでも自分のテーマをなんとか掘り下げて、できるだけ研究を前に進めていました。

その結果、 2 回国内学会で発表、 2 回国際学会で発表できました。
また、来年の 2 月にも国際学会で発表します。
というわけで、学会で研究成果を発表するという意味では、かなりがんばった一年だと思います。(出来はだめだめですが...)

もし来年の修論がきちんと通れば、修士で以下のことを行ってきたことになります。

  • 国内学会発表: 3 回
  • 国際学会発表: 4 回 (long paper (12p), short paper (2p, 4p, 8p))
  • 学内発表: 3 回

修士として 2 年間研究をしましたが、あまり良い研究結果は得られませんでした(かなしい)。
それでも、自分で課題を見つけてアプローチを考えて実験するというのは、これからのエンジニア生活に活きてきそうな気がします。

このように研究に向き合えたのは先生のおかげで、本当に感謝しかありません...。
来年引退するときはなにか先生に贈り物をしようと思います(花がいいでしょうか...。食べ物もいいですね...)。

開発編

インターン

2020 年は、 某 3 社さんのもとでインターンさせていただきました。
一方で 2021 年は、内定先である会社さんのもとで開発インターン(内定アルバイト)を週 2 日ほど 3月ぐらいからさせていただきました。(来年 4 月の入社まで継続します。)

内定先はスマホゲーム開発やバーチャルライブ配信アプリ、メディア事業を手掛けている会社で、そちらのゲーム開発を行う子会社さんで働かさせていただいています。
内定アルバイトを初めた理由ですが、自分の技術力が少ないと感じることが多く、開発経験・技術力をもっと身に着けたいなぁと思ったためです。

大まかな業務内容としては以下のようなものです。

  • バックエンドのサーバー API を書く
  • GCP まわり少し触らしてもらう
  • TypeScript + React で企画の方々などが使うツールを作る

実際に働いてみるとサーバーサイドに関する基礎知識が全然足りないなぁとひしひしと感じました。
とくに、ネットワークや Linux, ミドルウェアなど、枯れた技術の基礎知識をもっと身に着けないといけないなと思いました。
フロント界隈などでは技術やライブラリの変化が激しいですが,ネットワーク・Linuxなどはおそらくあと 50 年は変わりません。
このあたりの基礎の基礎を真に理解しないとですね。

一方で、競技プログラミングの経験のおかげか、部分的な実装などは多少まともな作業が出来ている気がします(まったく出来ていませんかもですが... 当社比です...)。
クリーンアーキテクチャのお気持ちや、大規模なコードリーディング、 React、 TypeScript にも少しずつ慣れてきました。
働かさせていただくなかで自分の技術の弱いところと多少できるところが明確になったため、とても良い機会をいただけたなぁと思います。

来年はもっと技術力を身に着けて、面白いコンテンツで多くの人が少しでも嫌なことを忘れて毎日を楽しめるよう、一生懸命開発に向かいたいなと思います。

Writing

僕は記事を書いて人に読んでもらうのが好きで、2021 年以前も記事を書いていました。
具体的には、技術的な記事は Qiita、競プロの記事は Scrapbox、競プロ参加記などははてなブログで書いてました。

ただ、今年の 3, 4? 月ごろから Zenn に引っ越して記事を書いてました。
量は確保できましたが、内容の質が良くなかったのが懸念点です(研究と開発をしろという話ですが)。

多くの方に読んでいただけて嬉しい限りです。
来年以降は、もっと質の高い技術的な記事を増やします。
また、内定先が毎年開催している Tech Conf で登壇するなど、広報的な活動もしていきたいですね。

言語・ツール

2021 年は多少なりとも新しいツールなどを触れたのではないかなぁと思います。

研究で使っている Python だと以下のようなツール群を多少理解して使えるようになったので良かったです。

  • pytest (TDD)
  • pyenv / pipenv / poetry
  • nox / mypy / isort / flake8

新しく触った言語としては、前から気になっていた Deno / Nim / Go です。
といっても、 Nim と Go は競技プログラミングの A ~ D 問題ぐらいで使っているだけなので、エコシステムやファイル分割などはよくわかってないです。

TypeScript + React はインターンで触らしていただく中で楽しい!となり、今では生の JS が触れなくなりました。
ただ、 ESLint や Prettier の設定が面倒なので、Deno を基本的に使っています。

また、今年に入って tmux / neovim 環境に移行しました。(去年までは vim でした。)
問題点としては、Vim の KeyBind を適当に使いすぎなのと、たまにしか NeoVim を使わない点でしょうか...。
2022 年は、 NeoVim 環境にもっと身を浸すのと、Vim の操作をもっと効率的にしたいです。

2021 年全体で言語を見ると、競技プログラミングでしか触っていないですが Go いいなぁってなりました。
というのも、インターン先でクリーンアーキテクチャを意識した実装を見ると、インターフェースと DI すごいんご〜ってなったためです。
長いものには巻かれていきたいですね。

個人開発

インターンや研究で忙しく、大きな一つのアプリをローンチすることは 2021 年はできませんでした...(すごい反省です)
ただ、小さなアプリは色々と作っていました。

はじめに、自分の Web Page を Gatsby + TypeScript + TailwindCSS で作りました。
アニメサイトっぽい感じにする + シンプルな色にするのを意識しています。
結構いい感じな気がします...!

ganyariya.netlify.app

Deno で雨に打たれる恐竜の CLI を作りました。かわいい。
GitHub Star も結構もらえて嬉しかったです。

github.com

VSCode の files.exclude のテンプレートを作る CLI も Deno で作りました。

github.com

また、Text が Glitch する React Custom Hooks を作って、OBS に組み込むサイトも作りました。
ウェブ会議で一目置かれそうです(画面がうるさいので)。

github.com

そういえば、ツイートしかできない CLI を 1 月に Python で作ってました。

github.com

全体を通してみると、もっとウェブ系のアプリ作らないといけないですね。
DB・認証・API など、ウェブ系の技術を勉強しながら来年の 2 / 3 月は小さなウェブアプリ 1 つをローンチしたいなと思います。
このとき、 Firebase / Supabase やフレームワークなどを使わず、極力自分の力で作りたいなぁと思います。(フロントは Next.js で楽をします...)

競技プログラミング

今年一番後回しになってしまったのが競技プログラミングです。
今年の 3 月に ICPCアジア横浜大会 2020 と、DDCC2021 本戦に参加させていただきましたが、 それ以降競技プログラミングにあまり力を入れられていないです。

ganariya.hatenablog.com

https://www.discoverychannel.jp/campaign/ddcc2021www.discoverychannel.jp

理由としては主に 2 つあります。

  1. インターンが週に 2 日 研究が 5 日あるため実質休みがなく、過去問を埋める時間が取れなかった。
  2. 個人開発・インターン・記事執筆の方が楽しく、そちらに多くの時間を割いた。

このうち、特に 2 の理由がとても大きかったです。
というのも、これまで勉強してきたいろいろな技術と知識がようやく繋がってきて、思ったもの・考えたことが比較的実装できるようになったためです。
そうなると、必然的に個人開発とインターンが楽しく力を入れるようになります... (ひい)。

また実際にインターンで働いた中で、自分が仕事でなしたいこと競技プログラミングを照らし合わせると、必要なアルゴリズムとデータ構造の知識はすでに獲得できてそう?と感じました。
水・青色のレベルの知識があれば、必要なロジックや効率的な処理は書けるなぁと感じました。
一方で、データベース、ネットワーク、API といったコンピュータサイエンスミドルウェアの知識がボトルネックになっているのを痛感しました。

そのため、2022 年以降もミドルウェア系の基礎知識をもっと深める + 開発経験を増やす(個人アプリをローンチする)が第一目標なり、競技プログラミングは 2, 3 番目の優先度になりそうです。

それでも、競技プログラミングをやめることはないです。
来年からは ICPC の OB (JAG) に参加して風船配りのお手伝いをしたり、コンテスト・アルゴリズムの解説記事を丁寧に書くなど、競技プログラミングがもっと広まるような活動をできればなと思っています。

生活編

2021 年は、料理をがんばりました。
ハンバーグや餃子、牛丼など、家庭的な料理を練習しました。
というのも、おそらく 2023 年(どうなるんでしょう)に彼女と同棲する予定であり、料理などの家事をちゃんとできるようになりたいなと思ったためです。
来年は掃除・洗濯などの家事もこまめにやります。

2021 年の ToDO 系の管理は、 Notion + Google Slides を使いました。
具体的には、Notion で毎週のスプリントの計画を立てて、ToDO 表を作り進捗を管理していました。
Notion は自由にコンポーネントを配置できるので良きです(Trello だと横にしか伸ばせない)。

また、毎日昼に進捗を Slide にまとめて、毎週金曜日に一週間の振り返りをしました。

来年は仕事が始まるため、自分自身の振り返りの回数は減ってしまうと思います。
しかし、研究のような学校のタスクは減り、純粋に 自分自身のやりたいタスク のみ管理できることになります。

個人開発や基礎勉強、競技プログラミングなど、自分がやらないといけないタスクのみを来年は毎日・毎週・毎月管理して、少しでも技術力を磨きたいと思います。

ダメなところ

2021 年の生活習慣でダメなところは主に以下の 3 つです。というかほぼこれです。

  1. Pomodoro を途中で忘れる。(休憩中に作業したり、作業中に休憩したり。そもそも忘れる。)
  2. 朝起きたらすぐに作業を始めない。
  3. メイン作業中に少しでも邪念が入ると脇道にそれる。

2 と 3 がとくに直せない習慣になってしまっています。

朝起きると iPad を触ってニコ動のランキングを見るという癖がついてしまっており、来年はこれを治す必要があります。
また、邪念が湧いたらすぐにメモをして休憩中に見るなど、メイン作業から絶対にそれないようにしたいです。

趣味編

これまた忙しくあまり趣味もできませんでした。
研究に苦しめられています(許せません)。

ゲームは Ever17 や シロナガス島などをプレイしました。
すごい面白かったです。(Ever17ダンガンロンパ は人生で一番好きです。)

プロセカは結局少ししかできてないので、研究終わったらじっくりやりたいです...
あと Summer Pockets もまるでプレイできてないのでやります... (終わったら 月姫買ってプレイしよう...)

あと今年から、散歩が楽しくなり、趣味と化しました。
ラジオを聞きながらゆったりお外を歩いて、たまに犬や猫にすれ違うのが余生の楽しみになりそうです。

釣りやキャンプなどアウトドアの趣味を作りたいのですが、コロナ+東京に住むということを考えるとなかなか難しいのかなぁになりますね。(釣りは東京湾とかでもできるのかな...? でも釣り竿電車に持ち込めないか...)


来年の目標

ここまでの反省をもとに、2022 年の目標です。

4 大目標

2022 年全体の 4 大目標としては以下の 3 つです。

  1. 仕事の中でサーバーサイドの技術、とくに CI/CD・データベース・ネットワーク・セキュリティの技術を身に着けて、先輩方に少しでも追いつく。
  2. Web アプリを 1 つ、OSS を 1 つそれぞれリリースする。(フレームワークSaaSなどに頼らず自力で書く)
  3. データベース・セキュリティの基礎知識を手を動かして理解する。
  4. AWSクラウドラクティショナー / デベロッパー / LinuC1 を取得する。

1 に関しては、配属先がどこになるのかという問題もあるため、ふわふわした感じになっています。
配属先がどこになるにしても、技術力をいっぱい身につけて、少しでもプロダクトがよくなるようにコードを書きたいなと思います。
会社の Tech Conf や 言語の Conf で登壇するというのも盛り込みたいのですが、一年目だとあまり話すことが少ないのと仕事に慣れるよう必死になっている気がするため、 2 年目になっちゃうのかなぁって思っています。

2 についてはそのままですね。
個人の開発経験を増やしたいので、Web / Network / ミドルウェアが絡むように Web アプリを 1 から作ります。
また、 OSS が好きなので、30 Star ほどもらえるような OSS を作りたいです。

3 は 1 の仕事の中で意識しながら習得したいなぁと思っています。
枯れた技術・基礎は裏切らない(消えない)ので、コンパイラ・OS・シェルなども理解できるように、意識してお仕事をしていきます。

4 については、資格を取ることが好きであるため、ひさしぶりに資格勉強をして 2, 3 個取っていきたいなぁと思います。
お仕事だと AWS / GCP を使うことが多いと思いますが、まずは AWS から取ろうかなぁと思います(本などの勉強方法が確保されてるため)。
Linux ・ Network の技術も弱いので、 LinuC のレベル 1 をひとまず取りたいなぁと思います。

ただし、ここまで書いて かなり多いんじゃないか... という気持ちになっているため、しれっと 2 つぐらいに減っているかもです。
インターンでお仕事してみるとと、社会人時間ないなぁに....。

生活編

生活では、以下 3 つです。

  • お料理のレパートリーを増やす。
  • 朝起きたらすぐにご飯を食べて作業をする。(娯楽はすべて夜にする)
  • メイン作業中に邪念が生えても中断せずにやりきる。

開発編

4 大目標にかなり似ていますが、より細かく何がしたいかをまとめておきます。 優先度は上からなので、困ったら上からやっていきましょう。

継続系

  • CI/CD, Linux, Database, Web に関する基礎知識を深く理解する
  • 毎週 AtCoder に参加して復習して記事を書く
  • NeoVim / ShellScript / Console で作業する時間を増やす

単位系

  • Web アプリを 1 つリリースする
  • AWSクラウドラクティショナーを取得する
  • LinuC1 を取得する
  • ISUCON に参加する
  • AWSデベロッパーを取得する
  • OSS を 1 つ作る

やっぱり時間が足りない気がしてきました...。
授業と研究はないし、いけるか... (頑張りましょう)

最後に

今年一年、関わってくださった皆様本当にありがとうございました。
来年も何卒よろしくお願いします。

大学そして大学院でいろいろな人と関わる中で、自分の考え方や幸せと感じる瞬間が大きく変わってきました。
具体的には、自分が楽しいと思う時より、他の人が楽しんでいるところを見るのが好きになりました。(これも指導教員である先生のおかげですね...)
大事な人・環境を支えられる・サポートできるよう、もっと 大人 になっていきたいです。

ganyariya でした!

ganyariya.netlify.app