こんにちは、ZOZOTOWN iOSチームの荒井です。今回は9月に実施したZOZOテクノロジーズのサマーインターンシップについて紹介したいと思います。インターンシップを開催予定の方、ZOZOテクノロジーズのインターンシップに興味がある方の参考になれば幸いです。
INTERNSHIP 2019 SUMMER概要
この夏、ZOZOテクノロジーズとしては初となる就業型インターンシップ「INTERNSHIP 2019 SUMMER」を実施しました。
実施期間 | 8/28(水)〜9/10(火), 9/12(木)〜9/27(金) |
募集職種 | サーバーサイドエンジニア/フロントエンドエンジニア/インフラエンジニア/iOSエンジニア/Androidエンジニア/ビジネスプロデューサー |
配属プロダクト | ZOZOTOWN/WEAR/新規事業 |
奨励金 | 390,000円 |
今年のテーマは「Thank you!」です。期待とエールをこめて奨励金も39万円となっています。私が所属するZOZOTOWN iOSチームにも9/12〜9/27の期間あおいさんが来てくれました。ZOZOTOWN iOSチームでは初のインターン生となります。
INTERNSHIP 2019 SUMMERの特徴
今回のインターンシップの特徴は「就業型インターンシップ」であることです。メンターと毎日隣り合ってZOZOが運営するサービスに携わります。エンジニアは本番にデプロイすることがひとつの目標です。実際にプロダクトの開発を行うことで、業務イメージが湧きやすく、サービスの理解も深まります。期間中はミーティングなども社員と同様のスケジュールで行ってもらいました。
選考フロー
選考は以下の流れで実施しました。
応募
応募条件は2020年4月から2021年3月の間で、高校/専門/高専/短大/大学/大学院を卒業見込みもしくは修了見込みの学生です。日程すべてに参加できる方を対象としています。6月19日(水)から7月5日(金)の期間募集をし、ありがたいことに多くの学生から応募がありました。ZOZOテクノロジーズ初のサマーインターンシップということもあり、学生の期待も大きかったようです。また、39万円という奨励金も注目を集めました。
書類選考
履歴書の内容から選考します。履歴書の形式は特になく自由です。執筆論文、研究内容やインターンシップ経験などを書く学生が多いです。エンジニアですとGitHubや開発したサービスの紹介などが伝わりやすく、選考する側も判断しやすいと思います。
課題
課題の内容
書類選考を通過した方には課題選考に進んでもらいました。課題は希望職種によって異なります。具体的な内容は伏せますが、今年のiOSの課題は以下のようなものでした。
- Web APIを使用したiOSアプリケーションの作成
- 一覧画面、詳細画面の実装および画面遷移を実装する
- 詳細ページには指定した機能を実装する
- WebViewを使用しないといった、いくつかの課題条件を満たす
- UI、アニメーション、アーキテクチャ等、実装面でのこだわりポイントについて解説する
就業型インターンシップという性質上、アプリケーション開発経験がある学生を対象としています。課題はモバイルアプリエンジニアが作成しており、ZOZOTOWNやWEARの開発で使用するであろう技術が身についているかを判断する課題となっています。課題の取り組み期間は10日間に設定しており、学生の都合も考慮し、ある程度余裕のある期間を設けています。
フィードバック
課題は提出の一発勝負ではありません。弊社のiOSエンジニアが課題をチェックし、要件を満たしていないところ、コード上で気になるところなどをフィードバックします。フィードバックの修正を踏まえた上で合否を決定します。修正内容は後日行われる面談にて触れていきます。
面談
面談はオンラインで実施しました。提出した課題を元に技術的な話が中心となります。あおいさんの面談でポイントとなった点は以下の内容でした。
- 1年ほどのSwift歴でClean Architectureの習得に至った経緯
- 課題もClean Architectureを採用していたが、課題規模に対してのアーキテクチャ選定理由
- 採用ライブラリの選定理由
- 弊社エンジニアがコード上で気になった点
こちらの面談はZOZOTOWN iOS担当のばんじゅんが担当したのですが、一番意識していたのは「実装面でのこだわりポイントについて解説する」という点です。あおいさんは「アーキテクチャの選定にはこだわるようにしている」とのことだったのでアーキテクチャの話題が中心になりました。後日あおいさんに尋ねたところ、インターンシップを通してこの面談が一番緊張したようです。
面接
課題合格した方は最後に面接があります。面接は配属先予定のチームリーダーが実施します。 今回の面接での確認ポイントは以下の3つです。
- 一緒に働きたいと思えるか、会社の経営理念と照らし合わせる
- インターンシップをやりきる力がありそうか
- 技術的な面の再確認
技術的な面は課題で確認しているため、1と2を重点的に確認します。特に理念との照らし合わせは採用時にも重要視している項目のひとつです。
インターンシップの目標設定
今回のインターンシップで珍しいところは「キックオフ面談」があるところです。 多くのインターンシップでは会社がインターンシップ期間中の課題を決めると思いますが、今回はインターン生の希望を聞いた上で目標を決め、インターンシップ期間中の課題を決定します。
今回あおいさんからは以下の希望がありました。
- サービスのレガシーな部分をモダンにする方法を見てみたい
- 大きなサービスの基盤を触りたい
- チーム間でどのようなコミュニケーションをとっているか見てみたい
- 厳しいフィードバックが欲しい
この中で特に驚いたのが「レガシーな部分をモダンにする」という内容です。学生から出てくるのは珍しいと思います。インターン生の課題設定は難しく、今回私たちも学生が楽しめるような新機能の追加やUI/UXの変更など、見た目上でも達成感がある課題を用意しようとしていました。そんな中、あおいさんのインターンシップに求める内容の説明は感心させられるものでした。要約すると以下になります。
「エンジニアをやっていく中で、レガシーな部分と向き合っていく必要性を感じている。モダンなUI実装などは個人開発でも試せるが、レガシーな部分をモダンにするという経験はレガシーコードが無いとできない。ZOZOTOWNは長く運営されているサービスなのできっとまだあるはず」
確かにZOZOTOWNは運営期間も長いため、レガシーなコードはまだまだあります。まさに私たちが業務で向き合っている課題であり、学生からこの目標を聞いた時は非常に嬉しく思いました。このようなやり取りを「キックオフ面談」で行い、インターンシップでの目標は「レガシーなコードをモダンにする技術を学び、実践する」に決定しました。
こちらで一方的に用意するのではなく、事前に擦り合わせを行うことでインターンシップでの有益性も変わってくると思います。
実施内容
スケジュール
10日間のインターンシップで目標が達成できるようにスケジュールを作成します。初日のセットアップやイベントなどはメンターが事前に決めておきますが、それ以外はインターン生、メンターで随時相談していきます。
9/12 | ・人事による説明 ・開発環境のセットアップ ・メンバー紹介 ・インターンシップ目標の詳細を設定 ・インターンシップ課題の説明 ・ZOZOTOWN iOSの説明 ・初日の目標設定 ・ZOZOTOWNのビルドや実行確認 ・練習課題の開発 |
9/13 |
・開発 ・動作確認などのウォークスルー ・状況にあわせてタスクを切り出す(都度メンターがフォロー) |
9/17 |
・開発 ・ZOZOTOWN iOSのレガシーな構造についてオーバービュー ・iOS社内勉強会への参加 |
9/18 | ・本課題の開発 |
9/19 |
・開発 ・ZOZOテクノロジーズscrumへ参加 |
9/20 |
・開発 |
9/24 |
・開発 ・After iOSDC Japan 2019へ参加 |
9/25 |
・開発 |
9/26 |
・開発 ・成果発表の資料作成 ・iOS技術共有会へ参加 |
9/27 |
・資料の改善 ・成果発表 ・懇親会 |
開発
今回の課題はZOZOTOWN iOS内にあるObjective-CのコードをSwiftに置き換えるリファクタリングです。事前に「大きなサービスの基盤を触りたい」という要望があったため、機能が多く影響範囲も広いファイルを選定しました。最初の数日はZOZOTOWNアプリの開発に慣れてもらうため、1機能で完結する影響範囲が狭い練習課題から着手してもらいました。
インターンシップ中は常にメンターが隣にいるため、気軽に相談できる環境になっています。開発中は行き詰まることも多かったとのことですが、メンターに相談しながら解決していくことで「サービスのレガシーな部分をモダンにする方法を見てみたい」という希望が叶えられたのではないかと思います。
また、「厳しいフィードバックが欲しい」という希望も事前にあったため、コードレビューはメンター以外のエンジニアも参加しています。 コードレビューには技術顧問の岸川克己さんにも参加して頂きました。
あおいさんはiOSDC Japan 2019で岸川さんのセッションを最前列で聴いていたらしく、弊社の技術顧問と聞いた時には驚いていました。開発体制やコードレビューの雰囲気なども感じて頂けたかと思います。
成果発表
最終日は10日間の成果発表を行います。この成果発表は代表取締役社長や取締役、VPoEも出席します。社員も自由に参加できるようになっているため、10日間一緒にやっていたチームメンバー以外も多く出席しました。
今回はObjective-CからSwiftへの移行という、アプリケーションの見た目が変わらないテーマでありましたが、iOSエンジニア以外にも内容が伝わる資料にまとめられていました。インターン生は中々このような発表の経験は少ないことも多いので、資料作成の時間や練習の場、フィードバックを受ける環境などをしっかり整えることが重要だと思います。
発表会の終わりには「Thank you!」にちなんでインターンシップ期間中に関わった39人からのメッセージとメンターから修了証書の授与がありました。
社内イベント
10日間のインターンシップでは、開発以外にも様々な社内イベントに参加してもらいました。社員と同様の働き方をすることで、ZOZOテクノロジーズのメンバーが普段どのように業務にあたっているかがより伝わったかと思います。インターンシップ期間中にあったイベントを紹介します。
iOS社内勉強会
弊社のiOSチームでは定期的に社内勉強会を行っています。今回は「Human Interface Guidelines」の「System Capabilities」がテーマでした。資料は有志のiOSエンジニアが持ち回りで作成していますが、参加者はiOSエンジニアだけでなく、デザイナーや品質管理チームからも希望者が参加しています。社内勉強会の雰囲気を感じて頂ける良い機会だったと思います。
iOS技術共有会
iOSチームは「ZOZOTOWN」「WEAR」「PB」の3チームあります。それぞれ要素技術は違いますし、勤務地も離れているため、「iOS技術共有会」という形で定期的に情報共有しています。この共有会には技術顧問の岸川さんにも参加していただき、ざっくばらんに意見交換を行っています。あおいさんにはiOSエンジニアの前で成果発表の予行練習をして頂きました。iOSエンジニアとしてのチェックや、資料の構成など、詳細を知っているZOZOTOWN担当以外からもアドバイスを受けていました。
ZOZOテクノロジーズscrum
社員が起案し開催するZOZOテクノロジーズの全社員イベント「ZOZOテクノロジーズscrum」に参加してもらいました。今回は「Data for the people」をテーマに弊社データサイエンス・アドバイザーのアンドレアス ワイガンド氏によるセミナーが行われました。ZOZOテクノロジーズscrumについては弊社COMPANY BLOGをご覧ください。
当日は懇親会もあり、普段業務で接点があるエンジニア以外とも交流する良い場になったと思います。
After iOSDC Japan 2019
9月24日、弊社でAfter iOSDC Japan 2019を開催しました。Sansan株式会社さん、JapanTaxi株式会社さんとの合同イベントで、本人が参加希望していたイベントということもあり、ZOZOテクノロジーズ関係者として参加してもらいました。当日イベントに参加するだけでなく、弊社登壇者の発表資料読み合わせなど、準備段階から参加してもらいました。
まとめ
今回はINTERNSHIP 2019 SUMMERについて紹介しました。インターンシップは学生が学ぶ場というイメージがありますが、あおいさんのエンジニアとしての学習意欲、問題に対して向き合う姿勢などは良い刺激になり、我々も学びが多い10日間でした。あおいさん、本当にありがとうございました! インターン生あおいさん、メンターばんじゅんからコメント頂いたので記載します。
あおいさんからのコメント
今回インターンシップで取り組んだのは、ZOZOTOWNのiOSアプリのリファクタリングです。メンターのばんじゅんさんの的確すぎるご指導のもと、毎日楽しく学びながら仕事ができました。また、ランチや日々の業務を通じて気づいたことは、ZOZOテクノロジーズのメンバーは本当に優しく温かい人達ばかりだということです。こんな居心地の良い環境の中で自分の大好きなサービスの改善に携わらせていただけたことは自分にとって大きな財産となりました。総括するとこのインターンシップに参加でき本当に良かったです!お世話になった皆さんありがとうございました。
ばんじゅんからのコメント
レガシーと戦う技術を持つエンジニアが欲しいといつも思っているなかで、インターン生として、そのモチベーションを高く持っているあおいさんが来てくれたことは、そのレア度もあり驚きました。業務の中ではObjective-Cを攻略する戦術を学んでいただいたのですが、それ自体は広くどこでも役立つ知識とも言えないなかで、あくまでレガシーにフォーカスして楽しんで取り組んでいただけたようです。わたしたちのリファクタリングに対する取り組みにもポジティブな影響が出ていたと思います。
モダン化にあたっては実際の移行作業だけではなく現状の調査や分析が大きなタスクになりますが、今回のインターンシップではプロダクトの実際のコードや業務に貢献する目的があったため、具体的な分析がまだ行なわれていない部分を題材に調査から実施していただきました。Objective-CとSwiftの相互運用の特性を踏まえて分析しながら現実的な規模へのタスクの分解を考えていただき、限られた期間のなかで、プロダクトへ反映できるコードの作成を完了していただきました。これは単純な開発体験ではなく、わたしたちが普段実施する業務そのものです。今回その課題を提供できたことと、実業務への真の貢献を得られたことは、本当に良い結果であったと考えています。
さいごに
ZOZOテクノロジーズでは、一緒にモダンなサービス作りをしてくれる方を募集しています。ご興味のある方は、以下のリンクからぜひご応募ください!