CA Tech JOBに参加してきた話
こんにちは、ぐっちーです。
今回は9月いっぱい CA Tech JOBという就業型インターンに参加してきたのでそれについて学んだことなどをまとめていこうと思います。
CA Tech JOBとは
CA Tech JOBとは株式会社サイバーエージェントさんが主催する長期就業型のインターンシップです。期間は1か月間でメディア、ゲーム、アドテクなど幅広い分野に事業を展開しているサイバーエージェントグループの事業部に配属され実際の社員さんと同様に業務に取り組むといったインターンシップになっています。
私はその中でゲーム事業部に配属されその中の株式会社ジークレストのメンバーとして業務に取り組みました。
株式会社ジークレストについて
株式会社ジークレストは主に女性向けのスマートフォンアプリなどの開発を行っている会社で今回私もスマートフォンゲームの開発に携わりました。
学んだこと
業務の詳しい話は話せないので1か月を通じて学んだことをズラズラと並べていこうと思います。
NGUI
NGUIとはNext-Get UIの略でUnityにuGUIが追加されるまでは一般的にUIを作るアセットとして用いられていたアセットです。今でもUnityのアセットストアで購入できます。
uGUIが整備されてきてから利用されることは減ったようですが移行していないプロジェクトもまだまだあるようです。
NGUIの各要素(ボタンやラベルなど)関連のコンポーネントはUIWidgetというクラスを継承しておりこのクラスがすべての基礎となっています。そしてUIPanelというコンポーネントの上に各要素を置くことでUIを構成します。また、Depthという値がレイヤー機能的な役割を果たしており手前や奥といったような前後関係を表現できます。
DoTween
個人的にめちゃ便利アニメーションアセットです。
機能はたくさんあるのですがDoTweenを簡単にまとめるとアニメーションが動作ごとにメソッド化されてるので必要なパラメータを入力すればキーフレームを打つことなくアニメーションしてくれるのでめちゃ簡単にアニメーションを作成できます。
また、シーケンスという機能があり移動→回転→移動みたいなことや移動しつつ回転みたいなことも単発アニメーションのように作成できます。
自分もがっつり触ったわけではないのですが軽く触っただけでも「ナニコレめっちゃ便利じゃない?」と思いました。
async/await
これはUnityというよかC#の話ですね。私はC#初心者なので知らなかったのですが熟練者の方々は知っている方もいるのではないでしょうか。これは非同期処理をしたいときに使うようなものでソーシャルゲームなどでは所持カードのデータを全部読み込み終わってから所持カード一覧なんてふうにしてたら非常に効率が悪いです。そこでこれを使うことでメインスレッドと切り離したサブスレッドでそのような処理をさせてメインスレッドではべつのことをするといったことができます。
戻り値はTask<T>で非同期処理をしたいメソッドのシグネチャとしてasyncをつけることでその中でawaitをつけてメソッドを呼び出すことができるようになります。
すると呼び出したメソッドを裏で実行しながら呼び出し元のメソッドに戻ってくれるようになります。
遅延評価
遅延評価というのは簡単に言ってしまえば欲しいときに欲しい分だけ計算する方法です。なぜこれを知ったのかというとカードのIDリストがIEnumerableで定義されていてそれの要素数を参照するためにLinq.Count()を用いたところそその参照を行うたびにリストの全探索を行うのでパフォーマンス的に別の方法がいいとレビューをいただいたからです。これについて調べているときに感じたのが「遅延評価」という名前なのに遅延してなくね?ってことです。
Linqについてはまだまだ知識が足りてないのですがコード量を大幅に減らせるけど扱いを間違えると重くなるから注意がひつようだと聞いてはいたのでそれを実感できたかなと思いました。
本場のゲーム開発環境
今まで自分が経験してきた開発はそこまで大規模ではなかったですが今回初めて現場環境に触れたんですが本物のチーム開発というものを感じることができました。自分の実装部のコードレビューが一番わかりやすい例でコードレビューしてもらうことはまず経験なかったので自分の書き方を悪い点を知り改善するよい機会になりました。また、スタートとゴールを決めてそれに向けて期間内に終わればいいみたいなチーム開発をしがちだったのですが期間の中で納期的なものを設けてそれを部署ごとに共有することで起こってる問題や進捗をプロジェクト全体で共有することができ対応策を練りやすくなると感じました。
大きく分けて以上のようなことを学べたと実感しています。
これら以外にも多くのことを勉強することができて非常に充実した1か月を過ごすことができたと感じています。
インターン中のその他もろもろ
技術的な話ではなくインターン中の生活についてもいろいろ触れていきたいと思います。
まずは初日にWelcome会を開いていただいたんですがそこで名前の書いた風船をいただいたのですが描いてある絵のクオリティが高く驚きましたwwそしてお弁当が叙々苑の焼肉弁当だったのも驚きましたww
インターン中はほぼ毎日社員さんにランチへ連れて行ってもらい渋谷のおいしいご飯を食べてました。社食に行く機会もあったのですがカレーが自分の好きな量盛法大ということで写真のようにだいぶ攻めました。
後は9/25 26で行われたUnite2019にも参加してきました。聞かせていただいたセッションはどれも非常に興味深いものでした。また、企業ブースもいろいろと充実していて結構たくさんのものを買ったりもらったりしました。
また、最終週にインターン生と人事の方で夜にご飯を食べに行きました!ステーキめっちゃおいしかったです。
そんなこんなで業務中も業務外でも非常に充実していたと思います。
この1か月で濃い経験を積むことができて自分が経験した夏休みで一番自分のためになった夏休みだったと思っています。
このインターンシップを通じて学んだことを胸にこれからも努力して立派なエンジニアになりたいと思っています。
また、今回のインターンシップ参加にあたり様々な面でお世話になった人事の方々、トレーナーの方や同じプロジェクトで助けていただいた社員の方々に感謝を伝えたいと思います。本当にありがとうございました。
それでは今日はこの辺で(`・ω・´)