近年、人気のあるプログラミング言語の一つとしてC#が注目されています。
C#は2002年にMicrosoft社によってリリースされたプログラミング言語です。
Webアプリケーションだけでなく、ゲーム開発などで利用されているUnityにおいても使用されているため、ユーザーの多い言語です。
C#を学習しようと考えている人の中には、
「C言語やC++と関係あるの?どっちが使いやすい?」
「フレームワークは存在する?」
などの疑問をお持ちの方もいらっしゃると思います。
そこで、この記事ではC#フレームワークについて解説していきます。
C#についてより詳しく知りたい方はこちらの記事もどうぞ!
>2022年3月版 人気のプログラミング言語ベスト20 第9位:C#
C#はマルチパラダイムプログラミング言語であり、複数のスタイルを持ち合わせていますが、クラスとインスタンスで構成されているオブジェクト指向をメインのスタイルとして持った言語です。
C#と聞くとC言語やC++と似たようなプログラミング言語かなと思う方が多いと思いますが、まったく別物といってよいほど異なり、C言語やC++よりも多彩なアプリケーション開発ができます。
ただ、C#の文法がC言語やC++、Javaと似ているのでこれらの文法を一通り習得している方はC#にとっつきやすいでしょう。
実際にC#で、Webアプリケーション、スマートフォン向けアプリケーション、PC向けアプリケーションなどかなり幅広い領域での開発ができます。ただし、Microsoft社が開発しリリースしており、Windows向けに作られているのでMacやLinuxでは開発がしにくいです。
しかし、Windowsでは非常に開発がしやすく、統合開発環境(IDE)の「Visual Studio」を使うことで開発のしやすさがグンと伸びることがC#の良さと言えるでしょう。
また、C#について説明をするうえで外せないのが、「.NET Framework」との関係です。
.NET Frameworkもまた、Microsoft社が2002年に正式リリースしたプラットフォームです。
.NET Frameworkは、主に共通言語ランタイム(CLR)とクラスライブラリの2要素で構成されています。
共通言語ランタイム(CLR)とは、実行中のアプリケーションを処理する動作環境のことです。
.NET Frameworkでは、さまざまなプログラミング言語で書かれたコードを、一度共通中間言語(CIL)に変換してから、プログラムの実行に移ります。
そのため、利用者は特定の言語を使う必要がなく、自身の環境に合ったCLRを用意するだけでいいのです。
クラスライブラリとは、一般的な機能をまとめたライブラリを指します。
具体的には、ファイルの読み書き、データベース接続、描画などのAPIがあります。
なお、.NET Frameworkは現役ではありますが、Microsoft社は2019年以降、Mac環境にも対応した後継の.NET Coreを使うことを推奨しており、現在は.NET6が最新です。
話を戻すとつまり、C#は、.NET Frameworkの機能を強化するために作られたような言語であるという背景があります。
そのため、C#のフレームワークというよりも、.NET環境で使えるフレームワークが存在していて、C#に対応しているという方が近いです。
フレームワークを利用することにはいろいろなメリットがあります。ここでは、
・開発スピードが上がる
・コードの統一性を保持(多人数開発にも対応しやすくなる)
・バグの減少
・フリーランスとして仕事が取りやすくなる
という4点のメリットについて紹介していきます。
MVP開発やリーンスタートアップという言葉が注目されているように、IT/Web業界では特に、サービスを高速で市場に投下することが重要です。フレームワークを利用するのとしないのでは、開発スピードにかなりの差が生じます。
例えばPythonのフレームワークには、データベースアクセスの機能やログイン機能、フォーム作成機能などが備わっているのですが、それらをフレームワークなしでエラー無く完成させるには、かなりの時間を要してしまうのです。
プログラミングに限らず全ての仕事にいえますが、コードの書き方にはその人の個性やクセがでます。
経験、スキル、年齢、性格、キャリアなど様々な要因によって差が生じるのですが、人が書いたコードを修正するのは、かなり大変な作業です。
フレームワークを利用すれば、コードの統一性を保持させることができます。
統一性を保持することにより、多人数開発にも対応しやすくなります。
.NET環境のフレームワークは基本的に大人数のエンジニアに利用されています。そのため、バグはすでに解決されていることが多いです。
それらのバグが少ないフレームワークを利用して開発を進めると、開発をしたプログラムもバグが少なくなる可能性が高まるといえます。
中規模、大規模以上案件では、フレームワークが利用されていることがほとんどです。
使えると使えないとでは、仕事の獲得しやすさに差が生じるでしょう。
一方で、フレームワークを使用することのデメリットは次の2点が挙げられます。
・学習期間が必要
・イレギュラーに対応できないことがある
詳しく見ていきましょう。
フレームワークを使いこなすには、言語の理解がある前提で、最低でも数週間は学習をする必要があります。
概要を抑えられても、細かい要望を実現しようとすると調査に更に時間がかかることはよくあります。使用者が多くないフレームワークになると、情報量が少なく、調査が難しいこともあるでしょう。
また、ドキュメントは基本的に英語で書かれていることが多いです。
フレームワークはいわゆる「よくある機能」を開発する際には有用です。
しかし、前例が少ない機能を開発したい場合、対応できないことが多々あります。
フレームワークは決められたルールに則ってサービスを開発していかなければならないため、イレギュラーが多発するようなサービスではフレームワークを利用しないほうが作りやすいことがあるのです。
ここからは、目的によって有用な.NETフレームワークについて解説していきます。
ASP.NETは、こちらもまた、Microsoft社が開発したフレームワークです。
WebアプリケーションやAPI開発をすることができます。
ASP.NETの中には、さまざまな機能がフレームワークとして備わっていて、使い分けをすることが可能です。
ASP.NET Coreは、クラウド上でのアプリケーション開発が可能なフレームワークで、前述の.NET Coreの名前と似ていることからも予想できますが、macOSやLinuxでの開発ができます。
ASP.NET MVCは、M(Model)、V(View)、C(Controller)の3つを合わせたMVC機能が搭載されている、アプリケーションを設定・管理するためのフレームワークです。
ASP.NET Web APIは、HTMLサーバーを構築することができるフレームワークです。
そのため、対応範囲が広くなっています。
ASP.NET Web Formは、Visual StudioというMicrosoft社が提供している統合開発環境に含まれているフレームワークです。
ドラッグ&ドロップのシンプルな操作で開発ができます。
BlazorもMicrosoft社によって開発されたフレームワークで、正式リリースされたのは2018年と、比較的最近です。
C#を基本としつつ、HTML・CSSも使用してWebアプリケーションの作成ができます。
Blazorにはフロントエンド開発ができるBlazor WebAssemblyと、サーバーサイドの開発ができるBlazor Serverの2種類があり、用途によって使い分けることが可能です。
C#だけでは難しい、かゆいところにはJavaScriptを呼び出せる点も魅力です。
ここまでフレームワークの解説をしてきました。
では実際の単価や案件数はどのようになっているのでしょうか?
テクフリに掲載されている案件を参考に以下にまとめました。
弊社調べによると、C#の平均単価は68万円です。
また、ASP.NETを使用する案件の平均単価は64万円で、C#全体の平均単価よりやや安価です。
他の言語よりも平均単価は安価ですが、単価の最高額は150万円で、他の言語を上回っています。
他言語の参考は以下の記事から確認してください!
・Pythonフレームワークおすすめ5選と選び方【2022】
・Javaフレームワークとは?おすすめの10選と選び方【2022年最新版】
他にも確認したい方は、以下のページからさまざまな記事を確認できます!
>お役立ちコンテンツ | フリーランスエンジニアの案件・求人なら【テクフリ】
C#の案件数、記事数などを下記のようにまとめました。
フレームワーク | テクフリ案件数 | Qiitaの記事数 | stackoverflowでの質問数 |
C#(参考) | 413 | 230700 | 1289 |
ASP.NET | 44 | 2657 | 344 |
Blazor | 0 | 449 | 8 |
フレームワーク | .NET Framework |
案件名 | テスター/新補聴器フィッティングシステム開発におけるテスト設計と実施/リモート可 |
月額単価 | 〜550,000円/月 |
最寄駅 | リモートワーク |
業務内容 |
新補聴器フィッティングシステムの開発案件にて、テスト設計・実施をご担当いただきます。 主な業務内容はテスト設計、テスト実施になります。 |
基本スキル |
・テスト実施経験が3年以上 ・テスト設計経験が2年以上 |
フレームワーク | .NET Framework |
案件名 | SAP/SD/新規システム構築のテスト支援と稼働時のハイパーケア等 |
月額単価 | 〜1650,000円/月 |
最寄駅 | – |
業務内容 |
・新規システム(SAP SD)構築のテスト支援と稼働時のハイパーケア、運用部隊への引き渡し作業 業務アプリケーションの運用及び小規模改修における影響調査・設計・テスト・リリース管理、 ベンダー管理及びクライアントとの調整作業を行っていただきます。 ・作業状況によっては、土日出勤の可能性がございます。 |
基本スキル |
・SAP(SD)経験 ・Unix/Windowサーバの基礎知識(ファイル形式、コマンド実行など、サーバ環境のシステム管理は不要) ・データリカバリーやユーザからの問い合わせ等、システム運用 ・日本語ネイティブ ・率先してコミュニケーションが取れること(日本語) |
この記事では、C#のフレームワークについて解説してきました。
C#がプログラミング言語の中で人気を獲得していく以上、フレームワークの必要性も同時にあがってきます。
適切なフレームワークを採用することで、作業効率を上げて、良い開発ライフを送りましょう!