日々精進

aikoと旅行とプログラミング

COLOPL INTERNSHIP 2018 BUILD UP 参加記

IMG_6860.JPG (1.6 MB)

COLOPL INTERNSHIP 2018とは

今回、株式会社コロプラ(以下コロプラ)で開催された COLOPL INTERNSHIP 2018 に参加してきた。これはインターンシップの総称で、その中にエンジニア向けのMASH UP, HACKATHON, BUILD UP, プランナー向けのTHE PLANNING GAME, デザイナー向けのSTEP UP, 総合職向けのTHE STRATEGが存在する。今回参加したのは、エンジニア向け&&サーバーサイドエンジニア向けの BUILD UP に参加させていただいた。

株式会社コロプラとは

コロプラを知らない人、そんなにいないのではと思いつつも一応書いておくと、社長の馬場さんが作成した「コロニーな生活」というゲームがきっかけで2008年に法人化。その後も、「クイズRPG 魔法使いと黒猫のウィズ」や「白猫プロジェクト」他にも「ツムツムランド」などのゲームを世に送り出している。最近はゲームだけでなく、VR事業 などにも注力している(ことをインターンシップに行ってから知った)

会社は恵比寿にある。あの(?)恵比寿ガーデンプレイスタワーにある。恵比寿駅東口からずっと屋根があるので、雨がある日でも安心である。にしても恵比寿は何度来ても若干場違いな感じがある。何なんだろうあの感じ。ビール飲みたい。

サーバーサイドエンジニア向けインターンシップ BUILD UPとは

エンジニア向けのインターンシップの中で、サーバーサイドエンジニアを志望する学生に向けたインターンシップがこのBUILD UPである。BUILD UPの説明を公式HPから引用すると、

