【まとめ】開発会社だから語れるC#での開発のメリットとデメリット
1950年代以降、「今使われている言語」の改良を目指して数多くのプログラミング言語が誕生してきました。
プログラミング言語の歴史はエンジニアリングの改善と発展の歴史でもあります。
その歴史のなかで、C言語やC言語を強化したC++が中心であった時代がありました。
どちらも強力な言語ではあるものの、求められる技術レベルが高く、特にメモリ管理などの面で敷居が低い言語とはいえないものでした。
こうした背景のもと、さらなる改善に向けてマイクロソフトがC#を開発しました。
従来のC系言語に対する改善のために開発されたC#は、C系言語特有の汎用性の高さ、無償で提供される高機能な開発環境、標準化された多くの仕様による自由さ等、多くのメリットを持つ言語となっています。
C#はWindowsやXML Web サービス、サーバーアプリケーション、データベースアプリケーションなどのさまざまなアプリケーションを作成できます。
現在も多くの企業でC#による開発が行われ、C#で開発されたシステムが使われています。
NTQは、設立から10年間でC#を使った開発を数多く行ってきました。
今回は、C#について語らせていただきます。
■C#とは
C#は、2002年1月にマイクロソフトがリリースしたC系言語の一つです。
C系言語をベースとしていますが、C#の開発にはボーランド社のDelphi開発陣が参加しており、構文構造はDelphiの影響を受けています。
C#の命名の理由として、C++にさらに++をつけて#にしたと言われています。
この話の通り、C#はC++をさらに汎用的に自由さを高く進化させた言語になっています。
なお、現在のC#のバージョンは9.0で、2020年に.NET 5.0の一部としてリリースされました。
■C#での開発に特に適したもの
C#は、柔軟性が高く、あらゆるソフトウェア及びアプリケーションに使用可能といえます。
ここではC#のメリットを最大限活用できる分野をご紹介します。
①ゲームの開発
PCゲーム、ゲーム機用ゲームの開発はC#での開発の中でも非常に人気のある用途の1つです。
UnityがC ++とC#の両方で構築されているため、今日の世界のトップゲームの構築にも頻繁に使用されています。
また、 C#で作成できるゲームは非常に幅広く、プラットフォーム型ゲーム、サイドスクロールアクション、RPG、拡張現実(AR)、仮想現実(VR)、モバイルゲームなどさまざま領域に広がっています。
②Webアプリケーション
.NET Frameworkを使えるという点で、WebアプリケーションとC#の相性は非常にいいです。
C#でのWebアプリケーションでは、.NET Frameworkのみならずもちろんオープンソースプラットフォームも使用できます。
WebAPI開発、Webフロントエンドも対応可能なため、柔軟な開発も期待できます。
③デスクトップアプリケーション
WindowsアプリケーションとmacOS向けアプリケーション等デスクトップアプリケーションも、C#で開発可能です。
特にC#がMicrosoftが開発した言語であることからもわかる通り、Windows用のソフトウェアは得意領域です。
コードの効率の良さ、スケーラビリティ、保守の簡易さから、C#はアプリケーション開発に最適な言語の一つであるといえます。
実際、Adobe Photoshop、Mozilla Firefox、MySQL ServerやThunderbirdなど、有名なアプリケーションはこの言語で開発されています。
■C#のメリット
①オブジェクト指向である
C#は純粋なオブジェクト指向言語であるため、他のオブジェクト指向言語と同様のメリットがあります。
例えば、C#で開発を行うと、オブジェクト指向言語であることから完成品のカスタマイズがしやすくなり、仕様変更などに柔軟に対応ができます。
また、C#での開発のようなオブジェクト指向に基づいておこなわれる開発では、多数のパーツによって構成されるものを細部に至るまで作業者が理解しながら作業を進めていきます。
そのため個々の作業者のクラスに対する理解度が高ければ、作業者同士での認識の共有がしやすくなり、スムーズな作業につながります。
さらにオブジェクト指向で開発された製品、またはクラスには、再利用しやすいというメリットがあります。
そのため、既製品と仕組みが基本的に同じ製品を作る場合、開発作業の大幅な効率化が可能になります。
②メモリリークが起こりにくい
C#はメモリリークが起こらないように自動でリソースの開放が行われる仕組みが備わっています。
この仕組みをガベージコレクションといいます。
ガベージコレクションを備えているため、C#で開発する場合、特に意識せずとも、自動的に不要となったメモリ領域が解放されます。
そのため、C#を使って開発したシステムは実行中にハングしづらく、混乱を引き起こしづらくなります。
③ライブラリが豊富である
C#には、様々な機能を簡単に実装できる豊富なライブラリがあります。
JSONを扱うためのJSON.NET、導入が簡単でアプリケーションのデバッグなどに必要となるログ情報を任意の場所に出力できるNLog、ネットワークやデータベースにアクセスするクラスをモックしてテスト時間を短縮することのできるmoq等、C#での開発を楽にするためのライブラリがたくさんあります。
また、高度な数学計算をサポートするmath.netや機械学習ライブラリとして有名なTensorFlowSharp等のライブラリにも対応しており、より高度で先進的なアプリケーションやシステムもC#で開発できるようになっています。
④汎用性が高い
C#は元々Windowsのみで動作するように開発されていました。
しかし、方針の変更があり、現在のC#はWindows、Mac、Android、iOSなど数多くのプラットフォームでの開発ができる非常に便利なプログラミング言語になっています。
また、C#では、通常の実行ファイル等を起動して動かすGUIアプリケーションの他に、コマンドライン上で動くCUIアプリケーションやWebアプリケーションの開発も可能です。
⑤実行速度が早い
C#にはVisual Studioという統合開発環境があり、実行速度が早く、ストレスがなく開発を進めることができます。
実行速度が速いと、開発スピードが上がることはもちろん、そのシステムを使うユーザーもストレスなく使うことができます。
この点からC#は開発者にもユーザーにもフレンドリーな言語といえます。
■C#のデメリット
他のプログラミング言語と同様に、C#にも欠点があります。
C#はコーディング標準が厳密に規定されることが多く、ベストプラクティスが強く推奨されています。
そのため、プロジェクト全体でのコード管理は容易な一方、エンジニアからすると自由度が低いと不満が出ることが少なからず起こります。
また、今までのC#の開発は.NET Frameworkに大きく依存していたため、実際にはそのプラットフォームまたはWindows環境での実行を前提としていることが多いです。
現在ではC#で開発された多くのシステムはMacとLinuxでも実行できるようになっていますが、それを知らずにOSに依存しないアプリ、より費用効果の高いソリューションを求めて他の言語を使おうとすることも多いです。
また、C#はコンパイルが必要です。
PHP等のインタプリタ型言語と異なり、気軽に実行しづらいです。
コンパイルが終わるまでエラーが発生しているのかがわからないため、インタプリタ型言語と比較すると、単純なミスを見つける際、時間がかかる場合があります。
■C#で開発されたNTQの事例
NTQの案件ではC#の案件は15%を占めており、多くのお客様に評価していただいております。
その中で特に評価いただいている分野は以下の5つになります。
・仮想動画アプリ、仮想カメラアプリ
・エンタプライズ向けの財務系システム、販売管理システム
・翻訳システム、言語学習アプリ
・企業向けの業務のWebアプリ、業務システム
・医療系システム
■まとめ
C#に関するメリット5つとデメリット3つをまとめました。
NTQは、10年以上にわたる600件を超える開発実績があり、日系システム開発企業と比較して最大40%コストを抑え、日本レベルの品質も実現いたします。
モバイルアプリやWebアプリやデスクトップアプリ等の開発を検討中の皆様、開発人員が不足しているITベンダーの皆様は、ぜひ一度NTQにお問い合わせくださいませ。
「お問い合わせ」ページ