ひゅ~Menの雑記帳

主にパソコン関係のことについて適当にしゃべります

AtCoder社に行ってchokudaiさんと話したお話

本文中に使われている略

ち:chokudai談
ひ:ひゅ~Men談

なぜ初対面のひゅ~Menのインタビューを快諾してくれたのか?

ち:正直な話、基本的に「会おう」と言われたらできるだけ、どんな要件でも会うようにはしています。というのも、基本的に社長って結構仕事が曖昧で、例えばプログラマなら「このプログラムをちゃんと作る」などという、決まった仕事があります。けれど、「どういう仕事をやるか」とか、「その仕事をどうやって取ってくるか」とか、といったところを決めるところからが社長の仕事なんです。だからどんな話でも聞いてみないことには分からないし、どこからどう繋がるか分からないから基本的に会うようにしています。 実は、日経のコンテストはe-sportsの話から始まったんです。(笑)
ひ:e-sportsというと、ぷよぷよ関連からですか?
ち:少し違って、JeSU*1方面からの繋がりなんですけど、これは話すと長くなるので(笑)どこまで話していいかよく分からない(笑)
ひ:私も2時間でどのくらいしっかり話せるか分からないので…
ち:そうですね。
ち:いろんな話で、結構違うところから繋がることはちょこちょこあります。もとをたどれば日経の話は「フィンテック」という、テクノロジーと経済を融合させるところから来てて、その関係でe-sportsをやっている人と繋がり、そっからコンテストの話が始まって…といった流れです。 そんな感じでいろんな繋がりがあって、そこから仕事を取ることが多いので、いろんな人に会います。だから、学生さんが「AtCoderいいですよ~」といろんなところで言ってくれていることは、割と感謝しています。

広がりを深めるために何をしているのか?

ひ:chokudaiさんはTwitterで競プロ以外のことも話しているじゃないですか。それって広がりを深めるためだと思っているのですが、どうですか?
ち:半々だと思います。半分は競プロ以外の所から人を取ってくるとか、繋がりを作っていろんな知識を得るとか。競プロだけに集中してしまうと、競プロ界隈の常識で考えてしまうので、そこから離れるというのは当然あります。もう半分は趣味で、ぷよぷよなんかは6割以上趣味ですね(笑)
自分が面白いと感じるなかで、いろんなところに顔だそうと思っています。働くだけだとどうしてもつまらないから。

AtCoderで就職

ひ:特に個人的にはIT系はブラックだという印象が強いので働くだけだとどうしてもつまらなくなりがちだという印象があります。
ち:そうですね。AtCoderやっている人はそんなとこ入らないですけど。
ひ:そう思っているのですが、やはり変なところに掴まれたら怖いので…
ち:レート上げとかないと(笑)レート上げたからといって就職できるかというとよく分からないですけど。
ひ:レートはプログラミング力の一種の指標になっていると思います。
ち:そうですね。

就職用に競プロするのはいい?

ひ:そういえば、AtCoderが有名になったことで、就職用に競プロする人が最近増えているように感じます。これは、本来のAtCoderの目的とは少し違うように私は感じたのですが、chokudaiさんはどう思いますか?
ち:正直、競技プログラミングってなかなかやってもらえないから、取っ掛かりとして就職を使うことは否定的には考えてないです。ただ、就職というモチベーションだけで競技プログラミングで通用するレベルまで上達するというのは現実的ではないと思います。それが出来る人は何やってもどうせ就職できるからいいよと思っています。
ち:そういう人だらけになったら少し対策は必要ですが、現時点ではそういう人がランキング上位を牛耳ってはおらず、どちらかというとと競プロを遊びでやっていて、就職にもつながっているといった感じになっていると思います。なので、まだそんなに気にしてはいません。 ひ:(Twitterでchokudaiさんなどが)「競プロはゲーム感覚だ」とおっしゃっていたので、そんな感じだと捉えています。
ち:そうですね。ただ、就職に寄せているサイトもあります。日本だとpaizaがそうです。海外だとHackerRankとかLeetCodeがあります。ただあれをAtCoderの問題として、良しとしたくはないです。
ひ:LeetCodeの問題を見てみたのですが、AtCoderみたいな問題背景が無かったのでゲーム要素は薄い感触を受けました。
ち:そうですね。もっと真面目です。
ひ:やっぱり、問題に面白みが無いと楽しくやっていけないですよ。

