WinUI や WPF で Windows デスクトップアプリを作るたびに、「前回もここで詰まったな」と同じ失敗を繰り返していませんか。私の経験では、コードそのものより 着手前に決めるべきこと と 後回しにして痛い目を見る作業 が毎回同じでした。
この記事は、C# での Windows デスクトップアプリ開発で忘れがちな作業を、立ち上げ・実装・検証・配布・公開後の5フェーズ に分けてまとめたチェックリストです。単なるToDoではなく、「どこに記録するか」「何を確認できれば完了か」まで書きます。WinUI 自体がはじめての方は、WinUI 3入門 もあわせてどうぞ。
Table of contents
Open Table of contents
このチェックリストの使い方
新しいアプリを始めるときは、この記事を読み返すだけでなく、リポジトリ内のドキュメントへ写して使います。各項目について、判断した内容と理由を残すと、後から「決めたつもり」を防げます。
- 決めた内容:たとえば対応OS、保存先、配布方法
- 判断理由:なぜその選択にしたか
- 保留事項:今は対応しないことと、見直す時期
たとえば対象OSをWindows 11だけにするなら、対応バージョンをREADMEへ書き、Windows 10をサポート外にする判断まで残します。判断の記録そのものが、不具合調査と引き継ぎの助けになります。
フェーズ1:立ち上げ(コードより先に決める)
- 実行環境:対象の Windows バージョンとランタイム(.NETなど)を確定する
- 命名とフォルダ構成:アプリ名・英語名・用語を統一し、コードのフォルダ構成を決める
- データ保存先:ユーザーデータは
AppDataなどへ。実行フォルダ直下に書かない - Git 運用:ブランチ運用ルール(main/開発/機能)を最初に決める
- テスト方針:テストコードを書くか、どこまで書くかを判断する
- データ設計:SQLite などのスキーマ、設定の マイグレーション方針、多言語化(ResX)
特に マイグレーションと多言語化は後付けが大変 です。枠だけでも先に用意しておくと、後がぐっとラクになります。
フェーズ1で残す成果物
着手前に、少なくとも次の内容をリポジトリへ残します。すべてを設計書にする必要はありません。短いREADMEでも、チームや未来の自分が同じ判断を再現できることが大切です。
- 対応するWindowsバージョン、CPUアーキテクチャ、必要なランタイム
- 設定・ログ・ユーザーデータの保存先と、バックアップが必要なデータ
- アプリ名、パッケージ名、バージョン番号の付け方
- 更新時に設定やデータをどう引き継ぐか
- テストする操作と、リリースを止める条件
フェーズ2:実装(土台を忘れない)
- UI/UX:画面レイアウト、高DPI対応、ショートカット/ホットキー、アクセシビリティ
- 性能:
async/awaitの非同期処理でUIスレッドを固めない、起動速度 の最適化 - ログ:出力先を決め、ローテーション でファイルの肥大化を防ぐ
- 未処理例外の捕捉:
UnhandledExceptionなどでクラッシュを握りつぶさず、記録する仕組みを最初から入れる - 設定の永続化:設定ファイルが変わっても落ちない堅牢なパース(項目の欠落や型違いを許容する)
ログと例外捕捉は、配布後の不具合調査で唯一の手がかり になります。
実装中に一度は失敗させるもの
正常系だけを通すと、配布後に初めて問題が見つかります。実装ができた時点で、設定ファイルを壊す、ネットワークを切る、保存先を書き込み不可にする、空のデータを開く、といった失敗を意図的に起こします。アプリが落ちず、利用者が次に何をすればよいか分かるメッセージを出せるかを確認します。
フェーズ3:検証(自分の環境以外で試す)
- クリーンな Windows(.NET ランタイム未インストール)で起動を確認する
- 異なる解像度・DPI・表示スケール でレイアウト崩れをチェックする
- UIテストと主要操作の一通りの動作確認
リリース前に通す最短シナリオ
毎回同じ品質を保つため、主要な操作を5〜10ステップ程度に絞った確認手順を作ります。例えば「インストール → 起動 → 初期設定 → 代表的な操作 → 保存 → 終了 → 再起動」の流れです。新規インストールだけでなく、旧版で作った設定やデータを新版が正しく読めるかも確認します。
フェーズ4:配布・公開(出す直前に慌てない)
- アイコン:マルチ解像度の
.icoを用意する - OSSライセンス:使用ライブラリのライセンス確認とクレジット表記を準備する
- ドキュメント:README、使い方マニュアル、利用規約、プライバシーポリシー
- 配布方法:MSIX/ポータブル版(ZIP)/Microsoft Store 配信を選定。アンインストール時のデータ整理 も忘れずに
- 署名と更新:コードサイニング証明書で改ざんされていないことを示す。署名だけでSmartScreenの警告が必ず消えるわけではなく、配布実績や評価も影響する。自動更新、APIキーなど 機密情報の管理
配布まわりの具体的な手順は、WinUIアプリのMSIXパッケージングと署名・配布の記事 にまとめています。
フェーズ5:公開後(最初の1週間に見ること)
- 問い合わせ先と、利用者がログを渡す方法を確認する
- 小さな修正を出す想定で、ビルドから更新確認までを一度なぞる
- 何を直した版なのか、利用者向けの変更履歴を残す
- 実際に詰まったことを、このチェックリストへ戻して次回に生かす
まとめ
トラブルの多くは、「フェーズ1で決めなかったこと」 と 「開発PCだけで確認してしまったこと」 に起因します。データの保存場所、マイグレーション、ログ設計、更新時のデータ引き継ぎを着手前に決めておくだけで、後半の手戻りが大きく減ります。
新しいアプリを作るときは、着手前・初回配布前・公開後(最初の更新前)の3回に分けて、このチェックリストを見返してみてください。実際に詰まった項目を足していけば、自分の開発環境に合った再利用可能な手順書になります。
