C#でアプリを作るときは、Windows専用、複数OS、ゲーム、対話表現のどれを完成品にするかを先に決めます。
WPF、.NET MAUI、Unityは同じC#を使えても、画面構造と配布先が異なります。
共通化する業務ロジックと、OSごとに残す画面や端末機能を分けることが選択の要点です。
C#を含む開発方式や依頼先を目的別に整理したガイドでは、対象端末から相談方法を選ぶための情報をまとめています。
| 完成品 | 第一候補 | 採用前に確認する条件 |
|---|---|---|
| Windows業務デスクトップ | WPF | Windows限定でよいか、既存資産があるか |
| Android、iOS、macOS、Windows | .NET MAUI | OS別機能と実機検証を保守できるか |
| ゲーム、3D、対話コンテンツ | Unity | シーン、描画、アセット中心の設計か |
WPF、MAUI、Unityは完成品の形で選ぶ
MicrosoftのWPF概要は、WPFがWindowsで動く.NETのUIフレームワークであり、XAML、データバインディング、レイアウトなどを備えると説明しています。
.NET MAUIの概要では、C#とXAMLを使い、Android、iOS、macOS、Windows向けのアプリを一つの共有プロジェクトから構成できることが示されています。
Unityのスクリプティング入門は、ゲームオブジェクトやコンポーネントの動作をC#スクリプトで制御する考え方を扱います。
| 比較軸 | WPF | .NET MAUI | Unity |
|---|---|---|---|
| 主な用途 | Windows業務画面 | モバイル、デスクトップ | ゲーム、リアルタイム表現 |
| UIの中心 | XAMLとWPF部品 | XAMLとMAUI部品 | シーンとゲームオブジェクト |
| 配布先 | Windows | Android、iOS、macOS、Windows | 選択した対応プラットフォーム |
| 固有作業 | Windows統合 | OS別権限、署名、端末API | アセット、描画、入力、実行性能 |
顧客一覧や帳票などWindows業務に閉じるなら、WPFの既存部品や運用知識を活かせます。
同じサービスをスマホへ届けるならMAUIを検討し、3D空間やフレーム更新が中心ならUnityを別枠で評価します。
顧客一覧で共有範囲を可視化する
.NET MAUIは共有コードを増やせますが、すべての画面や端末処理が完全に同じになるわけではありません。
MicrosoftのMAUIアーキテクチャの説明では、共通API層から各プラットフォームのAPIへ接続し、必要に応じて固有コードを追加できる構成が示されています。
顧客一覧画面を例にすると、共有と固有を次のように分けられます。
| 部品 | 共有候補 | OS別に残る可能性 |
|---|---|---|
| 顧客モデル | 氏名、状態、更新日時 | なし |
| 入力検証 | 必須、文字数、形式 | キーボード入力支援 |
| API通信 | URL、認証更新、応答型 | 通信権限や証明書設定 |
| 一覧UI | 行の項目と操作 | 画面幅、ナビゲーション、アクセシビリティ |
| ファイル共有 | 出力するデータ | 保存場所と共有画面 |
共有率ではなく、OS差が出たときに局所的に変更できる境界を目標にします。
共通画面へ条件分岐を増やし続けるより、固有実装を小さなサービスへ分ける方が試験範囲を説明しやすくなります。
WPFはWindows業務との接続を評価する
WPFはWindows専用である代わりに、デスクトップ業務で必要なウィンドウ、データ表示、キーボード操作を細かく設計できます。
WPF公式概要では、XAMLによる見た目とコードによる動作の分離、データバインディング、コマンドなどが説明されています。
既存WPFを更新する場合は、画面の見た目だけでなく、.NET版、外部部品、インストーラー、社内PCの権限を調査します。
新規画面では、マウスだけでなくキーボード、表示倍率、スクリーンリーダー、複数ウィンドウを試します。
社内データベースへ直接つなぐ構成は、端末ごとの接続情報と権限を増やします。
可能ならAPIを境界にし、WPFは画面と利用者操作へ集中させます。
VS Codeとビルド環境を混同しない
VS Codeはコード編集に使えますが、エディターを導入しただけで対象プラットフォームのビルド環境が揃うわけではありません。
.NET SDK、対象ワークロード、Android SDK、iOS用のMac、署名情報など、完成品ごとの道具を別に確認します。
開発端末の準備表には次を記録します。
- 利用する.NET SDKと対象フレームワークを固定します。
- WPFではWindows上のビルドとインストールを確認します。
- MAUIでは対象OSごとのワークロードとエミュレーターまたは実機を用意します。
- iOSとmacOSを対象に含める場合はMacでのビルド条件を確認します。
- 署名鍵とストア用アカウントを個人PCだけに依存させないようにします。
チーム内で同じコマンドから成果物を作れる状態にすると、エディターの違いは小さな問題になります。
ビルドに必要な版と手順を自動化へ残し、誰の環境で作った成果物かを追えるようにします。
Unity資産は業務アプリ資産と分けて数える
Unityで使うC#は、シーン、ゲームオブジェクト、コンポーネント、フレーム更新と結び付きます。
Unityの公式スクリプティング資料を確認すると、一般的な.NETアプリとは実行の考え方が異なることが分かります。
料金計算やAPI応答型のような純粋なC#ロジックは共有候補ですが、UnityのシーンやアセットをWPFやMAUIへそのまま移すことはできません。
逆に、業務アプリのXAML画面をゲーム画面へ流用する前提も置きません。
試作では同じ顧客データを使う場合でも、再利用できるモデル、通信、テストと、作り直すUIや操作を分けて見積もります。
「同じC#だから安い」ではなく、共有できるファイルと共有できない成果物を数えます。
C#アプリ開発のよくある質問
C#でAndroidとiOSの両方へ配布できますか?
.NET MAUIなどを使ってAndroidとiOS向けのアプリを作れます。
共通コードを使える一方、OS別の権限、署名、ストア申請、端末テストは残るため、対象プラットフォームごとの開発環境を準備します。
WPFと.NET MAUIはどちらを選びますか?
Windows専用の業務デスクトップならWPF、AndroidやiOSを含む複数OSなら.NET MAUIが主な候補です。
既存資産、必要な端末機能、配布先、チームが保守できるOS別コードを比べて決めます。
Unity以外のC#アプリと何が違いますか?
Unityはシーンやゲームオブジェクトを中心にリアルタイムの動作を作り、WPFやMAUIは業務画面や一般的なアプリUIを構成します。
言語は同じでも、画面資産、実行の仕組み、性能試験、配布物が異なります。
C#は対象OSと再利用資産を分けて選ぶ
C#アプリは、言語の共通性よりも完成品の形と再利用できる資産を明確にすると選びやすくなります。
- WPFはWindows専用の業務デスクトップを細かく設計できます。
- .NET MAUIは複数OSでロジックとUIの一部を共有できます。
- OS別の権限、署名、端末機能、ビルド環境は共通化の外に残ります。
- VS Codeなどのエディターと、成果物を作るSDKやワークロードを区別します。
- Unityでは共有できるC#ロジックと固有のシーンやアセットを分けます。
Webサービス中心の別案は、RubyによるWebアプリ開発の構成でMVCとデータベース運用の考え方を確認できます。




