Skip to content

Instantly share code, notes, and snippets.

@Xornet-Euphoria
Created August 8, 2022 01:48
Show Gist options
  • Save Xornet-Euphoria/fc11c0605c15a9db26558b9709e46f1e to your computer and use it in GitHub Desktop.
Save Xornet-Euphoria/fc11c0605c15a9db26558b9709e46f1e to your computer and use it in GitHub Desktop.

一般的CTFプレイヤーの就活事情

序文

かなり前の話になるが、ある企業様から頂いた内々定を0秒で承諾して就活を終えた。後述する私のような属性に当てはまる就活生は過去にも未来にもそこまで居ないかもしれないが「一般的なCTFプレイヤー」がどのような就活をしているかはあまりインターネットに転がっていないような気がしたので、後続の就活生の為にある程度の一般性がある事項を書いていこうと思う1

なお「一般的でない」CTFプレイヤーのことを、ここでは「ほとんどCTFだけで内定を獲得した」プレイヤーの事を指す。CTFの実力が評価されて(自身から就活せずとも)企業側からオファーが来たりとかそういう事を指しているため、得意なカテゴリーや出場頻度、順位等に依る定義では無いことに留意して読んで欲しい。目標としている「一般性の維持」が満たされる定義だと考えている。

対象読者

  • CTFプレイヤーで近い未来に新卒での就活を控えている方

私について

  • 元々物理学を専攻していたが、挫折して情報系に進学した大学院生(現在修士2年だが、就活時は1年だった)
  • IT業界の技術職(プログラマとは限らない)に絞って就活
  • 趣味はCTFで主にCrypto(暗号解読)を好んで解いており、内々定を頂いた時点で3年近くやっていた
  • IPAのものを含めて技術系の資格は何も有していない、技術系以外でも唯一持っているのは普通自動車の運転免許のみである

エントリー以前

最初の表題を「エントリー以前」としてしまったが、別に特別な事をしていたわけではない。むしろ、「特に入念な準備をしない内に就活が到来してしまった」という事を書いて読者を安心させるためにこの節を書いている。

それでも最低限の事はした。情報系の学生だし、CTFも有名な大会だけ出て終わるのではなく、結構な頻度でやっている自信はあるので、IT系の業務に携われるような企業に絞って探した。既に修士1年の初夏ぐらいまでには「エントリーするかもしれない企業リスト」のようなものを漠然と脳内で作っていた。だいたい10社ぐらいだったと思う。また、CTFをやっていることからセキュリティだけに限って職を探していたと思われるかもしれないが、色々な事に携わって技術や知識を獲得出来るに越した事は無いのでセキュリティ以外の選択肢も探していた。

先程「入念な準備をしないで」と書いてしまったが、これは半分嘘かもしれない、というのもいわゆる「夏のインターンシップ」には参加している2。1dayや数日のインターンシップが多い中、週単位のインターンシップに数社参加していたので、もしかすると平均ぐらいは就活の準備をしていたのかもしれない。

ただ、夏休み全部をインターンシップに費やしたりとかはしていない。研究開発系のインターンだと1ヶ月ぐらい参加することになったりするし、中には長期インターンとして実質アルバイトをしているような人も居るが、私はそれらをしていない。

インターンに行っておくことのメリットとしては「早期選考」や「特別選考」という名目で選考枠が優先して与えられるというのがある3。これには単純に枠が得られるというメリットの他に、就活に対するリソースを削減出来るというメリットもある。

これは一般性を失う事項かもしれないが、学業や研究、趣味の開発、競技等(私ならCTF)に熱心な学生は就活に割くリソースを極力少なくしたいと思っている。そんな人間にとって、企業側から選考枠が与えられるというのは、就活に関する情報収集の手間を省く事に繋がるため、枠が与えられる事以上のメリットが存在する。

「エントリー以前」という題の節なのにインターンシップ以外の事を書かないのは良くない気がしたので他に就活の為に何をしたかを書こうと思う。

