プログラミング,研究,進路,インターンについて2020年を振り返り,来年の目標をざっくりと立ててみました.
プログラミング(学習, 個人開発)
2020年に勉強したことや開発物を一覧に並べてみました.
勉強したこと
開発物
2020年前半はメシガイドという飲食店検索ができるLINE botや数独を解いてくれるWebアプリなどのアプリ開発の他,dotfilesを作って新しいPCでの環境構築を楽にする取り組みも行いました(dotfilesの作成が一段落したのでまとめる).
2020年後半はUdemyでGCPを勉強したり,GitHub Actionsでアプリのデプロイの自動化に取り組んだり,さらに勉強したことを活かしてGoogle App Engineで動く技術ブログを作ったりしました(Hugo+GAEでブログを作った). また,OAuthのサーバーサイド実装練習(Oauthに入門してTwitterログインを試す)やテスト駆動開発の勉強(「テスト駆動開発」を読んでサンプルコードをGolangで真似してみた)なども行いました.
↑GitHubのコントリビューションは804でした(12/26まで). AtCoderで1日1問解いてコミットを重ねていたのを除いても,平均して1日1コミットは超える計算になります. 薄いながらも草で埋め尽くされているのは達成感がありますね.
競プロ
今年,AtCoderのレートは761→1137 (highest: 1149) になりました.
何度か停滞しましたが,その度に過去問を解いて実力を貯めてレートに還元することを繰り返し,着実に上げていきました. グラフを見ると,今再び停滞期に入りそうな予感がしています. 苦手なDPの克服と蟻本の読破が目下の課題です.
↑AtCoder Problemsを活用して日々解いた問題のmax difficultyです. 1日1ACを3月上旬に始めたことがわかりますね. 12月1日にStreakが264日(Longest Streakランキング206位!)で切れましたが,これは「問題を解いたのに提出忘れ」事件によるものなので実質的にStreakは継続しています. 今は水色diff以下の問題はほとんど解いてしまって,簡単な問題は緊急時のStreak繋ぎのためにいくつかストックしている状況です.
ABCの古い問題から青色diffにも挑戦してはいますが,やはり難しくて解説ACしてしまうのがほとんどです. ただし解けなくても紙に書いて最低限は考察してみたり,解説pdfやブログを読んで自分で考えてコードを書いたりは心がけています. コンテスト中の考察力・コーディング力を上げるための訓練です.
研究
4月からデータマイニング系の研究室に所属しています. 「データマイニング」とは無数のデータから新たな発見をする研究分野で,画像の異常検知やテキストからの情報抽出など幅広く機械学習を適用します.
研究をやるならアプリ開発系か機械学習系かとは考えていました. これといってやりたいテーマがあるわけではないですが,逆に言えば何でもやってみたいというわけで,そういう意味ではピッタリなんじゃないかと考えて今の研究室を選びました.
実際入ってみると,選択肢が多すぎるが故に自由度が高く何をやろうか迷ってしまうことに気づいてしまいました… 最初は何もわからない状態なのでそういうものとは思いますが,その中で自分のやりたいことを見つける過程もいい経験になるのではと前向きに考えています.
4月からの所属でしたが既にコロナ禍で,B4と先生で最初に1回打ち合わせてからはずっとリモートで活動していました. 進捗報告ミーティングと輪読会をオンラインで週1回ずつ実施しつつ,5月末頃までは機械学習の基礎を勉強し,夏まではLeCun先生のDeepLearning論文を読んだり,BERTを動かしてみたりと少しずつ広げていきました. 夏休みが明けてからは卒論のテーマを決め,参考になる論文を読んだりデータを集めたりしながら研究を進めています.
果たして卒論を書くところまでいけるのか,なかなか先が見えない厳しい状況ですが「頑張る」としか言えないですね.
進路
大学院に進むか就職するか迷い,5月までは2021卒エンジニア職として就活をしていました. 逆求人イベントに参加してみたり,就職エージェント経由でエントリーしてみたりしたものの,IT業界の中でやりたい業界が特に決まっていたわけではなく,選考もなんとなくで進めてしまっていました. 当然内定まで進めるわけもなく(一応1社からいただくことはできましたが),「本当にこれで良いのか」と自分の就活に納得がいかず,加えて就活を通して見えてきた自分の課題を社会に出る前に克服したいと思うようになり,大学院への進学を決意しました.
就活で見えた自分の課題は「人に伝えるスキルの低さ」です. 僕は小さい頃から目立つことが苦手で,とにかく目立たないように自己主張を抑える人間でした. 大学生にもなると目立たないための行動なんて損しかないなとわかってきましたが,それまでの消極性の積み重ねで「伝える力,自己主張スキル」が全くなく,自己アピールの必要な就活でやはり躓いてしまいました.
B4からの研究活動は,ラボの人とのやりとりや研究発表など「伝えるスキル」が重要なため,課題を克服する絶好の機会です. ただ1年間だけでは研究も発表も十分にできないだろうと考えて,さらなるスキルと学びを求めて大学院に進学することにした次第です.
11月に受けた院試で無事に合格したので,大学院での2年間を大事に過ごしていきたいですね.
インターン
11月から株式会社AIoTさんのもとで長期インターンとして週11時間ほどリモートで働いています.
主にGolangのサーバーサイドを担当していますが,分野の枠を設けずに幅広く対応できるよう,Node.jsや機械学習も少しずつ勉強させてもらっています.
まだまだ半人前で簡単なタスクにもいちいち躓き,その度に自分で調べて解決しがちで非常に時間がかかってしまうのが一番の悩みです. 業務はあくまでも業務であって勉強のためではないので,分からない点は分かる人に質問して即解決し,自分で調べる無駄な時間を減らすことを意識してやっていきます. まずは質問を素早く投げるスキルから練習して身につけていくつもりです. (2ヶ月経ってようやくこの地点…?)
2020年の総括
大きく分けて上半期は就活を,下半期は実務を考えた開発の勉強をやったという感じです. 就活はあまりうまくいきませんでしたが,自分の進路に自信を持つためにプラスに働いたと考えて2023卒の就活に向け頑張っていきます.
AtCoderで1日1ACを積み重ねたことは「一度決めたことを続ける継続力」と「毎日コードを書いて養った思考力・コーディング力」としてアピールできるのではないかと思います. ゆっくりとはいえ着実にレートに反映されたのも,目に見える成果として一つ実績になりました.
またこうしてやってきたことを評価していただいた結果,長期インターンを掴み取れたと思っています.
研究,インターン,個人開発にメリハリを付けて取り組み,いい具合にバランスが取れている今の状態を継続していこうというところです.
来年の目標
目標リストです.
- 新規にWebアプリを開発する
- クリーンアーキテクチャ,ドメイン駆動設計,アジャイル開発など開発手法に関する本を読む
- AtCoderのレート1200以上(水色)へ
- M1の夏はインターンに参加する
年末年始はUdemyの Golangで仮想通貨bot開発の講座 をやるつもりです. 他には企業の技術ブログの更新や自分のブログのPV数などを通知してくれる,「自分だけの便利」を叶えるSlack bot(またはLINE bot)を2021年のうちに作ってみたいと思っています. また,プログラミングだけでなくアーキテクチャや開発の進め方の部分も知識を増やしたいと思います.
AtCoderでは1日1ACの継続,苦手のDPの補強,積読の蟻本を消化して2021年上半期のうちに水色に到達したいです.
そして最後のチャンスになるであろうM1の夏,悔いのないようインターンに挑戦していきます. 研究がおろそかにならない程度に開発と勉強に励みたいと思います.