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を呼び出せる点も魅力です。
3つの質問に答えるだけで、フリーランスエンジニアとしての単価相場を算出します。 スキルやご経験にマッチする案件もあわせてご紹介いたしますので、気軽にご活用ください! ※単価相場の算出に個人情報の回答は必要ございません。