Retired Colourman

今度の町の川は美しいけど 君は居ない

ニコニコ改善インターンに参加してきました

株式会社ドワンゴ様によって主催された 2018年の夏のインターンである「ニコニコ改善インターン」に参加して来ました。そのまとめを書いていこうと思います。

f:id:sh4869:20180911153249j:plain

概要

今回のインターンは「改善インターン」ということで、最初から実際の開発チームに参加し、その中で業務上の課題を与えられ解決していく就業型のインターンでした。一日目から普通にデスクを与えられて業務をやっていたので、比較的珍しい形のインターンであるような気がします*1

今回私はニコニコ動画の新サービスである「ニコキャス(実験放送)」のWebフロントエンドチームに配属されました。

私が課題として与えられたのは「プレイヤーの重さの改善」です。実験放送ではゲームやお絵描きなどの新機能が追加されているのですが、機能が追加されている分、どうしても重くなってしまう部分があります。そこで、コメント描画を軽くするためにゲームエンジン上でのコメントレンダラーの試作を行うというのが今回のお題でした。 Webフロントエンドチームと聞いていたのでReact等の技術の復習をしていたらゲームエンジンの勉強をすることになったのは流石に驚きましたが、楽しかったです *2

f:id:sh4869:20180911151228p:plain

開発規模としては、三週間ほどで約260コミットという感じでした。自動生成されるコミットを除くと大体150コミットぐらいじゃないかなと思います。ニコニコのコメントという膨大な仕様を理解して実際に実装に落とし込んでいくのが結構難しかったです*3。試作とはいえどもその試作をベースに本格的な導入が始まるので技術的負債にならないようにしたり、パフォーマンスを考える必要があるのも難しかったです。

プレイヤーの動作を軽くすることが目的なので、開発が一通り済んだあとはリファクタリングを行いながら性能測定を行っていました。あまりWebブラウザでの性能測定を行うといった経験がなかったので、どうやって定量的に性能を測定し動かしていくかということについて教えていただいたのも良かったです。どこが重くなっているのか、どこが重いと判断されるべきなのかといった問題を確認しつつ、どうやって動作を軽くするかという仮説を立てていく作業はいい体験でした。業務上でどのような価値があるのか、その上でどのようなパフォーマンスを目標にするべきなのかということを考えるいい機会になったと思います。

感想

  • 職場は話には聞いていたけど本当にみんな出社時間がバラバラで面白かった
    • 人によっては八時ぐらいに来てるし、人によっては十二時とか十三時にくるし、なるほどという気持ち
    • 出社体系が自由ということよりは、バラバラにしてもちゃんと仕事が成立していくように組むことが必要なんだろうなといった気持ちになった
    • デスクのカスタマイズ等が自由なのもよかった
  • 実際の開発の様子をずっと見ていられたのは面白かった
    • どうやって開発を行っているかというのと、どのように開発環境の改善を行っていくかみたいなプロセスが見れていったのはよかった
    • どうしても趣味プロジェクトだと妥協してしまうし、小さなプロジェクトだったら最初からLinterから設定できるので、実際に大きなプロジェクトでlinterのルールがアップデートされていく様子とか見れたのはよかった
      • つらそうだった……
      • 現状の技術的負債を減らしつつ新機能を追加していくのをどうやっていくのかということを見れたのはよかった
    • 開発環境は勝手に改善されていくものではないということが改めてわかったのもよかった
      • エンジニアがたくさんいればなんとなくエンジニアのための環境になっていくように思ってしまう部分はあった
  • よくある感想だけど、実際問題労働をどうやっていくのかというのがわかったのもよかった
    • 一日八時間労働するとなるほど時間がない

*1:他のインターンに参加したことがないのでわかりませんが

*2: 割とどういう技術もつまみ食いしてきてなんでもできるよ〜みたいなことを言ったのでこういう配属になったのだと思う(そうですよね?)

*3:二重リサイズって何……?

*4: https://twitter.com/sigekun/status/1037585828115955712