こんにちは、Eight事業部でiOSエンジニアをしている福尾です。
梅雨がやっと終わり夏が始まってテンション上がっております。
先日、モバイルに特化した1Dayインターンシップを開催しました!
僕は去年に引き続きiOSのメンターとして参加しました。去年も学生の技術力に驚いたのですが、今年もアプリを何個もリリースしていたり、プログラミングスクールでメンターをしていたり、インターン中でバリバリコードを書かれているような、力のある人たちが集まってくれました。
今回のインターンは、iOSとAndroid合わせて約20名の学生で、メンターがiOS、Androidそれぞれ2人、3人といった感じでした。
また今回は特別ゲストとして、20卒内定者の荒翔太さんにもAndroidのサポートとして入ってもらいました。
今回はメンターをして感じたことを含めながら当日の様子をレポートしたいと思います。
スケジュール
当日のスケジュールはざっくり以下のような感じです。
10:30-11:50 会社紹介: 新卒採用担当 田中 10:50-11:00 開会宣言〜今回のインターンに臨むにあたって〜: CTO 藤倉成太 11:00-12:30 技術説明:Eight事業部 モバイルエンジニア: 福尾幸太郎 12:30-13:30 お昼休憩 13:30-18:30 実践〜画像処理APIを用いたモバイルアプリ開発〜 18:30-20:30 学生×エンジニア懇親会
テーマ「Little Sansanを作ろう!」
今回のワークのテーマは「Little Sansanを作ろう!」ということで、名刺を端末のカメラで撮影し、クラウドでOCRをかけ、その結果を画面に表示するというものです。
一見するとシンプルに見えるかもしれませんが、ハードウェアとの連携、非同期通信、JSONのパースなどモバイルアプリ開発において重要なポイントが凝縮されています。
弊社のプロダクトである、法人向け名刺管理サービス「Sansan」と個人向けビジネスSNS「Eight」の土台となっている、カメラで撮影した名刺のデータ化を体験してもらいたいといった意図でこのテーマを選定しました。
データ化の部分に関しては実際にはDSOCという部署が画像を解析したりしてくれていますが、セキュリティ的な話もあり、代わりにGoogleが提供しているCloud Vision API*1を使ってOCRの部分を実現しています。
また、名刺に関してはダミー名刺を使用しました。
ワークは課題形式ですが、途中で関連した技術の話をしたり質問を受け付けたりと、コミュニケーションが取りやすい雰囲気の中で進めました。
午前はワークで必要になる知識をインプット
午前は午後のワークで使う技術をメインに、モバイルアプリ開発で重要な技術である非同期通信、マルチスレッド、アーキテクチャ、テスト、正規表現について簡単に説明し、理解を深めてもらいました。
先にある程度頭に知識を入れておくことによって、ワークへの理解が深まったり、調べるときのワードのポイントにしてもらうためです。
振り返りでの発言やアンケートでは、多くの人が、これまでアーキテクチャに関して考える機会があまりなかったので興味深かったと思ってくれたようです。実際に僕も学生のときに個人でアプリをリリースしたりはしていましたが、複数人で開発する経験はほとんどなかったため、設計やアーキテクチャについて考える機会はあまりありませんでした...。
ランチは学生同士わいわいと
技術の説明が終わるといったんランチ休憩です。懇親会もあるのでメンターはメンターのみで食事をし、学生同士の会話を楽しんでもらいました。
午後のワークのためにiOS、Androidで分かれて約4人で1グループとし、コミュニケーションをとりながら午後のワークへの準備もしてもらいました。
意外と同年代で同じ領域に興味を持っている人と話せる場は多くないので、良い機会になったのではないかと思います。
午後はひたすら手を動かしてアウトプット
ワークでは午前中に説明した知識がところどころに出てきます。
基本的には資料を見ながらもくもく課題に取り組んでもらいます。
もしわからないところがあればすぐメンターに質問できるので、デバッグ方法や普段エンジニアがどのように考えて開発を行っているのかが体感できます。
(もちろん最初は自分で調べてもらうのがマストです)
質問から派生して設計の話をしたり、今作っているアプリのアドバイス的なことをする場面もありました。
わかりやすく教える難しさ
メンターとしてワークを通じてわかりやすく教える難しさを実感しました。
普段開発をしているのにも関わらず、いざ説明しようとするとうまく説明できない部分がありました。
実際に人に教えるとなると、開発自体とはまた別のスキルが必要になります。
人にわかりやすく説明するためには、その技術に関して深く理解していなければならず、どんな伝え方をするか、抽象度の高いものならどんな例を出すべきかなどを考える必要があります。
エンジニアは基本的にコードを書くことがメインと思われがちですが、実際は人にものごとを説明する機会も同じぐらい多いと思います。
Pull RequestのDescriptionなども説明に含まれます。
特にモバイルは、サーバサイド、デザイナー、マーケティングチーム、施策チームと複数のチームにまたがってコミュニケーションを取らないといけないことが多いので、なおさら説明力や言語化能力を鍛えないといけないと実感しました。
ワークの振り返り
ワークの振り返りでは今日1日を通して学んだことや感じたことをグループごとに話し合ってもらい、最後に全体で共有してもらう場を設けました。
午後はまるまるワークで作業だったので、学んだことをこの時間で整理してもらうことが狙いです。
懇親会
振り返りが終わったあとは懇親会のお時間です。
懇親会では実際にワークに取り組んで感じたことや難しかった部分を聞いたり、技術の話から弊社の取り組みや福利厚生まで幅広くお話することができました。
普段は徳島の神山町でリモートワークをしているAndroidエンジニアの辰濱がリモートワークについてお伝えしたり、20卒内定者の荒さんからどのように就活をしていたのかや、就職先を決めたポイントなどを話してもらいました。学生からすると直近まで就職活動をしていた先輩から話を聞けるのは良い機会になったかと思います。
また、懇親会にはCTOである藤倉も参加し、熱く思いを語っていました。
参加した学生の声
今回インターンに参加してくれた学生の声を一部紹介したいと思います。
- 同じようにiOSに触れてきた同年代と会えた点、現役のエンジニアの方がメンターとしてついて頂けた点がとても良かったです。 - アーキテクチャについてだったり、Vision APIについてだったり、学びのとっかかりを作っていただけたので参加して良かったです! - 5時間という限られた時間の中で、Sansanの軸となる機能の実装を体験できてよかった - 内容がすごくよかったと思います!参加したいという方が多いと思うので今後も続けて欲しいです。 - ちょうどいい難易度でした。MVPやったことなかったので面白かったです。
最後に
今回のインターンを通じて、教えることが一番勉強になるなと僕自身実感しました。
また、学生にとっても有意義な時間になり新しい技術の勉強のきっかけになっていたら嬉しいです。
今回のSansan Tech Internship モバイル編は福岡(8/20 火)、大阪(8/22 木)、東京(8/31 土)のあと3回開催予定です。
実際の開発でも利用できる実践的な内容になっておりますので、もしご興味がありましたらぜひ応募してください!
お待ちしております。
*1:Cloud Vision APIcloud.google.com