task4233のめも

書きたいことをつらつらと

2019年の振り返りと2020年の目標を述べてみる

はじめに

 こんにちは。task4233と申します。

 この記事は, 私の2019年の振り返りと2020年の目標を述べることを目的として書かれました。
 記事全体は長く, 以下に目次があるので, 面白そうなもの, 興味のあるものだけ読むのも良いかもしれません。

もくじ

2019年の振り返り

 今年の目標は以下の6つでした。

 以上のうち, チェック([x])がついているものを達成しました。

将来について

 私は分野を絞ることがなく, 最終的にフルスタックなエンジニアを目指しています

 そのために, サイバーセキュリティ関連の仕事(解析やPentest)ができる仕事を志望しています(以下, サイバーセキュリティをセキュリティと略します)。

 理由は3つあります。
 1つ目は, セキュリティ・キャンプでセキュリティ沼の一部を知れたためです。
セキュリティ関連の知識を得ることは簡単ですが, それを実践することは非常に難しいです。例えば, 「XSSとは何ですか?」と聞いた時に答えられる人は多いでしょう。しかし, 簡単な脆弱性を含むサイトを提示して「このサイトでXSSを実践してください」というと手が止まる人が多いはずです。こういった実践的な知識は, 1人で得ようとすると非常に時間がかかります。そのため, 人から聞いたりハンズオンを受けたりして得ると非常に効率が良く, その点でセキュリティ・キャンプは非常に良い機会になりました。来年も応募できるので, セキュリティ関連に興味のある方は目を通しておくと良いかも知れません。

www.ipa.go.jp

 2つ目は, 今まで幅広く学んできたCS*1の知識が役に立つと考えているためです。
今までは, どの分野に興味を抱いても対処できるように幅広く学んできました。セキュリティ関連の仕事は, 専門知識がメインですが, 全体的に理解しておくべきな基本的なCSの知識が広いと感じています。例えば, DNS Rebindingという手法を理解して説明するためには, DNSのリソースレコードの存在やネットワーク上の通信等の知識を知っていることが前提条件です。今までの学習経験上セキュリティ関連の技術にはこういったことが多く, 今まで学習してきたことが効果的に使えると考えています。

 3つ目は, 5年・10年先ではセキュリティを意識できるエンジニアが一般的になると考えているためです。
文部科学省によると来年度(2020年度)から小学校のプログラミング教育が必修化されます。これにより, 小学生の頃から, プログラミングという概念を知る機会が極端に増えることが予想されます。そして, 若いうちからプログラミングを主体的に学ぶ子供が増えることが予想されます。その結果, 5年・10年先では, プログラミングが一般化して, 所謂ただ書けるだけのエンジニアは消えゆく運命だと考えています。そのため, セキュリティのことを意識したエンジニアに需要が生まれると考えています。一方で, 過去の脆弱なコードを学習して, Linterがunsecureなコードを検知する機械学習のシステムができる未来がくれば話は別ですが, それらは過去のデータにある事象しか対処できないはずです。我々人間は考えることができる生き物なので, 実際の現場で起きている問題を解消する場面では引けを取らないと考えています*2

 以上が, 私がサイバーセキュリティ関連の仕事(解析やPentest)ができる仕事を志望している理由です。おそらく, これらの仕事も, 将来は幅が広がって解析後にシステムを改修する部分も仕事内容に入っていくのではないかと考えています*3。そのため, 結果としてフルスタックエンジニアになれると考えています。

競技プログラミングを休止したことについて

 はっきりいうと, 私は競技プログラミングを休止しました 。 元から趣味なので, 休止というのは間違っているかもしれません。なぜなら, 私がセキュリティ関連(特に解析やPentest)を突き詰めたくなったためです。

 それぞれのジャンルで得られるものと失うものは, 以下の通りであると考えています。

  • 競技プログラミング
    • 得られるもの
      • コードを書けるという自信
      • アルゴリズムとデータ構造を理解して使う力
      • 他人のソースコードを読んで理解して使う力
      • 他の競プロerとの繋がり
      • 競プロ以外のジャンルを知る機会
    • 失うもの
  • セキュリティ関連
    • 得られるもの
      • セキュリティの専門知識を理解して使う力
      • 低レイヤを意識するようになる傾向
      • documentationから情報を得て使う力
      • セキュリティ界隈の繋がり
    • 失うもの
      • 時間

 こうして見ると, それぞれで得られることと私が将来したいこととのベクトルの向きが違うことが分かります。それぞれに良し悪しがあるのは事実です。しかし, 私の目的(今したいこと)に近いのは競プロではない, と断言できます。そのため, 私は競プロを休止しています。

 競プロを休止したことでコミュニティから離れざるを得ないのは辛いところです。しかし, 来年は多忙な日々から少しは離れられるので, 息抜きの趣味として続けて行くことができそうです。

