moritaoy’s blog

グルメブログ説があります

サイバーエージェント 2020年 8/22 ゲームAI×プロコン型インターン

サイバーエージェントの 1dayインターンに参加してきた話

サイバーエージェント主催の1dayインターンに参加してきました。

どちらかというと、インターンというよりはチャレンジ、コンテストに近いものです。これが中々面白かったです。

 

参加したもの

www.cyberagent.co.jp

 

内容

詳しい概要は非公開ですが、題名の通りゲームのCPUの行動AIを組むものです。

AIとはいってもシンプルな内容で、思考回路の「ロジック」を組み立てる所に焦点を当てた内容でした。上のリンク先に一例があります。

競技プログラミングに近い部分も多かったですね。

 

参加するまで

参加したきっかけ

2020年3月下旬に、1対1で人事やエンジニアの方と話すことが出来るイベントに参加しました。

その際にCAの人事の方と話す機会があり、

「こういうイベントがあるんだけど、moritaoy君に合うと思うんだよね。応募してみない?」

のような感じでイベントの存在を紹介していただきました。

インターンという存在のハードルの高さにビビッていたのですが、折角だし...

ということで応募することにしました。

結果、参加させていただけることになりました。超嬉しかったです。

参加までにしたこと

このインターンではUnityベースのゲームを扱うため、必然的にC#への理解が必須となります。

一通りC#の構文を確認しました。C++からの入りは楽でした。

加えて、多少ライブラリを整備していました。(が、壊れていました)

一応Unityへの理解を深めるため、チュートリアルのビー玉を転がすゲームを作りました。Unity本当に便利ですね。皆が使いたがる理由の端っこが見えた気がしました。

 

いざ行け、インターン

当日は大張り切りで挑みました。

小さめのチームに分かれて、各チームにメンターがついてアシストをして下さる形でした。

結果

撃沈しました。全体で6位でした。

悪くはないのですが...3位以内に入れたと思うばかりに悔しいです。

反省点

問題が非公開の都合上、かなり抽象的です。ゴメンネ

C#のリファレンス片手に実装をしていました。コードを書くときに詰まるのが、これほどストレスとは...

ただし、これは自分の中で上手く見切りをつけて学習したレベルの結果なので悪いことではないと思います。

以下が反省点です。

  1. 実装したコードに柔軟性がなかった
  2. ライブラリが壊れていた

1は、競技プログラミングの癖で、その場その場での実装に寄りすぎていました。使いまわしそうな関数の分離は出来ていたのですが...

競技中に、ジャッジサーバーの仕様と反する地雷を踏んでしまい、その改修や原因究明含め1時間弱かかってしまいました。

そもそも、いわゆる「綺麗な実装」をしていれば踏むはずのない地雷でした。加えて、修正にそこそこの時間がかかったのも、全体の修正を見据えない実装のせいでした。反省です。

2は、自分でもびっくりしました。ひっそりと準備していた秘策だったのですが、いざ組み込んでみると動きませんでした。原因はC#への理解不足です。準備不足ここに極まれり。

このミスはかなり問題だと感じています。そもそも一応の確認をして正しいことを検証して本番に臨んでいます。つまりは検証に穴がありました。念には念をと言う通り、「常に正しいと思うこと自体に疑念を持つ」という姿勢を重視しなければならないと考えました。しかし、具体的にどうするか。これがなかなか難しい... 今後の課題です。

 

感想

上ではしょげ気味ですが、実際には参加してものすごく楽しかったです。

何より新鮮でした。普段の競プロとは一風変わったプロコンで、5時間の競技時間いっぱいを楽しく真剣に取り組めました。充実感半端なかったです。

加えてCAさんの社員さんが優しい!懇親会での会話や、メンターさんに質問した時、人事の方と事前面談した時、そのそれぞれで本当に学生の私に対して親身に接してくださります。会社の脳内イメージ爆上がりです。

 

ここからはちょっと真面目な学び。

目標を定めることの大切さを感じました。インターンを通して何を得たいか、これを言語化して置くだけでインターンに参加した時に得られるものは数倍変わると思います。

で、この点で人事の方はプロです。人事の方と壁打ちさせていただくことでかなり具体的に言語化することが出来ました。

具体的に以下の3点を言語化しました。

  • インターン終了後の目標
  • 事前に準備できること、勉強すること
  • 当日意識すること

インターンに限らず、この3点は何かに参加するときに定めておくと良いと思います。で、これを定めるときの流れはこんな感じ。

  1. 参加を通して何を得たいか、何を期待するか
  2. 得られるものの最大化のために取れる準備、対策は何か。知っておくと良い情報はあるか
  3. それを得るためには何をする必要があるか。それを出来る機会はあるか、どのタイミングでするか

かなり一般的に使えるフローだと思います。

是非見てくださった方も頭の片隅に入れてもらえれば。

 

まとめ

楽しかった!これに尽きます。

如何せんインターンと名の付くものに参加したことがなかったので、なかなか怖かったところはありました。

しかし、事前に人事の方やエンジニアの方と話す中で緊張がほぐれたのでしょうか?当日はウキウキで参加することとなりました。

得られたものもたくさんです。本当に参加してよかった。

サイバーエージェントの皆さま、当日会話してくださった方々、本当にありがとうございました!