Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サイボウズ社内の開発事例で学ぶ、kintoneカスタマイズのチーム開発

 サイボウズ社内の開発事例で学ぶ、kintoneカスタマイズのチーム開発

「属人化しているkintoneの案件対応をチームで効率よく進めたい」
「kintoneにおけるチーム開発の事例を知りたい」と考えている皆様に向けて、
サイボウズのエンジニアが社内で実際に取り組んだプラグインやカスタマイズ開発事例をもとに、チームで効率的に開発を進めるための開発環境や体制整備について説明します。

kintoneGeeks

October 24, 2024
Tweet

More Decks by kintoneGeeks

Other Decks in Technology

Transcript

  1. 2023年末にチーム体制が大きく変わる 体制変更前 体制変更後 チームの親しみ やすさ お互いをよく知っている お互いをよく知らない チームサイズ 小さい(~5名) 小さい(5~10名)

    経験のレベル ほとんどミドル ジュニア、ミドル、シニア等様々 専門性 SEメンバーのみ SEメンバー + 開発メンバー (我々) プロジェクトへ の関与度 兼務型 専任型と兼務型の ハイブリッド チーム活動を本格化させた際に行った活動>新体制に変わった時に取り組んだこと
  2. チーム体制が変わって最初に取り組んだこと 潜在的リスクは何だったのか? 背景:もともと兼務メンバーが限られたリソー スでCyPN Portal業務に対応しており、メンテナ ンス性改善の活動にリソースを割けなかった 課題②:暗黙知化・属人化した業務の解消 対応方針: 専任メンバーが毎月一定の工数を取り、 優先順位を付けて順次対応

    背景:一部の兼務メンバーに業務の比重が偏っ ており、その兼務メンバーがCyPN Portal開発業 務を網羅的に把握している状態だった 対応方針: • 兼務メンバーによる業務マニュアルの明文化 • 専任メンバーが主業務に対応し、暗黙知を獲得する 現状把握 チーム活動を本格化させた際に行った活動>新体制に変わった時に取り組んだこと
  3. チームメンバーの特性・特徴にばらつきがあるのは潜在的リスク 体制変更前 体制変更後 チームの親しみ やすさ お互いをよく知っている お互いをよく知らない チームサイズ 小さい(~5名) 小さい(5~10名)

    経験のレベル ほとんどミドル ジュニア、ミドル、シニア等 様々 専門性 SEメンバーのみ SEメンバー + 開発メンバー プロジェクトへ の関与度 兼務型 専任型と兼務型の ハイブリッド 品質の安定化を目的とした開発の標準化を 優先的に進めることに チーム活動を本格化させた際に行った活動>新体制に変わった時に取り組んだこと
  4. 文書化した規約はどんなものを定めたのか • default exportではなく named exportを使用する • React.useEffectは外部システムとの連携時 以外は使用しない •

    React.useStateでは不変データ、propsもしく は既存stateから計算できる情報は管理しない チーム活動を本格化させた際に行った活動>コーディング規約を定める
  5. どうやって開発プロセスの標準化を進めたのか 起案 メンバー全員で 議論 数人のメンバー で議論 局所的な トピックか Yes No

    例:ディレクトリ構成 例:課題管理ツールを変更する 局所的な意思決定までメンバー全員で決めると、チームの動きが鈍重になる チーム活動を本格化させた際に行った活動>一部の開発プロセスを標準化する
  6. 仕様検討段階における取り組み 仕様検討段階 ツール 開発段階 リリース段階 施策 • コミュニケーション:kintoneアプリ • ドキュメント:confluence

    • 仕様書テンプレート作成 • 開発プロセスの明示化 • エラー表示時の文言の統一 チーム活動を本格化させた際に行った活動>一部の開発プロセスを標準化する
  7. 開発段階における取り組み 仕様検討段階 ツール 開発段階 リリース段階 施策 • エディタ:Visual Studio Code

    • コード管理:GitHub • 開発環境:GitHub Codespaces • CIツール:GitHub Actions • 開発環境の設定(拡張機能など)を統一 • ブランチ戦略をGit-Flowモデルに変更 • プラグインテンプレート作成し、 ディレクトリ構成やutils系の処理は プロジェクト間で共通化 • ライブラリのライセンスチェックと 静的解析の自動化 チーム活動を本格化させた際に行った活動>一部の開発プロセスを標準化する
  8. • 補足:GitHub Codespacesとは GitHub Codespaceの インスタンス GitHub Codespace Visual Studio

    Code ブラウザ チーム活動を本格化させた際に行った活動>一部の開発プロセスを標準化する
  9. 補足:CI (継続的インテグレーション)とは CI サーバー(GitHub Actions等) ビルド テスト 結果 結果を通知 開発者

    変更を反映 Gitホスティングサービス(GitHub等) コード変更 トリガー 共有のリポジトリ チーム活動を本格化させた際に行った活動>一部の開発プロセスを標準化する
  10. 開発段階における取り組み 仕様検討段階 ツール 開発段階 リリース段階 施策 • エディタ:Visual Studio Code

    • コード管理:GitHub • 開発環境:GitHub Codespaces • CIツール:GitHub Actions • 開発環境の設定(拡張機能など)を統一 • ブランチ戦略をGit-Flowモデルに変更 • プラグインテンプレート作成し、 ディレクトリ構成やutils系の処理は プロジェクト間で共通化 • ライブラリのライセンスチェックと 静的解析の自動化 チーム活動を本格化させた際に行った活動>一部の開発プロセスを標準化する
  11. リリース段階における取り組み 仕様検討段階 ツール 開発段階 リリース段階 施策 • コード管理:GitHub • CIツール:GitHub

    Actions • リリース後の業務の自動化 • バージョン番号の決定 • 各ファイル(manifest.json等)のバージョン更新 • リリースタグ&リリースノート作成 • ビルド成果物をリリースノートに添付 チーム活動を本格化させた際に行った活動>一部の開発プロセスを標準化する
  12. • • 開発プロセスの標準化について得られた知見 2/2 プラグイン設定画面 のコード ユーザーが操作する 画面のコード Interface 依存

    依存 • プラグイン設定 • 共通で利用する型エイリアス 等 チーム活動を本格化させた際に行った活動>一部の開発プロセスを標準化する
  13. どうやって開発ライブラリの標準化を進めたか 起案 却下 承認 数人の専門 メンバーに よる確認 Yes No 全体定例

    での確認 Yes No 議論していた際の観点(例): • GitHubのstar数が多い • メンテナンス頻度が高いか • 工数削減に繋がるか(ビジネスへのインパクト) チーム活動を本格化させた際に行った活動>ライブラリを標準化する
  14. 型安全な開発 TypeScript neverthrow JavaScriptに対する 静的型付け Result型で エラーハンドリングを 実現 @kintone/dts-gen kintoneアプリのための

    型を生成 TypeScriptは段階的な導入が可能。まずはじめにTypescriptを導入し、 徐々にstrictコンパイラオプションを追加&TSエコシステムのライブラリを導入することで より型安全な開発を行えるようになる。 チーム活動を本格化させた際に行った活動>開発効率化に貢献した取り組み
  15. 項目 判断基準 チームの親しさ 親しくないほど多くのコントロールが必要 経験レベル 経験年数が少ないほど多くのコントロールが必要 チームサイズ 規模が大きいほど多くのコントロールが必要 プロジェクトの複雑さ 複雑なほど多くのコントロールが必要

    プロジェクトの期間 期間が長いほど多くのコントロール量が必要 効果的なチームを作るためのファーストステップ 1/2 効果的なチームを作るためのファーストステップ コントロール(制約・規約の厳しさ)のレベルを決定する5つの要因 出典: Mark Richards, Neal Ford, 「ソフトウェアアーキテクチャの基礎 」. オライリージャパン、2023, 411ページ
  16. 項目 現状 チームの親しさ お互いをよく知っている 経験レベル ミドル層~シニア層が多め チームサイズ 少なめ(5名前後) プロジェクトの複雑さ 実現難易度は低めの要件が多い

    プロジェクトの期間 3か月程 効果的なチームを作るためのファーストステップ 2/2 効果的なチームを作るためのファーストステップ