こんにちは!Sansan プロダクト開発部に20卒 iOS アプリエンジニアとして入社した相川です。新卒として入社してはや4ヶ月ほど経ったので、Sansan プロダクト開発部の iOS アプリエンジニアとして働いてみて感じたことについて、新卒目線にはなりますが書いていけたらと思います。
iOS アプリエンジニアとして働いていて感じること
入社してまだ4ヶ月ほどしか経っていませんが、Sansan プロダクト開発部の iOS アプリエンジニアとして働いていて、日々成長を実感するとともに、毎日働くことが非常に楽しいと感じています。Sansan の iOS アプリエンジニアとして働いていてよかったと思うことは大きく分けて以下の4つがあります。
- 優しすぎるチームメンバーからの日々の厚いフィードバック
- 議論しやすい環境・醸成された振り返り文化
- 新卒でも大規模プロジェクトでの開発に参加
- 昼食のスキマ時間での勉強会 Geek Seek Workshop
1つ1つについて、詳しく書いていきたいと思います。
優しすぎるチームメンバーからの日々の厚いフィードバック
Sansan の iOS チームに参加して、とにかく日々のフィードバックが厚く、しかも非常に的確なものを頂けることがありがたいと思いました。以下で具体的にお話しします。
Sansan では入社してから2週間ほど、同じ新卒のメンバー何人かとグループになっての研修が行われます。その研修期間では、日々やったことや感じたことなどを記録していく日報を書く必要があります。書いた日報は、配属される予定のチームメンバーをメンションした上で投稿することになります。
メンションされたチームメンバーには特に日報をレビューする義務はないのですが、幸運なことに自分が配属された iOS チームでは、チームの中で日報のレビュー担当を日替わりで決めてくださって、毎日日報のレビューをして頂くことができました。日々の自分の行動に対してフィードバックをもらうことによって、どのように行動を改善していけば良いのかも明確になっていったので自分にとっては非常にありがたいことでした。
iOS チームに配属された後は、日報は義務ではなくなるのですが、日々振り返っておいた方が早く成長できると感じていたこともあり、チームに配属されてからも自分の振り返り用として、日報を続けることにしました。自分としては日報をレビューして頂けるのは研修期間だけだと思っていたため、メンターを担当して頂いている方に「日報は個人的に続けようと思います」と気軽に言ってみたら「じゃあ、レビューもこのまま続けるから、メンバーにも言っておくね」と当然のようにレビューを続けて頂けることになり、何と入社してから4ヶ月ほど経った今でも、日替わりでチームメンバーに日報をレビューして頂いています。
日報には技術的に詰まってしまった部分なども書いているので、自分の中で凝り固まってしまいがちな技術的な疑問に対するアドバイスも日報を通して頂くことができますし、それ以外でも色々なフィードバックを頂けているので、非常に貴重な機会だと思って日報を書き続けています。
また、自分がSansan に入社した理由の1つとして、「実際に会ったエンジニアが全員親切な方ばかりで、雰囲気的にも良さそう」ということを感じていたため、入社直後からこれといったギャップを感じずに優しすぎる方々に囲まれて、想像通りの非常に良い環境で働くことができていると感じています。
議論しやすい環境・醸成された振り返り文化
Sansan の iOS チームで働き始めてみて、非常にチーム内での議論がしやすく、振り返りの文化についても醸成されているという印象を受けています。
自分は学生の頃にもチーム開発の経験があり、チーム内での議論や振り返りについては何度か頭を悩ませたことがありました。具体的には、あまり活発に議論を行うことができない・振り返りのために KPT などを導入してみても形骸化してしまったなどのことがありました。
Sansan の iOS チームでは、定期的にチーム内で議論や振り返りを行う場として、「iOS GKPT」という会議が毎週行われています。
GKPT は「Good(良かったこと)」「Keep(今後も続けたいこと)」「Problem(問題や課題)」「Try(やってみること)」の頭文字を取ったもので、iOS チームでは、毎週の GKPT 会議の前に各メンバーが持ち寄った 「GKP」をもとに振り返りを行っています。
iOS チームでは、カンバンツールである Trello を利用して振り返りを行っていますが、毎回振り返ることによって、気付きや学びを得ることができたり、今後のためにやっておいた方が良いこと(Try)を発見することができています。GKPT 会議の中で出た Try に関しては、基本的にチームメンバーの中の一人をアサインして、毎日の朝会で Try の実施状況を確認することにより、Try の実施漏れを防げるような仕組みになっています。これのおかげで、形骸化しがちな GKPT を毎週しっかりと行うことができていると感じています。実際にこの取り組みによって、チーム内の様々な課題が解決されたり、チーム内で今後続けた方が良いこともいくつか出てきていて、個人的にも重要な取り組みだと感じています。
学生の頃にもこれを実施できていたらなと思ったこともありますが、「Sansan の iOS チームメンバー全員の自分ごと感」と「毎日振り返ることができる仕組み」により成り立っているものだとも感じているため、学生の頃に同じ方法で実施してみてもきっと上手くはいかなかったんだろうなという印象です。
また議論しやすい環境という点に関しては、何か自分が提案したり疑問を投げかけると誰かが即座に答えてくれる環境が Sansan の iOS チームにはあります。直近で言うと、Sansan の iOS チームで採用している VIPER アーキテクチャについて、「Presenter で現在行っている処理は、Interactor で行うべきではないか?」という提案をチームに投げた(GitHub に issue として挙げた)のですが、チームメンバー全員がその提案に対して自分の考えを述べてくれて、自分の VIPER に対する考えの整理がついたということもありました。
個人的には自分が何かを言ったら、チームメンバーの方の誰かが確実に反応してくれるという安心感があるからこそ、議論がしやすい環境になっていると思っています。
新卒でも大規模プロジェクトでの開発に参加
以下の記事でも紹介されていますが、Sansan では、一定期間「オンライン名刺プロジェクト」という(Sansan 史上でもプロジェクト規模の大きさが一番かもしれない)プロジェクトが動いていました。自分は最初からこのプロジェクトに参加していたわけではないですが、若干仕様も固まってきた頃合いでプロジェクトに参画し、開発メンバーとしてプロジェクト終了まで開発を行いました。正直、自分としては新卒なのにこれだけ大きなプロジェクトにアサインされるとは思ってもいなかったので、アサインされた時は不安な気持ちも若干ありましたが、それ以上に非常にワクワクしていたことを覚えています。 実際に開発が始まってからは、ほとんどの iOS メンバーが開発に携わることになったこともあり、全体として非常にスピード感のある開発を体験することができました。
大規模プロジェクトで、新卒の自分でも開発にある程度貢献できた理由は大きく3つあると思っています。
1. オンライン名刺プロジェクトの前に参加したプロジェクトで、大きく成長することができた
オンライン名刺プロジェクトは入社してから2番目に参加したプロジェクトだったのですが、その前のプロジェクト中に、本稿で先に述べた 厚く的確なフィードバック を数多く頂くことができました。それによって、基本的な業務の流れや、iOS チーム以外のメンバーとどう関わっていくべきかなどについて、効率的に学び、大きく成長することができました。
2. 自分の不明点をすぐに解決できる環境があったり、最初のプロジェクトの反省をオンライン名刺プロジェクトに活かすことができた
こちらも本稿で先に述べましたが、 議論しやすい環境・醸成された振り返り文化 があることによって、不明点があればすぐにメンバーに尋ねて解決したり、最初のプロジェクトをメンバーと振り返って、その反省をオンライン名刺プロジェクトに活かすことができたと思っています。
3. VIPER によって、新卒の自分でもコードの責務のばらつきを抑えることができた
こちらはコードレベルの話にはなるのですが、先述したように Sansan では VIPER というアーキテクチャが導入されています。新卒の自分でも、この VIPER に沿ったコードを書くことによって、ある程度コードの 責務のばらつきを抑えることができた と思っています(もちろんコードレビューは大量にして頂きましたが)。
VIPER は、View・Interactor・Presenter・Entity・Router という単位で責務を分割してコーディングしていくことになるため、経験の浅い自分でもどこに何を書くべきなのかがある程度明確になったと感じており、レビューでご指摘を頂く中でさらに VIPER についての理解も深まったと感じています。また、VIPER に限らずですが、ドキュメント(開発・開発に関わらないものも)が非常に整備されていることも、新卒の自分でも比較的早めにキャッチアップすることができた大きな理由の1つだったと思っています。
このように、iOS チームでは新卒でも十分に挑戦できる環境があります。 他にも現在自分が行っている挑戦として、業務の隙間時間での XcodeGen の導入があります。 チームの方々からサポート・応援して頂けたりしていることもあって、少しずつ導入作業を進めることができています。
昼食のスキマ時間での勉強会 Geek Seek Workshop
最後に、個人的に非常に助かっている社内制度「Geek Seek Workshop」についてご紹介します。Geek Seek Workshop は簡単に言うと社内勉強会の制度で、何らかの勉強会を開催すると一人当たり1000円までの補助が出る制度になっています。
社内ではランチ時間で色々な勉強会が開催されていて、もし興味のある勉強会があれば気軽に声をかけると参加できるような仕組みになっています。自分は現在週4くらいで勉強会に参加していて、現在参加しているのは「SwiftUI 勉強会」「Human Interface Guidelines(以降、HIG)勉強会」「Flutter 勉強会」「iOS View 勉強会」の4つになります。内容も勉強会によって様々で、紹介した例だけでも「SwiftUI 勉強会」は一つのアプリを勉強会参加メンバーで分担して開発、「HIG 勉強会」は各自で HIG の章を読んだ後に議論、「Flutter 勉強会」は、各自でもくもくした後にやったことを共有、「iOS View 勉強会」は、勉強会担当者が iOS の View 周りの題材(直近ではパララックスヘッダーなど)を用意してそれを解説、など、独自の内容で開催されています(もちろん内容は柔軟に変更できます)。
昼食の時間というスキマ時間ではありますが、個人でキャッチアップしていた SwiftUI、Flutter についてキャッチアップする時間が増えて単純に助かっていますし、HIG 勉強会や View の勉強会で学んだ内容は、実際に業務にも活用することができています(デザイナーさんとのコミュニケーションの際に利用したりなど)。
Geek Seek Workshop は社内勉強会の制度ですが、社内には他にも Geek Seek 系の制度がいくつかあって、「ソフトウェアは2万円まで」「ハードウェアは3万円まで」「書籍費・外部勉強会参加費などは6万円まで」など、エンジニアにとって非常に嬉しい制度が沢山あります。今後もエンジニアとしての価値を高めていくために、これらの社内制度を積極的に使い倒していこうと思っています。
buildersbox.corp-sansan.com jp.corp-sansan.com
おわりに
今回は、自分が iOS アプリエンジニアとして働いてみて感じていることを書き連ねてみました。だいぶ長文になってしまいましたが、少しでも良さが伝わっていれば幸いです。 ぜひ、皆さんも Sansan で一緒に iOS アプリを作りませんか?
また、学生さん向けには、10Daysハッカソンの「Trigger」という企画があります。 Triggerは「世界に通用するエンジニアを日本の学生から育成・輩出したい」というCTO藤倉の思いから生まれた、ビジネスと技術を結び付ける方法論をインプットし、ハッカソンでアウトプットする、プロダクト開発を体験できる10日間のプログラムです。学年不問で参加出来るので、ぜひご応募ください!
今後は、iOS アプリエンジニアとして開発周りの記事も積極的に書いていきたいと思います。
読んでいただきありがとうございました!