【C# WPF】WPFを理解したいC#初心者の話【基礎知識編2】

C# WPFについて学んでいく過程を備忘録として残して置きたいと思います。

1. C#とXAMLについて


前回、C# WPFの開発に使われる言語としてデザイン部分のXAMLと処理部分のC#が登場しました。

実際に簡単でシンプルな練習用アプリケーションを開発してみながら学んでいこうと思いましたが、開発に使用するC#とXAMLに関して、そもそも何者なのかをほとんど知らないことに気が付きました。


実際の開発ではプロジェクト方式であることが多く、WPFを使うメリットとして挙げた役割分担の行いやすさから、両方をそこまで深く学ぶ必要性は感じませんが、今回は単独での学習のため簡単に学習して行こうと思います。

2. そもそもXAMLとは?


XAMLとは「Extensible Application Markup Language」の略であり、多くの場合ザムルと読みます。

XAMLは宣言型マークアップ言語と呼ばれるマークアップ言語の一種です。

2-1. 宣言型マークアップ言語とは?

宣言型とは、あるデータがほしいときに「このデータが欲しい」ということを定義する構成のことです。

例えば私たちはレストランに食事をしに行ったとき、「スパゲッティをひとつ」という注文はしても「麺の湯で加減はこれくらいで、ソースは甘めで、それから…」という風な注文はあまりしないと思います。

注文したらあとはスパゲティが完成して運ばれてくるのを待って、スパゲッティの作り方は知らなくてもいい、ということです。


マークアップ言語とは、文章の構造や修飾についての情報を指定する為の文字を、それを適用したい文章と一緒にひとつのテキストファイルに記述するための言語です。

文章の中に「ここからここまでの文字はタイトルにしたいから大きく、色は…」という指定が書き込まれていて、それを見てコンピューターが組み立てるような仕組みです。

3. XAMLを使う利点は?

XAMLを使う利点は、WPFのメリットと被ってくる部分もありますが、完全なデザインと画面処理と内部処理を切り分けて分担して作業を行うことができる点にあります。

従来のWindows FormのようにXAMLを使わないGUIのフレームワークでは、アプリケーションの画面部分と処理部分を同じ言語で開発していました。

そのため、UIとそれに付随する動作の両方を実装する際に手間がかかってしまいます。

その点XAMLでは、画面部分と処理部分を完全に切り分けて作業を行うことができるため、デザイナーとプログラマーが並行して作業を行うことができます。

4. C#とは?

C#とはマイクロソフト社が「.NET Framework」の為に開発したプログラミング言語です。

#の由来はC++に更に++を追加して並べた形状から来ています。

C++の次世代言語のような名づけではありますが、実際にはJavaの影響を強く受けた文法を使用します。


多くのWindowsアプリケーションがC#で作られており、Webアプリケーションやスマートフォン向けアプリケーションでも使われることが増えています。

5. C#は実際にどういう場面で使われる?

C#はWindowsサーバー向けを中心として、Javaと似たような用途で活躍しています。

C#によるWeb開発では特にASP.NETが人気です。

また、デスクトップWindowsアプリケーションもC#で開発する場面が多いです。

ゲーム開発の環境の一つであるUnityではC#が公式な開発言語としてサポートされており、ゲーム開発の分野でも活躍しています。

6. C#の特徴

C#にはいくつかの特徴があり、その一部を簡単に挙げていこうと思います。

・オブジェクト指向の言語

・汎用性の高い言語である

・学習の難易度は比較的高め

6-1. オブジェクト指向の言語

C#はオブジェクト指向の言語です。

オブジェクト指向は近年の開発手法の中では主流となっているプログラミング手法です。

オブジェクト指向とは?

オブジェクト指向とは、プログラムを「モノ」と「振る舞い」に分けて組み立てるようなプログラミング手法です。


例えば2台の車があったとします。

片方はアクセルを踏むと60km/hで進み、もう一方は同じようにアクセルを踏むと80km/hで進みます。

車種は違いますが、いずれも「車」という「モノ」であり、「アクセルを踏むと進む」という「振る舞い」があります。

さらに、車には当然ブレーキも必要なので、「ブレーキを踏むと止まる」という「振る舞いを」追加する必要がありますね。


ハンドル操作も必要なので、追加しましょう。

このように「モノ」を作ってモノの「振る舞い」を作って組み立てていくようなイメージです。


詳細にはもっと難しいうえにここで紹介するにはボリュームが大きすぎるので、改めて紹介できるタイミングがあれば紹介させてください。

オブジェクト指向による開発は高品質な製品を開発することにつながります。

6-2. 汎用性の高い言語である

C#は、プログラミング言語の中でも汎用性に優れた言語といえます。

先ほども少し紹介しましたが、Windows向けのデスクトップアプリケーションの開発であったり、スマートフォン向けのアプリケーションの開発、ゲームソフトの開発、VRの開発にまで採用されています。

また、様々な開発ツールを駆使することで、さらに幅広い分野のアプリケーションの開発が可能になります。


例えば、Windows向けデスクトップアプリケーションの開発では統合開発環境の「Visual Studio」を使用することで、効率的な開発を行うことができます。

C#自体が「Visual Studio」上での開発を想定して作られている為、ストレスの少ない開発を行うことができるでしょう。


Webアプリケーションの開発なら、ASP.NETを利用できます。

先に紹介した「Visual Studio」で利用できる点も、開発のしやすさにつながります。


ゲーム開発やVR開発であれば、UnityがC#を公式にサポートしており、スムーズな開発につながります。

C#でスマートフォン向けアプリケーションの開発を行う際には「Xamarin」を利用するとよいでしょう。

「Xamarin」はマイクロソフト社が開発しているクロスプラットフォームの開発環境であり、Windowsはもちろん、Mac OSやLinux、iOSやAndroidでの開発も実現可能です。

異なるプラットフォーム同士でコードの共有を行いながら開発業務にあたることができるでしょう。

6-3. 学習の難易度は比較的高め

C#はオブジェクト指向言語であり、このオブジェクト指向という概念を理解することは簡単ではありません。

テキストを読むばかりでは理解が難しく、実際に開発の経験を通じて少しずつ理解することになるでしょう。


また、C#はほかのプログラミング言語と比べてコードの記述量が多い傾向にあります。

プログラミング初心者にとってコードが長いというだけでも大変そうな印象を受けてしまいますね。

7. まとめ


今回は開発における前段階の開発言語に関しての調査を行いました。

開発に関する勉強はC#をメインでやっていきたいと考えていますが、コーディングの記法のほかにオブジェクト指向についてもしっかりと学ぶ必要性を感じたので、そこについての調査も行いつつ、実際に開発環境を構築していこうと思います。