C#の歴史とルーツを知ろう|もっとC#を深く理解しよう

こんにちは、ITプロマガジンです。

今回はC#をより深く理解したいという方に向けて、C#の歴史やルーツを紹介します。

また「C#の今後の可能性について知りたい」という悩みを抱える方に向けて、C#の未来を紹介しているので、ぜひ最後までご一読ください。

フリーランスエンジニアの
ドンピシャ案件の探し方

「案件はたくさんあるはずなのに、なかなか自分の望む案件が見つからない…」

エンジニア市場は売り手市場であるものの、いまだに正しいマッチングノウハウが確立されておらず、多くの方が案件探しに苦労されています。

ですが、現在の市場感や企業側に刺さる経験・スキルを理解し正しく案件探しをすれば、誰でも自身のバリューを活かし単価を伸ばすことができる、というのも事実です。

ITプロパートナーズでは、

・9割がエンド直案件のため、高単価
・約6割が週3-4案件のため、柔軟に働ける
・事業会社の自社開発案件が多い

などの魅力的な案件を数多く保有し、マッチング能力の高い即戦力エージェントが完全サポートします。

初めてのフリーランス、情報収集段階でも大丈夫です。あなたの働き方にマッチし、単価も高く、最もバリューを発揮できる案件を探しませんか?

⇨ ITプロパートナーズに無料登録してみる

C#ってどんなプログラミング言語?

「C#」は、マイクロソフトが開発した様々な機能をもっているプログラミング言語です。マイクロソフトの根幹的なソフトウェアフレームワークである【.NET Framework】と共に作られました。

ISOなどにより標準化されており、日本でもJISにより選ばれています。
マイクロソフトの【.NET構想】における主要な開発言語であり、基本的なことから応用的なことまで幅広く使用することができます。

他の.NETが使用できる言語のC++/CLIやVisual Basic.NETなどと比較しても生成性や機能性において、最も優れていると言われています。プログラミング言語として、登場してから10年以上経過しており、バージョンもどんどん上がっています。それに伴い新しい機能や技術を取り入れていき、誕生当初の頃に比べて、とても成熟した言語となりました。

C#が辿ってきた歴史とは

プロローグとして、「C#」誕生以前を少し解説します。世界でも最も多く使われていたプログラミング言語は、C言語でした。しかし、時代が経るにつれて、システムが大規模、複雑化していきました。

そこへ新たなプログラミングの開発手法であるオブジェクト指向が登場してきて、さまざまなプログラミング言語に取り入れられていきました。C言語もオブジェクト指向を取り入れて拡張され「C++」となりました。

「C++」はとても強力な言語で、爆発的に普及しました。とても多機能で、多くのことを容易に実現できました。しかし、一方で、色々なことを自分で処理しなければならず、エンジニアの技術格差は広がっていきました。

特にメモリの確保と解放は、多くのエンジニアを悩ませました。そこへ登場したのが、サン・マイクロシステムズが開発した「Java」です。

これの大きな特徴の1つにメモリ管理を自動的にしてくれるガーベジコレクションという機能が盛り込まれていたことです。この機能を有するためエンジニアは、メモリ管理から解放されました。このこともあり、「Java」が瞬く間に普及しました。

C#の出現

2000年頃、マイクロソフトは相互運用性、共通の実行環境や言語への非依存性などを目標に基づいて「.NET Framework」を開発しました。

それと同時に、アンダース・ヘルスバーグを筆頭にプログラミング言語「C#」を開発しています。C#は共通の実行環境である「.NET Framework」上でコンパイルされて実行することができます。

さまざまなプログラミング言語から良い部分を取り入れ、基本的な文法がC言語に近いものなり、C++からの改良が加えられ、さらに「Java」に組み込まれていたガーベジコレクションも機能の1つとして盛り込まれました。

パソコンのOSのシェアはWindowsが多くを占めていたため、マイクロソフトが開発した「C#」は、とても親和性が良いことも普及を加速させました。また、「Java」と似ている部分も多くあるので、今までJavaで開発してきたエンジニアも、移りやすかったこともあるのかもしれません。

余談ではありますが、「C#」は「C++」に「++」をつけて「C++++」が「C#」になったと言われています。

C#の跳躍

「C#」が公開されて以降、着実に機能を充実させています。C#1.0→C#2.0・・・とバージョンも上がって言っており2023年2月時点で、C#11となっています。

各バージョンには、目玉となる機能が必ず盛り込まれるようになっている。それを使うことによって、今までできなかったことができるようになったり、面倒くさい書き方をしなければならなかったことが、すっきりと書けるようになったり、開発者にとっては使いこなすことで生産性を確実に上げられる強力な武器となります。

キーワードを上げておきますと、

  • C#2.0:「ジェネリック」、「イテレータ」
  • C#3.0:「LINQ」
  • C#4.0:「dynamic」、「COMの相互運用」
  • C#5.0:「非同期メソッド」
  • C#6.0:「C#コンパイラーのC#による実装化」、「オープンソース化」
  • C#7.0:「ダブルと分解」「ローカル関数」など
  • C#7.1:「asyncMainメソッド」「default リテラル式」の追加
  • C#7.2:「末尾以外の名前付き引数」「fixedステートメントを使用」など
  • C#7.3:「ピン留めを使用せずにfixedフィールドにアクセス」「汎用的な制約を使用」など
  • C#8.0:「既定のインターフェイスメソッド」「using宣言」など
  • C#9:「レコード」「init 専用センター」など
  • C#10:「レコード構造体」「構造体系の機能強化」など
  • C#11:「未加工の文字リテラル」「ジェネリック数値演算のサポート」

