【インタビュー】C#の専門集団として設立されたCygamesの技術開発子会社Cysharp…「C#」第一人者である河合宜文社長に設立の目的や事業内容を訊く
2018年10月30日、Cygamesがゲーム関連コンテンツの企画・開発および技術コンサルティングを行う子会社「Cysharp」の設立を発表(関連記事)した。
Cysharpは、C#を中心としたゲーム開発の技術開発とコンサルティング業務などを主な事業内容とする技術開発子会社。代表取締役社長として就任したのは、C#を用いた開発の第一人者である河合宜文氏だ。
C#は、マイクロソフトが開発したプログラミング言語。ゲームエンジンUnityでも採用されているため、ゲーム開発において使用する場面が近年増加している。また、モバイルでのネットワーク環境の向上で、高性能なサーバー技術が要求されている中、パフォーマンスと開発効率の両立が可能な言語としてと期待されている。
河合氏は、世界中で使われているC#のオープンソースソフトウェアライブラリを複数開発。2011年から現在までMicrosoft MVP for Developer Technologies(旧称Visual C#)を連続受賞しており、日本のC#における技術開発をリードしてきた。
今回、その河合氏へのインタビューを実施。プログラミング言語C#の専門集団として今年9月に設立した「Cysharp」について、設立の目的や事業内容について話を聞いた。
株式会社Cysharp
代表取締役
河合 宜文 氏
――本日はよろしくお願いいたします。Cysharpという新会社は、どのような経緯で設立されたのでしょうか。
私は元々、グラニというゲーム開発会社で取締役CTOとして6年間、C#を使ったゲーム開発を行ってきました。今年の頭に私が関わってきたゲーム事業が他社に譲渡されることになり、そのタイミングで退任しました。ゲームの開発・運営は一定の成果を出していたので、自分のキャリアに区切りをつけることにしました。
その後半年間、フリーランスの立場で開発やコンサルティング等の仕事をしていたのですが、改めてずっと言い続けていた「C#を世の中に普及させる」ことについて、正面から取り組んでいきたいという思いを強くしました。
そのためには過去にお話した(関連記事)「C#といったら〇〇(という会社)だよね」というような業界をリードする会社を創っていかなければならないし、そして同時に自分のやり残したことでもありました。
――それがまだ道半ばだったと。そこからCygamesとタッグを組むことになったのは、どんな経緯からでしょうか?
「C#を世の中に普及させる」というのを個人が唱えるというのは大言壮語のようで、自分だけの力でできることではない。そこを目指すにあたってどう取り組んでいけばいいかを考えていた中で、出会ったのがCygamesでした。
数カ月に渡ってやり取りする中で、何事も徹底的にやるという本気度を強く感じました。全方位に全力で過剰なほどに投資する。それはテクノロジーに関しても例外ではなくて、Cygames Researchのようなアカデミックに近い領域から、Cyllista Game EngineのようなAAAタイトル開発を目指す独自のゲームエンジンまで、本気で取り組んでいて、そして徹底的にやるからこそ実を結んでいるのですね。
本気で世界のトップを狙っている会社だと感じたことが、Cygamesと一緒にやろうと決めた理由です。 一緒に取り組むことで、国内だけではなく世界に向けて発信していくことができると考えました。
――Cysharpはどのような事業を行っていく会社なのでしょうか。
当然C#を中心に、なのですが、まずはゲーム領域においてC#の適用領域を開拓していこうと思っています。技術開発をメインに据えつつ、それをオープンソースベースでやるのが大きな特徴と言えるかと思います。
開発する領域は、クライアント側、サーバー側問わず、ゲームに関してC#でやれるあらゆることを突き詰めていくつもりです。
それをCygames社内はもちろん、外部の会社や個人の方々にも使っていただく形で、C#をどんどん発展させていきたいです。その技術が優れていると認知され、支持されていけば、Cysharp、ひいてはCygamesの技術力が世間に認知されて、結果的にプラスになると考えています。
ゲーム業界全体にとってもインパクトのある成果を出していきたいですね。
――オープンな開発というのは、日本のゲーム業界としては異例ですよね。競合となる会社に対しても技術をオープンにしていくと?
そこは全然ウェルカムで。このモデルは前職時代から、自分の作ったプロダクトはオープンに出すという形でやってきたことでもあるんです。実際に、私の開発した「UniRx」(Unity用のライブラリ)は国内の多くのモバイルゲームに採用されていますし、「MessagePack for C#」というC#で最も高速なシリアライザライブラリはマイクロソフト公式フレームワークの標準シリアライザに採用されるなど、世界中で使われています。
それが、会社としての技術力のブランディングに繋がっていたんですね。また、多くの開発者の目に触れることで、バグも減り性能も良くなっていけば、開発してるゲーム自体にも大きくプラスになります。
こういうやり方は特に目新しいことではなくて、Web業界などでは、テクノロジーはオープンにした上で事業で稼いでいく、というモデルも少なくありません。そうしたモデルから一番遠いのがゲーム業界かもしれません。
――ゲーム業界は各社ごとの文化や技術に独自性を求める傾向がありますからね。
独自の技術が競争力の源である場合や、公開したくても自社に依存し過ぎている部分が多すぎて外に出せない場合など、理由は色々とあると思います。しかし、今は進化のスピードが速い時代なので、そのやり方だけでは世界から取り残されてしまうという危機感があります。
特に中国語圏の勢いは、GitHubで観測できるだけでも、ものすごいものがあります。中国語でしか公開されていないものも多いため、日本にはほとんど情報が入ってきませんが、開発者の間で精力的に技術情報が交換されてるのは間違いありません。
最近の中国産のゲームの完成度が高く、開発速度も速いのは、そういう下地があるからでしょう。「知の高速道路」という言葉がありますが、それがとんでもない速度とレベルで整備されていってるのですね。日本も後れを取ってはいけないし、素晴らしい技術があるならそれをしっかりと示していくことが必要だと思います。
――Cysharpはゲーム業界全体の発展のことまで考えているわけですね。
結果としてそうなるのが理想的です。何と言ってもゲーム業界の良いところは、使われる技術が一級のものであること。だからこそ、ゲーム業界で鍛えられた技術はどこの業界でも役に立つはずなんです。C#は元々広い用途で使われている言語なので、優れた技術を開発し、提供することの効果は計り知れないものがあると思います。
Cysharpの事業はゲーム領域を対象としてはいますが、結果的にどの業界でも役に立つものを開発していけると考えています。なのでゲーム業界外の人もCysharpには注目しておいてほしいですね(笑)。
――色々なものに使われているというC#というプログラミング言語ですが、河合社長はどういった点が優れているとお考えですか。
バランス感覚に優れた、実用的な言語として今も第一線を走っているというところです。
例えば、最近の言語に取り入れられることの多いasync/await機能は、メジャーな言語としてはC#が最初に、6年も前に提示したものですし、登場当初からIDE(統合開発環境)との相性を考えた先進的な設計になっている点も魅力です。それでいて複雑になりすぎず、誰もが書きやすいレベルに言語仕様を落とし込むバランス感覚は今も随一だと思っています。
改善は今も精力的に続いていて、来年にも新しいバージョン(C# 8.0)が出る予定があるので、それも楽しみですね。
言語的に成熟してきているということもあり 、ここ数年は言語/フレームワーク両面からのパフォーマンスチューニングに注力しているというのも、様々な言語が比較対象に並ぶこの時代には欠かせないところですね。Techempower Framework Benchmarks というウェブフレームワークのベンチマークサイトでの、純粋なリクエスト/レスポンスの計測で、C#は上位10指に入っています。
上位はもう誤差範囲レベルなので、Pure C#実装でもC++やRustなどと十分肩を並べた速度が、実用的なアプリケーションにおいても叩き出せるという証明の一つと思っています。実はこれ、最初の頃はC#はこんな上位にいなかったんですよ。C#が真摯にパフォーマンスに取り組み続けてきた成果がちゃんと出ているということです。
もう1つ、Unityで使われているためゲーム開発との相性が良いという点も、他の言語にはない大きなアドバンテージです。私はそのメリットを最大限に活かすべく、クライアントのUnity側をC#で書くなら、サーバー側もC#で書けばいいよね、という「C#大統一理論」を提唱しています。
――「C#大統一理論」について、もう少し詳しく教えてください。
クライアントとサーバーの両方がC#で書かれていると、色々なメリットが生まれます。同じ開発環境上にクライアント/サーバー両方のソースコードを並べられるので、エディター上でも自由に行き来できるし、そのまま両方をデバッグして単一プロジェクトであるかのようにステップ実行可能です。また、データ型も同じなので、中間コード言語を介することなくソースコードをそのまま共有できます。
同じメモリレイアウトを共有できるので、クライアント/サーバー間でメモリデータを直接転送することでパフォーマンスを稼ぐことも可能でしょう、これは今実用的に動かすために研究しているところです。
言語が同じなので、サーバーのエンジニア、クライアントのエンジニアそれぞれが両方を理解しやすいという、スキルセットの面でも好都合ですね。
サーバー側の選択肢ってたくさんあるし、実際PHPでもJavaでも Ruby でもGo でも良いとは思います。しかし、クライアントサイドがUnityでC#を使っているのなら、開発効率やパフォーマンスの最大化を考えたとき、サーバー側の選択肢としてC#は絶対に一歩抜き出た選択肢になっているはずなんですよ。
――その選択肢をチョイスしない会社があるのはなぜでしょう?
と言うより、ほとんどの会社がチョイスしていないです(笑)。なぜC#を選ばないのかというと、1つは、C#がWindowsサーバー用だと思われていること。Windowsだとライセンス費用がかかるため、Linuxサーバーを利用している会社は、コスト面から考えてC#を選択肢にすら入れていなかったんですね。
それに、サーバーを扱う部門のエンジニアたちもLinuxをメインに使ってきたはずなので、Windowsはあまり触りたくないという気持ちもあるでしょう。
実際に、5年前はそういう状況でしたが、最近はLinux上で動くC#が十分実用的になってきました。今こそLinux上でC#を動かすという選択肢を検討する良いタイミングではないかと思います。
ただし、そういう機運が高まったとしても、「サーバー側で使うC#に実績がない」ことが大きなハードルになるかもしれません。C#でサーバー開発をやってみたいと思っても、やってきたことがないので出来るかもわからないし、今まで蓄積してきた内製ライブラリも作り直しになるだろうし、不安はあって当然です。
Cysharpがサーバー開発の実績を作り、手法を公開していくことで、エンジニアの不安を取り除き、「知の高速道路」を整備していきます。
――ちなみに、CygamesでC#を使ったタイトルはあるんですか?
クライアントサイドのUnityでは、ほぼすべての弊社開発タイトルで使っています。『シャドウバース』や『プリンセスコネクト!Re:Dive』などもそうですね。
――サーバーサイドではいかがでしょうか?
現状では、サーバーサイドはほぼすべてPHPで開発しています。一部のタイトルはリアルタイム通信やマルチプレイなどの機能でC#を採用しているものもあります。Cysharpの設立から日が浅いこともあり、まずは検討からという段階ですね。
さすがに、私が入ったからといって、一気に転換というわけにはいきません。しかし、活用できる場所は色々あると思っているので、協力して適用範囲を広げていきたいと考えています。
――Cysharpの今後の展望について教えてください。
第1弾として、12月14日に【 リアルタイム通信フレームワーク「MagicOnion」】を公開しました 。今、モバイルゲームやVRにおいてリアルタイム通信は必須の要素です。しかし、現状のUnityでは決定打というものがないため、それを打開するものとして開発しました。皆さんにぜひ使っていただければと思います。
もう1つ、サーバーだけでなくUnityのほうにも力を入れたいと考えています。UnityでハイパフォーマンスなC#とは何なのかを示していきたいし、それをできればわかりやすい形でお見せしたいです。第2弾として予定しているので、ご期待下さい!
――それでは最後に読者に向けてメッセージをお願いします。
「C#と言えばCysharpだよね」を体現していきます。そして、Cysharpの活動を通して、C#がゲーム業界全体で使われ、シェアナンバーワンの言語になるように推進していきます。
また、「C#っていいよね」と思いつつもなかなか踏み出せなかったエンジニアの方たちには、ぜひCysharpの仕事に注目していただきたいです。C#が安心して使えるという答えを、我々が様々な形で出していきます。だから、今からでも勇み足でC#に踏み込んでみましょう!
© Cysharp, Inc.
Cysharpは、C#を中心としたゲーム開発の技術開発とコンサルティング業務などを主な事業内容とする技術開発子会社。代表取締役社長として就任したのは、C#を用いた開発の第一人者である河合宜文氏だ。
C#は、マイクロソフトが開発したプログラミング言語。ゲームエンジンUnityでも採用されているため、ゲーム開発において使用する場面が近年増加している。また、モバイルでのネットワーク環境の向上で、高性能なサーバー技術が要求されている中、パフォーマンスと開発効率の両立が可能な言語としてと期待されている。
河合氏は、世界中で使われているC#のオープンソースソフトウェアライブラリを複数開発。2011年から現在までMicrosoft MVP for Developer Technologies(旧称Visual C#)を連続受賞しており、日本のC#における技術開発をリードしてきた。
今回、その河合氏へのインタビューを実施。プログラミング言語C#の専門集団として今年9月に設立した「Cysharp」について、設立の目的や事業内容について話を聞いた。
株式会社Cysharp
代表取締役
河合 宜文 氏
――本日はよろしくお願いいたします。Cysharpという新会社は、どのような経緯で設立されたのでしょうか。
私は元々、グラニというゲーム開発会社で取締役CTOとして6年間、C#を使ったゲーム開発を行ってきました。今年の頭に私が関わってきたゲーム事業が他社に譲渡されることになり、そのタイミングで退任しました。ゲームの開発・運営は一定の成果を出していたので、自分のキャリアに区切りをつけることにしました。
その後半年間、フリーランスの立場で開発やコンサルティング等の仕事をしていたのですが、改めてずっと言い続けていた「C#を世の中に普及させる」ことについて、正面から取り組んでいきたいという思いを強くしました。
そのためには過去にお話した(関連記事)「C#といったら〇〇(という会社)だよね」というような業界をリードする会社を創っていかなければならないし、そして同時に自分のやり残したことでもありました。
――それがまだ道半ばだったと。そこからCygamesとタッグを組むことになったのは、どんな経緯からでしょうか?
「C#を世の中に普及させる」というのを個人が唱えるというのは大言壮語のようで、自分だけの力でできることではない。そこを目指すにあたってどう取り組んでいけばいいかを考えていた中で、出会ったのがCygamesでした。
数カ月に渡ってやり取りする中で、何事も徹底的にやるという本気度を強く感じました。全方位に全力で過剰なほどに投資する。それはテクノロジーに関しても例外ではなくて、Cygames Researchのようなアカデミックに近い領域から、Cyllista Game EngineのようなAAAタイトル開発を目指す独自のゲームエンジンまで、本気で取り組んでいて、そして徹底的にやるからこそ実を結んでいるのですね。
本気で世界のトップを狙っている会社だと感じたことが、Cygamesと一緒にやろうと決めた理由です。 一緒に取り組むことで、国内だけではなく世界に向けて発信していくことができると考えました。
――Cysharpはどのような事業を行っていく会社なのでしょうか。
当然C#を中心に、なのですが、まずはゲーム領域においてC#の適用領域を開拓していこうと思っています。技術開発をメインに据えつつ、それをオープンソースベースでやるのが大きな特徴と言えるかと思います。
開発する領域は、クライアント側、サーバー側問わず、ゲームに関してC#でやれるあらゆることを突き詰めていくつもりです。
それをCygames社内はもちろん、外部の会社や個人の方々にも使っていただく形で、C#をどんどん発展させていきたいです。その技術が優れていると認知され、支持されていけば、Cysharp、ひいてはCygamesの技術力が世間に認知されて、結果的にプラスになると考えています。
ゲーム業界全体にとってもインパクトのある成果を出していきたいですね。
――オープンな開発というのは、日本のゲーム業界としては異例ですよね。競合となる会社に対しても技術をオープンにしていくと?
そこは全然ウェルカムで。このモデルは前職時代から、自分の作ったプロダクトはオープンに出すという形でやってきたことでもあるんです。実際に、私の開発した「UniRx」(Unity用のライブラリ)は国内の多くのモバイルゲームに採用されていますし、「MessagePack for C#」というC#で最も高速なシリアライザライブラリはマイクロソフト公式フレームワークの標準シリアライザに採用されるなど、世界中で使われています。
それが、会社としての技術力のブランディングに繋がっていたんですね。また、多くの開発者の目に触れることで、バグも減り性能も良くなっていけば、開発してるゲーム自体にも大きくプラスになります。
こういうやり方は特に目新しいことではなくて、Web業界などでは、テクノロジーはオープンにした上で事業で稼いでいく、というモデルも少なくありません。そうしたモデルから一番遠いのがゲーム業界かもしれません。
――ゲーム業界は各社ごとの文化や技術に独自性を求める傾向がありますからね。
独自の技術が競争力の源である場合や、公開したくても自社に依存し過ぎている部分が多すぎて外に出せない場合など、理由は色々とあると思います。しかし、今は進化のスピードが速い時代なので、そのやり方だけでは世界から取り残されてしまうという危機感があります。
特に中国語圏の勢いは、GitHubで観測できるだけでも、ものすごいものがあります。中国語でしか公開されていないものも多いため、日本にはほとんど情報が入ってきませんが、開発者の間で精力的に技術情報が交換されてるのは間違いありません。
最近の中国産のゲームの完成度が高く、開発速度も速いのは、そういう下地があるからでしょう。「知の高速道路」という言葉がありますが、それがとんでもない速度とレベルで整備されていってるのですね。日本も後れを取ってはいけないし、素晴らしい技術があるならそれをしっかりと示していくことが必要だと思います。
――Cysharpはゲーム業界全体の発展のことまで考えているわけですね。
結果としてそうなるのが理想的です。何と言ってもゲーム業界の良いところは、使われる技術が一級のものであること。だからこそ、ゲーム業界で鍛えられた技術はどこの業界でも役に立つはずなんです。C#は元々広い用途で使われている言語なので、優れた技術を開発し、提供することの効果は計り知れないものがあると思います。
Cysharpの事業はゲーム領域を対象としてはいますが、結果的にどの業界でも役に立つものを開発していけると考えています。なのでゲーム業界外の人もCysharpには注目しておいてほしいですね(笑)。
――色々なものに使われているというC#というプログラミング言語ですが、河合社長はどういった点が優れているとお考えですか。
バランス感覚に優れた、実用的な言語として今も第一線を走っているというところです。
例えば、最近の言語に取り入れられることの多いasync/await機能は、メジャーな言語としてはC#が最初に、6年も前に提示したものですし、登場当初からIDE(統合開発環境)との相性を考えた先進的な設計になっている点も魅力です。それでいて複雑になりすぎず、誰もが書きやすいレベルに言語仕様を落とし込むバランス感覚は今も随一だと思っています。
改善は今も精力的に続いていて、来年にも新しいバージョン(C# 8.0)が出る予定があるので、それも楽しみですね。
言語的に成熟してきているということもあり 、ここ数年は言語/フレームワーク両面からのパフォーマンスチューニングに注力しているというのも、様々な言語が比較対象に並ぶこの時代には欠かせないところですね。Techempower Framework Benchmarks というウェブフレームワークのベンチマークサイトでの、純粋なリクエスト/レスポンスの計測で、C#は上位10指に入っています。
上位はもう誤差範囲レベルなので、Pure C#実装でもC++やRustなどと十分肩を並べた速度が、実用的なアプリケーションにおいても叩き出せるという証明の一つと思っています。実はこれ、最初の頃はC#はこんな上位にいなかったんですよ。C#が真摯にパフォーマンスに取り組み続けてきた成果がちゃんと出ているということです。
もう1つ、Unityで使われているためゲーム開発との相性が良いという点も、他の言語にはない大きなアドバンテージです。私はそのメリットを最大限に活かすべく、クライアントのUnity側をC#で書くなら、サーバー側もC#で書けばいいよね、という「C#大統一理論」を提唱しています。
――「C#大統一理論」について、もう少し詳しく教えてください。
クライアントとサーバーの両方がC#で書かれていると、色々なメリットが生まれます。同じ開発環境上にクライアント/サーバー両方のソースコードを並べられるので、エディター上でも自由に行き来できるし、そのまま両方をデバッグして単一プロジェクトであるかのようにステップ実行可能です。また、データ型も同じなので、中間コード言語を介することなくソースコードをそのまま共有できます。
同じメモリレイアウトを共有できるので、クライアント/サーバー間でメモリデータを直接転送することでパフォーマンスを稼ぐことも可能でしょう、これは今実用的に動かすために研究しているところです。
言語が同じなので、サーバーのエンジニア、クライアントのエンジニアそれぞれが両方を理解しやすいという、スキルセットの面でも好都合ですね。
サーバー側の選択肢ってたくさんあるし、実際PHPでもJavaでも Ruby でもGo でも良いとは思います。しかし、クライアントサイドがUnityでC#を使っているのなら、開発効率やパフォーマンスの最大化を考えたとき、サーバー側の選択肢としてC#は絶対に一歩抜き出た選択肢になっているはずなんですよ。
――その選択肢をチョイスしない会社があるのはなぜでしょう?
と言うより、ほとんどの会社がチョイスしていないです(笑)。なぜC#を選ばないのかというと、1つは、C#がWindowsサーバー用だと思われていること。Windowsだとライセンス費用がかかるため、Linuxサーバーを利用している会社は、コスト面から考えてC#を選択肢にすら入れていなかったんですね。
それに、サーバーを扱う部門のエンジニアたちもLinuxをメインに使ってきたはずなので、Windowsはあまり触りたくないという気持ちもあるでしょう。
実際に、5年前はそういう状況でしたが、最近はLinux上で動くC#が十分実用的になってきました。今こそLinux上でC#を動かすという選択肢を検討する良いタイミングではないかと思います。
ただし、そういう機運が高まったとしても、「サーバー側で使うC#に実績がない」ことが大きなハードルになるかもしれません。C#でサーバー開発をやってみたいと思っても、やってきたことがないので出来るかもわからないし、今まで蓄積してきた内製ライブラリも作り直しになるだろうし、不安はあって当然です。
Cysharpがサーバー開発の実績を作り、手法を公開していくことで、エンジニアの不安を取り除き、「知の高速道路」を整備していきます。
――ちなみに、CygamesでC#を使ったタイトルはあるんですか?
クライアントサイドのUnityでは、ほぼすべての弊社開発タイトルで使っています。『シャドウバース』や『プリンセスコネクト!Re:Dive』などもそうですね。
――サーバーサイドではいかがでしょうか?
現状では、サーバーサイドはほぼすべてPHPで開発しています。一部のタイトルはリアルタイム通信やマルチプレイなどの機能でC#を採用しているものもあります。Cysharpの設立から日が浅いこともあり、まずは検討からという段階ですね。
さすがに、私が入ったからといって、一気に転換というわけにはいきません。しかし、活用できる場所は色々あると思っているので、協力して適用範囲を広げていきたいと考えています。
――Cysharpの今後の展望について教えてください。
第1弾として、12月14日に【 リアルタイム通信フレームワーク「MagicOnion」】を公開しました 。今、モバイルゲームやVRにおいてリアルタイム通信は必須の要素です。しかし、現状のUnityでは決定打というものがないため、それを打開するものとして開発しました。皆さんにぜひ使っていただければと思います。
もう1つ、サーバーだけでなくUnityのほうにも力を入れたいと考えています。UnityでハイパフォーマンスなC#とは何なのかを示していきたいし、それをできればわかりやすい形でお見せしたいです。第2弾として予定しているので、ご期待下さい!
――それでは最後に読者に向けてメッセージをお願いします。
「C#と言えばCysharpだよね」を体現していきます。そして、Cysharpの活動を通して、C#がゲーム業界全体で使われ、シェアナンバーワンの言語になるように推進していきます。
また、「C#っていいよね」と思いつつもなかなか踏み出せなかったエンジニアの方たちには、ぜひCysharpの仕事に注目していただきたいです。C#が安心して使えるという答えを、我々が様々な形で出していきます。だから、今からでも勇み足でC#に踏み込んでみましょう!
© Cysharp, Inc.