記事を書くことについて

 言語化することで学んだ知識を自分の中でまとめ, 他人に共有できるという一石二鳥のメリットがあるため, 記事を書くようにしていました。

 実際に, 大きなイベントに参加した後は学んだ内容を参加記録としてhatenablogで投稿しています。また, メモ書き程度の内容は自分のTechBlogで投稿しています。 結果として1ヶ月に1記事程度のペースで投稿することができました

 これらの記事がどの程度の方の力になれたのかはわかりませんが, 少しでも力になれたのならば私は嬉しいです。

 また, 記事を書くために時間を要しますが, 後々見返して役に立つことがあるので未来の自分への投資として続けていきます。

ツイートで意識していたことについて

 「〜した」と「〜する」いう形式にこだわってツイートすることを意識していました。以前は, 「〜したい」や「〜になりたい」というツイートをしていたこともありましたが, 大抵やらないことが多かったので, それらのツイートは極力しないように心がけました。

 以上の意識によって, 何かを達成したり宣言したりすること以外でツイートをしないようになり, 以前よりも多くのことをするようになった気がします(気のせいかもしれません)。

 とはいえ, つまらないこともツイートしたくなることがあります。その際は, サブ垢のSubTaskerでツイートようにしています。なぜなら, 私の本垢をフォローしている方々に対して不毛なツイートを届けるのが嫌だからです。

 そのついでに, サブ垢でのツイートを全て英語にしています。これにより, つまらない内容を英語で話す力が身につくと考えています。実際はどうなのかわかりませんが, 英語ができないと二次的な情報しか得られなくなるので, 英語と仲良くなりたいという意味を込めて続けています。

最近のアニメに関する不毛なツイート

大学について

 基本的にマジメに出席していました*4。後に書きますが, 教職を続けているため色々と忙しく, 今まで以上に自由な時間が作れない日々が続いていました。今年の前期まで週6, 1限から遅い時は6限まで大学に行っていました。教職を続けている割には, 今までの平均GPAは4.0ですし頑張ってきたと自負しています。

 そして, 大学の関係で夏の7月下旬から8月中旬までカリフォルニア州立大学にてPBL*5に参加することができました。そこでは, FPGAを使いAD/DAコンバータを制御する経験ができました。その結果, AD/DAコンバータのデータシートの見方やVerilogの書き方, オシロスコープの使い方等を学ぶことができました。

FPGAでDAコンバータを制御して鋸波をオシロスコープで表示している様子

 趣味でアプリケーション開発をした経験はありましたが, ハードウェアに関する知識は皆無だったため, 非常に良い経験ができたと考えています。

 これは余談ですが, サンフランシスコに立ち寄った際にIntel本社やAppleのInfinite loop, GitHub本社, Unity Technologies, Amazon Goに立ち寄ることが出来たのも非常に良かったです。

Intel Headquarters

Apple infinite loop

GitHub Headquarters

Unity Technologies

 また, 大学でのグループ開発も非常に良い経験になりました。具体的には, 「ウォーターフォール型で開発しろ」と言われたのにアジャイル開発をしたり, docker-composeやnginxといった技術に触れたりしました。PullRequestを投げて, reviewしあうのは新鮮で良い経験になりました。

 チーム内でいざこざが起きたこともありましたが, マネジメント役のチームリーダやお互いの対話によって解決できたので, チーム内のムード作りや対話の重要性を身を持って経験できました。今回のチームリーダはコードを殆ど書いていませんでしたが, チームメンバの面倒見がよく, 非常に良いリーダシップを持つ人でした。彼は本当に凄い人で, 自分のできる範囲内で出来ることをひたすらに頑張る人でした。また, 一緒に開発してくれたメンバーも最後までめげずに開発し, 最終発表に間に合わせてくれたことには本当に感謝していますし, チームメンバに恵まれていたと強く感じています*6

 大学でマジメに学び続けられた理由としては, 大学の居心地の良さもありますが, 大学の友人と話ができる楽しさが大きいです。イベントでお会いした方はわかると思いますが, 私は話をして相手のことを知ったり, 新しい情報を得たりすることが好きです。教職を続けてできた友人もいますし, 大学では充実した生活を続けられてきたと思います。

 一方で, 無駄な講義もあったと考えています。正直, 今までの経験を通して, 私は大学の講義は必要最低限で良いと考えています。なぜなら, 資料を見ればわかるようなことを蹉跎歳月するのはもったいないと考えているためです。この点に関しては, GPAと将来の自分を天秤に掛けて慎重に検討すべき内容なので, 一概に正しい主張とは言えません。少なくとも, 過去の私にアドバイスできるならば, 大学の講義は必要最低限出るように説得します。