コロプラで実際に運用されているゲームで、現場の業務を想定した課題に取り組みます。先輩エンジニアのサポートのもとで開発をし、なかなか経験できない高トラフィック下の実務に近いコーディングを学べるため、ゲームの裏側を実践さながらに経験でき、確実な実装力アップに繋がります。また、コロプラの水準を満たすアウトプットをしていただけた場合は、実際のプロダクトに反映しユーザーさまにお届けします。(引用元:https://be-ars.colopl.co.jp/internship2018/engineer/buildup/

とある。つまり、普段体験することのないリクエストやトラフィックを処理するためのアーキテクチャアルゴリズムなどを考え実装するというものである。この 実際に運用されているゲームで現場の業務を想定した課題 というのが今回選考を受けたモチベーションの一つで、普段そこまでパフォーマンスを意識して書いていたことがなかったこと、とりわけパフォーマンスを要求されるゲーム業界での経験値を積みたいという思いから応募した。

あと地方の方あるあるだが、「交通費全額支給・宿泊費全額支給」というのが大変うれしい。むしろこれがインターンシップを選ぶ基準になっている気もする。あと、日給2万円 です。最高。

選考フロー

選考フローとしては,

  1. エントリーシート提出
  2. 書類選考
  3. 技術テスト
  4. 面接
  5. 合否通知

という流れであった(ごく一般的なインターンシップの選考フローだと思う). 面接では人事の方と気さくに、でも様々なことをお話することができた。質問も結構したようなイメージが有る。あくまで持論だが、この業界面接がフランクだし、肩の力を抜いて自分の思っていることやお気持ちを伝えるのが大事だなと思う。想定しているよりも合否通知に時間がかかったので、落ちたのでは…と思っていたところに合格のメールが来たので嬉しかった。

合格してから

格通知がきてしばらくすると、家に課題書籍が送られてきた。正確には課題というわけではなくて、これを使うので勉強しておいてねというもの。自分はやったことがないものだったので、とりあえず行くまでに一通りやろうとして前日に1冊終わった。計画性の無さがよく分かる。その他にも、サーバーサイドなので軽くMySQLのパフォーマンス周りの部分を復習したり、そもそも使う言語の方を復習したりしていた。その間にも他のイベントやISUCONの準備等でバタバタしていたらいつの間にかインターンシップ当日という感じだった。

インターン中の日記

インターン中に書いていた個人的な日報のようなものを乗せる。最終日になればなるほど何も書いていないのは察して。雰囲気だけでも伝わると良いなということでのせます。途中出てくるいろんなものは最後に社の雰囲気みたいなところにのっているかもしれない。

1日目

  • 絶好のインターンシップ日和(台風が来ています)
  • Twitterでしかつながってない人と駅で待ち合わせする
  • そして遅れる(電車が)
  • aikoきいて気合を入れる
  • 無事に合流するもコミュ障を発揮する
    • ????「くまさんじゃん」
  • 入り口にくまがいます(くまさんほんとかわいい) IMG_6928.JPG (1.8 MB)

    • 私のアイコンは別のくまなので謎の親近感を覚える
    • 親戚ではない
  • 初日のガイダンスを受ける
  • 一人一台MacBook Pro(13inch, RAM 16GB)を貸与される
    • 最近メモリ16GBぐらいないとしんどくなってきている
  • なんとディスプレイも一人一枚あってうれしい
  • 環境構築バトルをする
  • いつもと違ってかなり順調に行くので焦る
    • これは社員さんの準備のおかげ
  • 昼飯がステーキ

    • 実質夕飯という感じだった IMG_6862.JPG (2.0 MB)
  • 眠気

  • Code City というものを知る
  • 基本的な構成に関する講義を受ける
  • 台風がいい感じに接近する
  • 課題に取り組み始める
  • 無限コーヒーが得られる
  • 台風の影響でまさかの早退になる
  • 17時には帰宅になる
    • まあね、初日だからね
  • 懺悔

2日目

  • インターンシップに行くといつもそうだが、当たり前のように寝不足
    • 部屋の中のあるランプの切り方がわからずめっちゃ明るかった
  • 9:30ぐらいに出社する
    • 普段の大学よりもかなり早く出社しているため, 実質早朝出勤
  • 朝から二人ぐらいオフィスまで連れて行く
    • みんな迷い過ぎでは?
  • コロデリにふるーつがわらわらしているのを眺める
    • コロプラでは朝フルーツとかシリアルを無料で得ることができます
    • 無限のバナナがある(いいえ加算有限)
  • コーヒーを無限に飲む(いいえコーヒーも有限)
  • 今日も講義パートがあってDBに関するものをいろいろ知る
  • お昼はなんかオシャレなところで熊を見ながら食べる
    • というか社内に無限に熊が存在している
  • サーバーサイドなので, Mackerelを食べる IMG_6895.jpg (2.3 MB)

  • オタクこわ…ってなる

  • 意外とPCゲームが好きな人が入るという話を聞く
  • 本来昨日行われるはずだったオフィスツアーが開催される
    • 社内の写真は後ほど
  • 午後もコーヒーを無限に飲む
  • 相変わらずのGit力の弱さを感じる
  • トイレに10290492039029320回ぐらい行くなどする
    • 2日目, 実質トイレと席を往復していたら終わっていた
  • 自頭の悪さで爆発しそうになる
  • 夕飯は牛タンシチュー IMG_6904.JPG (1.6 MB)

3日目

  • なんか朝起きたら北海道が大変なことになっていてビビる
  • 大坂なおみ錦織圭が4強でめでたい
  • 今日もやっぱり早めに出社
  • 朝食みながら見る景色がエモい
    • オフィスからの景色が大変良い
  • 今日は一日作業日なので, 講義パートは無し
  • お昼ご飯、人生で一番オシャレな中華だった(これは酢豚) IMG_6913.JPG (1.7 MB)
  • 社員さんにaikoジャンキーを発見する(!!)
  • やっぱり眠くなってる
  • ごはんたべながらGCPのお話をする
    • やはり企業だと個人ではできない規模の実験とかもできていいなあとなる
  • 支離滅裂な思考・発言 Screen_Shot_2018-10-05_at_1_00_50.png (18.5 kB)

  • コーヒー無限にのんでる

  • 机の上に福井要素をおいてアピールする IMG_6914.JPG (1.5 MB, orientation fixed)

  • あ〜〜〜〜マジで実装難しいな!!!!!しか言えずに1日終わる

  • Instagramのストーリー見てないで帰りなさい!!!って言われる(それはそう)
  • お魚食べて優勝 IMG_6918.JPG (1.8 MB)

4日目

  • あの、早めに出社です
  • 朝早めにきてバナナとサンドイッチとコーヒーを食べるのが日課になりつつある
  • 今日は発表日なので、あまり時間がないと焦りつつ最後の課題に取り組む
  • お弁当食べながらもくもく IMG_6934.JPG (1.5 MB)

  • めっちゃ頑張ってるときに、推しアーティストのMVが最優秀賞とっていて喜ぶ

  • 色々あってスライドを作るのがめちゃくちゃギリギリになって、終わらね〜〜〜〜〜っていいながらスライドを書く
  • 成果発表会開始
  • スライドに某くまを載せることに成功した!!
  • 各チーム、それぞれインターンシップ修了証を貰う
  • 動く方のくま(きぐるみ)がおるやんけ
  • 片付けして懇親会
  • 片付け中、ナチュラルにノートPCを自分の鞄に入れる人が続出する
  • 懇親会スタート
  • 恵比寿のうまいお酒情報を聞く(あれ?)
  • 人事の人、実質店員
    • 完全に我々の注文を受け取って店員さんにリレーする人になっていた
    • 店員さんより店員さんをしている
    • 鶏肉フェスティバルだった
  • 役員の方も到着してワイワイ!
  • いい話をきいて締め
  • 解散!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

社内の様子

入り口

エレベーターがくまさんでかわいい。1台だけ目をつぶっている。 IMG_6927.JPG (1.7 MB) 入り口にいるくまさんは思ったより大きくて威圧感がすごい IMG_6928.JPG (1.8 MB) すっごいきれいな待合。ソファーふかふか。ぬいぐるみとにらめっこしていた IMG_7360.png (4.9 MB)

オフィス

我々が作業していたオフィス。この画像でいうと左側の椅子が集まっている部分で作業していた。 IMG_6891.png (2.1 MB) 顔を横にふるとたくさんぬいぐるみがいる。めっちゃかわいい。あと当たり前のようにくまもいる。かわいい。 IMG_6893.JPG (1.9 MB) 基本的にこのスペースで講義が行われた。窓からの景色がエモ IMG_6888.JPG (1.6 MB) 会社の窓際にはソファとか椅子, テーブルが置かれている。基本ここで朝ごはんを食べていた。この横にフルーツが盛られていた。 IMG_6909.png (1.9 MB) コーヒーなどを無限に得られる IMG_6896.JPG (1.4 MB, orientation fixed) 別のフロアにはこんなスペースも。右手のテレビがあるスペースは、ゲームがめちゃくちゃおいてあります。休憩時間とか就業後にあそんでるみたい。 IMG_6921.JPG (1.9 MB) これ完全に持論ですが、イケてる会社は壁に草が生えている気がする。穴があいてるところは、中で作業できます。もくもく。 IMG_6920.JPG (2.1 MB) そしてこれがコロパーク。ここでお弁当食べたり、成果発表を行った。めっちゃかわいい。 IMG_6924.JPG (1.6 MB) さわれるタイプのくまさんがいる。かわいい。このくまにもたれかかってる社員さん多数存在した。 IMG_6925.JPG (1.9 MB) こたつも生えている IMG_6926.JPG (1.6 MB) 部活動もけっこうあるみたいだった IMG_6922.JPG (1.6 MB)

他にもマッサージルームがあったり色んな所にテーブルがあって立ちながら会議ができそうだったりとオフィス環境はとっても良さげだった。詳しくは以下のページにたくさん載っているので見てほしい。

be-ars.colopl.co.jp

感想

IMG_6886.JPG (2.5 MB)

インターンシップの内容について

今回は、コロプラで実際に運用されている某ゲームを題材にサーバーサイドのコードを書いた。最初はコードを書くだけなのかと思っていたが、なんと実際のゲームの画面で確認しながら進められるという点に感動した。仮想環境ではあるけれども、実際に自分が書いたコードが動いてアプリ上で表示されている様子を見たときによくわからない嬉しい気持ちになった(表現が難しい) これ本当に良かったなあと思う。

また、コードを書くだけではなく、コードを書いていく上で必要な知識を講義という形で教えていただいた。現在コロプラが運用しているゲームのサーバーサイド構成や、新規で取り組んだ新しいアーキテクチャの説明、DBMSの仕組みやロック、インデックスの大切さなどサーバーサイドエンジニアとしてやっていくために必要な知識を教えていただいた。自分の中では、DBのロックの話をしっかり勉強したことがなかったので大変役に立った。

会社への印象

今回このインターンシップに応募したモチベーションは、上にも書いたがゲーム業界で仕事するとはどういうことかを感じたいというものだった。4日感という短い期間ではあったが、課題をこなしたりその課題に対しての質問等を通して少しはイメージができたと思う。特に、途中でメンターの方がおっしゃっていた、サーバーサイドエンジニアは存在感を感じさせてはいけないという旨のメッセージ(があったとおもうが)はそうだよなあと思うなどしていた。ゲームを運営していく上で、クライアントサイドはユーザー数を増やすために重要である。が、しかしサーバーサイドがあまりにも不安定だとそれは結果的にユーザーの減少につながってしまう。いかに安定した運営ができるか、レスポンスを短くできるかという大変ではあるがやりがいのある仕事であると思った。

コロプラの特徴に、メンテナンスタイムが無いというものがある。メンテナンスタイムがあれば、運営としては余裕を持ってメンテナンスや移行に取り掛かることができるが、その時間だけユーザーはゲームをプレイすることができない。メンテナンスタイム無しでずっと維持できる様々な工夫も見ることができてよかった。

あとは、社長の馬場さんがSpanner好きという話を聞いて、会社を引っ張っていく存在の人が技術に理解があるというのは良いなと思った。実際自分でゲームを開発したから今があるわけで、かつてはエンジニアだった馬場さん。エンジニアの気持ちもよく分かっているだろうし、自分も積極的に企画等に参加しているという話も聞いた。

新しいアーキテクチャへの挑戦

勝手なイメージだったが、ゲームのアーキテクチャはわりとシンプルな構成だったりするのだと思っていた。あとは泥臭く手動でやったりするのかな、とか。今回コロプラで聞いた話に、とあるタイトルをモダンなアーキテクチャで作ろうという取り組みがあった。

ほう、Kubernetes+Spanner+Spinakerという構成だった。まさかこの手の話を聞けるとは思っておらず、導入している企業もあるのだなあと思っていた(他社で導入してるとか、そういうのも全く知らないので先行事例があったら無知すいませんという感じ)他にもSREであったり新しいことに挑戦していく風土のある企業であると感じた。

まとめ

4日間という限られた時間の中で、課題に全力で取り組めたと思う。インターンシップに行く前、二人でペアになって作業するというのを聞いて、若干の不安を感じていた。結果、そんな心配は不要でとてもいい方だった。自分は突然見たことのないソースコードに当たったときに読むのが遅いなあと思っていて、その部分をいい具合に補ってくれたと思う。また、限られた時間しかないのでいかにメンター陣とうまくやっていくかが重要で、いつもよりもたくさん質問することができたと思う。

そういうものを通して感じたことは、コロプラ社員の人の良さである。自分のメンターだった方も、どんな質問も嫌な顔ひとつせずに真摯に向き合ってくださった。普段なかなか人に聞くというものをしない(なんとなく自分だけで解決したくなってしまう)ところがあったが、今回はガンガン聞くことができたと思う。もちろん自分で全く調べずに最初から人に委ねてしまうのはよくないが、ある程度努力した上で識者に助言を求める行為というのは大変大事だし時間を有効に使う手段だと感じた。毎日夕会をするのだが、そのときもその日に気になったどんな些細なことでも適切なアドバイスをしていただき、その日の夜に技術調査をしたり翌日の実装を行う上での重要なヒントを得ることができた。あのような環境に身をおいて仕事をできれば幸せだと思う。

というわけで、コロプラに興味がある人、ゲーム業界に興味がある人はぜひ行ってみてほしい。サーバーサイドエンジニアとしてやっていきたい人でちょっとゲーム業界興味がある、という人にもおすすめです。4日間本当にありがとうございました。

余談

コロプラの人々とGoogle Cloud Inside Games & Apps @ Next '18 で再会しました IMG_7130.JPG (1.9 MB) この写真はコロプラじゃないですけどね。会場はここでした。スライドは上にはってあるやつです。インターンシップのときの穏やかな社員さんとはまた別の、真面目な社員さんを見ることができた。これからどんどん対外発表も増やしていくようなので楽しみですね。