国内大手サービスでも使われているC#でできること

エンジニア(SE)・プログラマ C#/C#.net

世界では色々なプログラミング言語が使われていますが、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の組み合わせで構築されています。

引用元:https://www.microsoft.com/ja-jp/

Bing

Bingは、Googleのような検索エンジンです。やはり、検索エンジンシェアはGoogleが圧倒的なシェアを占めているので、Bingのシェアは5%程度(2015年8月現在)にとどまります。Yahoo! JapanはGoogleの検索エンジンを使用していますが、Bingはマイクロソフトが独自に開発した検索エンジンです。応答も早く、Googleと比較しても引けをとらない完成度になっています。

引用元:http://www.bing.com/

MSN Japan

MSN Japanは、Yahoo! Japanのようなポータルサイトで上部の検索ボックスにはBingが使われています。Internet Explorer(IE)のデフォルトページになっているので、ご存じの方も多いと思います。Bingの検索エンジンシェアが低いということは、あまりMSN Japanを使われている方がいないということになりますが、ニュースが一面に表示されているので、Yahoo! Japanより見やすいですね。

引用元:http://www.msn.com/ja-jp

価格.com

国内最大手の価格比較サービスの価格.comです。カテゴリをたどったり、検索したりしてほしい商品を見つければ、どこのショップで買うと一番安いかがすぐに分かります。特に便利なのが、商品の仕様を選択して商品を絞り込める機能です(例えば、液晶テレビならば42型で外付けHDD録画機能付きなど)。商品名や型番を知らなくても自分のほしい商品がすぐに見つけられます。この検索画面は、なかなか開発が難しそうですがうまく実装されています。

引用元:http://kakaku.com/

ヤマダウェブコム

全国チェーンの家電量販店、ヤマダ電機のオンラインショップです。上部のヘッダーがAmazonと似ていますが、それ以外は一般的なネットショップです。特徴的な機能としては、ヤマダ電機の実店舗では別店舗より価格が高い場合に値切り交渉に応じてもらえますが、これがオンラインショップでも24時間チャットで受け付けてくれます。値切った商品は自分専用の商品として購入できますので、他にはない面白い機能ですね。

引用元:http://www.yamada-denkiweb.com/

ニッセン

老舗カタログ通販、ニッセンのオンラインショップです。主に、普段ニッセンのカタログ通販を利用している方が利用されると思われますので、20代~50代の女性が多いのではないでしょうか。そのためか、女性にもわかりやすい白色を基調としたシンプルなデザインになっています。商品色やサイズのバリエーション、個数を選択する画面もオーバーレイ表示で選択によって価格や納期が動的に変わるようになっていますので、非常にわかりやすく作られています。この辺は、JavaScriptなどの知識も必要になってきますね。

引用元:http://www.nissen.co.jp/

トレンドマイクロ

ノートンと並ぶウィルス対策ソフト、ウィルスバスターを販売しているトレンドマイクロの公式サイトです。いろいろなウィルス対策商品が紹介されていて、新規購入、契約更新などができます。新規購入時は、オンラインショップに飛ばされますがこちらはJavaで作られているようです。たいていのサイトは一つの技術のみで作られていることは少なく、技術的な理由や開発の時期が異なることによって、複数の技術が採用されています。

引用元:http://safe.trendmicro.jp/home.aspx

サンワサプライ

パソコン、タブレット、スマートフォン周辺機器・アクセサリ販売のサンワサプライの公式サイトです。ドライバーやマニュアル、対応情報の検索にASP.NETが使われています。しっかりカテゴリ分けされていて、商品を探しやすく作られています。上部にオンラインショップへのリンクがありますが、こちらはJavaで作られているようです。

引用元:https://www.sanwa.co.jp/

神獄のヴァルハラゲート

グラニのスマートフォンゲームアプリです。Android、iOS両対応で、C#とASP.NETを使って作られています。スマホアプリの開発は、JavaやSwift、Objective-CとRubyなどの軽量言語で行われることが多いですが、速度と生産性を重視してC#を選択したとのことです。運用はAmazonのクラウドサーバーAWSで行われており、高速なNoSQLデータベースRedisとMySQLの組み合わせで動作しています。ASP.NETでゲームアプリが作られる例は少ないと思いますが、実際に運用されているのは素晴らしいですね。
引用元:http://grani.jp/product/valhalla-gate/

幻塔戦記グリフォン

SEGAのスマートフォンゲームアプリです。Android、iOS両対応でゲームアプリがC#とUnityで作られています。Unityは無料のゲーム開発環境で、WindowsやMac、Android、iOSなど多彩なプラットフォーム用のゲームを作ることができます。ゲームサーバー部分は高速サーバーnginxとRuby、C++で作られていて、スマホのアプリと通信することでゲームが動く仕組みになっています。このように、クライアントとサーバーで別々の技術が使われることは一般的です。

引用元:http://griffon.sega-aiming.com/

大手サービスでも数多く採用されている

C#はマイクロソフトの技術の中核となるプログラミング言語なので、これからも大きく成長していくでしょう。大手サービスでも採用されていますし、一般に公開されない業務システムなどでもよく使われています。C#とVisual Studioを組み合わせた時の生産性は他の言語よりも優れていますので、最大のメリットと言えます。まだまだ、他にもC#で開発されたサービスはたくさんありますので、あなたの見つけたサービスを教えてください。

>>リモートワーク案件も充実!C#/C#.netのフリーランス求人案件をクラウドテックで探す

関連記事