Blog応援メッセージ来るACM-ICPC国内予選に参加するみなさまに向けて、協賛していただいた企業の方々からいただいた応援メッセージを掲載します。日本タタ・コンサルタンシー・サービシズ株式会社LINE株式会社ACM-ICPCに参加される皆さんLINEはサービス提供している主要4カ国(日本、台湾、タイ、インドネシア)におけるMAUは1億7000万人となりました。沢山の方に普段のコミュニケーションとして利用していただき、それを支えるためには大量のデータを素早く効率的に処理する必要がありますが、愚直な実装を行っても問題の発生は避けられません。私たちはこの大規模サービスを効率的に、かつ安定して提供するために、さまざまな技術を活用しています。中でもICPCなどのプログラミングコンテストで求められる効率的なアルゴリズムやデータ構造の知識は日々進化するサービスを支えるために役立てています。ICPCは他の人と一緒にコードを書くことで、自然とコードレビューを行い、その習慣が身につく機会にもなると考えています。社内でも実際のコードとレビューコメントを使ってやり取りを行い、エンジニアの意思を可視化できるようにしています。良いコードを書き、良いサービスを作るには、コードレビューはなくてはならないものです。大会でよい結果が生まれることを祈念しております。つくば大会でお会いできること、楽しみにしております。Tokyo(リクルートホールディングス)ソフトウェアエンジニアの三上です。私も、つい去年までは皆様と同じように選手としてACM-ICPCに参加していました。Indeedでは、月間2億を超えるユニークビジター数の世界規模の求人情報検索サービスの開発を行っています。このような規模のデータを支えるサービスの開発においては、何気ないコードがボトルネックにならないよう気を使うことも多く、競技プログラミングで培った感覚が活かされる機会は多いです。Indeedには、世界大会の経験者も含めACM-ICPCの経験者が国内外問わず多数在籍しており、ソフトウェアエンジニアとして活躍しています。そのような社員の中には、現在も競技プログラミングを精力的に続けている方も多く、ランチタイムには最近参加したコンテストや、面白いアルゴリズムの問題について話し合うといったこともあります。ACM-ICPCは世界で最も規模が大きい大会であることに加え、他のコンテストには無い性質があります。それは、多くのプログラミングコンテストが個人コンテストである一方、ACM-ICPCは3人チーム戦で、さらに使用できるコンピューターは1台であるということです。このような性質のコンテストでは、各々の個人技能だけでなく、それを活かすチームワークも重要な鍵となってきます。このチームワークというのは思いの外難しく、それぞれの能力を活かすも殺すもチームワーク次第です。ACM-ICPCに参加する皆さんには、個人技能を高めることは当然のことながら、ぜひこのチームワークという点にも焦点を当てて練習を頑張って欲しいと思います。OBになって思うこととして、ACM-ICPCへの参加をきっかけに広がる人脈はとてもかけがえのないものだということです。私自身、共に世界大会に出場したチームメイト達とは今でも同じオフィスで働いており、関係が続いています。皆さんが予選突破を目指し、進出しようとしているアジア地区大会は世界大会への切符を得るための大会であると同時に、アジア地区の優秀な選手が一同に集まり、競い合い、交流しあう国際大会でもあります。そのような大会に参加し競い、交流しあうことが、皆様の人生においてとても良い糧になると信じています。Networksエンジニアの楠本です。早いものでICPCには選手や運営のボランティアなどで関わり続けて9年近くが経ちました。選手の皆様を応援しているのは毎年のことなので、今回は弊社の事業領域の一つでもある自動運転技術について簡潔に書きたいと思います(ただし内容は一般的なもので、弊社の取組みそのものというわけではありません)。自動運転の研究開発は割と昔からあるようですが、近年のセンサー技術の発展や深層学習などによる認識精度の向上によりその実現可能性が増し、注目が集まっています。自動運転技術が社会に与える影響が大きいことは明らかでしょう。交通事故の削減、通勤ストレスからの解放、また普及後の話になるかもしれませんが交通流の全体最適化といったことも考えられるかもしれません。そのような技術を作るためにはどうするればよいでしょうか。自動運転技術は巨大なシステムであり、アプローチは一つではありませんが、1.センシング2.認識3.行動計画4.制御という4つの構成要素からなる枠組みを用いたアプローチが一般的だといわれています。最初の段階であるセンシングでは車載のセンサーから外界の情報を得ます。センサーというとカメラが有名ですが、他にも距離を高精度に測定できるライダーや、悪天候に強いミリ波レーダーなども用いられることがあります。世界座標を得るためにGPS情報も取得します。次の段階の認識ではセンサー情報から外界に存在する物体を検出したり、また地図情報などと照らし合わせることで現在位置の推定をより精密化します。近年の深層学習による認識技術の発展は目覚ましいものがありますが、車載の計算資源には制限があるため、製品化を考える場合には計算リソースを考慮した工夫が必要となるでしょう。行動計画では、認識結果をもとに車をどう動かすのかを決定します。ここでの判断はカーナビレベルの最短路のような大域的なものからモーションプランニングのような詳細な判断までいくつかの階層があります。安全性の担保や乗り心地の考慮が重要な課題になります。最後の制御では行動計画での判断を実際の制御値に変えるための計算を行います。このような様々な要素技術の組み合わせによって自動運転は成り立っています。一部の難易度の高い課題では多くの試行錯誤が必要となり、解決する方法を考えプロトタイプを作成する、ということを繰り返しています。ACM-ICPCの経験で培ったアルゴリズムとコーディングの能力はこういった場面で活用されていると感じます。上の写真は現在社内にいるプログラミングコンテスト出身者(国際情報オリンピック,ICPCなど)を集めて撮影したものです。我々は皆様のICPC国内予選の参加がかけがえのない経験となることを祈るとともに、つくばでお会いできることを楽しみにしています。株式会社ドワンゴシェルソートの話をします。[1971])」ことを見ていきましょう。