無い。

「特に入念な準備をしない内に就活が到来してしまった」という事を書いて読者を安心させるためにこの節を書いている。

と冒頭で書いたことは本当である。

CTFと就活

前節からの続きになる。

「いや、CTFしてるだろ」のような反応があるかもしれないが、就活の為にCTFをしていた瞬間は1ミリマイクロナノピコ秒も存在しない4。あくまでCTFは趣味であり、娯楽であり、ゲームである。他のゲーマー学生が研究室から帰ってきて夕飯を食べたら、ApexやVALORANTを起動するのと同じ感覚でCTFをしているに過ぎない。upsolveや他人のWriteupを読むのはエイム練習やbot撃ち、マップ研究と同じである。オタクなのでゲームが例になってしまったがスポーツ等に置き換えても同じである。

とは言っても、順位等書けるものはポートフォリオサイトに書いた。これも「バイトリーダーとして~」とか「海外留学して~」とか「カンボジアに学校を建てて~」みたいなアレと同じである。幸いだったのは、自分の希望職種に直結する趣味だったということである。正確にはこれは逆で、CTFが趣味になったから、IT業界を志望するようになったのが正しい。就活が先では無く、CTFが先で後から就活が付いてきたのである。

これは先に「幸い」と書いたように、一見良い事かもしれないが実はそうでも無かった。CTF以外に何もしていないことから他にアピール出来ることが無い。これが本記事の中で最もCTFプレイヤーの皆さんに言いたいことであり、助言に言い換えれば「CTF以外にアピール出来る事を身に着けておこう」になる。

更に実はCTFを就活の材料にするのはおそらく私のように「中途半端に成績を残している」程難しくなる。圧倒的な実力があればそれを見せれば良いが、私の場合はそうも行かず、その割に平均(そもそも参加してもまともに取り組む人が少ないことから平均は低くなる)よりは高いスコアをコンスタントに残せているという事実に縋っていることから、アピールポイントが「技術」ではなく「成績」に寄りがちになる。

インターンシップ等で色々な企業の様々なポジションの方とお話する機会があったが、CTFを話題にする度に言われたのが「CTFの成績よりも何をどう学んだかを重視する」ということである5。非常に曖昧な問ではあるのだが、おそらくここで「はい、私は格子基底簡約を用いて合同方程式を解いたり、楕円曲線上の有理点群に関する離散対数問題を特殊な曲線において解く方法を学びました」という応答が就活的に誤っている事はわかる。

問題が解けたり新たな知識が得られたりする際に分泌される快楽物質を求めてCTFを行っているが、順位が高いと嬉しいのも当然なので普段から解き直したりWriteupを読む等、結果として順位を上げるための努力もしている。そういう快楽や名声駆動の人間に対して「何を学びましたか?」と言われても学んだ知識の羅列で埋め尽くされてしまう。

ここは非常に悩んだところで、比較的得意なCryptoに関しては「暗号を通して抽象代数学や数論に対する効果的なアプローチを学びました」のような事を言い、PwnやRevに対しては「コンピュータや実行ファイルの動作原理のような計算機科学の基本とそれを重視する姿勢を学びました」というような、知識や技術を抽象化した上で、マインドや姿勢に対する事を言った記憶がある。

この記事は一応一般性を気にして書いている事を思い出したので他の「計算機に関連するアクティビティ」にも触れておく。特に昨今莫大な競技人口を抱えてその勢いは留まることを知らない競プロに関しても、競プロ純粋培養だった人間(記憶が正しければ暖色コーダー)が就活で無双出来なかった、というブログ記事を見た記憶がある。

私は競プロでいうような暖色コーダー程の実力をCTFで有しているわけではないが、それに近い感覚をおそらく抱いたと思う。CTFの成績6を見せたら、少しは評価されるのかと思っていた節が無いわけではない無いことは恥ずかしながらここで白状しておく。それよりかは長期インターンや技術バイト等でコードを書いたりエンジニアリング業務に携わっていた方が遥かに評価されると思う。

