見出し画像

GO株式会社 26新卒エンジニアサマーインターン開催レポート

GO株式会社では、26新卒の学生さんを対象に、去年に引き続き2回目となるエンジニアサマーインターンを開催しました。
(去年の開催レポートはこちら)

インターンの狙いは主に3つありました。
①大規模なサービス開発に挑戦する
GOの主なサービスの1つであるタクシーアプリ『GO』は現在2500万DL数を突破しています。そんな大規模かつ社会的責任も大きいサービスの開発業務は、ほとんどの学生がまだ体験したことがないはずです。GOのサービスが実際どのように開発されているのか体験していただきたいため、インターン生向けのチュートリアルのような内容ではなく、実際社内で動いている開発プロジェクトやエンジニアへの開発タスク等、より実践的な実務をご用意しました。

②多様で複雑な事業を理解する
GOが向き合うタクシーや交通に関する課題は多岐に渡っており、深刻な社会課題として認識されています。GOはそのような課題に対して、どのようなサービスを創って課題解決を目指しているのかもっと知っていただきたく、開発実務経験と併せて、各事業部の紹介やユーザーやクライアントの声を聞く等、ビジネス寄りのコンテンツもご用意しました。

③GOで働くイメージを持ってもらう
1か月の長期インターンでGOのエンジニア組織の一員として実務に挑戦してもらうことは、通常の選考では見ることのできない組織の中身や、社内の雰囲気をより深く感じることができる機会でもあります。GOにはどんなエンジニアがいるのか、会社全体はどんな社風なのか、実際に入社した後のイメージを持ってもらいたいと思い、より多くの社員と交流したり社内の情報をインプットする機会を積極的にご用意しました。
今年のサマーインターンは、去年よりもインターン生の方の人数や配属先を増やして開催したため、各配属先毎にレポートをお送りします。


バックエンド開発部

まずは、今年8月に1か月間に渡って開催したバックエンド開発部のインターンを紹介します。
今回配属先となったバックエンド開発部では、タクシーアプリ『GO』をはじめとするGOのサービスにおいて、サーバサイドの開発を総合的に行っています。
今回のインターンでは小林さん、寸田さん2名のインターン生をお迎えしました。

■実際の取り組み内容
小林さんには『GO』アプリ内の領収書発行システムの開発、
寸田さんにはタクシードライバーのシフト管理システムの開発にそれぞれ取り組んでいただきました。
[小林さんより、実際やってみたコメント]
最初はそこまで複雑ではないかと思い手を付けたのですが、詰めていくほど様々な要件が絡む複雑な領域であると感じました。
特に既存のコードに新しい仕様を追加していくという、普段はやってこなかった作業に苦戦しました。綺麗に仕様を追加するため既存のコードの構成を変えながらテストを追加し少しずつ理解を広げて何とか形にすることができました。
[メンター社員 柳浦よりコメント]
他者の手による既存のコードベースに手を加えるという作業は、端的にソフトウェア開発の難しさやおもしろさを体験できるものだと思います。かなり複雑な部分を担当してもらったため最初は苦労していましたが、現在の形に連なる意志決定の連続や他コンポーネントとの兼ね合いなどを説明して理解が進むと、どんどん手も動くようになり安心しました。今後どのように成長するかが楽しみです。

[寸田さんより、実際やってみたコメント]
シフトのリッチなバリデーションと聞いて、はじめはそこまで難しくなさそうと思っていましたが、実際には、ドライバーさんのシフトの実態に即した複雑なものになっていて、かなり難しかったです。実装や検討を進めていくうちに徐々に仕様の全貌がわかってきて、取り組みがいのある業務でした。
[メンター社員 武村よりコメント]
ライドシェアドライバー向けアプリのシフト入力画面というUX観点で重要な箇所を担当していただきました。ユーザーが目にする機能に関してどのようにすれば使いやすくなるかを学んでいただけたのではないかと思います。複雑な仕様を自分から積極的に調べて理解していく様子は大変素晴らしかったです。大規模・複雑なシステムへの対応能力を伸ばすために、今後もさらなる挑戦をぜひ続けていただきたいです。

バックオフィス基盤開発部