教職過程について

 私は教職課程を3年間続けてきました。

 今年は介護等体験ということで, 5日間のデイサービスでの実習体験と2日間の特別支援学校での実習体験をしました。これらの体験から, 相手に応じた対応の必要性を改めて学べました。この対応というのは, 相手に応じてレベルを下げるということではなく, 相手が受け取りやすいように工夫するということです。

 「同じでは?」と思うかもしれませんが, 前者には相手を侮蔑する意味が含まれていると考えています。例えば, お子ちゃま言葉を使ったり, 体が不自由な方の全ての手伝いを行ったりするといったことです。これらの行為は相手の尊厳を貶す行為と等しいです。そのため, ゆっくりと話したり, できる部分は本人にやらせたりする工夫をとるべきであると考えています。

 また, 教職を一緒に続けているメンバーとも気軽に話せるようになり, 続けていて良かったなと感じています。今まで辞めずに続けているということもあってか, 1人1人私にない尊敬できるスキルや特徴を持っています。その多くは処世術や明るさといったもので, 最近は彼らのおかげで割と明るく, ポジティブな思考を持てるようになったと感じています。

[deleted]

全落ちしたインターンの反省と対策について

 夏のインターンでは, 4社受けて全て落ちました。理由として, 実力不足や経験不足, コードのレベルが低いというフィードバックがありました。私は, 今まで教職課程や大学に全振りしていたので, 学問を真面目に修めて, 自分なりに挑戦してきたのに, こうなってしまったんだなというつらい気持ちになりました。また, 夏の前半を前述したカリフォルニア州立大学でのPBLと, セキュリティ・キャンプに費やしてしまったため, それも原因の1つだったと思います。

 友人には8社もインターンに行ったと言われ強い劣等感を感じていました。しかし, 前述したセキュリティ・キャンプで他の参加者から「taskさんは色々やってきた過去があるんだからもっと自信持って良いと思うよ」と言われ, その劣等感を払拭できたのを良く覚えています。

 全てのインターンに落ちた原因は, スケジューリングの下手さによるものだと考えています。大学が忙しすぎたということもありますが, 微妙な実力で装備を入念に整えなかったのは大きな失態であると考えています。そのため, 来年度以降にインターンを希望する方は, 当然かとは思いますが 早めに動くことをオススメします

 この経験を元に, 秋, 冬, 春のインターンではスケジューリングを意識して, 早めに行動するように心がけました。結果として, 既に1社のインターンが確定しており, 他の会社のインターンも検討している状態です。

徹夜は身を滅ぼすということについて

 最後に, 戒めの意も込めて, 1つ言いたいことがあります。徹夜はやめるべきです。こんな時間にブログを書いている身なので説得力は低いですが, 徹夜は本当に良くないです。次の日を棒に振り, その余波は週末まで響きます。結果として, 週末に十分に作業ができなくなり, 最終的には月末, 年末へと被害が広がります。

 徹夜をしないために, 高効率化をするのが良いと考えています。具体的には, Ciruelaさんのブログで書かれていたので, 引用させていただきます。

高効率化 夜に頭が働かない場合は寝る. CTFでは手が止まったら諦める. 飽きたら別のことをする. 面倒ごとは真っ先に撃破する.

2020年作戦立案 - Battle for my life

 今年度以降, 意識していきます。

2020年の目標

  • SecHack365に応募する
  • セキュリティ・キャンプ全国大会2019のチューターに応募する
  • 高度情報技術者試験かセキュリティ資格試験AC
  • CTFの本番で正答率10~20%の問題を通す
  • セキュリティに関するOSSツール(拡張)を作る

 以上が, 私の将来像を考えた時に来年達成しておく必要がある5つの目標です。
 昨年は深く考えずに目標を立ててしまったので, 今年は将来を意識した目標を立てました。

おわりに

 以上が, 2019年の振り返りと2020年の目標でした。

 2019年の目標は達成できなかったものもありますが, 将来像と合致していなかったので納得しています。
 2019年当初はあまり力がなかったですが, 1年間を振り返ると何かとアクティブに動けて, 自分の実力を再確認して, 将来を考えられる良い年だったと感じています。未だに「これはできる」という1つの分野, スキルがないため, 来年は研究をしながらその分野やスキルを作るつもりです。

 長くなってしまいましたが, ここまでお読みいただきありがとうございました。
 少しでもためになる部分があれば幸いです。
 では, 今年も1年よろしくお願いします。

*1:Conputer Science

*2:自己学習型の機械学習システムが確立されればどうしようもありませんが, その際は他の業界も潰れていると思うので, これがベストだと考えています

*3:既に行われているかもしれませんが, 情報不足なのでよくわかりません

*4:これは自分自身に対する皮肉の意を込めています

*5:Project Based Learning

*6:前日はほぼ全員徹夜していた気がします