ツールとプロセスを標準化するためのレコメンデーション
この Power Platform Well-Architected オペレーショナル エクセレンス チェックリストの推奨事項に適用されます:
OE:04 | 業界で実績のある Development and test のプラクティスに従って、ソフトウェア開発と品質保証のプロセスを最適化します。 あいまいでないロール指定を行うには、ツール、ソース管理、アプリケーション設計パターン、ドキュメント、スタイル ガイドなどのコンポーネント全体でプラクティスを標準化します。 |
---|
このガイドでは、開発ツールとプロセスの標準を定義するためのレコメンデーションについて説明します。 一貫したプラクティスを定義すると、効率的なワークロード チームと質の高い作業が実現します。 パフォーマンスの高いチームは、業界で実証済みのツールとプロセスを使用して、無駄な労力と潜在的なコード エラーを最小限に抑えます。
主要な設計戦略
開発プラクティスを最適化するための最初のステップは、ツールとプロセスを標準化することです。 可能な限り、独自のソリューションを開発するのではなく、業界で実証済みのソリューションを使用してください。 すべての標準化されたツールとプロセスについて、チームが効率的に使用できるようにトレーニングを提供します。
開発プラクティスの最適化に役立つ標準を定義するには、次のレコメンデーションを考慮してください。
プラットフォームで利用可能なツールを使用する
Power Platform ツールの使用を優先し、それ以外の場合は既知の成熟した既製ツールを使用し、その使用を標準化します。 非常に効率的なエンジニアリング チームは、クラス最高のツールを採用しています。 計画、開発、テスト、コラボレーションのためのソリューションの開発は避けてください。 ワークロードの要件を満たすツールを選択します。
ツールは次の機能を提供する必要があります。
- 作業計画とバックログ管理
- バージョン管理とリポジトリ
- 展開パイプライン
- テスト中
- コード開発とレビュー
場合によっては、1 つのツールまたはツール スイートが複数の機能を提供することもあります。 機能全体にわたって要件を満たすように、使用するツールの機能と限界を理解していることを確認してください。
プラットフォームのプレミアム機能とツールのプレミアム バージョンのどちらに投資する必要があるかを判断します。 プレミアム ツールが提供する機能と比較して、独自のソリューションを開発する時間と労力を考慮してください。 一時的なコストと定期的なコストを考慮してください。 ほとんどの場合、既製のツールの方がチームに高い価値を提供します。 例えば、マネージド環境は、作成者のオンボード メッセージを設定したり、積極的に共有を制限したりできる既定の機能を提供します。 これらの機能を自分で構築するには、開発と継続的なメンテナンスの労力が必要となるため、マネージド環境に投資するよりもコストが高くつく可能性があります。
実用性がある場合にAI ツールを活用する。 AI ツールは、コードの開発、レビュー、最適化に役立ちます。
共同開発のためのガバナンス フレームワークを確立する
効果的な共同開発ガバナンス フレームワークを確立して、作成者定義プロジェクトとフュージョン チームの一貫性と再現性を確保します。
ソース管理システムとプラクティスを標準化する
Azure DevOps などのソース コード管理システムを採用します。 Azure DevOps は、チームをサポートするために開発者サービスを提供して、作業の計画、コード開発との共同作業、アプリケーションの構築と展開を行います。 アプリとカスタマイズを含む開発環境からソリューションをエクスポートし、ソリューションを展開して、コンポーネントをソース管理システムに保存します。
Azure Boards でチームのスクラム プラクティスを実装するに記載されているスプリントと開発者ガイドラインに従って、ソリューションのバージョン管理が正確であることを確認します。 Pull request からのテスト結果は、構築中の機能を示すスクリーンショットまたはビデオの形式をとることができます。 pull request のガバナンス プロセスを自動化すると、ソリューションのバージョンなどの基本的なチェックを手動でレビューする必要がなく、コードの品質を確保できます。
テンプレートを作成して効率を高め、一貫性を促進します。 チームの業務のあらゆる側面が、標準化と簡素化の恩恵を受けています。ユーザー ストーリー、機能、バグ、タスクを定義する際に、時間を節約し、チームにガイダンスを提供するように設計された作業項目のテンプレートから、タスクの割り当てやストーリー レビューのプレゼンテーションまで、あらゆる面で標準化と簡素化が役立っています。
メトリックを評価して有効性を定量化する
開発チームと品質保証チームは、その有効性を定量化することでのみ改善できます。 有効性を定量化するには、開発者のベロシティを測定し、主要業績評価指標 (KPI) を定義するメトリックを特定する必要があります。
これらのメトリックの例には以下が含まれます。
- リード タイム: タスクまたはユーザー ストーリーがバックログから運用展開に移行するまでにかかる時間。
- 解決までの平均時間: コードのバグまたは欠陥の修正に費やした平均時間。
- 変更が失敗した確率: 失敗した変更の割合。
関係者とワークロード チームがベロシティを簡単に追跡できるように、ダッシュボードやその他のレポート ツールを使用して KPI を視覚化します。
ワークロード チームがコードを作成、レビュー、文書化する方法を標準化します
スタイル ガイドを使用して、ワークロード チームがコードを作成、レビュー、文書化する方法を標準化します。 標準スタイルによりコラボレーションが容易になり、新しい開発者の新人研修に役立ちます。 効率的に作業するために、新しい開発者はワークロード チームがどのように機能するかを知る必要があります。 明確に定義された基準を備えたスタイル ガイドを使用すると、トレーニング プロセスが容易になります。
スタイル ガイドには次の内容が含まれる必要があります。
- ソリューション、成果物、コントロール、アクション、環境、ブランチ、ビルドの名前付け規則
- エラー処理の基準
- 共通パターンまたはライブラリ
チームがワークロードに対する新鮮な理解を維持し、新しいチームメンバーがワークロードのライフサイクル中に行われた設計上の決定について学ぶことができるように、アーキテクチャの決定を追跡します。 アーキテクチャを決定するドキュメントには、検討されたツールとテクノロジー、決定の理由、決定に考慮された機能要件と非機能要件を含めます。 説明を繰り返したり、新しいメンバーや関係者との議論を再度行ったりすることを避けるために、決定事項を記録します。
技術的負債に対処するための基準とガイドラインを導入する
プラットフォームとテクノロジは急速に変化し、新しい機能が定期的に展開されます。 技術的負債はワークロード チームの成果物に必要であるという考え方を採用します。 この考え方により、チームは技術的負債の蓄積を避けるために定期的に技術的負債を検討し、対処するようになります。 バックログで定期的に繰り返されるタスクとして技術的負債に対処します。 新機能の追加や廃止など、プラットフォームの変更に対応するためのプロセスを確立し、ワークロードの変化に対応するためのアクション プランに取り組みます。
たとえば、製品の機能が廃止されたり、別のバージョンに置き換えられたりする場合があります。 ワークロード チームは、ワークロードへの影響を回避するために、新機能への移行の完了を優先する必要があります。 チームは、時間の経過と共にプラットフォームの一部となるカスタム ソリューションやコントロールを構築する場合があります。 ワークロード チームは、そのプラットフォーム機能に移行する必要があります。これにより、技術的負債と独自のワークロードのメンテナンスが軽減されます。
業界で実証されたアプリケーション設計パターン を使用して、アプリケーションの信頼性、パフォーマンス、安全性を確保します。 アプリケーション用に独自のソリューションを開発するのではなく、これらのパターンを使用すると、時間と労力を節約できます。 ワークロードに利益をもたらすパターンを選択してください。 設計パターンを定期的にレビューして、ワークロードの進化に応じて適切なパターンを使用していることを確認します。
テストにシフトレフト アプローチを導入する
開発プロセス全体をとおして、ユニット テストを早期かつ頻繁に実行することで、テストにシフト レフト アプローチを実装します。 各開発環境で頻繁にテストを行うことで、開発者はアプリケーションに自信を持てるようになります。
シフトレフト アプローチでテスト戦略を作成するには、次の原則を考慮してください。
- 可能な限り最小のレベルでテストを作成します。 外部依存関係が最も少ないテストを優先し、ビルドの一部としてテストを実行します。
- テストを一度記述すれば、運用環境を含むあらゆる場所でテストを実行できます。 暗号化されたシークレットや構成など、特定の環境に固有の要素を考慮せずに、あらゆる開発環境で実行できるテストを作成します。
- テスト用のワークロードを設計します。 アプリケーションを開発するときは、テスト容易性を要件にします。
- ワークロードの所有権に基づくテストの所有権を検討してください。 ワークロード チームはテスト対象を所有しており、コードのテストを他のチームに頼るべきではありません。
- できるだけテストを自動化してください。 自動化されたコードにより、ワークロード チームの負担が軽減され、一貫した品質が確保されます。
ワークロード チームに、開発と品質保証に関連するセキュリティ プラクティスを理解するよう要求します。 チームメンバーは、例外なくこれらのプラクティスに従う必要があります。 詳細については、開発ライフサイクルを保護するための推奨事項 を参照してください。
Power Platform の促進
Power Platform のパイプラインは、ALM 自動化機能と継続的インテグレーションと継続的デリバリー (CI/CD) 機能をサービスに組み込むことで、Power Platform およびDynamics 365 の顧客向けにアプリケーション ライフサイクル管理 (ALM) を民主化することを目的としています。
パイプラインに表示される、Copilot が生成した展開メモには、ソリューションの概要が示され、展開メモのフィールドが事前に入力されているため、展開リクエストまたはレコードを表示する誰もが、ソリューションが何を行い、何を含んでいるかを理解するのに十分なコンテキストを得ることができます。
Azure DevOps 用の Microsoft Power Platform を使用することで、Power Platform でビルドされたアプリに関連する一般的なビルド & デプロイ タスクを自動化することができます。
Power Platform に対する GitHub アクションは、開発者が自動化されたソフトウェア開発ライフサイクル ワークフローを構築できるようにします。 Microsoft Power Platform の GitHub アクション を使用して、リポジトリにワークフローを作成して、アプリをビルド、テスト、パッケージ化、リリース、デプロイし、自動化を実行し、ボットやその他のコンポーネントを Power Platform 上で管理できます。
Power Apps チェッカーの Web API は、カスタマイズに対して実行されたスタティック分析のチェックや Microsoft Dataverse プラットフォームへと拡張するメカニズムを提供します。
Test Studio を使用して、キャンバス アプリのエンド ツー エンドの UI テストを作成します。
Power CAT コード レビュー ツール を使用すると、コード レビューを実行できます。
Power CAT Copilot Studio Kit では、エージェントとテストを構成できます。 Copilot Studio API (Direct Line) に対して個別のテストを実行することで、エージェントの応答が期待される結果と照らし合わせて評価されます。
ALM Accelerator は、継続的インテグレーション/継続的配信プロセスを自動化するために設計された一連のアプリケーション、スクリプト、パイプラインで構成されるオープンソース ツールです。
Microsoft Power Platform CLI (PAC CLI) は、Power Platform ソリューションのインポートとエクスポート、および Power Platform ソリューション ソース ファイルへのパックとアンパックをサポートするコマンドライン ツールです。 PAC CLI は、スタンドアロンのコマンドラインツールや、Visual Studio Code の機能拡張として使用できます。
開発手法の標準化に役立つその他のツールとサービスには、次のものがあります。
Azure DevOpsは、協力的で効率的かつ一貫した開発プラクティスを構築するために使用できるサービスのコレクションです。 Azure DevOps は、次のソリューションをバンドリングします。
- Azure Pipelines は、アプリケーションの CI/CD をサポートするビルドおよびリリース サービスを提供するクラウド サービスです。
- Azure Boards は、スクラムやかんばんなどのアジャイル プラクティスをサポートする Web ベースの作業管理ツールです。
- Azure Repos は、Git 分散バージョン管理システムと Team Foundation バージョン管理システムをサポートするバージョン管理ツールです。
- Azure Test Plans は、計画手動テスト、ユーザー受け入れテスト、探索的テスト、関係者からのフィードバックの収集に必要なすべての機能を提供する、使いやすいブラウザベースのテスト管理ソリューションです。
GitHub プロジェクトは、かんばんボード、レポート、ダッシュボード、その他の機能の作成に使用できる作業管理ツールです。