続いて、今年9月に1か月間に渡って開催したバックオフィス基盤開発部のインターンを紹介します。
バックオフィス基盤開発部では、タクシーアプリ『GO』の利用で発生する無数かつ複雑な決済・支払いを処理する基盤の開発を行っております。
今回は大島さん、坂内さん2名のインターン生をお迎えしました。
■実際の取り組み内容
大島さんには、決済支払い基盤において、締め作業の承認漏れを防ぐダッシュボード機能の開発、坂内さんには後部座席タブレットから取得される決済情報をとりまとめるシステムの開発に取り組んでいただきました。
[大島さんより、実際やってみたコメント]
ダッシュボード機能のAPIおよびフロントエンドの開発を担当しましたが、取り組む中でいくつかの課題がありました。。その課題を解決するため、権限に応じて承認状態を確認できるダッシュボード機能を開発し、生産性向上を目指しました。
この実装では、権限に応じて承認項目を確認できるように既存のミドルウェアの改良や、締め日に応じたデータ抽出のためのクエリ作成など、タクシー業界やGO特有の仕様に合わせた調整を行い、ドメイン知識を習得することができました。また、GOやNuxt.jsを使用したインターンシップへの参加は初めてで、DDDに基づくサービス開発の経験や、GOを支える技術であるマイクロサービス・gRPCに関する理解を深める大変貴重な機会となりました。
[メンター社員 池田よりコメント]
タクシーアプリ『GO』の目には見えない裏側の部分を担当していただきました。『GO』アプリを実際に使っていただくとアプリ画面などが印象に残るかと思いますが、その裏側ではお金の複雑な計算などを行っています。今回その一部を触ってもらい、その複雑さや面白さを体験していただけたのではないかと思います。
『GO』アプリに限らずどの企業でも収益化するためにお金の計算は必要不可欠なので、少しでもお金に関わるドメイン知識を身につけていただけたなら嬉しいです。
[坂内さんより、実際やってみたコメント]
私はインターン期間中に、不整合な決済が発生した場合にそれを検出する機能やマイクロサービス間でやり取りをする際に使用するAPI(gRPC)の実装を行いました。『GO』アプリでは様々な決済手段が使われており、後部座席タブレットの決済だけをとっても複数の決済手段が使われているので、決済に関するドメイン知識を身につけることができました。また、依存関係を考慮しながらコード設計を行ったり、網羅的なユニットテストを実装するなど、実務での開発に必要な様々な経験を積むことができ、とても勉強になった11ヶ月間でした。
[メンター社員 名嘉真よりコメント]
インターンではアサインされたタスクに着手してもらうということだけでなく、チームのDSや振り返り会にも参加してもらいチームの雰囲気やチーム開発に関しても体験してもらいました。タスクに関しても、このタスクで何が改善されるのかということから共有し、開発の目的を明確にすることを意識しました。開発内容がプロダクトのドメイン知識が必要なところだったのでわからないところを都度質問してくれたのでこちらもやりやすかったです。開発していただいた機能は、実際に無事本番リリースも行われ今も本番環境で実行されています。今後もいろいろな経験を積んでいかれると思いますがその時にGOでのインターンの経験が少しでも役に立つと嬉しいです。

ユーザーシステム開発部(iOS)

今回最後の配属先となったユーザーシステム開発部では、タクシーアプリ『GO』のユーザーが使用するiOS/Androidアプリを開発しています。今回はiOSアプリを開発するチームに所属いただきました。
部署としてインターン生を受け入れるのは初めてのこと。今回のインターンを企画する際に、意識したことに関してメンターの古屋にインタビューしました。
古屋:今回のインターンでは、ただプログラミングしていただくのではなく、チーム開発を体験していただいたり、GOでインターンしてるからこそ得られる経験をしていただけるようにしようというのを意識しました。
そのために初日からAndroidエンジニア、PdM、デザイナーなど他職種の方と話す機会を設けたり、CXチームが定期的に実施する実際にお客様からきたお問い合わせを共有する会に参加してもらったり、他チームのEMの方にも1on1をしていただいたりしました。
機能開発においても、PdMとの仕様確認やバックエンドとのAPIのI/F調整などをやっていただけるようなタスクを設定しました。
難易度設定には非常に悩みましたが、最初の1週間で見極めて後の3週間はそれに合わせてタスクを設定することで、ちょっと難しいくらいのタスクを設定することができたと思います。

