C#

僕が0からC#でWPFアプリケーション開発を学んだ過程をまとめてみた【初心者向け】

C#はほとんど書いたことなかった僕が、Windowsのデスクトップアプリケーションを作成するまでにやったことを記録しておきます。

C#でアプリケーション開発を始めたきっかけは、急きょ社内で使うアプリケーションを作ることになったことでした。
別にVBAでさくっと書いてもよかったのですが、ちょうどC#に挑戦したいなと思っていたので一から勉強することにしました。

C#でWFPアプリケーションを作るにあたって、ちょうどいい教材が少なく苦労したので、勉強の過程をまとめておこうと思い記事にしました。

先に書いておくとC#は全くの初心者が0から勉強するには若干ハードルの高い言語だと思います。
もしもプログラミング自体が初めてって方は、先にこちらの入門書を読んでみるといいと思います。

何冊か読んだ中で一番わかりやすく、内容も充実してる書籍でした。

[kattene]
{
“image”: “https://images-na.ssl-images-amazon.com/images/I/41ix5%2BooobL._SX355_BO1,204,203,200_.jpg”,
“title”: “猫でもわかるC#プログラミング 第3版 (猫でもわかるプログラミング)”,
“description”: “プログラミング言語C#の定番入門書!シリーズ累計50万部突破!”,
“sites”: [
{
“color”: “orange”,
“url”: “https://amzn.to/34BQtWC”,
“label”: “Amazon”,
“main”: “true”
},
{
“color”: “blue”,
“url”: “https://amzn.to/2A6qlVq”,
“label”: “Kindle”
},
{
“color”: “red”,
“url”: “https://hb.afl.rakuten.co.jp/hgc/192ad19e.7a244cd4.192ad19f.5611a747/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fdorama%2Fn33407386%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Fdorama%2Fi%2F12377520%2F&link_type=text&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjF9”,
“label”: “楽天”
}
]
}
[/kattene]

もくじ

  1. Windowsでデスクトップアプリケーション開発
  2. WPFアプリケーション開発
  3. まずはチュートリアル
  4. MVVMとかいうやつ
  5. クラス配置
  6. もくもく会に参加
  7. まとめ

Windowsでデスクトップアプリケーション開発

Windowsでデスクトップアプリケーション開発を行う方法なんですが、実はいくつか選択肢があります。
C#で作れるものだけでも、以下の3つが挙げられます。

・Windows Form
・WPF
・UWP

Windows Formアプリケーションは正直ちょっと古い技術です。
VBAのユーザーフォームみたいな感じで、あんまりモダンじゃありません。

WPFは、Windows Formアプリの次世代の技術です。
XAMLというhtmlに似たマークアップ言語が特徴で、解像度に依存しないアプリケーション描画を実現することを目的としているそうです。

UWPは、Windows Formアプリの最新世代です。
PC、Mobile、XBOX、HoloLensなど様々なデバイスで動作します。
最新とはいえ、一部UIを実装できなかったり、ストア経由でしか配布できなかったりとデメリットも多いようです。

今回のように社内で使うようなツールを作るならWPFが無難です。

WPFアプリケーション開発

というところまで一通り調べ、さてWPFでアプリケーションを作ろうと思ったのですが、いまいちいい感じの教材がありませんでした。
新宿の紀伊国屋書店に行っても、WPFに関する書籍は一冊しかなく、ネットの情報も断片的であまり参考になりませんでした。

日本ではWPFアプリケーションはあんまり流行ってないのかもしれません。
書いてみると結構楽しいシステムなんですけどね。

まずはチュートリアル

ネット上のリソースの少なさとは対照的に、公式のドキュメントはかなり充実してました。
さすがMicrosoft。

これからWPFアプリケーションを作るなら、教材は今のところこれ一択だと思います。
チュートリアル:Visual Studio 2019 で初めての WPF アプリケーションを作成する

ただこのチュートリアル、確かにわかりやすいことにはわかりやすいのですが、僕は参照とか名前空間とかの意味も何も分からずに進めてたので、ちょっと苦戦しました。
若干説明が不親切なところがあります。

もし上記のチュートリアルをやってて途中で詰まったら、usingでちゃんと必要なモジュールを参照できているか確認してみてください。

ここから下にはWPFアプリケーションを作るうえでつまづいた概念とか手法について紹介します。

MVVMとかいうやつ

WPFアプリケーションは、MVVMという設計思想が組み込まれているそうです。
僕は初耳でした。

RubyonRailsとか、DjangoとかのWEBアプリケーションフレームワークを触ったことのある人は、MVCとかMVTとかって言葉を聞いたことがあるかと思います。
MVVMも大雑把にいうとあれの仲間です。

MVVMとは、デスクトップアプリケーションをModel-View-ViewModelの3つの部分に分割して設計・実装する方法を指します。

細かく解説するには残念ながらまだ知識不足なので割愛します。
この記事とか結構わかりやすかったので、興味ある方はぜひ。

MVVMを勉強するときに参考になったリンク集 & 概要まとめ

クラス配置

WPFアプリケーションを作るにあたって、クラスを作成しようみたいな記事がたくさんあったのですが、「そもそもクラスってどこに作ったらええねん!」ってとこでつまづきました。

結論としては、どこに置いてもいいみたいです。
[プロジェクトを右クリック→追加→クラス]の手順で好きな名前のクラスファイルを作ってあげましょう。

プロジェクト内にディレクトリを作成して、その配下においてもいいし、数が少なければプロジェクト直下でも問題ありません。
クラス構成的には、「一関数、一クラス」くらいの方が管理がしやすいみたいです。

あんまり一つのクラスの中にいくつも関数を書かない方がいいんですね。

もくもく会に参加

C#とWPFに関しては体系的な教材がほとんどなくて学習の方針が立たなかったので、近くでやってた勉強会に参加してきました。
本職で.NET周りの技術を扱ってる方や、長年C#を書かれてる方にお会いしていくつか疑問点を解決できたので非常に有意義でした。

やっぱり完全に独学するより、困ったときに周りの人に聞く方が成長早いですね。
教えてくださった方々には感謝しかないです。

まとめ

すごく雑にC#でWPFアプリケーション開発を学ぶ過程をまとめました。
.NET関連の技術は、出回ってる情報が少ないので、発信しがいがあるなと感じました。

今後もっと勉強してノウハウがたまったら、随時C#や.NET関連の技術について情報発信をしていきたいと思います。

[kattene]
{
“image”: “https://images-na.ssl-images-amazon.com/images/I/41ix5%2BooobL._SX355_BO1,204,203,200_.jpg”,
“title”: “猫でもわかるC#プログラミング 第3版 (猫でもわかるプログラミング)”,
“description”: “プログラミング言語C#の定番入門書!シリーズ累計50万部突破!”,
“sites”: [
{
“color”: “orange”,
“url”: “https://amzn.to/34BQtWC”,
“label”: “Amazon”,
“main”: “true”
},
{
“color”: “blue”,
“url”: “https://amzn.to/2A6qlVq”,
“label”: “Kindle”
},
{
“color”: “red”,
“url”: “https://hb.afl.rakuten.co.jp/hgc/192ad19e.7a244cd4.192ad19f.5611a747/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fdorama%2Fn33407386%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Fdorama%2Fi%2F12377520%2F&link_type=text&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjF9”,
“label”: “楽天”
}
]
}
[/kattene]

COMMENT

メールアドレスが公開されることはありません。