『C#はよくWindowsアプリを作るのに適している言語です。』という記事を良く目にしますが、
真っ赤なウソです
これらの記事を書いている方は業界の方ではないのでしょう。
もちろんWindowsアプリを作るのにも適してはいますが、C#を表現するには適していません。
今回はC#を愛してやまない現役エンジニアの筆者がC#について解説していきます。
C#でつくれるアプリケーション
まずは、C#で作れるアプリケーションの種類を見ていきましょう。
- Windowsアプリ
- コンソールアプリ
- Webアプリ
- Webサービス
- モバイルアプリ
- ゲーム
ご存知でしたか?実はこれだけの種類のアプリケーションが作れるんです。
Windowsアプリを作るのに適している?冗談じゃありません。C#の真価が発揮できるのはWindowsアプリではありませんし、ここ10年くらいはWebアプリやWebサービスをC#で製作しているアプリケーションを多く目にします。
それではひとつずつどんなアプリケーションなのかを解説していきましょう。
1.Windowsアプリ
ネイティブアプリのひとつでWindowsマシン上で動作するアプリケーションです。
Exeファイルと呼ばれる実行ファイルからアプリケーションを起動することができます。
どんな内容のアプリケーションがつくれるのか。に関しては、WindowsにインストールできるほとんどのアプリケーションをC#で実装することができます。
もちろん有名なExcelやWordのようなアプリだって頑張れば作れます。(期間はめちゃくちゃかかるでしょうけれども・・・)
すごいですよね。ぜひ壮大なWindowsアプリを製作してみてください(笑)
2.コンソールアプリ
コンソールアプリとは、文字だけが表示されたりまたは出力を伴わないアプリケーションです。
画面の無いアプリと想像していただければイメージしやすいでしょうか?
出力がある場合は、このようなコンソールに出力結果を表示し、入力がある場合、コンソール画面から入力させることも可能です。
このアプリケーションは主にローカル・サーバーを問わず.NETが搭載されている多様なOS上で動作するので、例えば、サーバー上での夜間バッチ処理に使われたりします。
夜間バッチ処理で多く行われるのは、膨大なデータの処理です。昼間に処理されたデータの整理や集計などを夜間作業者が少ない時間帯を狙って動作させます。
その他にも使い道はたくさんあります。最近ではPythonで書かれることが多いデータ分析などもコンソールアプリの1つです。
このようにコンソールアプリとは裏方の作業をもくもくとこなしてくれるアプリケーションと言えるでしょう。
3.Webアプリ
C#の用途として一番多いのがこのWebアプリ(Webアプリケーション)でしょう。
Webアプリケーションといえば、よく目にするのはECサイトです。ブラウザ上で動作するアプリケーションを総じてWebアプリケーションと呼びます。
C#が使われるのは大規模なWebアプリが多い印象です。例えば、企業の基幹システム。販売管理や案件管理などの安定したシステムが必要な場所で使用されています。
同じような用途で使われるのはJavaです。C#とJavaはどんなOSでも実行できる仮想実装環境がインストールできれば動作するマルチプラットフォームの言語であるため、一世を風靡しました。
最近では小規模のアプリケーションにはPHPやRuby、Pythonなど様々な言語が多く使用されるようになっていますが、それでもC#の需要はまだまだ高いと筆者は考えています。
4.Webサービス
Webサービスとは、Webアプリケーションと響きは似ていますが、全く違うものです。
「APIを使って」などという言葉を聞いたことがあるでしょうか?APIとは例えばアプリケーション同士の連携や何かの値を取得したい時、何かの機能を使用したいときなどに利用するWeb上にあるサービスです。
特殊な方法でWebサーバーにアクセスして値を取得したり、何かの値を渡して結果をもらったりという動作をします。
こちらもサーバー上で動作するアプリケーションですが、コンソールアプリと違うのは、外部と接続することができる。というところです。
最近ではモバイルアプリがサーバー上のデータをやり取りするために設置したり。などということも多くなりました。
これもC#だけが実現できるアプリケーションではなく、Webアプリケーションでも挙げたJava、Python、Ruby、PHPでも実現可能です。
ですが、実際に多く稼働しているのはJavaやC#で作られたWebサービスではないでしょうか。
見えない部分ではありますが、とても重要な部分を担っているアプリケーションです。モバイルアプリを製作するのであればWebサービスも自分で作ってみると面白いですよ。
5.モバイルアプリ
最近はあまり見かけませんが、C#で記述できるモバイルで動作するXamarin(ザマリン)というプラットフォームがありました。
このプラットフォームは.NETがインストールできるOSであればAndroidやiOSのネイティブアプリケーションが製作できるマルチプラットフォームとなっています。
しかし、Xamarinは日本ではあまり盛り上がりを見せません。そうこうしているうちにReactNativeやFlutterなどが台頭してきてしまったため、今後もあまり期待はもてないでしょう。
ただ、C#で記述できるモバイルネイティブアプリケーションプラットフォームがあるんだよ。ということだけは知っておいてください。(いつかメジャーになる日がくるかもしれません)
6.ゲーム
UnityというゲームエンジンではC#で記述することができます。
もしかしたらC#を良く最近見かけるのはこのUnityのおかげかもしれませんね。
Unityは3Dのゲームを製作できます。2Dのゲームも製作できるようですが、3Dが主流ですね。
筆者はUnityでの開発は趣味で触った程度なのでこれ以上の説明ができません。「Unity C#」などで検索してみるとたくさん記事があると思いますので興味がある方は探してみてください。
C#とはどんな言語?
説明したように実はC#とはとても優れた言語なのです。
1つの言語で、ありとあらゆるアプリケーションを作ることができてしまう。これはとても素晴らしいことです。
このC#がどんな歴史を辿ってきたのか少しだけ触れてみたいと思います。
学習には直接関わりませんので早く学び方を教えてくれよ。という方はスキップしてください。
C#の歴史
C#はマイクロソフト社が開発した言語で、2002年に1.0が正式リリースされました。今から20年前ですね。
WikiPediaより引用
C#の動作環境
C#7.0までは、仮想実行環境は.NET Framework と呼ばれていましたが、9.0からFrameworkが外れています。
このようにたくさんのバージョンアップを重ねてきた歴史のある言語であることがお判りいただけたでしょうか。
C#の開発環境
C#はUnityなどのゲームエンジンはUnityで開発しますが、それ以外のアプリケーションは基本的ににVisualStudioというIDE(統合開発環境)を使用して開発します。
最近VisualStudioCodeというIDEもありますが、こちらではなくVisualStudioCommunityを使用してください。
こちらは無料で使えます。
VisualStudioは環境構築に拠るエラーが発生しにくいため初学者にはおすすめです。
C#学習のおすすめロードマップ
私がおすすめするC#の習得のロードマップはこちらです。
「えーっ、こんなに学ぶことがあるの???」と思われた方もいるでしょう。
ひとつひとつはそれほどのボリュームではないため、本腰を入れれば1か月以内に完了しますので、焦らずにしっかりと学習していきましょう。
それでは、ひとつひとつの学習内容とおすすめの教材を紹介していきます。
①プログラムの制御と構文を学ぶ
ブロックを使ったブロックプログラミングで学ぶのが一番の近道です。
最初からプログラミング言語で学習してしまうと、慣れない英語や環境構築などで躓くことも少なくありません。
ブロックプログラミングは子どもっぽいと思われるでしょうか?
私たちプログラマーはこの制御をほぼ完ぺきにこなすことができます。この基礎があってこそ、プログラムを組めるようになるのです。
試しに一度学習してみてください。
教材も併せて購入すると良いでしょう。
手前味噌ではありますが、筆者の講座です。こちらでプログラミングの基礎の基礎を学べます。
いくつか練習問題を公開していますので、試しにチャレンジしてみてください。
②HTML/CSSを学ぶ(Web)
Webアプリケーションを作るのにはブラウザ上でのWebサイトの知識がないと表示することができません。
HTMLはWebサイトの表示を行うタグ群です。
簡単にマスターできるのでさくっと終わらせてしまいましょう。
タグをひとつひとつ覚える必要はありません。何ができるのか?どういう仕組みでWebサイトが表示されているのかに重点を置いて学習するとよいでしょう。
これからWebをはじめる人のHTML&CSS、JavaScriptのきほんのきほん
こちらの本は基礎やWebの基本なども書いてあり、一番最初に学ぶにはとても良い本です。
③言語の基礎をアプリで学ぶ
ここでは最初に学んだプログラミングの構文や制御をプログラミング言語に置き換える作業をメインとしています。
まずはこちらの簡単な基礎講座で今まで学んだアルゴリズムをプログラミング言語で表現する方法に慣れましょう。
プログラミング言語に慣れてきたら、最初から大きなアプリケーションに取り掛かるのではなく、小さなアプリケーションを作成できるサンプルが用意されている教材を選ぶことをおすすめします。
おすすめするのはこの本です。
新・標準プログラマーズライブラリ なるほどなっとく C#入門を購入する
④Webの仕組みを学ぶ
まずは、こちらの入門書で基礎を学びましょう。
少し退屈してしまうかもしれませんが、HTTPやWebの仕組みの基礎が学習できます。毎日少しずつ読み進めていきましょう。
こちらの本はWebの基本について学べます。イラストも多いので一番最初に学ぶにはとても良い本です。
⑤データーベースの基礎を学ぶ
最近のデータベースの主流はRDB(リレーショナルデータベース)、KVS(キーバリューストア)とありますが、最初はRDBを学んでいきましょう。
RDBも古い技術ですので、書籍を使って学習できます。
良い書籍もたくさんあるのですが、体系的に学ぶというところに主点を置くと、OracleMasterの教書が一番のおススメです。
Oracleは有料アプリですが、試験学習に使用するデータベースは無償で提供されます。
DBAと合わせて資格を取ってしまうのもアリです。
オラクルマスター教科書 Bronze Oracle Database 12c SQL基礎
⑥Webアプリケーションを作る
ここでは、今まで学習した集大成を最大限に発揮してWebアプリケーションを作成します。
こちらの本は少し古いですが、MVCモデルを使ってWebアプリケーションを作成する方法を学ぶことができます。また、.netの最大の魅力であるEntityFrameworkについても学習できるので、この本でアプリケーションを作ってみることをおすすめします。
C#でのWebアプリケーションはかなり大きな規模になりますので、動画で学習を進められる教材もおすすめです。こちらはUdemyという学習講座のプラットフォームからおすすめするC#の講座です。
この講座も前述の本と同様ASP.NETをMVCモデルを用いて実装する方法になります。
【入門者向け】ASP.NET MVCでWebアプリ開発のノウハウを学ぼう!
私は動画の方が学習しやすい。と思うのですが個人差があるかと思いますのでご自分が「わかりやすい!」と思うほうを選択してください。
おすすめの資格
C#を勉強しているのだけどおすすめの資格はありますか?これも良く聞かれる質問のひとつです。
今からプログラミングを使った職業に就こうとしている方には同じ返答をします。
「基本情報処理」を取りましょう。
正式には「基本情報技術者試験」と言います。
IPAが実施している国家資格です。
詳細はこちらの公式HPからご確認ください。
https://www.jitec.ipa.go.jp/
IT業界、特にプログラミングを使用する職業に就くのでしたら未経験でこの資格を持っていることで就職にぐっと近くなるでしょう。
「基本」とついているのでベースの技術ですが、最低限の知識として学習することが望ましいです。
一部プロジェクトのマネジメントなどもありますが、こちらも今後のことを考えれば身につけていて損はしませんのでぜひ学習してみてください。
私のおすすめ勉強法は、過去問をひたすら解きながら振り返るときに教本で学習する方法です。
ただ、この方法はある程度の知識がないと難しいです。これまで学習のロードマップをひとつひとつこなしてきた方であれば、この方法で学習してみてください。案外解けるところが多いことに気づきます。
教本から始めるとどうしても飽きたり、覚えられなかったりでなかなか集中力を保つことが難しいですよね。
クイズのような気分で過去問を解く⇒教本で詳細を確認する ということを何回も繰り返すうちに身についていきます。
C#の将来性
さて、ここまでC#について存分に語ってきましたが、皆さんが気になるのは「C#を学習して需要があるのか?」というところではないでしょうか?
C#ができるようになっても転職市場で重要視されなければ意味がありませんよね。
私は、C#で7つのロードマップをこなした人であれば、必ず需要はある!と断言します。
なぜならプログラミング言語は1つを深堀すると他の言語に応用できることが増えます。例えばHTTPの基礎などはどの言語でも変わりません。データベースもそうです。
私が紹介した7つのロードマップを習得した方は「基礎的な知識」は持っています。
ぜひ胸を張って転職市場に飛び込んでください。
その際にできれば1つ小さいアプリで良いのでオリジナルのWebアプリケーションを作って公開しておきましょう。
そのアプリケーションとソースを書類選考や面接時に提出することでグッと採用率が上がります。
なぜなら、「Webアプリケーションを1つ作り上げることができる知識を持っている人」だからです。
もちろん、現場に出ればすぐに自走は難しいかもしれません。ですが、未経験の中では最も即戦力に近い存在であることには間違いありません。
それだけの技術を身につけています。
つまり、C#を私がおすすめするロードマップで習得すると、きっと転職できるでしょう。
また、C#はこれまでに作られたアプリケーションの改修としての案件もありますし、C#自体もどんどん進化しています。今後「あっ!」という改良を加えて一大勢力になることもあります。
何よりもC#はJavaにも記述の仕方が似ていたり、他の言語を学習するにも学習コストがとても低くなります。
そういった意味でも最初に学習するプログラミング言語としてはC#が最適であり、C#の今後も期待できる。と考えてよいのではないでしょうか。
最後に
プログラミング言語はなんでもほぼ同じとは言いましたが、各言語によって書き方のお作法が少しずつ違います。最初のうちはアレもコレもと手を出さずにひとつの言語をしっかりと深堀してください。
そうすることで必要な基礎の力が身につき、他の言語に転向した時も、自分の中にある知識と結びつけながら学習を進めることができます。
何度も言いますが、「ひとつの軸を作る。」という意味ではひとつの言語を深堀することは大変有効なことです。
あちこち色々な言語を薄い知識で学習するよりも、1つの言語をしっかりと深掘ることが、Webアプリケーションエンジニアへの近道です。
ぜひ私がおすすめする学習のロードマップを実践してみてください。
IT業界はますますエンジニア不足が叫ばれています。
私は、これからもIT業界への転職したい皆さんを応援しつづけます。
そしていつの日か一緒にこの業界で働けることを心待ちにしています!
もし、気になることがあれば、私にお答えできることはなんでも回答しますので、Twitter(@onon_noriko)のDMでお気軽に質問してください。