マルチプラットフォーム開発言語にC#をおすすめする理由

マルチプラットフォーム開発言語にC#をおすすめする理由

いま、C#が勢いを取り戻しつつあります。マイクロソフトの方針転換により、Windows・.NETありきの言語ではなく、マルチプラットフォームで活躍できる言語になっているので紹介します。
開発環境もVisualStudioは不要で無料で構築できますよ!

マイクロソフトの方針

昔はマイクロソフトと言えば、WindowsOSを売るために言語もWindows上でしか動かないように囲い込む傾向がある企業でした。
時代は代わり、OSやソフトの販売では成り立たなくなりマイクロソフトも苦戦していました。
ですが、方針転換してWindowsに囲い込むことを辞め、C#はWindows、Linux、Android、iOS、IoT機器などの様々なプラットフォームで動くものに変えてきました。
また、クラウド化の波に乗り、Azureとして各プラットフォームに対応したホスティングサービスとして発展を続けています。

マイクロソフトの業績推移

業績推移
https://www.stockclip.net/companies/8599

近年、GoogleやAppleなどの競合が出てきたのでマイクロソフトは押され気味と思われますが、2015年頃に若干停滞しましたが実はずっと右肩上がりの企業です。

年別の出来事

  • 2012年 Azure(クラウドホスティングサービス)でLinuxOSに対応
  • 2015年 Visual Studio Codeをリリース(オープンソースの開発エディタ 2018年人気エディタランキング1位)
  • 2016年 .NET Coreをリリース(オープンソース)
    .Net Frameworkを最適化してWindowsに依存せずにLinuxでも動作するフレームワークです。
  • 2016年 Xamarinを買収・提供(オープンソース)
    Xamarin Studioを使ってC#で構築したアプリケーションを、Android・IOSアプリ向けにリリース出来る。
  • 2017年 SQL ServerがLinuxに対応
  • 2018年4月 Azure Sphereを発表
    LinuxベースのIoT機器で、高いセキュリティを備えたハード・ソフト
  • 2018年6月 GitHub買収
    最大手のソースコードのホスティングサービス
Advertisement

開発環境

C#と言えばVisualStudioが無いと作れない!というイメージがありますが、オープンソースのフリーエディタ「Visual Studio Code(VSCode)」でコーディングできます。
フレームワークはマルチプラットフォームに対応した.NET Coreです。
コンソールアプリ、Web用のMVCアプリ、MVVM(Model View ViewModel)のRazorPageアプリなど、様々なアプリが開発できます。
.NET Coreは未成熟、採用例が少ないと言われる事もありますが、数十年の経歴を持った.NET Frameworkをベースに最適化しているため、それほど心配する必要はないでしょう。

静的言語としてのC#の強みは、VSCodeのMicrosoft公式の拡張機能「C#(OmniSharp)」をインストールする事で完璧なエラーチェック、インテリセンス、リファクター、デバッグ環境を得られます。
開発エディタとしては、Visual Studioに引けを取らない水準でコーディングする事が出来ます。

.NET Standard

C#で作ったアプリケーションはDLLとしてパッケージ化されます。
アプリケーションのフレームワークを.NET Standardで作ってDLLにすると、以下のWPF、WinForms、ASP.NET、UWP、ASP.NET Core、iOS、OS X、Android用の全てのアプリケーションから参照することが出来ます。
プラットフォームに依存しないベース部分は.NET Standardで開発し、各プラットフォームに依存する部分はそれぞれ実装することで、
プラットフォームの垣根を越えてDRY原則に則ってシステムを構築できます。

C#という言語について

C#という言語自体は、昔から評価が高い言語です。
静的型付け言語による厳密なエラーチェックによるトラブルの未然防止、
コンパイル言語の高速な処理速度、
LINQ(統合言語クエリ)によるスマートなデータ操作、
マルチスレッド対応、
NuGet(オープンソースのパッケージマネージャ)によるライブラリの活用とメリットが数多くあります。

また、マイクロソフト自体が強力なフレームワークを用意しています。
Web:ASP.NET Coreフレームワーク
ORM:EntityFramework Core(各データベース用のドライバも用意されています)

まとめ

PythonやJavaScript等の動的型付け言語が人気ですが、ある程度の規模のアプリケーションの場合はC#やJava等の静的型付け言語の方が開発効率・パフォーマンス面で有利です。
ソフトウェアが長寿命化する昨今では、最初は小規模と思って作り始めたアプリケーションが中~大規模に膨らんでいくことも珍しくありません。
Webアプリであれば、Linux・Apache(Kestrel)・Postgres・C#といった組み合わせで開発エディタはVSCodeを採用すれば、環境構築に掛かるコストはゼロで済みます。
また、Webアプリだけの案件のはずが、いつの間にかスマートフォン用アプリも必要になった場合にも.NET Standardで共通するベース部分をライブラリとして再利用し、Xamarinによりスマートフォンに依存する処理を実装する事も可能です。
プログラム単位で再利用できるだけではなく人員や学習コストもそのまま持っていける為、一層効率化を見込むことが出来ます。
クラウドに環境構築する場合も、マイクロソフトのAzureを使えば親和性も高く、簡単にデプロイすることが出来ます。

言語の選択肢として、C#も魅力ある言語ではないでしょうか。

プログラミングカテゴリの最新記事