DeNA sammer internship 2022 で優勝した

未分類

 お持ち焼きし者どもです。この度DeNAのサマーインターンに参加しました。噂通りのハードなインターンでしたが学びが多かったです。

課題内容

簡単に言うとすでにあるWebアプリを改善すると言った課題でした。具体的には以下のようなシナリオが提示されました。

現在怪獣が東京を破壊しており、既存のメッセージアプリが使えなくなったので、新たに作ることになった。時間が短いので1から作るのではなく以前社内で誰かが作ったWebアプリを改善するとのこと。要件として、平均5000リクエスト/s ピーク10000リクエスト/sを耐えられる

事前準備

自己紹介がてら簡単なWebアプリ(カタプラーナについて説明するWebアプリ)を作ろうとしたのですが、メンバーの時間がなく一応完成したのですがサーバーは何も動いておらずjsonファイルを1度プログラムで生成してフロントで読み込んでいるだけでのシンプルなものになりました。

カタプラーナでポイ!ポイ!

1日目

開発の前に方針を決める時間が設けられていました。

まずはじめに動作確認を行いました。しかし異常に重く誰も表示できなかったのでコードを見て問題を把握することにしました。明らかに間違っている部分を発見したので、1日目はそこを修正することに決めました。

午前の開発が終わりチームランチではDeNA様より弁当(nonpi)が送られてきたので食べながら話すとのことでしたが難しく、あまり話せませんでした。食べながらZOOMで話すのは難易度が高いです。

午後は各自必須の課題を潰していきました。誰をどのタスクに割り当てるのかという部分ですが、比較的なんでもできるが特に実装に強いAくん、MySQLのクエリの調節が得意なBくん、比較的なんでもできるC(私)をうまいこと割り振ることができました。
開発後のチーム振り返りでなんとなく私がリーダーを務めることになりました。PMというやつですね。これが大変で本インターンの学びの体感4割くらいを占めています。

2日目

寝坊しました。遅刻するPMの称号を手に入れてしまいました

前日、400GBもの画像を外出しする作業は時間がかかるから寝る前にプログラムを走らせておきたいと考え仮眠後深夜まで作業した結果寝坊しました。誠に申し訳ございません。ちなみに画像を外出しするプログラムはエラーを起こさず朝までに無事全て終わっていました。21時を超えた開発はだめなので帳尻を合わせようと午前中はチーム会議だけ参加してあとは優雅にブランチを(branchじゃなくてbrunch)食べて寝ていました。中間報告で発表した後のチームミーティングで目指すゴールが明確に決まりました。詳細は省きますがリスクを取って勝ちを狙いに行くような戦略です。ここからは時間との戦いです。データベース設定のチューニングや画像や新APIのすり合わせなどはだいたい終わりました。夜に負荷テストを行い、まだ目標値に届いていないことを確認しました。

3日目

サーバー側の最後の大仕事である複数インスタンスでの実行、データベースのレプリケーション、新規APIの実装が残っており、クライアント側もgithubをたくさん課題があったようですが面白いように課題がなくなっていきました。3時間を残して粗方片付き、パフォーマンスは十分でした。驚くべきことに初日に私がネタで投げた最低優先順であるテーマカラー変更も終わっていました。時間が余ったのでチームで集まり資料を作りながらアプリの新しい名前を考えたり最終確認をしていました。バグはないかに見えましたが多言語機能対応にバグが有ることを締め切り直前に気づき結局治すことができませんでした。時間が余っていただけに惜しかったです。

発表

発表の前半は開発全体の説明およびバックエンドについて、後半はデモとなっています。発表を私が、デモはフロント実装担当のメンバーが行いました。伝えたかったことは伝えることができましたと思います。また、デモの発表者はユーモラスに発表してくれて好印象を与えられたと思います。ほかのチームで面白かったのはDiscordのように左にチャンネル、右にチャットというデザインを採用したところでした。

気づき

このインターンの特徴として時間が細かく区切られているというのがあります。私が今までやってきたハッカソンでは各自で作業し、数日に1度ミーティングをするといったケースが多かったのですが本インターンでは[開会式,目標設定,開発,チームランチ,開発,チーム振り返り,1on1,チームディナー,任意開発]といったような予定が30分刻みで組まれています。1日に2回程度進捗報告や予定決めの時間があり、1日1回メンターから1対1でのフィードバックがあります。これらの頻繁な方向を考える時間により間違った方向へ進む距離が減り、それが効率の良さに結びついていると考えました。さりげない見守りというべきでしょうか。今後は見守られていなくても頑張れるように経験を積んでいきたいです。

サーバーについての考え方も変わりました。私は自宅サーバーを高校の時より運用しており、クラウドはサーバーを持ってない人のものだと思っていましたが、使ってみて良さがわかりました。簡単にロードバランサーを組めたり大量の機能があったり、そもそも帯域が太くてすごいです。適材適所で使い分けていきたいと思いました。

コメント

タイトルとURLをコピーしました