技術本部Mobile Application Groupの赤城です。最近は、Sansan Mobileアプリの開発チームのエンジニアマネジャーとして活動しています。
この度、Sansanのモバイルアプリ開発を加速させるためKotlin Multiplatformの導入を決定しました!
それに際して、普段KotlinになじみのないiOSエンジニアも全員KMPでコードが書けるよう、キャッチアップ期間を設けました。 そして、今年5月にその集大成としてKotlin Multiplatform(以下、KMP)開発演習を実施しました。
今回はその開発演習の準備から、当日の様子に至るまでをお話します。
開発演習の目的・目標
ただ「開発演習をしよう」だけだと、実際の業務でKMPを使いこなすには不十分なキャッチアップと成果を上げづらいと考え、最初に目的・目標を設定しました。
目的
- Kotlin Multiplatformを使って仕事として開発していく事に、自信を持っている状態となる。
- そのために、見積もり〜テストまでの一連の流れを「KMPで書く」前提で経験した状態となる。
目標
実際の開発で行うであろう下記を実施した状態となっている事。
- 要件確認&見積もり
- 計画作成
- 詳細設計
- 実装(テストコード含む)
- コードレビュー
- テスト(デバッグ)
この目的・目標からブレイクダウンして、具体的なキャッチアップのプランを決めていきました。
1〜2カ月の期間を設け、通常の開発業務を行う傍ら、技術面での基本的なキャッチアップをまず各iOS/Androidエンジニア個人で行いました。
このような形で、基本的なKotlin Multiplatformに関する知識を全エンジニアが身につける事を前提条件として、本格的な開発演習を行う事としました。
オフラインでの開発演習の実施
今回のKMPキャッチアップの目的として、「見積もり〜テストまでの一連の流れを『KMPで書く』前提で経験した状態となる。」という事を掲げていた事から、できる限り業務での開発の流れを演習で再現する必要があると考えました。
そこで、業務のフォーマットにできる限り寄せ、かつ開発演習の期間である2日間に完成できるような規模感の疑似PBIを事前に用意しました。
また、「実務にのっとらない形で演習を進めてしまった」という事を避けるため、演習の進め方に下記制約を設けました。
- 下記の工程で行うこと
- 要件確認&見積もり
- 計画作成
- 詳細設計
- 実装(テストコード含む)
- コードレビュー
- 実務で行うような、詳細設計をする事
- PRが2 Approveされ、マージされる事
さらに、先行してKMPを深くキャッチアップしているシニアエンジニアをチューターとする事で、できる限り技術面で詰まってしまうことを避けるようにしました。
今回記事にしている内容以外にも、できる限りさまざまな準備を行いました。 しかし、このような取り組み自体が初めてであり無事完了するかとにかく不安だった中、開発演習当日を迎えました。
開発演習当日の様子
当日は、福岡・関西支店からもメンバーが集まり、オフラインでの開発を実施しました。
Sansanは週1出社と週3出社が選べるものの、モバイルエンジニアは週1出社の比率が高い事もあり、全員がオフラインで集まるのは久々でした。
チューター含め13名のiOS、Androidエンジニアが参加し、それぞれ3名ずつ3チームに分かれて開発演習を行いました。
技術面でのトラブルもチーム内やチューターと話しつつ解消したり、
実際に設計や見積もりの中で、Kotlin MultiplatformをSansanに導入した際のあるべき設計に関する深い議論も行われたりと、盛り上がっていました。
各チーム無事アウトプットも出し切り、問題なく2日間の演習を終えられました。
振り返りと感想
開発演習の最後に、振り返りを実施しました。
まず、一番の目的である「Kotlin Multiplatformを使って仕事として開発していく事に、自信を持っている状態となる。」に対して振り返った所、大体のメンバーに自信がついたと回答しました。
「タイトなスケジュールの中、KMP・ネイティブどちらも大きく詰まらず開発できた。」という事が理由としてあげられており、できる限り実践を模した演習を完遂できた事実が自信に影響していると感じました。
一方、一部メンバーからは「実装はよさそうなものの、まだ見積もりが不安」という声も出てきました。 このような感想も、いざ本格的に業務で導入してから全く予想しない所で壁にぶつかってしまう事を未然に防いだという意味では良い発見ができたのではと考えています。
まとめ
今回の開発演習を通して、チーム全員がKMPに対する自信を持つ事が出来ました。現在 Sansan Mobileアプリをさらに発展させるべく、KMPを用いた開発を日々試行錯誤しながら行っています。
また、Kotlin Multiplatform 以外にも、モバイルアプリ開発を加速させるべく、さまざまな技術を活用・導入しています。 詳しくは下記記事をご覧ください。
https://buildersbox.corp-sansan.com/entry/sansan-tech-talk-mobile-kitamura
共にSansan / Eightのモバイルアプリ開発していく仲間を募集中です!
選考評価なしで現場のエンジニアのリアルな声が聞けるカジュアル面談もあるので、ご興味ありましたらぜひ面談だけでもお越しいただけたら幸いです!