見出し画像

サイボウズの勉強会に参加してきました!

こんにちは!プラグインチームの伊藤です。
今回は10月24日(木)に開催された、
サイボウズ社内の開発事例で学ぶ、kintoneカスタマイズのチーム開発
というSIエンジニアを対象とした勉強会のレポートを書きたいと思います。


はじめに

登壇していたのは、Cybozuパートナー向けポータルサイトCyPN Portalなどサイボウズ製品のエコシステム拡大のためのシステム開発を行うシステムコンサルティング本部/システムデベロップメント部所属の山田夏暉さんです。CyPN(CybozuPartnerNetwork)とは、サイボウズとパートナー同士のネットワークを形成するためのプログラムです。
山田さんは新卒3年目で普段は大阪オフィスで勤務されているとお聞きしました。大学時代から開発をやっていたとのことで、現在もPG,QA,APMを担当し活躍しているそうです。

画面右:山田夏暉さん

山田さんの部署では、2023年の秋にチーム体制が変わり本格的にチーム開発に取り組む必要がありました。専任メンバーが5名、兼務メンバーが2名の7名のチームです。

チーム開発の取り組み

チームの状況を現状把握をした結果、目に見えている課題として以下のものがありました。

  • コードの保守性の改善課題

  • 属人化した業務の解消

これらを解決するべく山田さんのチームでは開発の標準化、開発プロセスの標準化、ライブラリの統一を行ったそうです。

開発の標準化 〜コード規約の策定〜

コーディング規約というのは、コードの書き方に関するルールや指針のことです。複数の人がコーディングをする場合にそれぞれが自己流のコーディングをすることでコードの保守性が下がってしまうことから規約を作成することがあります。
コーディング規約を定めるために苦戦したこととして以下の2つがありました。

  • チーム内でスキルレベルに差があり記載する最低ラインがバラバラなので誰に合わせるかが難しい

  • 最初は基礎的なことも文書に残していたが規約が長くなり読まれない

それを踏まえて、メンバーで規約に入れるべきか議論をし、規約化することになったルールは文書化と静的解析ツール(コードを実行せずに品質やバグをチェックしてくれるツール)を使い2つに分けて取り入れていきました。
静的解析ツール(ESlintやTypeScript)には規約の設定を追加し、最終的には圧倒的に静的解析ツールの規約が多くなっています。

kintoneGeeks October 24, 2024y より

また文書化した規約は3つだけで、「定数は大文字のスネークケースで書く」などの基本的な内容については文書化せずにコードレビューで対応するという判断をしたそうです。

私が想像していたコーディング規約は、辞書のように分厚く規約が書いてあり複雑なものがあれば規約を確認しながらコーディングするというものを想像していました。
しかし、今回お話を聞いて開発に関わる人に規約が定着できるような開発プロセスを作り、定着するまで様々な方法を試しチームに一番あう方法を見つけるということが大事だと感じました。

開発プロセスの標準化

ここでは、「仕様検討段階→開発段階→リリース段階」で使用しているツールと施作の2つを詳しく教えていただきました。

kintoneGeeks October 24, 2024y より

開発プロセスの標準化をする上で苦戦したこととして、以下のように仰っていました。

既存のシステムやプロセスについて背景を理解しないまま改善提案を行ったため、微妙な雰囲気になった。改善する提案の仕方によっては既存のメンバーからの信頼を完全に失うきっかけになる。

私は、"開発"に関しての知識が0の状態で今のプラグインチームに所属し2年目になります。そのため、まずは先輩社員から教えていただいたことを忠実に守るということを目標にしていたため、開発手法について提案や改善したい点などを話したことはまだありません。
開発に関して改善提案をしていくことの難しさや気にしなくてはいけないポイントなど、将来的なことも考えると簡単に進めることができないことを知ることができました。
今後開発を進めていく上で提案するときは、現状の手法を利用している背景を理解した上で最善策を提示できるようにしたいと思いました。

開発ライブラリの標準化

ライブラリの統一はメンテナンスコストの面で将来的に大きな影響があるため慎重に進めたそうです。

kintoneGeeks October 24, 2024y より

導入必須のライブラリとしては、TypeScript、ESlint、Prettier、webpackが挙げられていました。特にwebpackはかなりの数のプロジェクトに使われていることもあり、他のライブラリを使うと統一ができないものが出てきてしまうなど既存のカスタマイズも含めて考慮し、決めていったそうです。

また、開発効率化に貢献した取り組みも同時並行で行っていて、TypeScriptで型安全な開発を実現してくれるライブラリを導入しています。
元々はJavaScriptだけで開発をしていましたが、コード上ではエラー内容が分からず、実際にコードを動かした時にだけバグが見つかる状態でした。しかしTypeScriptで型指定を使うことで動かす前からエラー内容がコード上に出るため効率を高めることができました。
山田さんは、「もうTypeScriptでしか開発できない体になってしまった。」とまで仰っていました!全てをいきなりTypeScriptで開発していくのはハードルが高いということもあるため、まずは1部のコードからTypeScriptにしていくことがおすすめだそうです。

私自身も最近TypeScriptでの開発を初めて行いましたが、型指定をして開発を進めることに慣れないと難しいなと感じました。
しかし山田さんも仰る通り、コード上でエラー内容が出ることで実際にkintoneで動かした時にはエラーが出ることがほとんどなかったように感じます。徐々にTypeScriptでの開発も進めていくことができたらいいなと思います。

勉強会まとめ

これまでに行った取り組みでたまった知見を貯めていき、次に活かしていくことでチームとしてブラッシュアップしていくことが可能です。
山田さんが所属しているチームでは、メンバーをある程度固定化し開発を進めていく手法のため、チームとして蓄積されていく知見ができていくので次のプロジェクトにも活かすことができます。

kintoneGeeks October 24, 2024y より

懇親会

最後に懇親会が行われました。任意での参加でしたがかなり多くの方が参加していたように思います!
懇親会ではランダムに席が配置されていたので、サイボウズの社員の方や他の参加者の方と自由にお話しすることができました。
また、「kintoneカスタマイズで一番苦労した思い出」というテーマで3名のLTを聞き、SI向けの勉強会ということもあり、お客様の環境を開発した時の苦労したお話を聞くことができました。
前回のdevCampに参加していた方とまたお会いすることができたり、サイボウズの方と開発についてお話ができたりと充実した懇親会でした。

懇親会の様子

参加して感じたこと

今回勉強会に参加してみて、開発手法や開発ツールなどまだ勉強中の私にとって非常に学びが多い勉強会でした。開発が効率的になるツールや将来のメンテナンスのことも加味した開発内容で、ジョイゾーのプラグインチームでも取り入れられるところがあるのではないかと考えるきっかけになりました。
次回は11/29(金)にサイボウズ本社で行われる、Google Cloud で実現する kintone × OpenAI 連携に参加します!
これからもチームの開発からコーディングの開発まで勉強を続けて行きたいと思います!

最後に、今年もジョイゾーはCybozuDays2024に参加します!
CybozuDaysのテーマは、
東京ノーコードランド〜DXのゲームチェンジを楽しもう〜
そこでジョイゾーはバービーランドを基調としたブースにすることに決定しました。以下noteにジョイゾーブースについてまとめておりますのでご覧ください!

11月7日、8日に幕張メッセでお待ちしております✨


いいなと思ったら応援しよう!