2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
高橋直大氏:みなさん、こんにちは。Day Oneを楽しんでいますでしょうか。AtCoder株式会社の高橋直大と申します。通称「chokudai」で通っているので、もしかしたらこの名前で知っている方もいるかもしれませんが、アルゴリズムのことをけっこうやっている人間です。
今回は「アルゴリズム人材の活かし方」というふわっとしたタイトルで話そうと思います。CTO協会のイベントなのにCTOではなくCEOですが、やらせてもらいます。
自己紹介をします。AtCoder株式会社の代表取締役をしている高橋直大と申します。名前を音読みにして「chokudai」と名乗っています。競技プログラミングの会社の社長をしていて、本を書いたり、Twitter活動で広報したりするのがメインです。フォロワーは5.5万人です。
プログラミングコンテストを真剣にやっています。スライドを見てもらえればわかるとおり、世界トップクラスと言ってもいい実力を持っていると思っています。
今日のトークテーマの「アルゴリズム人材の活かし方」について。
「今後入社するアルゴリズム人材ってどういう人? どう扱えばいい?」という、競技プログラミングやプログラミングコンテストの人たちがどういうものなのかという話です。また、そのアルゴリズムを用いて課題を解決するにはどうしたらいいのかについて話します。
今日はエンジニア、経営者、人事担当、誰が来るのか読めなかったのでアレですが、業務系の話をしようと思っています。Twitterのみなさん、コメントありがとうございます。けっこう見てくれているのがわかってうれしいです。
まずはプログラミングコンテストについて。プログラミングコンテストとは何か。問題がたくさん与えられて、プログラムを書いて、それがコンピューターによって採点される。正解なら点数を獲得して、不正解ならやり直し。点数や解くまでの時間によって参加者全員に順位をつけます。最後の機能はコンテストによってあったりなかったりしますが、すべての戦績からランクを計算します。
スライドの写真でイメージしてもらおうと思います。今はほとんどオンラインでやっていますが、コロナ前のオンサイトでやった時の写真です。これは学生選手権と呼ばれるもので、今年もやる予定です。コンテストの会場にこのように人がたくさん集まって、コードをガーッと書くということをやっています。
何人いるんだというくらいたくさんいますが、こういうことをメチャクチャやっていて、プログラミングで問題を解くことを楽しんでいる学生がたくさんいます。これだけいますが、写真は予選を通った決勝の人だけなので、予選を含めたらもっといるわけです。
主なプログラミングコンテストについて。僕の会社では「AtCoder」というサービスをやっています。海外にも、このようなサービスがたくさんあります。「Topcoder」というアメリカのサイト、「Codeforces」というロシアのサイトはサービスと言うべきかな。また「LeetCode」はどこなのか難しいんですが、採用試験に特化したサイトです。有名どころでは「Google Code Jam」や「Facebook Hacker Cup」、GAFAがやっているコンテストもあります。
これらは各社が採用のためにやっているものですが、ほかに高校生向けに「情報オリンピック」というものもあります。「Kaggleは?」と思う人がいるかもしれませんが、Kaggleは機械学習メインなので今回は外れるかなと思います。
プレイヤー人口もメチャクチャ増えています。5~6年前、2016~2017年には日本でリアルタイムでやる人は300人くらいしかいなかった。それが、(スライドを指して)少しデータが古いですが、2020年の時点では、5000人以上の日本人が毎週やっているコンテストに参加している。1回のコンテストに参加する人がこれくらいいる。2021年はコロナでメチャクチャ上がって、2022年は少し下がっていますが、リアルタイムで参加する人も1万人くらいいて、バンバン増えています。
プログラミングコンテスト人口については、一番出しやすいAtCoderのデータを出します。AtCoderの登録者数は約40万人。正確に言うと、今38万人かな。公開されるかたちで、所属を東京大学と書いている人が1,100人くらい、京大が500人くらい、東工大が400人と、高学歴の日本人の学生プレイヤーが非常に多いんです。
AtCoderやCodeforcesに特別スポンサードしなくても、今後入社してくるエンジニアは、プログラミングコンテスト経験者である可能性が非常に高いわけです。それこそ東大のエンジニアが入ってきたら、かなりの確率でAtCoderをやっているし、競技プログラミングを嗜んでいる人たちだということです。
では、どんなことをやっているのか。例えば、一番簡単な問題はどんなもので、どういうことをするのか。(スライドを指して)問題はこのように与えられます。
台形の要素が与えられていて、それに対して面積を求める問題です。プログラムをやっていない方はたぶんいないと思いますが、これを書くのは簡単で、例えばCで書くと、a、b、hを受け取って計算式を書いて出力します。
これが合っているか間違っているかの判断は難しいのですが、コンピューターが自動的に判定してくれます。テスト駆動開発のような仕組みを使ってコーナーケースをあらかじめ用意しておくことで、すべてのケースで正解するかをコンピューター上で採点して、リアルタイムで合っているか間違っているかが数十秒で出るシステムです。スライドのように順位表が出て、たくさん点数を取った人が勝ちとなります。
先ほどからプログラミングコンテストの説明ばかりでアルゴリズムの話をしていませんね。そもそもアルゴリズムとは何か。
アルゴリズムとは基本的に、計算をどうやるかという手段、やり方のことなんです。悪いアルゴリズムだと計算が遅かったり不正確だったりするし、良いアルゴリズムだと計算が速かったり正確だったりする。
スライドの図は国立情報学研究所の方が描いたものです。1本のニンジンから星形のニンジンを20個作りたい時、輪切りを作ったあとに1つずつ星形に切ると221回切らないといけません。しかし、サイドを切ったあとに全体を星形にしてから輪切りにすると31回で済みます。このようにやり方によって大幅に手間が変わることがあります。
コンピューターの世界だともう少しいろいろあります。例えば、スライドのAからBに行くのにどれだけ時間がかかるでしょうか? さあ、コメントの早い者勝ちです。間の線の数字は何分かかるかです。AからBに行くのに何分かかるでしょうか?コメントが殺到すると信じて先に行きます。
(スライドを指して)Aからここをたどって4に行って、右上に行って3に行って、上に行って2に行くと、4、3、2、1の合計コスト10で行けるんです。
コメント1つも来てない(笑)。まあいいや。
10で行けるんですが、これくらいなら人間の手でできると思っても(次のスライドを指して)「これできる?」って言われると、もうやりたくないですよね。AからBまでいくらって考えたくないですよね。コンピューターにやってもらいたいし、コンピューターにできることに価値がある。パッと見ればわかるとおり、6個だと簡単だったのに今は20個弱かな。
この丸のことを頂点と言いますが、頂点が20個くらいになった時点で、もうやる気をなくすんですよ。コンピューターでやっても当然同じことが起こって、やることが大きくなれば大きくなるほど処理は大変になる。
アルゴリズムの重要性として、インターネットの世界でデータを扱う数がメチャクチャ増えているんです。データが増えるとそれよりもはるかに多く計算時間が増えます。
例えば100人いればペアは4,500通りしかないけれど、1万人からAさんとBさんを選ぶパターンが何通りかというと4,500万くらいの組み合わせがあるわけです。つまり、データは線形に増えていったとしても、計算しないといけない量はそれ以上の勢いで増えていくんです。計算を工夫しないと高度な処理ができない。
今はかなり低レベル。レベルが低いというわけではなくレイヤーが低いという話をしています。(コメントを見て)この答えは19なんですね、コメントありがとうございます。僕は知らないんですけれど。
では、どんなことができるのか。(スライドを指して)これはALGO ARTISのページから持ってきました。液化天然ガス基地の運用効率化とか、なにかを効率化する。石炭火力発電所の燃料運用を効率化や最適化する時に……これだとスケジューリングかな? スケジューリングを1分刻みに正確に最適化するのは、人間ではできないけど、コンピューターならできる。だからすごいんです。
(スライドを指して)こちらは見た目がおもしろい例として、鹿島建設のホームページから持ってきました。鹿島建設は「クワッドアクセル」という自動運転をやっていて、工事現場を無人にするべく全部のマシンを人が乗っていない状態で動かしています。
これのなにがいいかというと、安全性を考慮する必要性が少し減るんです。人間だと車同士がぶつかったら死にますが、機械同士だと死ぬ人はいないから大丈夫。完全に制御されているから危ないこともできるし、そもそもぶつからないわけです。こういうすごいものがあります。
(次回へつづく)
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05