こんにちは。 モバイルエンジニアの臼井(@usuiat)です。 私は2023年9月にサイボウズに入社し、11月からGaroonモバイルのAndroidアプリの開発を担当しています。
サイボウズにモバイルエンジニアとして入社したメンバーは、正式配属前に、各開発チームを順に体験します。 この記事では、私が入社してから、各チームの体験を経てGaroonモバイルチームに配属が決まるまでの間に、体験したことや感じたことを紹介したいと思います。 サイボウズのモバイル開発に興味がある方に、チームの雰囲気が伝われば幸いです。
モバイルアプリの開発体制
サイボウズでは主に、kintone、サイボウズOffice、Garoonの3つの製品のモバイルアプリを開発していて、それぞれにiOSアプリとAndroidアプリがあります。
サイボウズにはモバイルエンジニアが、iOSとAndroid合わせて20人ほど所属しています。 iOSとAndroidのエンジニアはそれぞれ3つずつのチームに分かれており、一つのチームが一つのアプリを担当する体制になっています。
製品開発チームは、iOS/Androidエンジニアの他に、PM、デザイナー、QA、テクニカルライター、リサーチャーなどのメンバーで構成されます。 これらのメンバーで、スクラム形式でアプリを開発しています。
開発体制を図にすると、マトリクスっぽい形になっています。 縦の開発チームに対して、モバイルエンジニアは横のつながりを持っていて、iOS/Androidの技術のキャッチアップを一緒に行ったり、各製品開発で困っていることを相談しあったりしています。
チーム体験とは
サイボウズに入社したモバイルエンジニアは、最終的な配属決定の前に、各チームを体験する期間が用意されています。 体験期間は標準で1チームあたり3週間ですが、状況により柔軟に決めています。 サイボウズでは1週間のスプリントでスクラム開発をしているので、各チームを3スプリントずつ体験することになります。 入社から2ヶ月程度をかけて3チームを順番に体験し、その後に最終的な配属チームが決まります。
私の場合は9月1日に入社し、9月の前半はサイボウズ全体やモバイル職能全体のオンボーディングを受け、9月中旬に開催されたDroidKaigiをエンジョイし、その後チーム体験が始まりました。 チーム体験はサイボウズOffice → kintone → Garoonの順に実施しました。 そして、11月下旬に、Garoonチームに配属が決まりました。
チーム体験の期間中は、基本的に正規メンバーと同じように開発に携わります。 スクラムイベントにも参加します。 ソースコードの実装やレビューも初日から行います。 とはいえドメイン知識など分からないところも多いので、基本はペアプロやモブプロで色々と教えてもらいながらの作業が多いです。
また、体験期間は、アプリそのものの開発だけでなく、kintone、Office、Garoonといった製品自体についての理解を深めるための期間でもあります。 色々な社内資料を読み込んで勉強したり、PMやデザイナーと話をする機会を作ってモバイルエンジニア以外の職能の業務を理解したりすることにも力を入れました。
では、ここからは私が各チームの体験で感じたことを簡単に振り返っていきます。 なお、私はAndroidエンジニアなので、以降はAndroidの3チームの紹介になりますが、入社から配属までの流れはiOSも基本的に同じです。
サイボウズ Office チーム体験
サイボウズOfficeは、主に中小企業向けのグループウェア製品で、メールやスケジュールなどたくさんの機能があります。 モバイルアプリでも一通りの機能を使うことができます。 現状はWebViewベースの画面も多いのですが、優先度の高い機能から順に、Jetpack Composeを用いたネイティブUIに置き換えを進めています。
私は前職がウォーターフォール型の開発だったので、スクラム開発を体験するのはサイボウズOfficeチームが初めてでした。 スクラムイベントがどんなものなのかよくわかっていない状態でしたが、実際に参加しながら覚えていきました。
初めてのスクラム開発を体験して一番感動したのは、毎週何らかの進捗が出るスピード感でした。 また、振り返りを行って自分たちでプロセスを改善していく仕組みが機能していることにも感動しました。 年単位のウォーターフォール開発の現場から移ってきた私にはとても新鮮でした。
私が体験したときは、スケジュール機能の実装を進めているところでした。 私はJetpack ComposeのUI作成がもともと得意だったので、UI部分は積極的に実装に参加できました。 一方でAPIとの連携やログイン処理などの知識が足りない部分は、モブプロでいろいろ教えてもらいながらの参加になりました。
kintone チーム体験
kintoneは、色々な業務を効率化する「アプリ」を作れるサービスです。 kintoneモバイルでは、kintone上の「アプリ」の内容を閲覧したり、レコードを追加したり、コメントでチームメンバーとコミュニケーションを取ったりできます。
kintoneモバイルチームのスクラムの取り組み方は、Officeチームとはかなり違ったので、Officeチームの体験でスクラムについてだいたい分かった気でいた私は、少し戸惑いました。 しかしこれが、チームの状況やメンバーの考え方によって、スクラムにはいろいろな取り組み方があって良いんだと気づくきっかけになりました。
kintoneモバイルチームは、開発プロセスの改善に積極的なチームでした。
kintoneモバイルはサイボウズのモバイルアプリの中でも歴史が長いアプリです。 その影響もあって、モジュール間の依存が複雑に絡み合うなど、スピーディーな開発が難しい状態になってしまっていました。 この状況を改善するためのソースコードの構成変更を、スプリントの中でタスクとして取り組みました。
また、アプリのリリースのあるべき姿についても議論が行われていました。 リリースサイクルを早めることは、プロダクトの価値を素早くユーザーに提供することにつながります。 しかし、高速なリリースのためには回帰テストの工数を削減する必要があります。 また、マーケティング的に意味のある機能追加を含むリリースと、バグ修正などの軽微なリリースの扱いをどうやって分けるかという課題もあります。 そういった検討事項を洗い出して、kintoneアプリにとって最適なリリースの仕方はどのようなものか、チームで議論しました。
Garoon チーム体験
Garoonは、主に100人以上の大企業向けのグループウェア製品です。 機能的にはサイボウズOfficeと似ている部分もありますが、多言語対応されていたり、システム管理者用の機能が充実しているなどの違いがあります。 Garoonモバイルアプリは、この記事で紹介した3つのアプリの中では一番新しいアプリで、これからどんどんと機能を追加していくフェーズです。
Garoonモバイルチームは、3チームの中で唯一、iOSとAndroidが足並みを揃えて機能開発を進めています。 ひとつのスクラムチームにiOSとAndroidのモバイルエンジニアが参加し、リファインメントやプランニングも一緒に行います。 もちろん、細かい部分でOSによる差異は出てきます。 しかし全体的なUXを考えたときに、Garoonモバイルとして望ましいユーザー体験を、OSによらずに提供できるように、iOSとAndroidで一緒に議論をしています。
また、スプリントレビューに開発チーム外のステークホルダーを呼んでインタビューしたのも印象に残る出来事でした。 Garoonの営業担当者に、開発中の新しい画面の印象や使い勝手について聞きました。 Garoonモバイルアプリが想定しているユーザー像に近い人から意見を出してもらうことによって、開発チーム内では意見が割れていた仕様について納得して決めることができたり、アプリの使用シーンが具体的にイメージできるようになったりといった収穫がありました。 そして何より、開発に対するモチベーションが上がりました。
そして配属決定
Garoonチームの体験期間が終わりに近づいた11月中旬、モバイルエンジニアのマネージャーと、配属について相談することになりました。 私の希望を伝えて、チーム側の受け入れ希望とのすり合わせを行う場です。
数日前からソワソワしはじめ、希望を伝えるときはとても緊張しました。 この先のキャリアの方向性を決める重要な選択です。 チームに貢献できるか、私自身が成長できるか、プロダクトに共感できるか、などいろいろ考えました。 配属先の決定をマネージャーに一任することもできたのですが、せっかく「自立と議論」を大切にするサイボウズに入ったのだから、自分の意思をしっかり伝えたいと考えました。
そして私からは、Garoonチームに参加したいという希望を伝えました。 マネージャーは各チームに対して事前に、私を受け入れたいかどうかをヒアリングしてくれていて、Garoonチーム側も私を受け入れたいといってくれていたため、すんなりと配属が決まりました。
私がGaroonを選んだ理由は、私が加わることによってチームに起きる変化が、一番大きそうだったからです。
現状のGaroonモバイルアプリは、いったんWebViewで一通りの機能を提供していますが、これからはiOS/Androidネイティブ実装の割合を増やして、モバイルならではの使いやすいアプリに進化させていこうとしています。 そのタイミングで、私の得意とするUI周りの知見を活かせると良いなと思っています。
また、人数的な事情もありました。 これまでのGaroonチームのAndroidエンジニアは2人体制でした。 iOSエンジニアは3人体制だったので、私がチームに加わることによって、今後もiOSとAndroidが足並みを揃えて開発していければ良いなという思いがありました。
チーム体験で得られたもの
3つのチームを体験することによって得られた学びの中で一番大きかったのは、スクラムの取り組み方に唯一の正解はなく、チームの数だけやり方がある、ということに気づけたことです。 前述したように、私はサイボウズに入社して初めてスクラム開発に取り組みました。 もし最初からどこかのチームに配属されていたら、そのチームのスクラムのやり方が絶対的な唯一の正解だと勘違いしていたと思います。 しかし実際は、3つのチームはそれぞれのやり方でスクラムに取り組んでいて、何を重要課題として考えるかもチームそれぞれでした。 教科書的に「正しいスクラム」を求めるのではなく、自分たちで議論して自分たちの正解を探すことが大事なのだと気づけました。
また、Androidエンジニアはもちろん、一緒に開発したPM、デザイナー、QAなど、各チームのメンバーと面識ができたことも大きな収穫でした。 サイボウズはオープンな組織なので、自分のチーム以外の情報もたくさん目に入ってきます。 チーム体験でお世話になった方々の発言を見かけると、他チームの出来事でも、今までより身近に感じるようになりました。 自社の複数のプロダクトに興味を持てるようになったという意味で、自分にとってプラスになったと感じています。
終わりに
あっという間のチーム体験期間でしたが、各チーム3週間ずつの期間を確保してもらえたおかげで、じっくりと各チームを体験することができました。 自分にとっても、そしてたぶんモバイル開発チーム全体にとっても、よい経験にできたと思います。 配属も無事に決まったので、これからしっかりとプロダクトに向き合って、Garoonモバイルの価値を高めていきたいと思います!