AtCoderの問題管理システムはなぜ変化したか?

ひ:詳しくは知らないのですが、少し前までは問題セットを有志が作って、投稿するといったシステムだったと思います。それが最近のABCでは、オレンジコーダー以上を集めて、皆で問題を作っていくといった感じにしていると思います。それまでのシステムのままでも、問題の質はすごくいいと感じているのですが、どういう風な意図があって変えたのですか?
ち:AtCoder側のシステムが変化し、今まではspreadsheetで問題を管理していたものが、自社サービスに置き換わった影響です。そのおかげで問題を1問ごとに管理しやすくなりました。ちなみにサービスの前後ともにrng_58が問題を見ているのですが、解答が付いてない状態で解いているんです(笑)
ち:さらに、このシステムにすることで投稿者が1問ずつ投稿しやすくなりました。これらの理由で管理システムが新しくなりました。

AtCoderのサービスは誰が作っている?

ひ:こういうサービスって誰が作っているんですか?
ち:snukeです。
ひ:snukeさんってWeb系強いんですか?
ち:会社入ってから学び始めたのですが、普通にバリバリかけます。やっぱり競技プログラマーは一般的な開発やらせても強いです。

有志コンテスト開催にあたり、どのような準備がされているのか?

ひ:パ研コン*2みたいな、有志コンテストがAtCoderで数多く開かれていると思うのですが、どのように連絡しているのでしょうか?
ち:バイト勢*3がいたら、AtCoderのSlackで連絡します。そうじゃない場合は、TwitterのDMだったり、メールだったりバラバラです。
ひ:有志コンが数多く開かれているのは、おっしゃっていた「広がりを深める」という意義もあるのですか?
ち:実は、そこまで積極的に開催はしていません。というのも、writerが問題を作れる量には限りがあると思うので、できれば強くなるまでその問題を残しておいて、その問題の良し悪しが分かるようになってからAtCoderの公式に出してほしいからです。
ひ:でも開催しているということは、AtCoderにいつも問題を提供している人には信頼を置いているからですか?
ち:そうですね。ただ、Ratedを増やしてほしいという要望がたくさんある中で、労働力とか問題とかを有志コンに割きすぎるのは避けたいと感じています。しかし、コンテスト運営者はAtCoderでダメと言われたら、他のコンテストサイトでやるだろうから、AtCoderでやらせてあげるかと思い、やらせています。
ち:問題作成は早いうちからやる必要はないと思います。強い人が普段のコンテストで使えない問題を有志コンで使うのはありだと思います。Xmasコン*4とか。
ひ:そうすると技術室奥プロコン*5みたいのを私の部でもやりたいと思っていたのですが、厳しいですか?
ち:正直あまり推奨は出来ません。AtCoderが問題をチェックする余裕は無いので、ある程度信頼できる人に任せています。その影響で解答とかが怪しい場合が結構あるためです。でも、やりたければやればいいとは思います。楽しいことをやってもらいたいので(笑)でも有志コンは大変です。
ひ:square1001さん・E869120さんがTwitter上で有志コンの準備の進捗を挙げているのを見ると、実感します。
ち:双子は問題作成能力高いです。しかし、レートが高くても問題が作れない人もいるので、やはり作問は簡単ではありません。作問の過程でコーナーケースを列挙できなければいけないことも難しいです。
ち:そういった関係で、正確な問題を作ることは非常にコストがかかります。お遊びで作る分にはそうではないですが。ただ、お遊びで作った問題をAtCoderのトップページに載せると、AtCoderのブランドが落ちるので、そこの判定はしっかりしています。

コーナーケースの見つけ方

ひ:コーナーケースを考えるときって、どのようにしていますか?
ち:解くときと近い感じです。しかし、一人だとカバーしきれないので、rng_58・writer・testerの三人で考えています。
ひ:正直、問題を解くときにコーナーケースを意識しなくても水色まではこれてしまったので、実感が湧かないです。
ち:極端なケースを考えることが一番大切です。一番大きい・一番小さい・両極端といったもので、これらを考えるだけでも全然違います。グラフの問題だったら一直線のケースとか二分木のケースとかです。パターンが多いわけではないので、問題のパターンごとにおさえるといいと思います。
ち:しかし、適当な嘘貪欲などの対策はかなり難しいです。こういうのは思いついたら落とすけど思いつけなかったらしょうがないという風に捉えています。

競プロの「典型」とは?どうすれば身に付く?

ひ:コーナーケースを探すときにはいくつかパターンがあると言ってました。そして、競プロにもいくつかのパターンがあると、はてなブログの記事*6でおっしゃってましたが、そこに載っていた「典型」という概念が広いと感じました。汎用的な「典型」を身に付けるためには、どうすればいいですか?
ち:「典型」という言葉自体が曖昧で、多くの人が自分にとって簡単な問題を呼んでいると思います。自分の場合はそういう意図ではないので、ブログ中で取り上げた「典型」を身に付けるには最低でも2000問ぐらい解く必要があります。なので、効率的に身に付けることは難しいです。しいて言うなら、問題を解いた後に「この問題の肝はどこだったか?」というのをしっかり考えることは大切です。一色下の人に対して、30文字ぐらいで伝えようとしたときのヒントが、この問題の肝だと思います。それを考えると、汎用的な「典型」をつかみやすいと思います。
ひ:個人的には、後輩に教えるときも結構発見があります。躓きやすいポイントを発見できたりするので。
ち:さっき作問はお勧めしないといいましたが、「この問題のこのエッセンスを使って他の問題を作る」というのはいいと思います。1問解いただけで3,4問分の経験が積まれることになるので。作れればの話ですが(笑)

プログラミングの天下一武道会

ひ:ブログ*7で、「プログラミングの天下一武道会を開きたい」と書いてありました。これは、AtCoder World Tour Finals*8によって実現されると思っているのですが…
ち:そうですね。1回のコンテストでいえばそうですし、普段のコンテストもそうだと思います。
ひ:世界中のプログラマーが同じフィールド上で戦うという意図で使っていたのですか?
ち:何を範囲にしてやってもいいと思います。世界中が範囲なのがAtCoder World Tour Finalsです。こういうので世界で戦う場を設けることができるのはすごく面白いと思っています。それぞれの人が競いやすい場を作っていきたいと思っています。
ひ:JOI*9とかICPC*10とかを卒業した人向けにAtCoder World Tour Finalsを開くということですか?
ち:ICPC修士1年ぐらいまでは出れるので、卒業はまだ早いと思いますが、JOI卒業層はターゲットですね。中高生向けにはあまりAtCoderはやっていません。JOIだったり、PCK*11だったりに任せています。今のAtCoderの収入源は就職につなげるところなので難しいですが、本当はそこも手を付けたいのですね。

感想

まず、このインタビュー記を書き終わるのにインタビュー日から一か月程経過してしまったことを深くお詫びいたします。遅くなって申し訳ございません。Twitter上でも割と絡んでくださるchokudaiさんですが、今回インタビューを快諾してくださったことには本当に感謝をしています。ありがとうございました。また、実際にお会いして話してみると、思っていた以上に話しやすい方でした。2時間、お時間を頂戴しましたが、すぐに過ぎてしまいました。インタビューを通して、全年齢が対象であるTwitter上ではなかなか聞くことのできない、学生に向けた話を深く掘り下げて聞けたので、とても充実した体験だったと思います。また機会があったら、今度は部活の後輩と一緒に伺えたらいいなぁと思いました。
ここまで読んでくださった皆様、インタビューを受けてくださったchokudai様、ありがとうございました!!!