

2019年夏、DeNAは7つのコースのサマーインターンシップを実施。プロダクト開発、AI研究開発、新規事業立案、ゲームエンジニアリング、ゲームプランニング、ゲームグラフィックス、デザインの各コースで、選考をパスしたインターン生たちがしのぎを削りました。
今回話を聞いたのは、エンジニア向けの「プロダクト開発コース」に参加したインターン生たち。彼らが取り組んだミッションは、実務的かつハイレベルな「3日で“伸びしろのあるアプリ”を”最高”に仕上げよ!」というものでした。
DeNA社員たちがこの日のために趣向を凝らした「改修ポイントを多数残した伸びしろのあるアプリ」を3日間でどう最高のアプリに仕上げたのか。
チームとして3日間を戦い抜いたインターン生4人に、生の声を聞きました。
目次 [隠す]
自分たちで課題を見つけ、クリアしていった3日間
――2019年のDeNAサマーインターンシップのプロダクト開発コースにおけるミッションは、「伸びしろのあるアプリを3日間で最高に仕上げよ」というハイレベルなものでした。そのテーマを聞いたとき、また実際にそのアプリを目にしたときどう思いましたか?

西澤 佳祐氏(以下、西澤):そのアプリを実際にリリースするためには、技術的にやらなければいけないことがたくさんあるなという印象でした。最初から高いレベルが求められていることはわかっていましたし、インターンシップの選考に受かった優秀な人たちと一緒にものづくりをすることで、自分のレベルがひとつ上がるな、と。
メンターの方たちに教えてもらいながら、自分たちで課題を見つけてクリアしていくのは新鮮で、すごく貴重な機会だと思いました。

――他の方はいかがですか?
末永 良太氏(以下、末永):インターン面接のときに「非機能要件(※1)もあり、相当数アクセスされるよ」と聞いていたこともあり、課題のアプリを目にしたとき「これは楽しそうだ!」と思いましたね。
木村 隼人氏(以下、木村):インターンシップ2日目でしたよね。秒間1万リクエストという非機能要件が追加されたことで、圧倒的に難易度が上がりました。
榎波 晃一氏(以下、榎波):他では確実に経験したことがない内容で、「逃げがきかない」と思いましたね。
最初から自分でつくれたり、既存のものでも好きなように改善して良かったりするなら、「秒間1万リクエストでも耐えられるようなものしか返さないアプリにすればいい」といったアイデアによる解決が可能。ですが、この課題は技術で解決しないと勝てないなと感じました。
西澤:同じ課題解決型でも初めに課題内容が示されて、それを解決していこうってインターンシップはあると思うんです。
でも今回は「伸びしろのあるアプリ」という、実際にリリースするには課題だらけのアプリをポンと渡されただけ。インターンというより実務レベルで技術力の真価が問われているなと感じましたね。自分たちで課題を見つけて、エンジニアリングをする技術への挑戦。難しかったけどやりがいがあって、そこが楽しかったです。
※1……システム設計や情報システム開発上の要求分析においての要件・システム要件といった「機能面以外」の全般
かつてない課題を乗り越えるには「できる人ができるところを」
――テーマとして出されたのはチャットアプリでした。チームの中ではどのように役割分担をして開発を進めたのですか?

木村:応募したときの選択や得意分野をもとに、クライアント2人、サーバー2人の4人のチームに振り分けられました。私と西澤さんがクライアントで、榎波さんと末永さんはサーバー。
私たちのチームはAndroidアプリを開発しましたが、他のチームはiOSやwebで開発していたりもしました。
榎波:木村さんはクライアントもサーバーもできるので、実際には双方の橋渡し役になってくれていましたね。リーダーは西澤さんです。
西澤:アプリを開いてまず思ったのが、「投稿が見えない」(笑)。
チャットルームで自分の投稿は見えるのに、他の人の投稿は見ることができない。チャットアプリの形は成しているけど、全然使えませんでした。
プログラムのコード的にも「これはダメでしょう」という仕込みがたくさんあって、まず「チャットルームの投稿を見られるようにしよう」とか、「メッセージをリアルタイムで見られるようにしよう」とか、動くようにすることを一番に考えて進めていきました。
動くようにするための課題がクリアできたら、次に膨大な数のチャットルームが一覧で見られるけど優先順位がない。それなら検索機能をつけよう」とか。チームで連携を取りながら精度を高めていきましたね。

