生成されたコードはレビューの準備が整い、自動的に発送する準備ができていません。 この最後の手順では、妥当なフレームワークの間違いを検出し、コンパイルを超えてタスク の集計を確認する練習をします。
アシスタントを意図的にテストする
以前のプロンプトの制約に依存しないように、アシスタントとの新しい会話を開始します。 問い合わせ:
Add a confirmation dialog before deleting a task from my Windows XAML app.
Show only the using directives and the dialog construction code.
制約されていないアシスタントは次を返す可能性があります:
using Windows.UI.Xaml.Controls;
var dialog = new ContentDialog
{
Title = "Delete task?",
PrimaryButtonText = "Delete",
CloseButtonText = "Cancel"
};
これは UWP 名前空間です。
ContentDialog WinUI 3 にも存在するため、コード レビューでエラーが見逃されやすくなります。
このプロジェクトでは、名前空間は次のようにする必要があります。
using Microsoft.UI.Xaml.Controls;
var dialog = new ContentDialog
{
Title = "Delete task?",
PrimaryButtonText = "Delete",
CloseButtonText = "Cancel",
XamlRoot = this.XamlRoot
};
WinUI 3 ContentDialog 参照 URL には、 microsoft.ui.xaml.controlsが含まれています。 UWP ContentDialog リファレンスでは、 windows.ui.xaml.controlsを使用します。
これが、"Windows ドキュメントに型が存在する" だけでは不十分な理由です。 フレームワーク、名前空間、バージョン、アプリ モデルを確認します。
生成されたコードのフレームワーク チェックを使用する
アシスタントが Windows API を追加するときは、次の質問を使用して調べます。
| 確認 | 注目すべきポイント |
|---|---|
| フレームワーク | WinUI 3 とWindows アプリ SDKのドキュメントですか? |
| 名前空間 | UI コードでは、Windows.UI.XamlやSystem.Windowsではなく、Microsoft.UI.Xamlが使用されますか? |
| バージョン | API は、プロジェクトによって参照されるWindows アプリ SDK バージョンで使用できますか? |
| アプリ モデル | API には、パッケージ ID、アプリ機能、またはウィンドウの初期化が必要ですか? |
| スレッド化 | UI スレッドで呼び出しを実行する必要がありますか? 非同期処理は待機対象になっていますか? |
| Ux | このシナリオには、WinUI コントロールまたはパターンが組み込まれていますか? |
| Accessibility | 生成された UI には、名前、ラベル、キーボード アクセス、および目に見えるフォーカスがありますか? |
| 証拠 | 変更した箇所をビルドし、実行し、動作確認しましたか? |
アシスタントに、選択をサポートする Learn URL を指定して、自分で URL を開くように依頼します。
タスク件数を確認する
最終的な検証パスを実行します。
- アプリのローカル データを削除するか、新しいインストールを開始します。 空の状態が表示され、スペースのみを入力すると [タスクの追加] が無効にされていることを確認します。
- 複数のタスクを追加し、1 つのタスクを完了済みとしてマークし、別のタスクを削除します。 残りのカウントが更新され、正しい項目が削除されていることを確認します。
- アプリを再起動します。 タスクのタイトルと完了の状態が復元されていることを確認します。
-
if (System.Diagnostics.Debugger.IsAttached) throw new IOException("Test save failure.");をTaskStorage.SaveAsyncの最初の行として追加し、デバッガーでアプリを再構築して実行します。 保存をトリガーし、InfoBarが正常な保存ではなく失敗を報告することを確認します。 その後、一時的な条件を削除して再構築します。 - Tab と Shift+Tab を使用して、すべての対話型要素間を移動します。
- スクリーン リーダーまたは Accessibility Insights for Windowsを使用して、名前、ロール、フォーカスの順序を調べます。
- アプリのサイズを変更し、明るいテーマ、濃色テーマ、コントラスト テーマをテストし、コンパイラ、XAML、バインド、またはアナライザーの警告なしで x64 用にビルドします。
詳細情報: アクセシビリティの概要 と アクセシビリティ テスト。
コードだけでなく、プロンプトを調整する
チェックが失敗した場合は、次のプロンプトで修正と理由の両方を保存します。
The generated code used Windows.UI.Xaml.Controls, which is the UWP
namespace. This project is WinUI 3. Replace it with the corresponding
Microsoft.UI.Xaml API, verify the API in the Windows App SDK reference,
build the x64 project, and explain why the original namespace was wrong.
これにより、アシスタントに有用な証拠が提供され、プロジェクトの境界が強化されます。 有効期間の長いプロジェクトの場合は、コーディング アシスタントが読み取るリポジトリの指示に、フレームワーク、パッケージ モデル、ターゲット アーキテクチャ、ビルド コマンドなどの安定した制約を配置します。
次のステップ
小規模な WinUI 3 アプリを構築し、再利用できるワークフローを実践しました。
質問 → 生成 → ビルド → 検査 → 検証 → 改良
次に進む:
- XAML、ナビゲーション、およびファイル ストレージの決定論的でコードに重点を置いた概要のための最初の WinUI アプリを作成します。
- より大規模な MVVM アーキテクチャの WinUI でのデータ バインディング、依存関係の挿入、および単体テスト。
- 実行中のサンプルのコントロールと相互作用パターンを確認するための WinUI 3 ギャラリー。
- 生成された API の選択を確認するには、Windows アプリ SDK API リファレンスを参照してください。
Windows developer