この記事は、CYBOZU SUMMER BLOG FES '24(kintone Stage) DAY 6の記事です。
こんにちは。kintone新機能開発チームのナビゲーション / コミュニケーション系チームでフルスタックエンジニアをしている長江と高木です!
kintone新機能開発チームには現在kintoneの開発領域ごとにサブチームが存在しています。
今回の記事では、その中のkintoneのナビゲーション / コミュニケーション系チームについて紹介したいと思います。
目次
ナビゲーション / コミュニケーション系チームとは
私達のチームはkintone新機能開発チームの中で最も広い領域を扱うチームです。
例えば、kintoneのヘッダー / グローバルナビゲーション、通知、ポータル(kintoneのトップページ)などを担当しています。
それぞれの機能や役割については、次節の「扱う領域」のリンクからご確認いただけます!
扱う領域
私達のチームで扱う領域の広さを感じていただくため、以下に担当領域を示します。
- ナビゲーション系
- コミュニケーション系
- その他
- 個人設定
- ゲストユーザー関連全般
広い領域を扱い領域毎にドメイン知識も異なる難しさがありますが、それぞれの領域の価値を理解することでユーザーの理解を深められる点が、私達のチームの魅力だと考えています。
直近の開発事例
私達のチームが直近開発したもので、特に紹介したい機能を2つ例に挙げて紹介します。
1つ目は「デスクトップ通知」機能です。
Webブラウザーでkintoneを開いている際に、自分宛の通知が来るとデスクトップ通知を送信してくれる機能です。
上記の機能を実現するために、Web WorkerとNotification APIを利用したデスクトップ通知を開発しました。
サイボウズでは主にkintoneを利用しながら業務を進めていますが、他のツールを利用することもあります。
他のツールを利用する際は、常にkintone上で重要な通知が届いていないか注意を払っていました。
しかし、デスクトップ通知が届くおかげで重要な通知にも簡単に気がつけるようになりました。
2つ目は開発中の新機能ですが、「システムの利用状況を表示する機能」です。
アップデートオプションの対象機能 | kintone ヘルプ
全体検索で意図した結果がヒットしない場合、インデックスの作成が遅延しているのか障害が発生しているか分からないという課題があり開発した機能です。
冒頭でも紹介した通り、kintoneは開発領域ごとにサブチームが編成されています。
私達のチームはインデックスの反映状況を確認するAPIを開発し、kintoneの管理者向けの画面を開発しているチームにAPIを利用して画面を開発してもらいました。
このようにサブチーム間で協力し、一つの機能を作ることもあります。
メンバー構成
私達のチームは以下の体制で活動しています。
職種 | 人数 | 役割 |
---|---|---|
エンジニアリングマネージャー (以下EM) (フルスタックエンジニアと兼務) |
1名 | チームの中長期計画 / 人材マネジメント / 製品価値最大化の方針を考えリードする。 |
プロダクトオーナー (以下PO) (フルスタックエンジニアと兼務) |
1名 | 製品価値最大化 / 個別の機能開発の方針を考えリードする。 |
フルスタックエンジニア | 3名 | Webアプリケーション開発(e.g.設計 / 実装)をフロントエンドからバックエンドまで一貫して行う。 |
QAエンジニア | 3名 | 品質保証活動(e.g. テスト設計 / 実施)を行う。 |
フロントエンドエンジニア | 1名 | フロントエンドリアーキテクチャのリードや、フルスタックエンジニアへのフロントエンドスキルのEnablingを行う。 |
kintone新機能開発チームはスクラム開発手法を採用しており、私達のチームもスクラム開発を行っています。
現在専任のスクラムマスターは不在ですが、EMがその役割を担っています。
必要に応じてスクラムマスター職能に相談し、サポートを受けています。
私達のチームでは新機能開発とフロントエンドリアーキテクチャを並行して開発しており、後者はフロントエンドエンジニアがリードしています。
フロントエンドリアーキテクチャについて興味のある方は以下の記事もご参照ください。
新機能開発の進め方
機能開発は主にプロダクトマネージャー(以下PdM)やデザインチームと連携をして開発を進めています。 それぞれ機能開発においては以下の役割を果たしています。
PdM:
- ビジネス上の課題を分析し、バックログを作成
デザインチーム:
- デザイン全般
(e.g. プロダクトデザイン / UI文言)
開発チーム:
- プロダクト開発
(e.g. 実装 / テスト) - 必要に応じてPdMと仕様の調整を行う
以下イメージは私達のチームだけでなく、新機能開発チーム共通です。
新機能開発チームは機能開発だけでなく、技術的負債の解消やライブラリのアップデートなど、製品の持続可能性を高める業務も行っています。
これらの業務と新機能開発の業務の優先順位付けを、PdMとコミュニケーションを取りながら決定しています。
チームの課題
サイボウズでは、現在以下の組織目標を掲げています。
「製品進化スピード10倍!インパクト10倍!」
インパクト10倍を目指すB2B SaaSマルチプロダクトなサイボウズ開発組織の取り組み | ドクセル
この組織目標を達成するために、私達のチームで課題になっていることとそれに対するアクションの整理を行ったので、一部紹介します。
課題は大きく分けて以下2つあると考えています。
- 価値向上
- 開発生産性
インパクト10倍を達成するためには、より価値向上促進に繋がる作り方をエンジニアリング観点で提案し、より高い生産性で実行していく必要があると考えています。
価値向上に向けて
事業戦略 / 開発戦略を理解してエンジニアリング観点でより価値向上に繋がる作り方を提案していく
前提
「新機能開発の進め方」章でも少し触れましたが、前提として、kintone新機能開発チームの開発体制の一部はざっくり以下のようになっています。
- 主に何を作るか検討する人: PdM
- 実際に作る人: 新機能開発チーム(e.g. フルスタックエンジニア / QA)
PdMがより多くのコストを割きたいのは、「製品価値向上へ向けてどんな課題を解決すべきか」の仮説を立てることであり、その仮説をどう検証するのか、つまりどのような機能をどのような順番でリリースしていけば良さそうなのかという優先順位付けの方法を考えることは開発チームの責務であり、開発チームがオーナーシップを持つべきである、と考えています。
課題
上記前提があるにも関わらず、実際はPdMが「何を作るか」検討する際に、開発チームの専門性(e.g. 性能面 / 実装懸念)を考慮しつつ具体的な機能を検討することがあり、本来コストを割くべきところにコストを割ききれていないという課題があります。
課題解決に向けて
上記の課題を解決するために、開発チームのEMやPOは、開発チームが得意とする分野へのオーナーシップ向上をリードし、メンバーの力を引き出しながら具体的な機能提案を行うことで、開発チームの専門性をより活かし、PdMリソースの有効活用に繋げることで、インパクト10倍に貢献していこうと考えています。
具体的なアクション
具体的には、以下のようなアクションを取っていこうと考えています。
- EMやPOを中心に事業戦略 / 開発戦略を理解する
- PdMが立てた仮説を事業戦略 / 開発戦略に沿った形で検証すべく、機能の提案をしていく
開発生産性向上に向けて
サーバーサイドコード分割
kintoneがリリースされてから10年経過し、その間に継ぎ足し継ぎ足しでコードが追加されてきました。 最近ではコード行数が35万行を超えてなお増えており、それに伴い複雑性も増している印象があります。 このまま何もしないと、コードの調査や影響範囲を確認するのがどんどん大変になっていったり、 新しくチームに参加した人がコードを把握するのにいままで以上に時間がかかってしまうことが懸念されます。 このような問題に対処するため、コード分割という取り組みを新たに始めました
複雑性に立ち向かうためのサーバーサイドコード分割 - Cybozu Inside Out | サイボウズエンジニアのブログ
私達のチームが関わるコードだけでもかなりの量があり、複雑性も高いため、コード分割を行うことで、今後の開発容易性 / 開発生産性の向上を図ります。
フルスタックエンジニアの働き方例
私達のチームでは、主にフルリモート×モブプログラミング(以下モブ)で普段の開発業務に取り組んでいます。
特に複雑な課題の意思決定の合意を常に取りながら進められるという点や、以下のような情報格差を減らすと言う点が魅力で私達のチームもモブを採用しています。
リモート・モブは、物理的な場所・属人化に伴うサイロという2つの壁を超えて情報格差を減らすことができる方法です。 自身の経験でも、個人作業からリモート・モブへ移行したことで、情報格差やそれに伴う不安が劇的に改善しました。
リモート・モブプログラミングという働き方 - Cybozu Inside Out | サイボウズエンジニアのブログ
フルスタックエンジニアの主な1日のスケジュールは以下のようになっています。
1日のスケジュールは主に開発業務時間と探求時間の2種類があります。 それぞれ以下のように過ごしています。
- 開発業務時間:11:00〜17:00
主にモブで新機能開発などの開発業務に取り組みます。 - 探求時間:上記開発業務時間以外
探求時間はフルスタックエンジニアが自由に使える時間で、以下のような活動を行います。
・ 興味のある新技術の学習
・ 社内外の勉強会への参加
・ 開発業務時間中に生じた疑問点のキャッチアップ
・ kintoneの改善活動(e.g. サーバーサイドコード分割)
開発業務時間は主たる製品開発業務の時間です。 この時間で普段アップデート情報に掲載されるような機能の開発を行なっています。
探求時間は自身のやりたい活動を進めるための時間です。
この時間は製品開発から離れて、新たな知識のインプットや改善業務を行うことができます。
(もちろん製品開発時の疑問解消や、よりよい設計の探求などを行うこともできます。)
探求時間は私達のチームに限らず、kintoneの新機能開発に関わる他のチームでも採用されています。
探求時間の実践例については、以下のブログ記事でも紹介しています:
終わりに
kintone新機能開発チームには、私達のチームの他にもいくつかチームがあります。
kintoneの新機能開発や改善活動に興味がある方は、ぜひ応募をご検討ください。お待ちしております!