こんにちは。
つい先日まで、マッチングアプリ「Pairs」を運営するエウレカの2018サマーインターンシップに参加していました。
短期インターンシップでしたが、初で色々学びがあったので記しておこうと思います。
目次
エウレカってどんな会社?
現在、日本と台湾、韓国合計で、累計会員数800万人を超えたオンラインデーティングサービスの「Pairs」やカップルのためのコミュニケーションアプリ「Couples」を開発・運営している会社です。
エンジェル投資家として活躍している赤坂優氏が2009年に創立し、2015年5月にM&AによってInterActiveCorp(IAC)グループに入っています。
現在CEOを務めるのは元CTOの石橋準也氏。
技術的な話をすると、エウレカでは運営しているPairsをPHPからGoへのフルスクラッチを行ったという過去があります。
インターンシップの途中の夜にLT会があり、その中でこのフルスクラッチの話題も出ていましたが、大変だった過去が伝わってきました。
Mediumの記事など、Webにもたくさん情報があるのでぜひ読んでみてください。
eureka Go ~PairsのGo言語フルスクラッチの舞台裏~ を開催しました!
(AIコースのメンターを担当していただいた臼井さんの発表資料↓)
PHPからGoフルスクラッチの戦後入社組から見た、 Pairsの開発について
インターンシップ中にやったこと
エウレカ2018サマーインターンシップでは、エンジニア30人以上 + デザイナー8人程が参加していました。
期間は9/3~9/14ですが、前半戦と後半戦に分かれていました。
エンジニアではコースが分かれており、「Webフロント」「サーバーサイド」「iOS」「Android」「AI」の五つがありました。
ぼくは元々サーバーサイドで合格をいただいていましたが、開始何週間か前にAIコースが追加されるということでそちらに変更しました。
理由は、Goについての知識が0だったこととPythonをやっていた経験があったからです。しかし、サーバーの方の中にはGoの知識が0の状態で後半戦に残っている方もいたので(強い)、大きな不安材料ではなかったかもしれません。
各コースのメンバーそれぞれが前半戦で課題をこなし、完成物の評価に応じて合否が決定し、後半戦に残れる人が決定されました。
ちなみにぼくは未熟ゆえに前半戦でお疲れッスな人なので、9/3から5日間のみの参加でしたw
後半戦にどれくらいのメンバーが残れたかというと各コース半分くらい。
その反省は記事後半に回すとして、インターンシップ中にやったことを一日ごとにまとめていきたい。
[9. 2] Welcome Party!!!!
エウレカにてWelcome Partyとして、メンターの方々、参加するメンバーたちとの交流会が開かれました。飲み物と食べ物が色々あり、違うコースの人達と色々話せたので純粋に楽しかったです。
Party終了後は遠方組メンバー30人くらい(?)で、宿泊先まで駅を乗り換えながら大移動しました。大きい荷物で大人数で移動だったので修学旅行かなと思いましたが、その場で出会った人達と話していると強そうな人ばかりだったので現実に引き戻されます。
ぼくは静岡からの参戦でしたが、メンバーの中には北海道から九州まで色々なところから集まっていました。
宿泊先では18人くらいが同じ部屋でカプセルホテルのような感じで生活してました。
少し狭かったですが、キレイなところで立地もよろしく、これを学生に無料で提供するとは素晴らしい会社だなと心から思いました。
エンジニア採用ってやっぱりそこまでするものなのですなとも。
[9. 3] インターンシップ初日
インターンシップ初日はCTOのkaneshinさん( @kaneshin0120 )によるエウレカ、Pairsに関する講義からスタートしました。Pairsがどう伸びてきたのかなどの歴史などについてお話いただき、プロダクトに対する考えなど知れた。
kaneshinさんのインタビュー記事もぜひ↓
アウトプットしない「図書館」にはなるな- 新CTO 金子氏が考えるエウレカで活躍する人材とは
講義後は各コースに別れ、前半戦の課題説明。
AIコースの前半戦課題は、青空文庫掲載作品のデータを用いて、何らかの分類モデルの作成またはクラスタリングの実施というものでした。
完成が最低条件だったので、とりあえず動くもの作ろうと考えたのはいいものの、マジでどう進めていけばいいか分かりませんでした。
眠れない夜が続きそうだと思いましたが、予想的中。
[9. 4]台風到来、リモートインターン
二日目ですが、なんと台風によって会社がほぼお休みとなりリモートワークとなりました。
インターンでリモートワークって珍しい経験できてよかったです。
Qiitaの記事漁ったり、使いたいデータへ整形したり色々やりました。宿泊先でひたすら作業しましたが、机なかったので、身体が終わってました。
台風そんなに来てなかったので、外にでて作業した人達賢い。
本日のエウレカサマーインターンの様子です。(台風だからインターン生は完全リモートなので無人)
僕は天気悪くなる前には帰る予定。 pic.twitter.com/BO7gG54usm— kaneshin / eureka (@kaneshin0120) September 4, 2018
[9. 5] エンジニアに学ぶ講義、進める課題
一応三日目。午前中に再び講義がありました。内容はエウレカにおける実例を元にしたWebサービス開発について。
一般的なサービス開発とエウレカでのサービス開発の相違点、企画から開発フロー、テスト、リリースまでサービス開発の流れを学びました。
おまけに余った時間でキャリアについての話がありましたが、やはりエンジニアは大変そうだけど楽しそう。
ドッグイヤーな業界、常に学習し続けないとあっという間に市場で価値のないゴミになってしまいそうです。
その後はkaneshinさんのはからいにより、課題を進めることになり黙々と作業。
夜はLT会が開かれ、ピザ食べながら、Techな話をメインにキャリアなどの話など面白いLTが聞けてよかったです。
エウレカ、色んな部分で魅力的な会社だなと思いました。
具体的には、楽しそう、技術、雰囲気、お金などなど。
具体的じゃない
[9. 6]学習データ、致命的欠陥の発見
完成期限日の一日前です。
メンターさんに分からないところを聞きながら、この日は一日ずっと課題のために開発をしていました。
ぼくはこの日、学習データとして用意していたものが使えないことが判明し、再度データ整形から行うという現実にぶち当たり、自分だけ完成しないのではと不安に駆られていました。
機会学習のこと全然わかってないやん俺!!!!!って感じです。
AIコースはぼくを含めて四人という少なめな人数でした。
ぼく以外の三人はモデルを完成させており、できたモデルで色々と検証したり遊んだりしていて、久しぶりにこれはやばい状態になりました。
この日の最後は、スクラム開発のワークショップがあり紙飛行機をどのグループがたくさんデプロイできるか競いつつ、スクラムについての理解を深めた。
紙飛行機作るの開発、飛ばすのデプロイっていうのとかなんか好きです。
そして帰宅、なぜかこの大事な夜にデュアルブートしているUbuntuちゃんが黒い画面になり動かなくなるというトラブルで40分くらい奪われる。
分かる、シンジ君の気持ち分かる。
仕方なく仕方ないことをやると、Ubuntu動いてくれたので、なんとか夜に分類モデルが出来ました。
おそらく寝たのは3時くらいでしたが、他コースの方々も夜遅く、寝ずにやってる人もいたのでスゴイです。
睡眠大事ですけど、削るときは削らないといけない状況があると知りました。
[9. 7]発表
前半戦ラスト日です。
発表は午後からだったので、午前中はまだ色々モデル作成を進めたり、分析したり、発表用の原稿を作ったりが出来ましたが、時間がぜんっぜん足らんかったです。
ちゃんとパワポ使って発表もしたかったですが、Jupyter Notebookのマークダウンへ色々書いて発表しました。
コード見ながらできたので、なんだかんだ良い感じで、さすがJupyter。
作った分類モデルは単純に青空文庫内の太宰治と宮沢健二の全作品の名詞を学習データとして用い、与えられた文章データがどちらの作家に近いか2値分類するというものです。
Gensim、sklearnなどPythonには便利なライブラリがたくさんあって幸せ感じます。
この日めちゃくちゃデカいドーナツの差し入れがあったので美味しくいただきました。
インターンシップ中のあれこれ + 感想
ぼくは現在大学二年ですが、参加している学生で同じ学年の人はエンジニアでは、ぼく含めて3人のみでした。
その内一人はぼくの大学の友達と出身高校が同じという日本の狭さ。
各コースでやっていたことは以下の感じ(?)です。
フロントはReactでPairs的なもの作ってて、サーバーはGoで色々やっていました。
iOSとAndroidもPairs的なものを作っていたように思います。
そうするとAIコースのみ毛色の違いを感じます。
そしてインターンの宿泊先の話。
18人くらいが共同で同じ部屋で一週間(+後半二週間目)過ごしたのですが、とてもいい環境でした。
いい環境というのは、睡眠のためではなく、
「同年代が近くで寝ずに必死でプログラミングをしている、という自らを追い込める環境」です。
https://twitter.com/huslc2es/status/1037346186561126400
プログラミングのためのシェアハウス、TECH RESIDENCEなど名前は聞きますが、ぼくの住んでいる部屋もマジでそうしたい。。
常に誰かに隣で深夜までプログラミングやっててほしい。
というのも今回した生活で、環境の強制力マジで強いと気づきビビりました。
そして、「一つの課題を一週間(5日間)でこなす」というのも良かったなと思います。
普段から結構いろんなことに興味が分散し、一つのことに集中できないことが多いので、今回の経験では、身にしみて正しいやり方を手に入れました。
一週間で1つのことにコミットしてみた記事どんどん書いていくので読んでね!
反省とこれから
反省ですが、事前知識が足りなさすぎた。
Railsとか触ってたからインターン一週間前くらいでPythonの文法思い出すところからだったので、マジで時間ほしかった感。
そして、もっとちゃんと、良い質問がたくさんできればよかった。
知識が足りないと具体的で本当に必要な質問っていうのが出来ないこと再認識しました。
明後日からインターン始まるけど、マジであと3ヶ月欲しい
微積・線形・統計確率ちゃんと勉強して、CouseraのMachine Learningやって、Pythonの基礎固めて、Aidemyのいくつかでもやって、ゼロからDeep Learning作っときたかった。— kirohi (@huslc2es) September 1, 2018
ライブラリ様のおかげであまり数学に頼ることがなかったけど、本気で機械学習やってくなら不可欠だし、評価めちゃ高いCouseraのMachine Learningの授業も取ってからやってると更に理解が深まった & もっと良いものが作れたんじゃないかなと思う。
データ処理の際にUNIXコマンドめちゃ使ったけど、もっと効率的に処理するためにシェルスクリプトとか知ってたら、、、みたいなことも思ったけど切りがないですわ。
一つ一つちゃんと順追って、次機会のあるときにレベルアップできる学習をしていきたいということです。
後半戦にも残れる技術力付けたいっス。
そして、エウレカの社員の方々、一緒に過ごしたメンバーの方々、学部二年に貴重な体験の機会を提供してくださり、ほんと感謝してます!
ありがとうございました。
PS: みんなエウレカのインターン行こう