C#がここまで跳躍した要因を3つにわけて紹介します。

LINQの実装

C#の最も強力な機能の1つである「LINQ」は、C#3.0で実装されました。これは「統合言語クエリ」と言われ、「Language INtegrated Query」の頭文字から来ています。

いろいろな種類のデータの集まりに対して、統一された方法でデータに問い合わせることが可能となりました。書き方が2種類あり、1つはSQLにとても似ているため、SQLを読み書き出来る人にとっては、非常に使いやすくなっています。

もう1つの書き方は、今までにない書き方であるため、一見とっつきにくく、あまり好んで使用されていないかもしれない。

しかし、こちらの方が書き方の方が強力であり、より多くの機能を兼ね備えています。と同時に、これを使いこなすために、導入されたクエリ式、拡張メソッド、ラムダ式、匿名型などの使い方も多少知らないとLINQの能力を発揮できません。

データ集合の扱い方に変化が起きた

これが導入されたことによって、データの集合の扱い方がガラリとかわりました。ここで言うデータの集合というのは、配列、コレクション、データベースやXMLデータなどです。

これらのデータを統一されたやり方で共通的に扱うことができるようになったので、LINQを使う人と使わない人では、生産性が大きく変わってしまいました。

しかし、見慣れない書き方から、現場では、SQLのような書き方が推奨されたり、使用すること自体が禁止されていることもあるらしい。

それは、保守などでLINQを理解していない人がついてしまった場合に何もできなくなってしまうからで、担当が出来る人が限定されてしまうので、それを回避するために思い切って禁止などしているようです。

2016年にも大きな転換を向かえる

2016年に大きな転換点となることが起こりました。それは、マイクロソフトがある企業を買収したのです。

その技術は、マイクロソフトが開発している統合開発環境の「Visual Studio」と統合することで、より多くのプラットフォームでを開発をすることができるになりました。元々の開発は、Windows向けの開発しかできませんでした。

しかし、今後は.NET Frameworkを用いて、iOS/Androidのクロスプラットフォームの開発が可能となります。このことは、C#のプログラマが、Windowsのみではなく、iOSやAndroidなどのスマートフォンへ参入が用意となったことを示しています。

C#の未来

マイクロソフトは、近年オープンソース化に力を入れてきました。その最たるものが「.NET Framework」のオープンソース化です。もともと、「.NET Framework」はオープンソースプロジェクトによる互換環境の実装はありました。

しかし、本家のマイクロソフト自身が動き出しました。それでリリースされたのが「.NET Core」です。これは、Windows環境以外にも、Linux、macOS上などで動くソフトウェアを開発できるようになりました。

「Visual Studio」の進化もあり、クロスプラットフォーム開発が容易にできるようなっています。このことは、Windowsの開発をしてきたC#プログラマに新しい選択肢が用意されることを意味し、C#を使って別の環境でも開発することができるようになりました。

C#の次期バージョン7.0の策定、実装も進められているようです。C#7.0では、パーフォマンス改善が予定されており、今よりも良くなることは確実でしょう。さらに目玉機能として、「タプル」、「パターンマッチング」の実装が予定されているようです。

これは、さらに生産性や機能性を上げることになり、ソフトウェア開発に使用されるプログラミング言語として、人気が大幅に上がる可能性を秘めています。

まとめ

いかがでしたでしょうか。C#の歴史から始まり、今後までまとめてみました。「C#」が誕生して以来、バージョンアップを続けてくることで、現代のプログラミング言語として、無くてはならない言語にまで成長してきました。

マイクロソフトの「.NET構想」の要となる言語であり、「.NET Framework」のオープンソース化よりWindow環境以外での活躍も期待されています。

バージョンアップごとに、目玉となる機能が盛り込まれていっています。これらは開発においてとても有効な手段であるにもかかわらず、すぐに使いこなせる人があまりいなく宝の持ち腐れとなってしまうことが多々あります。

使えるものは使っていったほうがいいのではないでしょうか。どんどん使って行くべきだと思います。さらにC#は、「Unity」というゲームを作成することができる開発環境で使用できるプログラミン言語の1つでもあります。

システム開発以外にも、ゲーム業界でも多くの開発者に使用されています。C#は、今後もさらに改善されてより良い言語へと進化していくと考えられます。

また、Windows以外の開発にも使用されることになると思われるので、C#のプログラマは多くの現場で活躍することもあるでしょう。今のうちに、「C#」を初めて、さまざまなサービスや製品に携わっていきましょう。

フリーランスの方でこのようなお悩みありませんか?
  • 高額案件を定期的に紹介してもらいたい
  • 週2日、リモートワークなど自由な働き方をしてみたい
  • 面倒な契約周りはまかせて仕事に集中したい

そのような方はぜひ、ITプロパートナーズをご利用ください!

フリーランスの方に代わって高額案件を獲得
週2日、リモートなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート

まずは会員登録をして案件をチェック!

この記事を書いた人
アバター画像
ITプロマガジン
ITプロパートナーズはITフリーランスの方に案件紹介をしているエージェントです。当メディア「ITプロマガジン」では、フリーランスの働き方から仕事探しまで幅広い情報を日々発信しています。