がべーじこれくしょん

技術系とかいろいろ

DeNAサマーインターンシップ2018に参加してきました

執筆・創作活動への支援をぜひお願いします🙏
Buy Me A Coffee

8/17(金)〜8/19(日)の3日間、株式会社ディー・エヌ・エー主催のサマーインターンシップに参加してきました。

コースはいくつかあるのですが、僕は「プロダクト開発コース」というものに参加しました。せっかくなので面接からインターン期間中まで軽くまとめたいと思います。

f:id:musaprg:20180821005915j:plain

TL;DR

  • 羽振りが良すぎてヤバイ
  • メンターが最強
  • ハッカソンとはまた違う、実務に近い濃密な開発を味わえる
  • 渋谷駅直結のホテルに泊まれる

面接〜参加決定

※人によって面接のプロセスが違うようなので参考にはならないと思います

僕は大雑把に以下の流れで行きました。

  1. サポーターズの逆求人イベントで面談
  2. 書類選考スキップ
  3. グループ面接
  4. 個人面接
  5. 参加決定

人によっては個人面接が何回もあったりすることもあるらしいです。

インターン期間前に、期間中寝食を共にする開発チームのメンバーと、メンターさんとの顔合わせ会(渋谷の高そうな居酒屋だった)がありました。

僕のチームは、iOSAndroid等のネイティブ系チームがブイブイ言わせる中、唯一Web系のチームでした。構成は、フロントエンドエンジニア2人、バックエンドエンジニア(ぼく)1人の合計3人でした。「Webの力見せたるで」のお気持ちでインターンを過ごすことを誓いました。

0日目

大雑把なお題が3日前に発表されました。テーマは「ニュースアプリ」ということだったので、チームメンバー各位で普段使ってるアプリやサービスを軽くチェックしました。

同時に、僕は開発・本番環境構築にとりかかりました。(あとで聞いて驚いたのですが、このあたりやってたのはうちのチームだけで、他のチームはメンターさんがやってしまっていたらしいです。びっくり。)

さて、この環境構築、今回慣れないdjangoを使うことに(自分で)した上に、作ったことのないReactを用いたSPAの環境構築を行わなければならなかったため、かなり難航しました。

おまけにテストサークル幹部職務コミケ旅行で時間がない上に慣れないことをした(アホ)ため、前日に徹夜をかますという事態になりました。

※厳密にいうと30分寝ています。

慣れないこと、というのは、

  • djangoを使うこと
    • 当初Flaskを使おうと目論んでいたが、冷静に考えたらdjangoのほうがAPI作りやすいじゃんとなってdjangoを使うことになった
  • dockerでいい感じにしようとした
    • これまでは†秘伝のソース†を継ぎ足して使っていたがさすがにdjangoでよさそうなものはなかったので一から自分で作った
  • nginxでいい感じに静的ファイル(frontend)配信とAPIエンドポイント(/api)の切り分けをしようとした
    • SPAだし仕方ないみたいなところある(?)
    • サブドメイン使えないという制約があるためこうした

と、いうわけで、さっそくnginx+django+mysqlでいい感じにしようとしたところ、mysql8から入った認証方式変更でハマりました。クライアント(mysqlclient)が対応してないため、泣く泣くmysql5.7にしたもののInnoDBが原因不明のエラーで死に、結局sqlite3にしました。お粗末すぎる…

また、本番に載せるわけではないのでdevserverでええやろ〜と思いuWSGIとかgunicornとかにしませんでした。これが後々物議を醸すことになるとは知らずに。トホホ。

んで、これでいけると思いきや今度はnginxのリバースプロキシの設定でハマる。[domain]/api以下を[domain]:8000/にrewriteしたのに、なぜかadminページへのアクセスだけリダイレクトがかかり[domain]/adminに飛ばされる。なぜ。何回かF5連打すると治る。意味不明。

おまけにSTATIC_ROOTの設定がこれまた厄介。STATIC_ROOT=/staticがデフォルトなんだけど、この設定が非常に邪魔で仕方ない。API経由で画像公開するなんていうことをしないことを全力で祈りました。

おやすみ。

1日目

眠い目をこすりながらなんとか集合時間に間に合いました。初日ておくれで出禁になるのは避けられました。(よかった)

オリエンテーションを終え、テーマの詳細発表がありました。

ターゲットユーザーは、3人の審査員のうちの1人が設定されていました。

我々のチームは、とりあえずターゲットユーザーの求める条件をもとに、UI/UXの検討をしました。

思えば1日目は8割ほどUI/UXの議論に充てていた気がします。

