皆さまこんにちは。サイボウズ株式会社でエンジニアをしております、三宅です! (所属:システムコンサルティング本部 システムデベロップメント部)
今回は、最近私が取り組んでいる OSS ツール開発 の話をベースに システムデベロップメント部 のチームや仕事の魅力をお伝えできればと思います!最後までお付き合いいただけると嬉しいです。
簡単にチームの紹介をすると、本部の中でも 開発 の役割を担う部隊で、日本の他に ベトナム や 中国 にも PG や QA メンバーがいる 30名ほどのチームです。日々 3拠点で一緒に議論をしながら活動しています。
「 サイボウズ製品の導入や活用のため に、標準機能では実現できない機能を求めているお客様に対して カスタマイズ・プラグインの開発 を行ったり、それらの 開発や導入を支援するエンジニア向けツールの企画、開発 を行う」のがミッションになります。
サイボウズでのキャリア 初めに、自己紹介を兼ねて私のサイボウズでのキャリアについて触れたいと思います。簡単に経歴をまとめてみました。
2015年に新卒でサイボウズに入社し、システムコンサルティング本部に配属 デベロッパーマーケティング の部署で kintone カスタマイズ勉強会企画や講師、ハッカソンサポート、他サービスとの連携記事や同人誌の執筆など 「技術者に製品の魅力を広める」 仕事を担当 SI パートナーさまへの出向やサンフランシスコの Kintone Corporation. への 3ヶ月出張にて 案件対応を経験 2020年より、システムデベロップメント部で kintone の開発ツール企画 をメインに担当 同年より、アジアなどの 海外パートナーさまの技術サポート を担当 入社以来、社外の技術者やパートナーさまとコミュニケーションを取ったり、常に新しい技術やサービスに触れることができたりとワクワクすることが多く、気づけば 4-5年ほどデベロッパーマーケティングの分野にいました。
今振り返ると、転機は SI パートナーさまへの出向や US 出張でいわゆる SE として案件対応を経験したところにあったなと思います。それまでガッツリとユーザーさんが使うものを開発する・提案するということをしてこなかったので新しくインプットすることも多くてハードな期間ではあったのですが、毎日新しいコーディング方法やコミュニケーションの仕方を学ぶのが楽しく刺激的でした。何とか食らいついた経験が技術への興味につながった気がしています。戻ってきて次にどんなことをやりたいか結構悩んでいたのですが、以前から気になるツールを見つけてきて自社製品と連携させたり、M5Stick などで IoT 開発したりと "作る" ことが好きだったので 「もっと技術を勉強して自信をつけたい」・「自分で企画して開発したい、それを届けて喜んでもらいたい」 と思うようになり異動を決めて今に至ります!あと、社内で唯一 3拠点での開発をしていたので、そこへのちょっとした好奇心もありました。
サイボウズでは 「本人のやりたいこと・やるべきこと・できること」 を考えて割と自由にジョブチェンジすることができるので、マネージャーとも定期的にコミュニケーションを取りながらキャリアを選択していけたのは良かったなと思います。
さて、キャリアの話はこれくらいにして、実際に日頃どんなことに取り組んでいるのかお伝えしていきましょう!
3拠点での OSS ツール共同開発ってどんな感じ? ここからは最近メインで担当している OSS ツール開発を題材に、チームの仕事内容や雰囲気をご紹介したいと思います。
どんなものを開発しているのか kintone UI Component という kintone ライクなパーツを提供する OSS のライブラリを作っています。(Button, Dropdown, Notification など)kintone のアプリやプラグイン設定画面などの UI 開発をする際に使うものです。
「kintone カスタマイズ開発者に UI 周りのアレンジを少しでも楽してもらえるように」 という思いで日々開発しています!
OSS として公開しているので、パートナーさんや個人エンジニアの方など kintone 開発コミュニティの皆さんと一緒に継続的にライブラリを良くしていきたいなと思っています。
開発体制 現在はベトナム・中国・日本の 3拠点のメンバーで PG, QA, PM の役割を分担して開発しています。 スクラム という形式で進捗を確認しながらアジャイル開発に取り組んでいます。
1週間単位で以下のサイクルを回すイメージです。
バックログ(タスク)の作成と検討(リファインメント) 1週間分の開発プランニングとタスク分担(スプリントプランニング) 成果発表と振り返り(スプリントレビュー) ウォーターフォール型の開発と比べて、短期間で区切って検討・開発・リリースのサイクルを回していけるので、目の前のことに集中しやすく、問題があった時の方向転換もしやすいです。また、スクラム開発ではお決まりのイベント(打ち合わせ)がいくつかあり、普段リモートでやり取りするメンバー間のコミュニケーションを図ることができる良い時間でもあります。
こちらは実際にチームでプランニングをしている様子です!みんな真剣な話をしてる風ですね笑
あと複数拠点での共同開発と聞いて気になるのは、コミュニケーション方法でしょうか。私たちは、仕様書の記載やチャットやり取りは3拠点のみんなが理解できる英語でやるのを心がけています。使う言語によって情報量にばらつきが出ないように。では打ち合わせではどうしているか。中国のメンバーは日本語を理解できるメンバーも多いのですが、ベトナムメンバーはそうではないのでベトナム語と日本語が分かる通訳者に入ってもらい会話しています。
技術スタック 使う技術はプロジェクトによって様々ですが、ここではコンポーネントの内部実装は Web Components フレームワークの Lit, TypeScript 、挙動確認は Storybook 、E2E テストは WebdriverIO 、ドキュメントは Docusaurus という具合に適材適所で様々なものを使って開発に取り組んでいます。
こちらの記事で技術スタック・開発やテストでの工夫ポイントなど開発の裏側的な内容を書いているので、もう少し詳しいことを知りたいなという方はぜひご覧ください。
プロダクトマネジメント 私はこのプロジェクトでプロダクトマネジメントをメインに行なっているので、普段どんなことを考えて取り組んでいるのかも少しご紹介したいと思います。
まずはコンセプト作りです。誰にどんな価値を伝えたいのか。何か方向性に悩んだ時にも、立ち返るところになるので重要です。プロダクトが進化すると求められることも変わるので随時ニーズに合わせて変えていきます。そこを起点に今年は何を目標にするのか KPI を決めてチームで、実際に開発するものやスケジュールを決めていきます。
目標が決まったら社内外ユーザーヒアリングをしながらどんなコンポーネントや機能を作るのか検討します。機能ありきではなく、ユーザーのペインポイントやニーズから考えるのが大事だと思っているので、ユーザーヒアリングを定期的に行なっています。そうすると、ユーザーさんと一緒に作ったり・育てたりしている感覚もあり、よりユーザーライクなプロダクトを作ることができていると感じます!また、開発ツールなので設計面は他のライブラリのドキュメントを見たり触ったりしながら決めていきます。
具体的に作るものと優先順位が決まれば担当メンバーをアサインして開発です。上で紹介したスクラム開発という手法をとっているので、そのサイクルにのせて開発・レビュー・試験と進めていきます。優先順位に沿って開発を進めて、開発したものから素早くユーザーさんに提供するということを意識しています。リリースすると、より多くの人からフィードバックをいただけるので、最初から 100% のものを出すというよりも 60-80% くらいの機能セットで出して、フィードバックを元に徐々に充実させていくという考え方です。
ものを作って出して終わりではありません。ちょっとコツがいるようなものについては、カスタマイズ Tips を公開するなど活用ポイントや実装方法を併せた情報提供を心がけています。
ここにやりがいを感じる! 現在私はこのプロジェクトに PM 兼 PG という役割で関わっています。初めての OSS ツール開発で海外メンバーとの共同プロジェクトということもあり、あれこれつまづくことも多かったです(今もです笑)が、やりがいもあって結構楽しくコミットできているなと感じています。
社内外のエンジニアと議論しながらプロダクトを作る これは OSS としてソースコードやコミット履歴をオープンにしているからというのも大きいですが、社内メンバーだけでなくパートナーさんやコントリビュートしてくれるエンジニアの方とユースケースのヒアリングや仕様のディスカッションをしながら新しい企画を考えたり開発したりしています。 一緒に育てるプロダクト にできているところが強みでもあり、個人的に刺激にもなっているなと思います。こういう視点やアイデアもあるのか!と気付かされることが多いです。
企画から開発、プロジェクトマネジメントまで色んな経験が積める 企画・開発・スクラム開発のマネジメントなど色んな役割を任せてもらって実行できるのはやりがいの一つです。うまく自分でバランスをコントロールできれば色んな経験を積める環境だなと思います。一つコンポーネントをリリースするにもステップが多くて大変な部分もありますが、チームで考えて開発したものをユーザーさんに届けて改善していくという一連のプロセスに関わることができるのは醍醐味ですね。
また開発面で言うと、メインとなるコンポーネントの実装以外にもユニットテスト, ドキュメントサイト構築, CI, npm などの知識が必要になるので、幅広くキャッチアップすることができます。
様々なバックグラウンドを持つメンバーとの開発 最初は日本メンバーで始動したものだったのですが、開発スピードも上げていきたいということで 2拠点、3拠点と徐々に増やしていきました。どうなるかなーと不安もありましたが、今はスキルトランスファーもできてスムーズに活動できるようになりました。拠点ごとに案件や開発ノウハウが溜まっているのと得意とするところもそれぞれ違うので、お互い教え合いながら仕事できるのも楽しいです!
もちろんチーム内だと知見がない分野もあるので、アクセシビリティや E2E のテスト自動化などは専門チームにも協力してもらいながら改善しています。
システムデベロップメント職に向いていそうな方 プロダクトマネージャー・PG・QAなど様々な役割を持つメンバーがいますが、個人的にはこんな方が向いているかなと思っています!
kintone や Garoon などサイボウズ製品が好き! 開発 だけでなく、 企画 や プロジェクトマネジメント などにも興味がある 自ら 技術を探究する意欲 がある 海外メンバーとコミュニケーションを取りながら働く ことに関心がある このチームの魅力は、 自ら企画しながらモノ作りができる ところだと思います!!もちろん開発ガッツリやりたい人、企画やプロジェクトマネジメントをメインでやりたい人もいますが、どっちも興味があってバランスよくやりたいんだよなーという方にもチャレンジしていただける環境です。また、大規模な製品本体の開発を行うわけではないので、比較的コンパクトなプロジェクトが多く、企画や設計も割と自由な発想で考えて実行していけるなと思います。
最後に 少しでも業務やチームに興味を持っていただいた方はぜひお声がけいただけると嬉しいです。一緒に働く仲間を随時募集中です!
また、今回ご紹介したプロジェクト以外にも kintone/Garoon のプラグイン開発・SI・社内システム開発 など様々な開発業務を行なっています。詳しい仕事内容や募集要件等については、以下の記事をご覧ください。
それでは、メンバー一同お待ちしております!!