もし、就活を気にしてこういうアクティビティをやっているのだったら直ちにやめて別の方法を探った方が良い。それこそ技術バイト7や個人開発辺りが良いと思う。そうでなく、普通に娯楽としてやっているが、なんとかして就活の材料にしたいという不運な方は今のうちに体の良い宣伝文句やアピールポイントを考えておく事を推奨する。

自身の態度が悪いだけなのに(ここで一般性が失われている)、CTFに関して悪いことばかり書いてしまった気がするので、就活的に良かった点も書いておく。

やはり数年もCTFをしていると計算機に対する網羅的な知識が少しとは言え付いてくる。そのおかげか技術系の質問には特に問題無く答えられたと思う(コーディングテストは怪しかったが)。私個人の例で申し訳ないが、リバースエンジニアリングの問題を解いた経験がある事を伝えたら、「このような動作をするx86の命令を答えてください」のような問題が飛んできて難なく答えられたということがあった。

また、技術面接を突破しやすくなるということは、こういう方式を課す企業に対して強いということでもある。私が受けた企業はもちろん1社だけでなく複数であることから、それらをある程度分類出来るのだが、エンジニア面接やコーディングテストを課してそれの比重が高いと思われるところもあれば、通常の人事面接やES、学力検査等の比重が高いと思われる企業もあった。

おそらく、普段から技術にのめり込んでいるような人間は前者のような企業と「業務内容の面でも」相性が良いであろうことから、こういうアクティビティをしていれば突破率も上がってくるだろうし、選考の段階で後者のような企業を避ける(私の場合は落とされたという形だが)ことにも繋がる。どちらが良い悪いということは存在しないが、向き不向きは間違いなく存在するので、こういう計算機に関連するアクティビティを利用してそれを見分ける道具と出来るのは思わぬ収穫であった。

評価軸の不連続性

さて、内容が割と暗くなってきたがこれはそれなりに意図した書き方であり、最初からハッピーエンドを目的として書いたわけではない。職を得たことや、決まった企業に対しては大いに満足しており(むしろ「私めを雇って頂き本当にありがとうございます」という気持ちが強い)、インターンシップや企業側からの説明で感じた印象とそこから推測される実際の業務内容にも希望が持てている。このように事実だけを並べればハッピーエンドである。

では、なぜそこまで悲観的になっているのかというと、自身の就活に対する無理解8を実感したからである。一言で片付けるなら「私が社会に出る覚悟も能力も無いのに社会に高望みし過ぎ」ということではあるが、そんなことは当人が最も承知しているためそのような指摘は控えて頂きたい。同じことを自分と他人の両方から言われると嫌な気分になる。

まず前提として、多くの就活生は何らかの受験を経て現在の立場に居ると推測される。推薦や特別選抜のようなものはあるかもしれないが、多くの人間は教育機関から課された学力検査の成績によって入学が決定したのだと思う。

この地点で何らかの選考や選抜に対する指標は「学業成績」の一点のみであった。教育機関に入ってからも、進学振り分けや研究室配属、奨学金等は成績によって選ばれるケースが多いはずである。

教育機関の外でもそうである。情報系には前述したような競技色の強いアクティビティが存在するが、とにかくスコアや順位を高めることが至上とした価値観が醸成されているし、それが全体のレベルを上げる事にも繋がるので否定できる余地は無い。

そんな価値観を持った状態で就活に突入するとどうなるかだが、当然躓く。「成績」は「学生時代に力を入れたこと」9に変換される過程で、ある程度情報を喪失する。私の場合はCTFがこれに該当するのは前節で述べた通りである。更に面接では「入社してどんな事をしたいか」のような事を聞かれるが、スコアを伸ばすことと同値な業務というのはなかなか存在せず10、ビジネス的に意義のある事が求められているように思える。