ここまでユーザー(となりうる方)にヒアリングを行い、UI/UXの議論を本格的にしたことはなかったので、すごく新鮮でした。普段のハッカソンでは、わりと作りたいものをノリと勢いで作る感じだったので、かなり実務に寄っていたなあと思いました。

ある程度デザインが固まったら、実装に入りました。UIに関する議論をめちゃくちゃしたのですが、最終的にたどり着いたUIがWebで実現するにはあまりに高度で、フロントエンドの実装がかなり難航しました。僕も慣れないDRFの仕様に振り回されてなかなかAPIの実装が進められないまま、1日目が終了しました。

昼食

謎の高そうなお弁当

f:id:musaprg:20180821010017j:plain

夕食(懇親会・中間発表)

例によって寿司&BEER。ここで中間発表がありました。あと社員さんによるLTがありました。サービス開発の苦労話やデザインに関するお話が聞けてとても満足です。

f:id:musaprg:20180821010051j:plain

ちなみにこの日は想定外の徹夜明けでしんどかったので即寝ました。

2日目

さて、2日目から飯がバグり始めます。DeNAさん太っ腹すぎる…

それはさておき、2日目は開発&ブラッシュアップの時間でした。

僕はAPIモックを作った後はひたすら英語と格闘してました。もはやこのインターンで一番英語読んだ自信があります(?)

フロント側は着々と動きができてきました。読み味を出すのにかなり悩みましたが、最新のWeb技術である"""インラインフレーム"""を使用することによってスマートフォンでいうWebViewみたいなものを実現できて無事解決しました。

>>> 最 新 の W e b 技 術 万 歳 <<<

今思うと、もう少しUIをシンプルな方向に落とし込んでさっさと実装して、実機動作する状態のものをターゲットユーザーに操作してもらって改善していくようにしたほうがよかった気がします。実際、優勝したチームは、2日目はこまめにターゲットユーザーへアプリを見せに行き、意見を聞いていました。

というわけで、2日目は宿に帰ってからも作業続行です。めっちゃ頑張りました。メンターの方も遅くまで付き添ってくださって本当にありがたかったです。チームのみんな本当にお疲れ様でした…

昼食

どうみてもうな重です。(めちゃくちゃおいしかった💕)

f:id:musaprg:20180821010307j:plain

夕食

叙 々 苑 の 焼 肉 弁 当

f:id:musaprg:20180821010426j:plain

3日目

3日目は、基本的に開発時間はとられず、発表資料作成と発表練習でした。

準備時間終了後は、最終審査会です。各チームがプレゼンをしていき、最優秀チームが決定します。最優秀チームの商品は、銀座の高級寿司ディナーです。(一人3万円くらいするらしいです。やべえ。)

優勝チームは、トップバッターに発表したチームでした。ターゲットユーザーのニーズを満たすだけでなく、細かな配慮もしており、おまけにアルゴリズム的な最適化までかけていてすごかったです。UIも洗練されていて、3日間でここまでのものにまで作り込んでくるのは本当にすごいなと思いました。精進の必要を感じた。あとネイティブ書けるようになろう(重要)

審査会終了後はヒカリエ内のレストランで打ち上げでした。ひたすらビールを飲みました。楽しい。疲れた。

昼食

おにぎりでした。2日目の飯がバグりすぎてた(良い方向で)ので庶民的な味に安心しました。

疲弊している身体におにぎりは染みる。うますぎる。

おまけ

ディスプレイ2台という人権を得られた作業デスク

f:id:musaprg:20180821011615j:plain

emo写真

f:id:musaprg:20180821011816j:plain

インターン期間中は飲み物とお菓子とカップ麺と冷えピタとリポDが無限に出てきます。

冷えピタ貼りながらコーディングすると意外と捗る。発見。

f:id:musaprg:20180821011841j:plain

まとめ

3日間、あまりにも濃密すぎて正直めちゃくちゃ疲れました。

ただ、ハッカソン形式とはいえ、かなり実務のプロセスに近い開発を体験することができて、とてもいい経験になりました。

もう充実しすぎてやばいです。何も文句がありません。強いて言うならアプリ制作を前提とするテーマ設定をするならあらかじめ言ってほしかったくらいですね…(Webの可能性を主張できたのでよし)

来年以降も(おそらく)やると思うので、まだ参加されていない方は、ぜひ応募してみてください!!!

メンターをはじめとしたDeNAの社員の皆様、一緒に開発してくれたプロの2人、そしてインターン中にお世話になった全ての皆様、本当にお世話になりました!!

どうコケても99.99999999%エンジニアになる予定なので、この業界にいる限りはまたどこかで会えると信じてます。(世界は狭いので)