世界では色々なプログラミング言語が使われていますが、C#も現代的な人気のある言語です。言語にはできること・できないことがあります。だからこそ、多数の言語が存在するのです。この記事では、C#にできること・できないことを説明した後で、実際にC#が利用されているサービスを紹介します。
ではまず、C#にできること・できないことを見ていきましょう。
参照:C#がどんなプログラミング言語か解説した記事はこちら!
C#にできること・向いていること
デスクトップアプリ
現在はウェブアプリケーションを開発することが主流となっており、デスクトップアプリの開発は減りました。それでも、要件によってはデスクトップアプリでの開発が必須となる場合があり、需要がなくなることは当面無いでしょう。
C#は、開発環境である「Visual Studio」と連携して開発されることを前提としており、それにより効率的な開発が可能になっています。また、C#は「.NET Framework」上で動作しますが、このフレームワークには「WinForms」と「WPF(Windows Presentation Foundation)」という、2つのGUIフレームワークがあります。GUIフレームワークは、デスクトップアプリに不可欠な画面や処理を簡単に作れるようにするものです。
「WinForms」は、「Visual Studio」でGUIデザイナーが用意されており、ボタンやテキストボックスをドラッグ&ドロップしていくだけで画面が作成できるようになっています。後は、ボタンがクリックされた時やテキストボックスに何か入力された時など、何かが起こった時に実行したい処理(プログラム)を書いていくだけでアプリを作成していくことができます。
「WPF」は「WinForms」の後に作られたGUIフレームワークなので、「WinForms」より高機能になっています。しかし、その分複雑で覚えることが多いです。「WPF」では「XAML(Extensible Application Markup Language)」というHTMLに近い文法を使って画面を記述していきます。デザイナーもありますが、コードを直接記述していくことが多くなります。その分「WinForms」より自由度が高く、たいていの要求には応えることができます。
ウェブサービス・ウェブサイト
インターネットが当たり前の時代になり、インストールが必要なデスクトップアプリよりもウェブサービスが主流になってきました。C#では「ASP.NET Web Form」と「ASP.NET MVC」という2つのフレームワークがあります。フレームワークとは、一からすべてプログラミングするのではなく、一般的に必要な大きな枠組を用意することで、そのサービスに特有の部分のみをプログラミングするだけでサービスを構築できるようにするものです。
「ASP.NET Web Form」は、上述の「WinForms」のウェブサービス版と言ってもいいでしょう。ボタンやテキストボックスをドラッグ&ドロップしていくだけで、画面を作ることができます。後は、作った画面に処理(プログラム)を書いていくだけです。また、ウェブサービス特有の問題も考慮されているので、インターネットを意識することなくデスクトップアプリの様に開発することができます。
「ASP.NET MVC」は、よりモダンなウェブサービスを開発するために作られました。上述の「ASP.NET Web Form」では生産性は高いのですが、HTMLやCSSなどの細かい制御ができませんでした。そのため、「ASP.NET MVC」ではHTMLなどの自動生成を極力少なくして、エンジニアが自由に制御できるようになっています。
スマートフォンアプリ
「Visual Studio 2015」からはXamarin社が提供するスマートフォンアプリ開発フレームワークが組み込まれました。C#でAndroidアプリとiOSアプリを作ることができます。本格的に使う場合は有料プランの契約が必要ですが、制限付きの無料プランで試してからでもOKです。
ゲームアプリ
無料でダウンロードできるゲームアプリ開発環境「Unity」を使えば、C#でWindows、Mac、Android、iOSなど多数のプラットフォームで動作するゲームアプリを作れます。「Visual Studio」と連携することでソースコードの編集を「Visual Studio」でできるようになりますので、生産性高くゲームアプリ開発ができます。
IoT・スマートデバイス
まだ開発中ではありますが、「IoT(Internet of Things)」やホログラムデバイス「HoloLens」でのプログラミングも可能になる予定です。非常に先進的な取り組みなので、これから期待できますね。
C#にできないこと・向いていないこと
3Dグラフィックス
3Dゲームや3Dグラフィックなどハードウェアの能力を最大限に引き出す必要があるグラフィック系の処理はC#には向いていません。以前、XNAというゲーム制作環境がリリースされましたが、すでに開発が終了しています。やはり、この分野はC++などハードウェアに近いプログラミングができる方が向いています。
高度な最適化が必要とされる計算処理
C#で作られたアプリは、中間言語(MSIL)形式に変換されてから「.NET Framework」上で実行されます。このため、エンジニアが高度な最適化を行うことは難しく、「.NET Framework」に任せることになります。とはいっても、C#が遅いわけではなく、年々実行速度も向上していきますので、一般的なアプリでは問題にならないでしょう。
C#で開発されている実際のサービス
マイクロソフト
C#はマイクロソフトが開発しているので、もちろんマイクロソフトのサービスに使われています。マイクロソフトやWindows、Xbox、Skypeなどの公式サイトなどが一例です。他にも、Windows8/8.1やWindows10、Windows Phoneなどで使えるアプリストアがあります。他のウェブサービスもそうですが、ウェブサーバーのIIS(Internet Information Services)とASP.NETの組み合わせで構築されています。
Bing
Bingは、Googleのような検索エンジンです。やはり、検索エンジンシェアはGoogleが圧倒的なシェアを占めているので、Bingのシェアは5%程度(2015年8月現在)にとどまります。Yahoo! JapanはGoogleの検索エンジンを使用していますが、Bingはマイクロソフトが独自に開発した検索エンジンです。応答も早く、Googleと比較しても引けをとらない完成度になっています。
参照:公式サイト「bing」
MSN Japan
MSN Japanは、Yahoo! Japanのようなポータルサイトで上部の検索ボックスにはBingが使われています。Internet Explorer(IE)のデフォルトページになっているので、ご存じの方も多いと思います。Bingの検索エンジンシェアが低いということは、あまりMSN Japanを使われている方がいないということになりますが、ニュースが一面に表示されているので、Yahoo! Japanより見やすいですね。
参照:公式サイト「MSN」
価格.com
国内最大手の価格比較サービスの価格.comです。カテゴリをたどったり、検索したりしてほしい商品を見つければ、どこのショップで買うと一番安いかがすぐに分かります。特に便利なのが、商品の仕様を選択して商品を絞り込める機能です(例えば、液晶テレビならば42型で外付けHDD録画機能付きなど)。商品名や型番を知らなくても自分のほしい商品がすぐに見つけられます。この検索画面は、なかなか開発が難しそうですがうまく実装されています。
ヤマダウェブコム
全国チェーンの家電量販店、ヤマダ電機のオンラインショップです。上部のヘッダーがAmazonと似ていますが、それ以外は一般的なネットショップです。特徴的な機能としては、ヤマダ電機の実店舗では別店舗より価格が高い場合に値切り交渉に応じてもらえますが、これがオンラインショップでも24時間チャットで受け付けてくれます。値切った商品は自分専用の商品として購入できますので、他にはない面白い機能ですね。
ニッセン
老舗カタログ通販、ニッセンのオンラインショップです。主に、普段ニッセンのカタログ通販を利用している方が利用されると思われますので、20代~50代の女性が多いのではないでしょうか。そのためか、女性にもわかりやすい白色を基調としたシンプルなデザインになっています。商品色やサイズのバリエーション、個数を選択する画面もオーバーレイ表示で選択によって価格や納期が動的に変わるようになっていますので、非常にわかりやすく作られています。この辺は、JavaScriptなどの知識も必要になってきますね。
参照:公式サイト「ニッセン」
トレンドマイクロ
ノートンと並ぶウィルス対策ソフト、ウィルスバスターを販売しているトレンドマイクロの公式サイトです。いろいろなウィルス対策商品が紹介されていて、新規購入、契約更新などができます。新規購入時は、オンラインショップに飛ばされますがこちらはJavaで作られているようです。たいていのサイトは一つの技術のみで作られていることは少なく、技術的な理由や開発の時期が異なることによって、複数の技術が採用されています。
サンワサプライ
パソコン、タブレット、スマートフォン周辺機器・アクセサリ販売のサンワサプライの公式サイトです。ドライバーやマニュアル、対応情報の検索にASP.NETが使われています。しっかりカテゴリ分けされていて、商品を探しやすく作られています。上部にオンラインショップへのリンクがありますが、こちらはJavaで作られているようです。
神獄のヴァルハラゲート
グラニのスマートフォンゲームアプリです。Android、iOS両対応で、C#とASP.NETを使って作られています。スマホアプリの開発は、JavaやSwift、Objective-CとRubyなどの軽量言語で行われることが多いですが、速度と生産性を重視してC#を選択したとのことです。運用はAmazonのクラウドサーバーAWSで行われており、高速なNoSQLデータベースRedisとMySQLの組み合わせで動作しています。ASP.NETでゲームアプリが作られる例は少ないと思いますが、実際に運用されているのは素晴らしいですね。
参照:C#がどんなプログラミング言語か解説した記事はこちら!
フリーランスになるために必要な知識やスキルアップの方法等、様々なお役立ち情報を発信していきます。
(リモートワーク案件に強いフリーランスエージェント「クラウドワークス テック」を運営)