2月: 年が明けました

 11月に風邪でダウンしていたのと、受験を意識してあまり生産的なことができていなかったので、しばらくブログを更新していませんでした。でもなんとなく更新したくなったので書きます。


1月までの振り返り

[開発] gkctfはちょっと今の自分には大きいプロジェクトだったかもしれない。設計とかがぐちゃぐちゃになっているのでいったん休み。もっと設計を学びたいという気持ちが強くなって、小さく作って失敗するという経験がしたいと思いました。そこで、firebaseでフロント+realtimeDB構成のミニミニゲームを作ってとある方からコードレビューを頂きました。データの流れとか、責務とか全く意識せずやってきたので慣れるまで時間がかかりそうですが、gkctfにも生かせそうでひとまず成功。
[受験勉強] なんと!センターは合計で3年分くらいしか解きませんでした…何やってたんだろうか。でも本番では無事に出願できるくらいの点数がとれてホッとしました。二次試験がもうすぐですね。頑張ります。
[CTF] なんと!全くお休みせずにCTFに出まくっていました。とはいえ解けるものは少なく、問題集めてWriteup集めて俺は受験後に絶対復習するぞ~~~!という気持ちです。唯一、NeverLANCTFで一人チームで出て、上位20~25%に入れたのでうれしかったです(初めてのイベントCTFでは上位50%だった)
[競プロ] コンテストに出るのはお休みして、アルゴリズムを人に教えるために隣接リストなどのArrayの一段階上くらいの基礎的なデータ構造を学んでいます。JavaScript-Algorithms (https://github.com/trekhleb/javascript-algorithms)のデータ構造Bをやっている。
[Animation] なんもしてない…
[機械学習] なんもしてない…
[Misc] ハッキングラボという本を買いました。それと、CTF初心者向けの記事をQiitaに上げたいと思っていて、CTF向けの、アセンブリの入門記事を書いています。四則演算くらいしか書いていませんが、それくらい軽くても結構な分量になりますね…他には、Cコンパイラを作りかけて放置しています。


受験終わったらやりたいこと

[開発] gkctfの設計をもう一度見直す。まだダメそうなら小さく作って失敗をもうちょい大きめの規模でやってみる。あと、gkctfの目標が明確になりました。CTFdというCTF運営ご用達フレームワークがあるんですが、これの縮小版を作ってみたいです。あまり差別化は意識していなくて、firebaseをもとに身内でミニCTFをしたい人の役に立つかも…?くらいの気持ちで作ります。
[CTF] 毎週出る。復習をする。
[競プロ] データ構造の基礎に詳しくなる、人に教えられるレベルになるまできちんとアルゴリズムを理解する。アルゴリズムにとっつきにくい人向けに、話のネタをストックしたり、教育的な導入の仕方について考えたい。js-algoが終わったら、open data structures (https://github.com/spinute/ods)を読んでいこうと思っています。モチベーションとして、レートよりも精進量や知識の方が欲しい気分になっています。とはいえコンテスト直前直後のTLのお祭り騒ぎは好きなので、受験終わったら毎週AtCoderに出ていきたいです。
[Art] 絵を描く練習する!ピアノも練習続ける。
[機械学習] pwc (https://github.com/zziz/pwc)を読んでいく。本を読む。
[Misc] アニメをたくさん見る。暗号技術のすべてとディジタル回路設計とコンピューターアーキテクチャを買って読む。Cコンパイラを作る。そのあと、30日OS自作本をやる。


考えたこと

 やっぱり人間できることには限界がありますね。限られた時間で、一度きりの人生で、やりたいことはたくさんあってもままならないものです。
 機械学習に対して、うーむ、このままブームが続くと信じてもいいのか?という気持ちになってきました。CV系はもう研究が細部にわたってきて、実用化フェーズに入ってしばらく経っている気がするし、サーバーがオンプレからクラウドに変わったように、すべてがクラウドから提供されて我々はそのお世話をしたり仕様書に詳しくなることが仕事みたいな未来も十分にありえます。4年後卒業した時を見据えて動くとなると、ここは遠回りに見えるコンピュータサイエンスを本気でやっておくのが最善なのでは?と考えるようになりました。それと、CTFにはまってしまったので、できる限り詰めてみたいという思いもあります。とはいえ、CTFは企業のインターンにつながるか?といえばそれは違うと思うので、gkctfのようなプロジェクトをやっていくのも重要ではある。
 自分は将来的に、pixivとかdwangoのようにクリエイターに近い場所で働きたいと思っていて、何の役に立つんだろうと考えた時は自分の数学的なバックグラウンドを生かしたほうがよくて、でも現実問題、数学やるよりもフロントエンドをやる方がはるかに役に立って、でもフロントエンドだと他の人と差別化できる気がしなくて…なんか自信がなくなります。それと、将来的にCTOのような技術選定を行う立場になれたら楽しい(つらい)だろうなぁとも思っていて、その視点だと今のうちにCSとセキュリティを詰めておいたほうがよくて…要は迷っているんですよね。何をしても役に立つのは間違いないけど、そんなに遠回りするほど僕に時間はなく、近道をしてその分野が待ってくれるには4年間というのはあまりに長すぎて分野が消滅する可能性がある。やりたいことは無限に存在していて、それでいて限られた時間の中で個人ができることには限りがあるのです。ちょっと先を見据えるくらいで、あとは楽観的にとらえて、とにかく進むくらいがちょうどよさそうです。作りきること、小さくてもいいから成果を出して失敗して何らかのフィードバックが得られないか試してみること、そのへんが意識できて進みやすくなった気がします。きっちり受験乗り切ったら、また試行錯誤して進むぞ!