2019 年の反省と 2020 年の抱負
2019 年の反省と、2020 年の抱負について書きます。
2019 年
総括
今年一年は年の頭から終わりまでバタバタしていました1。これは私の並列処理性能が低かったためでしょう。
また例年よりも環境からの「圧力」 (?) を強く感じながら過ごした一年でもありました。この圧力の源は非常に多岐にわたるものでした: 自分を取り巻く優秀な人々から受ける圧力、各種 〆切から受ける圧力、そして自分の思い描く理想の理想と現状の自分の差分からくる圧力など。
しかし 2019 年の生活に対しては、このような (やや) ネガティブな印象と同時に、刺激的で楽しかったという印象も抱いています。これは今年が新しい挑戦の機会や新しい人との出会いに溢れた一年だったためです。これは 2019 年が対外活動の多い年だったからかもしれません。以下に 2019 年の対外活動をまとめてみます。
- 03/02-03/03: セキュリティ・ミニキャンプ in 福岡 2019 (スタッフ)
- 05/04-05/05: TSG CTF (作問)
- 05/16: Shibuya.XSS techtalk #11 (スピーカー)
- 05/25-05/26: SECCON Beginners CTF 2019 (作問)
- 08/02-08/13: BlackHat USA 2019 & DEFCON 2019 (聴講)
- 08/13-08/17: セキュリティ・キャンプ全国大会2019 (講師)
- 08/24: SECCON Beginners 2019 Hokkaido (リーダー兼雑用)
- 09/23: セキュリティ・ミニキャンプ in 山形 2019 (スタッフ)
- 09/28: セキュリティ・ミニキャンプ in 山梨 2019 (スタッフ)
- 10/05: SECCON Beginners 2019 Tokyo (リーダー兼雑用)
- 10/19-10/20: SECCON CTF Online 2019 (作問)
- 10/26: SECCON Beginners 2019 Fukuoka (リーダー兼雑用)
- 10/29-10/30: CODEBLUE CTF 2019 (作問)
- 11/09-11/10: セキュリティ・ミニキャンプ in 北海道 2019 (スタッフ)
- 11/23: #websecjp: 体系的に学ぶモダン Web セキュリティ@NICT様 (スピーカー)
- 11/30, 12/07: 電気通信大学 Web システムデザインプログラム (講師)
- 12/08: #websecjp: 体系的に学ぶモダン Web セキュリティ@IPA 様 (スピーカー)
- 12/21-12/22: SECCON CTF 2019 Finals (Domestic) (チーム dodododo のメンバー(雑用?)として)
どの活動においても、自分が出来た貢献は微々たるものだったと思っています。それに本当に今年は多くの人に迷惑をかけた気がします。というわけでここからは、これらの活動の振り返りをしながら、2020 年に向けて今年の反省点を洗い出していきたいと思います。もっとも、これは非常に個人的な記録ですから、自分以外の誰かの役に立つとは思えませんし、それを期待はしないでほしいと思います2。
1 月から 4 月
1 月から 3 月は概ね (学部 2 年生としては最後の) 期末試験のために頭を持っていかれていた、と記憶しています。特に形式言語理論の試験勉強には手を焼きました。しかし思い出は不思議と悪いものではありません。学ぶのが楽しかったからだと思います。
それとこの時期に IBM Research - Tokyo での研究インターンシップ (1 年くらい) が終わりました。ちゃんとした会議に論文を通せないまま離れてしまったのが悔やまれます。実力不足です。研究のけの字も分からないところからのスタートだったとはいえ3、もっと出来たことはあったな、と思います。
4 月から 7 月
4 月には晴れて大学 3 年生となり、所属が理学部情報科学科になりました4。この時期を境にだいぶ生活スタイルが変化しました。これはキャンパスが駒場から本郷に変化し、これに伴い、学生控室(通称: 地下)が利用できるようになったためです5。なおこの時期 (3 年夏学期) に履修していた科目については、以下の私の同級生のブログによくまとめられています。
思い出すと結構幅広く学んでいたみたいです。あまり出席は得意ではありませんでしたし、どれもだいぶ忘れてしまいましたが、多少は計算機科学とまともに向き合えた気がします。毎週訪れる各実験の締め切り — これは週 4 回訪れます — のおかげで。今思えばどの演習で取り扱われていたことも、基礎的な知識しか要求されなかったように思いますが6、演習中は「実際に動くものを作ること」「自信を持って正しいと思える証明を書くこと」の難しさがよく感じられたものでした。
また、この時期には英語の教科書を読むことにも殆ど抵抗がなくなっていたため、授業で参考書として取り扱われていた有名な本に結構目を通しました。長いものだと Silberschatz, Galvin, and Gagne の Operating System Concepts や Andrew W. Appel の Modern Compiler Implementation in ML (日本語だとタイガー本と言うんでしょうか?) あたりです。あと後期の CPU 実験に向けて Patterson & Hennesy の例の本を改めて通読したりもした記憶があります。またその他必要に応じて何冊かの技術書 (学術書) を通読しました。こう思い返すと、例年より書籍からのインプットが少なかったので、反省しなくてはいけません。
ここまでは大学に関わることを振り返ってきました。ここからはこの時期の大学外の活動について振り返りたいと思います。思い返すと、4 月から 7 月は大学外での活動がぐんと増えてきた時期でした。
まず 5 月頭ごろ、株式会社 Flatt Security という会社に join しました。これに関してはまた別の記事でまとめた方がよさそうなので、ここで詳細に立ち入らないことにします。
そして同じく 5 月頭ごろ — ゴールデンウィークごろです — には TSG CTF というオンライン CTF をチームメンバーとホストしたりもしました。ここでは僕は 2 つの Web 問題を提供しました。CTFTime の Voting を見ると、結構よい評価をいただけたようで、非常に嬉しい限りです。また何より TSG の優秀な面々と一緒に何かをホストできたことを光栄に思います。特に大体のオーガナイズ業務をハンドルしていた @hakatashi の姿は、本当に尊敬すべきものでした。
その翌週は Shibuya.XSS techtalk #11 という勉強会で登壇させていただきました。このときの発表ネタは 8 月のセキュリティ・キャンプでの講義のベースにもなっています。発表スライドへのリンクを以下に置いておきます。
またそのまた翌週には、SECCON Beginners CTF 2019 というオンライン CTF をホストしました。SECCON Beginners は初学者向けの CTF ワークショップを年に数回全国各地で開催している団体です。僕は 3 問 Web の問題を提供したのと、雑多な業務 — 俗にいう「お茶汲み係」というやつです — を担当しました。最終的には結構多くの方に参加していただけたみたいでほっとしています。ここでも優秀な面々と一緒に活動することができて、非常に刺激になりました。ただ初心者向けを銘打っている — なんせ SECCON Beginners という団体名なので — 割には、難易度を上げすぎたかなあ、という反省をしています。
こうして 3 つのイベントを駆け抜けたころには、もう 6 月に差し掛かっていました。このころはさすがに対外的な活動をする体力がなくなってきたので、8 月のセキュリティ・キャンプ 全国大会 (これが何たるかについては後述します) で使うための資料の用意に集中していました。大体以下のツイートでチラ見せされているような、概ね 100 ページほどの PDF 文書の準備にです。
ところで今年の seccamp の B5 の講義では、事前学習資料として、(今執筆を進めている) Web セキュリティ基礎を学ぶためのテキストを配布してみてました。講義名に入ってる「体系的」を実現するために、ちょっと話題のスコープは広めになってます。少しでも参考にしてもらえるといいな。 #seccamp pic.twitter.com/saN6zz0bXO
— つばめ (@lmt_swallow) July 16, 2019
これを書くのには非常に苦労しました。勿論このような活動のために学業を疎かにするわけにはいきませんから、気合で課題を倒して、その後の時間に残った力を振り絞って書く、という日々だったと記憶しています。休みと呼べるほどまとまった時間を作ることは、学業に対して真摯な態度を取り続ける限り難しいと思いますから、このような生活になるのは想定の範囲内でした。刺激的な日々でした。なお 7 月ごろは本当に試験との兼ね合いで消耗していたので、おそらくその頃の僕がこの記事を書いていたら、「もう二度とこんなしんどい作業したくない!」と吐露していたことでしょう。
8 月と 9 月
7 月の試験期間が明けると、大学的には夏休みに入ります。しかし夏休みは僕にとって非常に (これまた) 刺激の強い日々の連続でした。
まず 8 月の序盤は毎年ラスベガスで開催されている BlackHat USA & DEFCON に参加してきました。所属先の会社には感謝が尽きません。この出張の対外的なアウトプットは以下の記事だけですが、非常に多くのことを学べた 10 日間でした。
実はこのアメリカ出張が私の初めての海外探訪でした。そのためパスポート取得、ESTA の取得等、様々な「はじめて」をこの出張のために体験しました。とくに今回は一人での出張だったので、本当に色々なことに怯えながら準備をしていたことを覚えています。ただ私のような若輩者にとって、このアメリカでの 10 日間は非常に有意義なものでした。特にボランティアスタッフとして参加した DEFCON の Packet Hacking Village では、非常に多くの人と触れ合うことができたのですが、この経験が 2019 年下半期の私の方向性に大きく影響を与えてくれています。ボランティアスタッフに誘ってくださった某氏にも心からの感謝を。
そして帰国後は直接 (羽田空港から) セキュリティ・キャンプ全国大会2019 というイベントの会場に移動しました。セキュリティ・キャンプというのは 「セキュリティ・キャンプとは、日本における将来の高度IT人材となり得る優れた人材の発掘と育成を目的とした独立行政法人情報処理推進機構(IPA)の事業の一つ」(ここからの引用) です。いわば強い人を探して、集めて、更に強くするためのイベントです。夏のお盆の時期には 4 泊 5 日の「全国大会」が開催されており、また年中全国各地で「ミニキャンプ (地方大会)」が開催されています。
幸いなことに、2019 年度は私も講師として 1 コマ頂いていました。このような機会をいただけたことには非常に感謝せねばなりません。以下に講義に使った資料を埋め込んでおきます。
このセキュリティ・キャンプ全国大会で私が提供した講義は、正直まだまだ不完全なものでした。もちろん準備には非常に沢山の時間をかけましたが、決して足りていたとは思っていません。このような教育用コンテンツの作成はまさに「沼」だと思います。いくらでも丁寧になることができ、いくらでも発展的になることができるからです。特に今回の講義をデザインする際には、「現状の Web セキュリティの世界を見渡すための土台を、しっかりと 1 から身につけてもらう7こと」という目標を置いていたため、時間はいくらあっても足りませんでした。
このセキュリティ・キャンプ全国大会が終わった翌週には会社の合宿があり、その翌週にはSECCON Beginners 2019 苫小牧を開催しました。この苫小牧開催のころからは 2 人の新メンバーが SECCON Beginners に参加してくれていたので、そんなに私は忙しくなかったのですが、スケジュール感には怖いものがありました。開催中にはいくつかのトラブルがあったのですが、無事開催できて何よりです。ご参加くださった皆様には感謝の気持が尽きません。
さて、これで (怒涛の!) 8 月は終わりです。流石にこのころには体力も精神力も尽きていたので、9 月前半は地元でゆっくりと過ごしながら会社の仕事をちょこちょことしていました。9 月の後半には セキュリティ・ミニキャンプ in 山形 2019 と セキュリティ・ミニキャンプ in 山梨 2019 の 2 つのスタッフ的業務をしました(公式ツイッター の運用や講師のサポート)。セキュリティ・ミニキャンプ in 山梨の方では一般講座で 20, 30 分ほど喋ったりもしました。なお後者(山梨開催)に関しては、講師の高橋さん が講義録を残してくれているので、よかったらこちらもご一読ください。
と、バタバタ動き回っているうちに、9 月も終わってしまいました。
10 月から 12 月
10 月からは大学の後期の講義&演習が始まりました。それもだいぶ過激なものが。この話についてはまた後日反省記事でも書こうと思います(絶賛今履修中なので)。
また 10 月は SECCON 関連の活動が多い月でもありました。まず SECCON Beginners を東京と福岡で開催しました。そしてその間に SECCON CTF Online 2019 (SECCON CTF 2019 のオンライン予選) にチーム TSG として問題提供をしました。これは SECCON CTF の「前年度の SECCON CTF 国際決勝で優勝したチームは、問題提供すると当該年度の SECCON CTF 国際決勝にシード参加できる」という仕組み8 に乗っかるためです。私は SECCON CTF の実行委員ではないため、問題提供は初めてだったのですが、想定より多くの方に問題を解いていただけて嬉しかったです。それと同時に問題を何度か過負荷と想定不足で落としてしまったことを非常に反省しています。
また 11 月、12 月も非常にバタバタしていました。正直バタバタしすぎていて、あまり鮮明に覚えていない (?!) ので、この辺はふんわりと振り返ることにします。
まずこの時期を振り返ったときに、最も初めに思い浮かぶのは CODEBLUE CTF 2019 です。今回は問題提供させていただきました。実はこの CODEBLUE CTF 2019 に出場するために、私の所属するチーム TSG は予選 (TokyoWesterns CTF) に出場していたりもした (そして私が最後 Web 問題を通せなかったため (?) 負けてしまった) ため、ちょっと悔しくもあるのですが。TokyoWesterns と binja の面々は私の何倍も優秀で、いい刺激を受けました。今後私が彼らのように素晴らしい CTF プレイヤーになれるビジョンはあまり持てていないのですが、できる努力は尽くしたいと思うものです。
そして次に印象に残っているのは、主催した「#websecjp: 体系的に学ぶモダン Web セキュリティ」という勉強会です。ここではセキュリティ・キャンプ全国大会で提供した講義コンテンツを改訂して、みっちり 8 時間取り組める形にしたものを提供しました。実はこの勉強会のように、会場提供以外のスポンサーをつけずに勉強会をホストするのは初めての体験だったので、色々と反省点だらけのイベントだったなと思います。ロケハンやコンテンツの設計等はいつもに増して念入りにしたので、大ゴケこそなかったと思っていますが、2020 年はこの反省を活かしてもっといいコンテンツを提供していきたいものです。会場を提供していただいた NICT 様に改めて感謝。また 12/08 には同講義を IPA 様のワークショップでも再演させていただきました。こちらも感謝。
その他、UEC WEBSYS (電気通信大学が開講している社会人履修証明プログラム) で講義をさせてもらったり、ミニキャンプ北海道 でスタッフをしたり、SECCON CTF 2019 Finals に出たりもしました。
2020 年の抱負
後半に行くにつれて雑になっていった 2019 年の振り返りでしたが、まあ本当に 2019 年は色々なことがありました。幸い色々な方からお声をいただいたおかげで、色々な挑戦ができましたし、色々な人と出会えました。これは冒頭で述べたとおりです。
ただこのような一年の中で、自分の未熟さ、弱さを痛いほど感じました。特に精進不足を。ここでいう精進というのは、直ちに芽がでないタイプの学びのことを指します。そのため 2020 年は精進を第一にした生活をしたいと思っています。
そしてもう一つ。これは本稿の中で一切言及しなかったことなのですが、2020 年を通して、休む能力を上げたいと考えています。これは 2019 年の一年間、本当に休めた気がする日が片手で数えられる程度9しかなかったためです。本稿の序盤でリストアップした通り、2019 年は試験期間を除く殆どの週に何らかの大きな行事がありました。勿論どれも楽しかったのですが、これらの行事が頭の領域をある程度専有しつづけていたのは事実です。そして私は頭の片隅に何かがあるときに大手を振って休むのが得意な人間ではありません。これが本当に休めた気がする日が少ない理由です。しかしこれ、どうやって解決すればいいんだろうな。
-
田端でバタバタ。 ↩
-
この文章をインターネットの海にこれを放流しているのは、ひとえに「人に見られているかも」という意識を持つことで、ある程度小綺麗な文章を書くことを自分に強制し、頭の中の整理を促進するためです。それにもしかすると似た経路を歩む後輩諸氏(特に東京大学理学部情報科学科に進学する優秀な若者の皆様)が悪手を打たないための参考になるかもしれません。 ↩
-
なお大学での研究室配属は 4 年の後期が予定されています。 ↩
-
東京大学においては、原則全員が 2 年生までの間教養学部に所属します。そしてその間に自分の志望学部を決め、3 年生からその学部で勉强・研究をします。 ↩
-
この「地下」という部屋は非常に優れています: よいインターネット環境、優秀な同期。 ↩
-
もちろん「学部生にこれを要求するの?」と感じられるような知識が要求されることもありましたが。 ↩
-
もちろん僕自身が全てを俯瞰できているとは到底思えませんが、多少なりとも役にはたつ…はず。 ↩
-
実際 2018 年度覇者の CyKor も問題提供により決勝にシード参加していました。 ↩
-
「片手で数えられる程度」という表現はいささか曖昧です; 指は 5 本あるので、それらの指各々が幾つかの状態を表現できるのであれば、その表現可能な状態の数の 5 乗から 1 を減じた数程度の数を片手で数えることができる、というのはよく知られた事実でしょう。 ↩