――2日目には「秒間1万リクエスト」という非機能要件が追加され、難易度がとても上がったとのことですが、そのときの対策は?
木村:1日目はとりあえずアプリを動くようにすることに注力していましたが、2日目の「秒間1万リクエスト、10万件同時アクセス」という非機能要件が追加された後は、「大量のトラフィックをさばけるように」というところに注力しました。

榎波:クライアントとサーバーサイドの開発を並行して進めなければならない状況でしたが足並みがそろわず「この機能はまだできていないからストップ」という待ちが発生したりしていました。
1番いい解決方法は、我々全員がクライアントとサーバー両方を理解すること。最後は進行がアクロバティックになって、各人のサーバー、クライアントの役割分担はあってないようなものでした。できる人ができる部分のコードを書いていくところはとても面白かったですね。
末永:自分は、インターンシップのテーマとして「非機能要件に耐えることが最重要だ」と考え、1日目に4時間コードを書いた以外は、ひたすら「秒間1万リクエスト」をテストして、チームとして自信を持って出せるものをつくっていこう、とやり続けました。
西澤:今回、集まったメンバーは全員ある程度サーバー側をわかっていましたから、秒間1万リクエストの非機能要件が出されても、ソリューションをわかったうえですぐに作業に入れた部分はよかった。
木村:私自身もクライアントとサーバーの連携を含めて、両方とも書くみたいなことをやりましたが、それが合体してちゃんと動いたのはよかったです。
メンターとのやりとりで変わったコトに向かう意識
――今回は各チームにクライアントとサーバーで2人のメンターがつきましたが、開発を進めるうえでヒントになったやりとりはありましたか?
末永:タスク管理についてのやりとりですね。印象に残ったのは、メンターが繰り返し「君はそれを何のためにしているの?」「それは今、本当に必要なこと?」と言ってくれたこと。

末永:初めのうちは行けそうな解決策を1つ挙げては「みんなで手を動かそう」という感じでやっていたのですが、大切なのは「まず選択肢をリストアップして現実的に可能なものを選んで進めていく」ことだと学びました。
西澤:優先順位づけの話でも印象に残っている言葉があります。
画像データが今回のサービスのデータベースにそのまま入っているのを見たとき、「普通ならありえないからすぐに移行すべき」という考えが私の中にはあったんですよね。
でも、メンターが「それで動くなら移行しなくてもいいんじゃない」と言ったんです。これが実務だとして「3日間のメンテナンスが明けたときにちゃんと動くのであればいい」という判断は、確かにそうだと思いました。
榎波:私は、2日目に面談(※2)で言われた「これはインターンじゃなくて実際の業務改善だと思ってやってみたら」という言葉がグッときましたね。
もともとアイデア中心で考えるクセがあって、他のチームにないアイデアを入れて新しいアプリをつくろうとしていました。けれどその言葉を聞いて、インターンシップのテーマは問題を解決すること、新しいアプリをつくることが課題ではないことを理解して……。自分の中で混乱していたことがパチッと解決された気がしました。
※2……チームによっては会期中にメンターとインターン生で2対1の面談を実施。
木村:メンターは技術力があるだけでなく、人への伝え方・気づかせ方が上手だと感じましたね。それから、エンジニア同士で議論ができたのはいい経験になりました。

ーー惜しくも優勝は逃しましたが、チームとして納得のいくアウトプットはできましたか?
末永:「計測する」ということに関しては、私たちのチームが1番だと思っています。「秒間1万リクエストに耐えること」が最低条件だと思って地道に計測しました。プロダクトの外見には表れないけれど、評価されてしかるべきだという自負はありますね。
木村:改善したコードを投入したとき、本当に効果が出たのかを定量的に測定できたのは末永さんの働きがあったから。私たちは非機能要件から攻めたので改善点は伝わりにくかったかもしれませんが、しっかりと実際にリリースできるアプリに仕上がったと思います。
西澤:他のチームのような「検索機能がつきました」とか、「プライベートチャンネルがつくれます」という表の機能は追加できませんでしたが、私たちは逆にしっかりと負荷に耐えうるものをつくれましたよね。
榎波:でもひとつだけ心残りがあるとしたら「投稿ボタン」ですね。あるチームが「投稿ボタンを大きくした」と発表した時、悔しさを覚えました。私も「投稿ボタンが小さいし画面の端にあって押しづらい」とずっと気になっていたのに、それを改善しようという考えには及びませんでした。相手に取られた悔しさも学びですね。
サマーインターンシップで得たのは、将来のビジョン
――サマーインターンシップで得たものは何ですか? それから今後の目標もぜひお聞かせください。

