

# OPS05-BP07 コード品質の向上のためにプラクティスを実装する
<a name="ops_dev_integ_code_quality"></a>

コード品質の向上のためにプラクティスを実装し、欠陥を最小限に抑えます。例としては、テスト駆動型デプロイ、コードレビュー、標準の導入、ペアプログラミングなどがあります。このようなプラクティスを継続的インテグレーションと継続的デリバリープロセスに組み込みます。

 **期待される成果:** 組織はコードレビューやペアプログラミングなどのベストプラクティスを使用し、コード品質が向上します。デベロッパーとオペレーターは、ソフトウェア開発ライフサイクルの一環として、コード品質のベストプラクティスを採用しています。 

 **一般的なアンチパターン:** 
+ コードレビューを行わずに、アプリケーションの主幹にコードをコミットしています。変更が自動的に本番環境にデプロイされ、アプリケーションの停止が発生します。
+  新しいアプリケーションの開発が、ユニットテスト、エンドツーエンドテスト、または統合テストなしで行われています。デプロイする前にアプリケーションをテストする方法がありません。 
+  エラーの対応には、本番環境でチームが手動の変更を加えています。テストやコードレビューを行わなわずに変更を加えており、継続的インテグレーションと継続的デリバリープロセスを介して変更がキャプチャされたりログに記録されたりしていません。 

 **このベストプラクティスを活用するメリット:** コードの品質を向上させるためのプラクティスを採用することは、本稼働環境に発生する問題を最小限に抑えることに役立ちます。ペアプログラミングやコードレビューなどのベストプラクティスを使用すると、コード品質が向上します。 

 **このベストプラクティスを活用しない場合のリスクレベル:** 中程度 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 プラクティスを実装して、コード品質を向上し、デプロイする前にエラーを最低限に抑えます。テスト駆動開発、コードレビュー、ペアプログラミングなどのプラクティスを採用して、開発の質を向上します。 

 **お客様事例** 

 AnyCompany Retail では、コード品質の向上のためにいくつかのプラクティスを採用しており、アプリケーションのコーディング基準として、テスト駆動開発を採用しています。新しい機能には、スプリント中にデベロッパーが協力してペアプログラミングを行うことを予定しているものもあります。すべてのプルリクエストは、インテグレーションとデプロイ前に、シニアデベロッパーによるコードレビューを受けます。 

### 実装手順
<a name="implementation-steps"></a>

1.  テスト駆動型開発、コードレビュー、ペアプログラミングなどのコード品質プラクティスを、継続的インテグレーションと継続的デリバリープロセスに採用します。このような手法を使用して、ソフトウェアの品質を向上させます。 

   1.  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) は、機械学習を利用した Java と Python コードのプログラミングについてのレコメンデーションを提供します。 

   1.  [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html) を使用すると、共同開発環境を作成して、コードの開発を共同で進めることができます。 

 **実装計画に必要な工数レベル:** 中程度ベストプラクティスを実施する方法は数多くありますが、組織全体での導入が難しい場合があります。 

## リソース
<a name="resources"></a>

 **関連するベストプラクティス:** 
+  [OPS05-BP06 設計標準を共有する](ops_dev_integ_share_design_stds.md) - コード品質プラクティスの一環として、設計標準を共有できます。 

 **関連するドキュメント:** 
+ [ アジャイルソフトウェアガイド ](https://martinfowler.com/agile.html)
+ [CI/CD パイプラインをリリースキャプテンとして活用する](https://aws.amazon.com/builders-library/cicd-pipeline/)
+ [ Amazon CodeGuru Reviewer を使用したコードレビューの自動化 ](https://aws.amazon.com/blogs/devops/automate-code-reviews-with-amazon-codeguru-reviewer/)
+ [ テスト駆動の開発アプローチを導入する ](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html)
+ [ DevFactory が Amazon CodeGuru を使用してアプリケーション構築を向上 ](https://aws.amazon.com/blogs/machine-learning/how-devfactory-builds-better-applications-with-amazon-codeguru/)
+ [ ペアプログラミングについて ](https://martinfowler.com/articles/on-pair-programming.html)
+ [ RENGA Inc. が Amazon CodeGuru を使用してコードレビューを自動化 ](https://aws.amazon.com/blogs/machine-learning/renga-inc-automates-code-reviews-with-amazon-codeguru/)
+ [ The Art of Agile Development: テスト駆動開発 ](http://www.jamesshore.com/v2/books/aoad1/test_driven_development)
+ [ コードレビューが重要である理由 (そして実際に時間の節約になる理由) ](https://www.atlassian.com/agile/software-development/code-reviews)

 **関連動画:** 
+ [AWS re:Invent 2020: Amazon CodeGuru を使用したコード品質の継続的改善 ](https://www.youtube.com/watch?v=iX1i35H1OVw)
+ [AWS Summit ANZ 2021 - CDK とテスト駆動開発を活用してテストファースト戦略を促進する ](https://www.youtube.com/watch?v=1R7G_wcyd3s)

 **関連サービス:** 
+ [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html)
+ [ Amazon CodeGuru Profiler ](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html)
+  [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html) 