このように、これまで「成績」という形で連続していた評価軸は、就活によって不連続的な変化をする。そしてそれがどういう評価軸なのかを一言で表す言葉は見つかっていない。「ビジネス」だとか「社会奉仕」だとかそうものを全部ミキサーに入れて混ぜて出来上がったものを指すのだろうがそれは言葉で表される形をしていない。そういう複雑かつ多次元の評価軸が急に現れたことで戸惑う就活生も多いのではないか? そしてその正体不明の評価軸によって落とされたとしても対策を施す事は難しいのではないだろうか?

一方で、このような事を実感しないような選考を行う企業も存在した11。コーディングテストや技術的な質問が選考中に存在し、技術者としての能力を調べるような選考であった。これなら「成績」が「技術的な能力と知識」に変換される程度であり、前述したような不連続な価値観の変化は発生せず、落とされたとしても自身の技術力が無かっただけとして納得出来る。このように、こういった選考であればその結果で自動的にある程度のフィードバックが自発的に行われる。

(大学院における)周囲の話を聞いてみるとこのような選考を行う企業は「多くはないが、存在する」という様子である。特にメガベンチャーにその傾向が強いと思われる。「多くはない」と書いたが、Twitterで見ている技術系の人間はこのような選考手順を経験していると見受けられるので、サンプルに依存する面が大きいことに留意して欲しい。

逆に(大学院における)周囲で受けた人間が多かった大手メーカーは「今の研究内容と入社後にやりたいことに関するプレゼンテーションと質疑応答」が多く、これは先程まで私が絶望していたような選考手順に相当し、実際私はこの選考手順で落とされている。そもそも「技術職の選考」なのにこのような選考だったことが実は納得出来ていない。技術職であれば技術を見るのが最も効率の良い手順なはずなのにどうしてこのような方式なのだろうか? もしかすると私が技術職だと勝手に思っていただけで実は総合/一般職だったのかもしれない。

以上のようにして、結局最後まで就活というシステムを理解も納得も出来ず終わってしまった。一般性を維持する為に、学生特有の評価軸や価値観を前提として書いたが、もしかするとこれは私だけが取り残されており、既に皆さんは適応しているのかもしれない。そうだとしたら恐ろしいことだし、この記事で一応目標としている「一般性」が失われてしまう事の方がもっと恐ろしい。就活、並びに周囲の就活生に対する不信感に似た感情を以て筆を置こうと思う。

結び

この記事を読んで「これだけひん曲がった考えでも内定を得られるんだ」と思って舐めた態度で就活に臨み、企業様に迷惑をかけることだけはやめてください。

Footnotes

  1. では一般性の無い事項は何かというと「受けた企業」とか「大学」とかである。これらの情報は今回開示しない

  2. 何社か参加したが、1社は参加期間が長い都合上、大学院の単位になるという理由で参加した

  3. 当然だが、選考枠であって内定を確約するものではない、インターン関連枠で受けた企業で私は1つ落ちた

  4. 本当は1ヨクト秒すら存在しない事を書こうと思ったが、接頭詞の常識の範囲を超えるのでやめた、もっと言えばプランク時間辺りを持ち出したかったがこれも流石にやめた

  5. そういえば、選考にその企業が問題を作ったCTFを用いるという企業があった気がしたが実は様々な事情で受けていない、一番の理由は気付いたら締切が過ぎていたことである

  6. 成績の他に「作問経験」もある

  7. 但し、求人をどうやって探すのかという問題は簡単に解決しない

  8. $x^2 - 2 = 0$に対する√2のような「無理数の解」では無い

  9. そもそも1年ぐらい前まで「ガクチカ」の事を何かしらの学力検査の略だと思っていたし「ダサい名前だな」って思って詳細を知りたくなかった、何でも適当に略さないで欲しい

  10. ある企業ではKaggleに専念出来るポジションがあるらしい

  11. 最終的にそこへの入社を決定した

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment