AtCoderはどうやって年商10億円を超えるのか?プログラミングコンテスト運営会社の野望
(16/02/01追記) タイトル釣りだって多くの人に言われたので、タイトルの「越えた」→「超える」に直しました。注釈芸と一貫性を持たせるとこういうタイトルが自然かなぁ、と思ってたので、タイトル釣りの自覚はあんまりなかったです>< ごめんなさい><
はじめに
この記事には、嘘が多く書かれています。タイトルも大嘘です。現状と展望を交えた記事が書きたかったんです。が、タイトルを除いて、明確に嘘である点には脚注をつけています。*1 嘘以外にも脚注がついてることもあります。もちろん、嘘だと思わずに本文で嘘を言っている可能性は0ではありません。
スマホは知りませんが、PCではマウスカーソルを合わせることにより脚注を見ることが可能です。脚注を見ながら記事を楽しんでください。
*1:こんな感じ
競技プログラミングってなあに?
近頃、「そもそも競技プログラミングって何?」と聞かれることが多かったので、説明用の記事を書いておこうかなと思います。
よくある質問的なものも少しだけ。
(間違えて記事消しちゃったので復旧しました)
そもそもプログラミングってなに?
プログラミングというのは、コンピュータが理解することが出来る言語を書くことにより、プログラムを作ることを言います。パソコンの中で動くものを作ることだと思って貰えば大体間違ってないです。
競技プログラミングとは?
競技プログラミングとは、プログラミングの技術を競い合うコンテストの総称です。
色々なジャンルがありますが、今回は、出来るだけ狭義の競技プログラミング(AtCoderやTopCoderなど)について説明します。
プログラミングの難しさは、組みたいプログラムによって違います。単純な計算を行うだけのプログラムは簡単に組めますが、難しい計算などを行うプログラムは、コードが複雑になったり、数学的な工夫をしないと、実行時間が長すぎて終わらなかったりします。
競技プログラミングでは、どんなプログラムを作るべきかが与えられる(以下、問題と呼ぶ)ので、要求通りのプログラムを作ることが目標です。問題が複数与えられるので、たくさん解けた人が勝ちで、正解数が同じ場合は早く解けた人の勝ちです。
具体的にはどんな問題なの?
競技プログラミングで出てくる問題は、以下の4要素で大体出来てます。
- 問題文
- 入力形式
- 出力形式
- 入出力例
具体例を出すと、こんな感じです。
問題文
A,Bの2つの整数が与えられる。A+Bの値を出力しなさい。
入力形式
2つの整数A,Bが、スペース区切りで与えられる。
出力形式
求めるべき答えを1行で出力しなさい。
入出力例
6 3 → 9
123 555 → 678
これでは簡単すぎて問題になりませんが、形式としてはおおよそこんな感じになります。今回は整数が入力として与えられましたが、文字列(abcde、など)が与えられたりします。
難しい問題って、例えばどういうの?
イメージしやすいものだと、川渡り問題とかでしょうか?
オオカミとヤギを連れキャベツを持った農夫が川岸にいる。川にはボートがあるが農夫の他には動物一頭かキャベツ一個しか乗せられない。農夫がいなければオオカミはヤギを襲うし、ヤギはキャベツを食べてしまう。すべてを無事に対岸に渡すにはどうしたらよいか?
こういう問題、どうやって解けばいいか難しいので、うーんうーん、ってなると思います。大体、人間が「うーんうーん」ってなる問題は、コンピュータにも難しいです。
こういう問題で、人数や登場人物、関係性が変わっても解けるようなプログラムを書くのは、やっぱり難しいですし、書ける人はすごい!ってなるわけです。
結局どういう能力を競うことになるの?
これは多少主観が入りますが、
- 書きたいプログラムを早く正確に書ける能力(実装力)
- 普通に計算出来ないようなことも、数学的工夫により上手く計算出来るようにする能力(アルゴリズムを考える能力)
あたりは間違いないんじゃないのかな、と思います。
競技人口は?
日本人の競技人口ですが、AtCoderにコードを提出したことがある人、という基準でカウントすると、一応5桁に乗るくらいです。
そんなに多くないけれども、プログラムを書ける人口を考えると少なくもない、って感じでしょうか?
ほぼ毎週行われているAtCoderのプログラミングコンテストでは、毎週300~600人程度がリアルタイムで参加しています。
就職に有利なの?
立場上、NDA的に話せないことが多いのですが、dwangoさんが記事を出してくれました。
昨年実施した第1回dwangoプログラミングコンテスト「ドワンゴからの挑戦状」では、社会人含めてコンテストへの参加者は590人となり、そのうち12名が2016年度ドワンゴ新卒採用にて内定するという結果となりました。
競技プログラミングをすることで内定が得やすくなる、という証明にはなりませんが、競技プログラミングをしている人は内定が出やすい、程度の証明にはなっているかと思います。
他にAtCoderでコンテストを開いている、リクルートホールディングス(indeed)、KLab、Donutsなどは、似たような傾向があるのではないかと思います。
この記事は出来るだけ主観が入らないように書いているので、「仕事でどう役立つ」「どうやったら強くなる」「何が楽しい」「実際内定が出やすくなるか」などは(需要がありそうなら)また別の記事で!
ブログタイトルを変更しました
ブログタイトルを「AtCoder社長のブログ」から「chokudaiのブログ」に変更しました。
理由は簡単で、「社長として書くべきこと」をブログで書くなら別の場所の方が多分良くって、この場は「chokudai」としてのアホさを前面に押し出す方向の方がずっと書き易いからです。
ってことで、このブログでは、競プロの真面目なことは書くかもしれないけど、社長として真面目なことを書くことは、多分あんまり多くないです。最近変な記事が多いと思いますが、そういう方向性になります。
まぁそれでもいいよって人だけ、今後ともよろしくお願いします。
(社長として何か書いてほしい、というのがあれば、それ用の場所も用意するので、そういう人がいたら教えてくださいな)
ちやほや駆動開発 ~めぐるちゃんになった1か月~
はじめに
僕は、競技プログラミング、という競技で、トップクラス、とギリギリ呼べるくらいの選手です。こうした実力をキープするのに、一番大切なのは、練習を続けることだと思っています。練習を続けるにはどうすれば良いでしょう?たくさんの練習をするには、モチベーションを高める必要性があります。
さて、それでは、どうしたらモチベーションが高まるか?僕は、ちやほやされるとモチベーションが高まります。世界○位を取ったら嬉しい、というのもありますが、「世界○位なんてすごい!!!」とちやほやされる方が嬉しいくらいかもしれません。
さて、そんな自分ですが、最近ちょっと問題があります。
ある程度良い成績を取るのが当然になってしまったので、多少良い成績を取ったところで、誰もちやほやしてくれなくなってしまったのです。困った。これは困った。これではちやほやしてもらえない。これでは、現在の実力を保つことが出来ません!
さあこれを解決するためにはどうすれば良いか。ちやほやされないのであれば、ちやほやされるために努力をする必要があります。
さて、少し周りを見てみましょう。特に良い成績を上げているわけでもなく、少し情報系のツイートをしているだけで、ちやほやとされている人たちがいます。それは誰でしょう?女性です。女性たちです。
情報系でなければ、こんなことにはならないのかもしれません。でも、残念ながら僕は情報系。女性が、女の子が、圧倒的に不足しています。そこにいる女の子たちが、ちやほやされるのは当然と言えるかもしれません。
実は競技プログラミングの女の子は、そういう風になっている人は少ないんだけど
ちょっとわかんないことをTwitterで呟くだけで、圧倒的な量のリプライが飛んでくる、そんな現状を見て思うわけです。ずるい。女の子になりたい。
もちろん、女の子の方が恵まれてる!とかいうつもりはあんまりありません。好きでもないおっさんから大量にリプライがくる環境は、多くの女性にとって良い環境ではないでしょうし、ちやほやされているからといって、それが幸せでない人はかなり多いでしょう。ってか大半の場合、女性の方が苦労してると思います。
それでも僕はちやほやされたい。あんな風にちやほやされたい。いや、女性としての面倒なトラブルない状態で、ちやほやだけされたい。ちやほやの性別は問わない。
いや、特にジェンダーが女の子とか、そういうわけじゃないんです。ちやほやされるのが羨ましいんです。恋愛対象も女性ですし、性自認も男性です。
であれば、なろう。女の子になろう。女の子になってちやほやされてやろう。そう思うのは、ごくごく自然なことではないでしょうか?
そんな僕が、1か月だけ、因幡めぐるちゃんになったお話です。お暇な人だけお付き合いください。
続きを読む
日記書いた方が良いのかなあ
日記、見事に三日坊主になったのだけれども、実はそれ以降に2,3回書こうとしていた。
なんだけど、「ぶっちゃけ書くことによって自分のためになるものではないし、そうなると時間の無駄だよなあ」という感じがしている。
去年は、コンテスト中に日記を書くようにする、という行為をしてみたけど、その結果5年ぶりの決勝進出を逃した、ということもあって、今年は、そのタイミングで日記を書くのはやめようと思っている。
これで今年余裕で決勝進出したら、日記が悪かったということで。