末永:大規模トラフィックを定量的に測る術を実際に学んで、「これからはインフラをやっていきたい」と思いました。負荷に耐えうるものをつくっていきたいという気持ちが強いですね。
榎波:今までアイデアで攻めるクセがありましたが、今後は技術とアイデアの二刀流ができれば本当に強いエンジニアになれると思いました。技術に貪欲になれる気がしています。
木村:チームでの物ごとの進め方がわかりました。目標に向かってステップを踏むときに、1人でやるなら単純にタスクを分割して直線的にこなしていけばいい。けれどチームでやるときは、どうやってタスクを分割して配分していくのかを学べたと思います。
将来は個としても強くなりたいけれど、相手の能力や自分の能力を推し量ったうえで、マネジメントもできるエンジニアになりたいですね。
西澤:学んだことを挙げればキリがありませんが、将来的にやはり技術を理解して身に付けていないとダメだと感じました。メンターの方々も「わからないことは勉強してきた」という経緯があって今に至るし、知ること、身につけることが必要だから勉強して常に新しい技術を習得し続けているんですよね。
自分で意識して技術を積み上げていかないと、自分がメンターになったときに今回受けたようなアドバイスはできない。だから、高い技術力を持ってものづくりができる人になりたいですね。技術に裏打ちされているからこそ、最適なソリューションが出せると思います。

慶應義塾大学院 理工学研究学科 開放環境科学専攻 情報工学専修
榎波 晃一(えなみ こういち)氏
中学1年から高校卒業まで部活動でゲームを制作。学部時代にDeNAのゲームインターンにも参加。大学3年のときにwebサービスに興味を持ち、 すぐに利用者に届けられることに楽しさを感じて個人開発をしながら、いろいろな企業で就業体験を重ねている。

東海大学大学院 情報通信学研究科 情報通信学専攻
木村 隼人(きむら はやと)氏
中学3年のとき高校受験からの現実逃避でプログラミングを独学で始める。大学ではインカレサークルの学生有志でアプリをつくるなど、対外的なアウトプットを出す。IT系企業でアルバイトをしながらAndroidを中心に経験を積み、セキュリティの研究室に所属しながら、ユーザーコミュニティの日本Androidの会にもコミット。DeNAのセキュリティ部で長期インターン中。

明治大学大学院 先端数理学科研究科 ネットワークデザイン専攻
末永 良太(すえなが りょうた)氏
中学1年のとき石田衣良の『アキハバラ@DEEP』を読んで独学でプログラミングを始めた。本格的にプログラム書き始めたのは大学1年の春。現在、複数の企業から業務委託でプログラムを書いている。その時やりたいことを全力でやることが信条。突然1年間引きこもって本読むだけの生活、英語を勉強するだけの生活、アメリカで仕事探しをしていたこともある。

奈良先端学技術大学院大学 先端科学技術研究科 先端科学技術専攻 情報科学領域
西澤 佳祐(にしざわ けいすけ)氏
大学2年から中高生にプログラミング・作曲・映像制作等を教える会社でアルバイト。音楽コースの講師をする傍ら、研修制度を利用してAndroidアプリ開発を始める。スタートアップでサービスの開発、ゲームや漫画アプリ、曲も含めてものづくりをする。コミックマーケットにて頒布したHoloLensアプリ開発本は2時間で100冊完売。そのプロジェクトではリーダーと後輩の指導を務めた。
※本記事掲載の情報は、公開日時点のものです。
執筆:さとう ともこ 編集:榮田 佳織 撮影:小堀 将生
■こちらの記事も読まれています
2019DeNAエンジニアサマーインターンミッションは「3日でアプリを最高に仕上げよ!」