30
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【C#/.NET】精神論で品質を守らない。チーム開発を「構造化」するための9つの具体的アクション

30
Last updated at Posted at 2026-01-15

はじめに:品質は「人」ではなく「構造」で担保する

「コードの品質を上げよう」と号令をかけるだけでは、現場は変わりません。
レビューで「読みやすくして」と指摘し続けるのも、指摘する側・される側双方にとってコストが高い作業です。

私たちは、新規開発の立ち上げにおいて、コード品質を個人のスキルや努力に依存させるのではなく、「ツール」と「プロセス」による構造化で担保するアプローチをとりました。

本記事では、私たちが実際に定義した 「9つの品質基準」 と、それを実現するために導入した具体的なアクション(設定、ルール、運用)を紹介します。

私たちが定義した「9つの品質基準」

まず、漠然とした「品質」という言葉を以下の9つに分解しました。これらをどうシステム的に解決したかを後述します。

品質基準 実際にやったこと ねらい(何を楽にしたか)
① 可読性 ・命名ルールをレビューで統一
・EditorConfig + Code Cleanup 導入
・過去レビューを元にしたAIレビュー
他人のコードを「読んで理解する」コストを下げる
② 一貫性 ・PRは必ずレビュー(全件)
・書き方に迷ったらチームで決める
・レビュー観点をプロンプト化
人によって書き方が変わらない状態を作る
③ 保守性 ・例外スローの整理方針
・ロジック肥大化の抑制
・XMLコメント整備
修正時に「壊れる範囲」が読める
④ テスタビリティ ・単体テストを必ず実装
・テストDB/カテゴリ整理
・GitHub Actionsでビルド
変更時の安心材料を用意する
⑤ ドメイン理解性 ・基本設計資料の共有
・ER図の作成と展開
・用語整理(請求/入金/支払など)
コードと業務知識を結びつける
⑥ 再現性 ・環境構築手順の明文化
・開発/コーディング手順書作成
・拡張機能・ツールの統一
新メンバーでも同じ立ち上がりができるようにする
⑦ 自動化可能性 ・GitHub Actionsでビルド
・AIレビューの組み込み
・コード整形の自動化
人がやらなくていいことを減らす
⑧ 安全性 ・ブランチ運用ルール整理
・マージ順の明確化
・リリース手順の標準化
「壊さずに出す」確率を上げる
⑨ 可視性 ・PowerBIで生産性可視化
・定例での振り返り
・納期/テスト整理
会議感覚ではなく事実で話す

1. 開発環境の構造化(可読性・再現性)

レビューで「インデントがずれている」「改行位置が気になる」といった指摘をするのは時間の無駄です。これらは環境側で強制します。

.editorconfig とコードクリーンアップの配布

個人の好みを排除するため、チーム共通の .editorconfig をリポジトリに配置することは基本ですが、それだけでは不十分です。Visual Studioの 「コードクリーンアップ」機能の設定自体もエクスポートして配布しました。

  • 狙い: 「保存時」や「コミット前」に自動整形をかける習慣の統一。
  • 効果: PRが出された時点で、フォーマットは既に統一されているため、レビューでスタイルの議論が一切発生しなくなりました。

拡張機能の標準化

「Namespaceの自動修正」や「インデントの可視化」など、開発効率や品質に直結するVisual Studio拡張機能はリスト化し、全員にインストールを推奨しました。
「あの人の環境だと警告が出る」といった環境差異によるトラブル(再現性の欠如)を防ぐ基盤となります。

2. レビューの構造化(一貫性・自動化可能性)

レビューの質がレビュアーの体調やスキルに依存しないよう、プロセスを変えました。

「好み」での指摘を禁止する

リーダーやレビュアーが、その時の気分で「こっちの方が好き」と指摘し始めると、チームの基準がブレます。
私たちは 「ツール(Linter/Formatter)で指摘できないことは、原則として許容するか、ルール化してツールに落とし込む」 という方針を徹底しました。

現場のコードから「良い書き方」が見つかれば、それをルールに昇華させる(いいとこ取りをする)ボトムアップな運用で基準を作っています。

レビュー観点のプロンプト化(AI活用)

過去のレビューで頻出した指摘事項(命名規則の揺らぎ、単純なロジックミスなど)を分析し、AI(LLM)へのプロンプトとして定型化しました。

  • Before: 人間が目視でタイポや単純ミスを探す(疲れる、漏れる)。
  • After: AIが一次レビューを行い、人間は「ビジネスロジックの正しさ」「設計の妥当性」に集中する。

これにより、レビュー時間は短縮され、かつ指摘の粒度が安定しました。

3. 設計とドメイン知識の構造化(保守性・ドメイン理解性)

ドキュメントを書きすぎると形骸化し、書かないと属人化します。バランスの取れたアプローチが必要です。

ドキュメントより「対話によるメンタルモデルの同期」

「Controllerの責務」「Serviceの粒度」といったアーキテクチャのルールは、厳密な仕様書を作るよりも、レビューや日常の対話を通じて チーム内のコンセンサス(合意) を作ることを重視しました。

「私たちのチームではこう書く」という共通認識さえあれば、分厚い設計書がなくてもコードの構成は統一されます。

「たすき掛け」開発による知識共有

仕様理解(ドメイン知識)の属人化を防ぐため、関連する機能の実装をあえて分担させました。

  • 例: 「請求機能(データ作成)」と「入金機能(データ利用)」を別の担当者が行う。

こうすることで、「このデータはどういう仕様で来るのか?」という会話が必然的に発生し、相互に業務知識を補完し合う関係性が生まれます。ドキュメントを読むよりも深く、確実な仕様理解につながります。

4. 安全性と運用の構造化(テスタビリティ・可視性)

テストは「変更への恐怖」を消すために書く

単体テストの目的を「バグ発見」以上に 「リファクタリングの安全地帯を作ること」 に置きました。
テストコードがあり、GitHub Actions等のCIで自動ビルドが通ることが保証されていれば、エンジニアは恐れずにコードを変更できます。この「安心感」こそが、開発スピードを維持する鍵です。

手順書と可視化で「感覚」を排除する

  • リリース手順: CI/CDが完全でなくとも、手動デプロイの手順書、ブランチ運用、タグ付けルールを明確化し、「誰でも事故なくリリースできる」状態を作る。
  • 生産性の可視化: PowerBI等で進捗や課題を可視化し、「なんとなく遅れている」といった感覚的な議論を排除する。

まとめ

これらは一見、面倒な「縛り」に見えるかもしれません。しかし、これらを徹底することで得られるのは 「迷う時間の削減」「本質的な開発への集中」 です。

  • フォーマットで迷わない。
  • 単純ミスでレビューを往復させない。
  • 壊す恐怖に怯えながら修正しない。

「今は回っているから大丈夫」ではなく、平時のうちにこうした構造を作り上げることが、中長期的な開発生産性を最大化する投資になります。

30
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?