レポート

ソーシャルゲーム開発はまず「言語」を知ることから─「CA×gloops コアエンジニアによるソーシャルゲーム開発勉強会」レポート

この記事を読むのに必要な時間:およそ 3 分

Visual Studioは「ロケットブースター」─言語,フレームワーク,IDEの三位一体で進化するC#

次のセッションは「The Evolution of C#─C#の秘めるポテンシャルとソーシャルゲーム」と題されたグループスの河合 宜文氏による講演です。同社はWindows ServerやSQL Serverなどマイクロソフトの製品によるシステムインフラを構築していることで知られていますが,実際の開発でもVisualStudio上のC#やASP.NETがメインで使用されています。河合氏ご自身もMicrosoft MVP(for Visual C#)です。

河合 宜文氏

河合 宜文氏

まずはC#とは何か,そしてこれまでの進化についてざっと紹介がありました。C#は2002年にTurbo PascalやDelphiなどの生みの親として知られるアンダース・ヘルスバーグがマイクロソフトに移って開発した言語で,現在バージョンは5.0。3.0,4.0のメジャーバージョンアップで劇的な進化を遂げてきたと言います。

Webアプリ,とくにソーシャルゲームなどは前述のように開発スピードが最も重要視されます。この点ではRubyやPerlなど,コードの修正→テスト,実行が比較的容易ないわゆるLL(Lightweight Language)が有利で,コンパイルが必要なC#やJavaなどは不利という評価が一般的です。しかし,C#はその開発プラットフォームであるVisualStudioと合わせて見た場合,C#はLLに負けない軽量さを発揮すると河合氏は言います。⁠Visual Studioはまさにロケットブースター」⁠河合氏⁠⁠。

たとえば動的型付けはLLの大きな特長ですが,静的言語であるC#でも3.0から装備された型推論の機能やIntelliSenseで入力は動的型付け言語並みに手軽に扱え,かつ強力なリファクタリング性能などは静的言語ならではのメリットはそのまま享受できます。

さらに,C# 3.0で装備されたLINQ機能が非常に有効で,これによりSQLと同様な記述でプログラム内(インメモリ)でデータ結合などを行うことができます。このためゲームなどのアプリでも大量データを高速に処理することが可能となります。

ObjectLINQにより,インメモリでたとえばゲームパーティと装備のテーブルを簡単にjoinできる

ObjectLINQにより,インメモリでたとえばゲームパーティと装備のテーブルを簡単にjoinできる

またC# 4.0で搭載されたDynamicにより,LLなどと連携するために部分的に動的な型付けができるようになりました。これによりブラウザのJavaScriptを呼び出すことができるなど,さまざまな応用が考えられます。

C# 5.0ではAsyncというスレッドを使った非同期処理の機能が装備されました。これによって,最近Node.jsなどで用いられている非ブロッキング処理のI/O待ちなどを非常に簡潔に記述することができます。

次世代のC#の機能として注目しているのは,C#のパーサをVisual Studioに装備することで,Visual Studioそのものを簡単に拡張することができる機能だそうです。

まとめとして,河合氏は「大事なことなので3度言います」とC#が言語,IDE(Visual Studio⁠⁠,フレームワーク(.NET Framework)の三位一体で,開発者はより楽ができる方向に進化し続けていることを強調し,講演を結びました。

質問コーナーでは,マイクロソフト製品を使う際のコストやWebアプリ開発での手薄な面などについて質問が集中しました。コストについては,たしかにOSSよりコストがかかりますが,無料版のVisual Studioを利用したり,マイクロソフトの用意する各種支援プログラムを利用することで開発面の出費をかなり抑えることができると説明しました。また運用面も,SQL ServerベースのサービスをAWSをはじめ大手クラウドベンダがほぼ提供し始めているので,今後はコスト差が縮まるのではないかと見ているそうです。

メインターゲットがWebとは思えないマイクロソフト製品によるWebアプリ開発をどう考えるか,という質問には,むしろデスクトップや今後タブレットなどに手厚い製品が出てくることが,UIなどの面でソーシャルゲームアプリ開発についても強みになるのを期待しているそうです。マイクロソフト製品だけでカバーできない部分のOSS開発系との連携も,サードパーティ製品が充実しているので問題ないとコメントしました。

気になる「隣の開発環境」

第3部は両社のパネルディスカッションです。あらかじめ双方で用意した質問にそれぞれが答えるという形で進められました。

まずはCA→グループスの質問です。

Q1 .NETフレームワークでC#以外の言語の採用検討はあるのか?
選択肢としてはVB.NET,F#,IronRubyなどのスクリプト言語がありますが,現在はWebアプリ開発の容易さでC#以外は考えにくいとのこと。調査はつねに怠りなく行っているそうです。
Q2 なぜC#を選択したのか?
同社の前身となる会社でC#を使って開発していたのがそのまま続いているとのこと。
Q3 C#のバージョンアップのタイミングは?
まず新しい開発プロジェクトに対して,その時点の新しいバージョンで開発し,問題がなければ以前のシステムにも適用していく方法を採っているそうです。河合氏によると,言語のバージョンアップにはリスクが高いが,C#は比較的前バージョンとの互換性を重要視しており,バージョンアップのリスクは他の言語より低いとのこと。

パネルディスカッションの模様

パネルディスカッションの模様

続いてグループス→ CAの質問から。

Q1 JVM上でJava以外の言語での開発は検討しているのか?
他の部署でScalaを使っているところがありますが,やはりノウハウの多さからソーシャルゲームではJava以外は使わないそうです。ゲーム本体以外の,たとえば管理ツールには他の言語を検討してもいいとのこと。
Q2 Javaの多数のフレームワークの中から何を選んだのか,その理由は?
おもにStruts,Spring,Seaserが多く,ゲームによりフレームワークが違うそうです。ゲームごとに違うと,開発の慣れなどから人の異動が難しくなりそうですが,それを吸収する意味でもライブラリ化がうまく機能しているとのことです。ただ,それでもある程度の学習が必要となるため,DIをSpring3系,MVCをStruts2系に統一できないか検討しているとのこと。
Q3 エンジニアの採用はJava経験者が多いのか?
Java経験も重視するそうですが,幅広く採用しているとのこと。このあたりの教育についても,ライブラリ化によってノウハウを標準化することが一役買っているといえるでしょう。

最後に両社に質問です。⁠最新の技術をどのように現場にと入りれていくのか? 」

グループスでは社内勉強会を開いて最新技術を紹介する場を設けているとのことです。⁠そうした活動で地道に全体を底上げするしかない」⁠河合氏⁠⁠。

またCAは,もともと新しい技術を取り入れたいという気持ちが強い人が多いので,まずバックグラウンドで導入するなどテスト的に使える方法を見つけ,コストを考慮しつつ試していることが多いそうです。


Webアプリの中でもとくに競争が厳しく流れの速いソーシャルゲームの世界,駆け足な紹介とならざるをえないところもありましたが,そのスピード感を十分感じることができたイベントでした。

著者プロフィール

小坂浩史

gihyo.jp編集部 所属。最近では電子書籍の制作にも関わる。