エンジニアサマーインターンプログラムの紹介
青原さんには、『GO』アプリの特典プログラムのランク変更や、自ら発見いただいたメモリリークの解消等、複数の開発タスクに挑戦いただきました。

[青原さんより、実際やってみたコメント]
インターン中は『GO』アプリで使用されているRIBsというアーキテクチャについて学んだり、自分で発見したメモリリークの原因を調査したりと、新しい知識や経験を積むことができ、エンジニアとして技術的に大きく成長できた1ヶ月でした。
また、新しい仕様についてPdMやバックエンドの方々に確認をしたり、会議で進捗を報告したりと、単にコードを書くだけでなく実際の業務に参加させていただく機会があり、エンジニアとして働くことのイメージを高めることができました。

業務以外に実施した取り組み

尚、インターン実施期間中は、GOのエンジニア組織の文化や技術に触れていただくことを目的にこのような事を実施しました。
・シャッフル1on1 (所属グループでメンターや上長以外の社員とランダムにお話いただく)
・新卒社員との座談会、ランチ
・社内勉強会への参加(技術的な勉強会はもちろん、CX体験会等実際のお客様の声を聞く会等ビジネスサイドの勉強会にも広くご参加いただきました。)
・WSU(週次のオンライン全社ミーティング)への参加
・GOがスポンサーをしているカンファレンスへの参加 

1か月のエンジニアインターンに取り組んでみて

インターン最終日には、各配属先毎にインターン生による、成果発表を行いました。

成果発表を行うインターン生

今回、1か月という短い期間でしたが、『GO』の大規模なシステム開発に携わっていただいた5名に改めて感想を伺いました!
[小林さんコメント]
初めて実際の業務に触れて、技術的なことはもちろん、大きく複雑なプロダクトを理解する技術、コミュニケーションや質問の仕方など多くのことを学べました。個人や小さなチーム開発では得られなかった知識を得ることができ、自分にまだ足りていない能力、いわば伸びしろを自覚出来る貴重な機会となりました。とても楽しかったです!
[寸田さんコメント]
GOの持っているシステムの複雑さや奥深さを知った1か月でした。ここまで大規模なソースコードに触れるのは初めてでした。また、サービスを利用するお客様に直接届くような開発に取り組むことができたのは、とても勉強になりました。加えて、アプリを実装しているチームとの仕様の擦り合わせを実際に一通り体験することができ、とても勉強になりました。インターン終了後に実際にタクシーに乗る機会が何度かあり、実際に開発に携わったアプリが現場で使われているのをみて、実際に社会に実装されているのを実感できて、非常にやりがいを感じました。
[大島さんコメント]
バックオフィス基盤というビジネスの根幹を支える機能開発に携わり、GOの業務や取り組みについて学べた非常に有意義な時間でした。特に、メンターの池田さんには実装に関する質問だけでなく、GOoが活用している技術やアーキテクチャ、関連する周辺技術についても多くの質問に答えていただき、技術的な視野が広がり、大きく成長できたインターンシップでした。
[坂内さんコメント]
何よりも、多くの方々に使われている『GO』アプリの開発に携われたことがとても嬉しいです。11ヶ月という短い期間でしたが、メンターの名嘉真さんは毎日1on1をしてくださるなどとても親身になってサポートをしてくださいました。またチームや会社全体の雰囲気もとても良く、開発に取り組みやすい環境で、技術的にもとても学びのあったインターンでした。
[青原さんコメント]
様々な技術に触れて技術的に成長できたことに加え、今回のインターンシップでは社員の方々との1on1を通じてエンジニアとしてのキャリアを深く考える貴重な機会となり、参加して良かったと感じています。親身になって相談に乗ってくださったGOの社員の皆さまに心より感謝いたします!
GOが提供する複雑なプロダクトへの理解を深め、技術的にも難しいチャレンジをしてくださった5名のインターン生の皆様、本当にお疲れ様でした!

■採用情報
GOでは、エンジニアの26新卒採用を行っております。
興味がある方は、お気軽にご連絡ください!