ドリコムで3週間サマーインターンシップに参加させてもらった新谷哲平です。

この春に広島の呉高専から筑波大学 情報科学類へ編入し、エンジニアとしての教養を深めています。趣味としてはRuby on Railsを使ったwebアプリケーションを作ってみて学んだことをブログに書いたりしています。

第1タームの内容をメモしていたので何をしたか見ようと思いましたが、ドリコムから借りたPCにメモしていたのでもうデータがないことに気づきました。。。
なので覚えていることを書いてみます。

第1ターム

第1タームでは現役のエンジニアに実際に使っている技術の基礎を講義形式で教えてもらうことができます。

1日目 インフラ

インフラではAWSインスタンスを立てるところからnginx/DNSへの設定を行い、指定したhost名でhttpリクエストが返ってくるのを確認した後memcached/redis/mysqlによるベンチマークを走らせて
mackerelで負荷を確認するところまでをハンズオン形式で行いました。

いままでデプロイするときはherokuを使っていたのですが、これからはAWSを不必要に怖がらず積極的に使っていきたいと思いました。
また、サーバー監視サービスmackerelの訳が「鯖」だったのは面白かったです。
キーワード: AWS, nginx, DNS, mackerel, memcached, redis, mysql, ベンチマーク

2日目 サーバーサイド

サーバーサイドではまずGitに慣れるためにconflictバトルを繰り広げた後Railsのscaffoldでjsonを返す簡易APIサーバーを作成しました。その後Capistranoを使って1日目に立てたAWSインスタンスにデプロイまでを通しで行い、今までの操作を説明してもらうといった形式でした。

サーバーサイドはRailsのはずでしたが気づいたらRailsをほぼ書かずデプロイのトラブルシューティングをしていました。
色々苦労した後でドリコムにはCapistranoの設定ファイルをいじらなくてもgem installするだけでデプロイ環境が整うgemがあるということを聞きました。確かにめちゃくちゃ便利だけど「理解している人」と「理解してない人」の2極化が進むと思ったので理解している人側にいたいと思いました。
キーワード: Rails, Capistrano, AWS, git, tig

3日目+4日目午前中 ゲーム制作

Unityのチュートリアルとしてコインプッシャーを作った後、スクラムの方法についてのレクチャーを受けました。その後Unityを使ったゲーム制作をグループに分かれて行いました。

自分はUnityを全然触ったことがなかったのですが、スクラムの雰囲気は分かった(?)のでスクラムに沿った開発ができるように

  • 機能はユーザーに届けたい価値から逆算して考える
  • 大きな方針決定はしっかりプロジェクトオーナーに確認を取る
  • ポストイットの進捗と現状を同期させる

などを心がけました。

自分のグループにUnityに詳しい人がいたおかげで「これがあればユーザーに価値を届けられるよね」と話していた機能の実装を終わらせることができ、講師の方からのフィードバックでも「ちゃんとした形になるとは思ってなかった」と言ってもらえて嬉しかったです。
キーワード: Unity, スクラム, ユーザーストーリー, スプリント, KPT

4日目午後 データ分析

データ分析を行う上で必要な「何を評価するためのデータ分析なのかを考えてから行う」「客観的に評価するための方法」を教えてもらった後、ゲームやサービスを運営していく上で今どうやって改善を行っているのかを実際の数字を見せてもらいながら教えてもらいました。

客観的なデータから仮説を立てて実行しフィードバックを得て改善のサイクルを回していくのはとても面白そうだと感じました。
キーワード: MECE, 理想-現状=問題, MAU

第2ターム

第2タームは色々な部署に配属され実務に携わることができます。
自分はゲーム開発基盤チームで開発に参加しメンターはsmithさんにしていただきました。

ゲーム開発基盤チームとは
ゲームタイトル開発プロジェクトの成功を支援するために

  • ゲームを開発していく上で毎回実装するような機能をライブラリとして提供
  • 開発効率を上げるための便利ツールをライブラリとして提供
  • 技術トレンドにおいていかれないようにするための調査・検証

を行なっているチームです。

チーム全員が参加するミーティングへはほぼ全て参加させていただきました。
「次に何を検証してみたいか投票」ではチームメンバーの方と同じ票数を投票させてもらい、とてもありがたいなと思いました。
また、ミーティングで1日の内3時間しかコードを書けない日などもあり「これが社会人か…」となったりもしました。

定時になった後はカフェに移動してDiita(社内版Qiita)を眺めていました。具体的な内容はここに書くことはできないですがめちゃくちゃ面白かったです。
Diitaは最新20ページ分くらい目を通しました。

2週間でやったこと

初日のタスク棚卸しミーティングでいくつかの課題を提示してもらい、そのなかで一番面白そうだった「Unityエディタ拡張での復号機能のもつDBブラウザの作成」を担当しました。

動機

ドリコムではアプリ側でデータを永続化させる方法として、アプリ内のファイルに暗号化して書き出すという方法をとっています。
現状としてアプリ上で復号する方法はあるのですが、開発を行っているUnity上では復号できないので開発効率を上げるためにツールとして提供したいということでした。

開発の手順としては以下の通りです。

  1. 現在の暗号・復号方法の把握
  2. 復号モジュールの作成
  3. DBブラウザのGUI作成
  4. 復号モジュールとDBブラウザの結合

UnityもC#も触ったことが無かったため、初めはどう作ればいいのか分からなかったのですがsmithさんに相談することによって要件の理解・問題の切り分けが進み実装していくことができました。

バイナリを眺めたりメタプログラミングをしたりGUIを作成したりするなど低レイヤーから高レイヤーまで触ることができたのでとても良い経験になりました。

以下は第2ターム終了時の成果報告会の資料です。

Drecom summer intern_shintani from yukino tajima

総括

自分は「コードの質が上がるような体験をする」「どんな人が働いているのか知る」ことをインターンシップの目的としていました。

結果としてコードの質が上がるような体験は

  • コードレビューをしっかりしてもらえる
  • 綺麗なコードが読める

などで達成できたし

どんな人が働いているのかは

  • 日々のミーティング
  • 毎日セッティングしてもらっていたランチ会

などで達成することができ、大満足のインターンシップでした。

第1タームのキーワードに興味をもった、
実務に触れてみたい、
Diitaやsharedocにどんなことが書かれているのか気になる
学生のみなさん、インターンシップの選択肢にいかがですか?

P.S.
オフィスへ遊びに行った際はカフェでコーラコーヒーかバナナオレオなんちゃらを注文すると良いと思います。