ビヨンド第7回勉強会「ゲーム開発の【ごっついい感じ】 ~ ソーシャルゲーム開発で使える 『ゲームAPI開発』」を開催しました!
目次
インフラエンジニア兼Webマーケティングチームの伊藤です。
2017年1発目の勉強会を開催しました!
お知らせ:【第7回】 ビヨンド勉強会を開催します! | 株式会社ビヨンド
Doorkeeper:ゲーム開発の【ごっついい感じ】 ~ ソーシャルゲーム開発で使える 『ゲームAPI開発』 ~ ビヨンド勉強会 #7 - ビヨンド勉強会 | Doorkeeper
今回は、剣と魔法のログレスでおなじみの、株式会社 Aiming(エイミング)様に会場をお借りしました!
毎度のごとく、少し中身をご紹介したいと思います!
まずは今回のセッションの一覧です。
<tr>会社名登壇者名セッションタイトル
クローバーラボ株式会社 | 畑中様 | GoによるAPI開発と使い所 |
株式会社ビヨンド | 萬代 | Phalconを使ったAPI開発 |
株式会社Aiming | 植森様 | Rails-API Way in Aiming |
GoによるAPI開発と使い所
クローバーラボ畑中様によるセッション。
言ってしまうと、今回説明して頂いた部分は実はGithubに上がっています笑
今回の資料はこちら。
GoによるAPI開発と使い所
ワンダークラウンのバックエンドに関しては全てGo言語で書かれているそう。
ワンダークラウン~七つの大陸と忘れられた島国~
ソーシャルゲーム開発は小規模な開発から、大規模な開発へシフトしてきています。
そこで役に立ってくるのがGo言語です。
- 静的片付け言語
- シンプル
- マルチプラットフォーム
この他にも理由はあるのですが、こんな感じ。
静的片付け言語
Go言語は静的片付け言語で型が決まっていて、
大規模開発でいろんな人が触る上ではもってこい。
シンプル
Go言語はシンプルにできているので、覚えるのが簡単で、
誰が書いても同じようなコードになります。
マルチプラットフォーム
マルチプラットフォームで、WindowsだろうがMacだろうがLinuxだろうが、
同じものが見れる環境が出来ます。
Windows派とMac派が仲良くなれる時代ですね。
って、説明していても元資料があるので、そちらをご覧ください!!
GoによるAPI開発と使い所
その場でターミナルで実行結果を表示してくれるので、
すごくわかりやすいプレゼンでした!
Phalconを使ったAPI開発
弊社ビヨンドの萬代によるセッション。
PHPの「爆速」のフレームワーク、Phalconの紹介でした。
まずはPHPの代表的なフレームワークの一覧とその速さを紹介してくれたのですが、
そのトップ3がこちら。
- High Performance PHP Framework - Phalcon Framework
- Fast PHP framework | Ice framework
- Tipsy, an MVW PHP micro framework
よく使われている(であろう)Laravelとかfuelphpは速度でいうと下位に属していて、
「laravel使っているやつは甘え」なんて名言も生まれていました。laravel使いの方、すみません。
インストール方法は他のフレームワークとは違っていて、
githubからなどではなく、yumインストールが可能。
所謂共有ライブラリファイルをphpを読み込んであげるという手法を取ります。
Cバイナリで出来ているので、すげー速いって寸法です。
ORMも内部処理は速いですが、DBとのやり取りは少し苦手みたいですが、
それを補う速さがあるみたいですね。
マルチモジュール構成が取れるようになっていて、
例えばフロントとバックエンドで分けたり、APIのバージョンごとに簡単にソースコードを分けることが可能になっています。
インストールごとは違うけど、他のMVCフレームワークと似たようなディレクトリ構成になっていて、
他のフレームワークから移ってくる学習コストもそうかからないそう。
その学習コストをかけて、爆速のフレームワークが手に入るなら十分コストはかけてもいい、なんてことも言ってました。
ってことで、みんなPhalconに乗り換えましょう!
弊社のブログにPhalcon記事が少しずつ上がってきてますので、ぜひご覧ください!
Phalcon | 株式会社ビヨンド
Rails-API Way in Aiming
最後はAiming植森様のセッションです。
「Aimingのスタイル」のお話です。
Aimingさんでは、プロジェクトごとに言語を決めているそうです。
クライアント側はほぼほぼUnityで開発しているそうです。
ちなみに大ヒットゲームログレス いにしえの女神はcocos-2dxで、
それはUnityが2D対応がほとんど出来ていないときに作り始めたからだそうです。
また、リアルタイム性が必要な部分はC++かC#を使っていることが多く、
WebAPIの部分はRuby(Rails)かPythonが多いみたいですね。
ちなみにログレスはPython。
Aimingさんでは、REST APIを使うのではく、RPCをよく使っているそうです。
それは、リソース指向であることのメリットは特に多くはなくて、クライアント→WebAPIへの通信はラップして抽象化していて、
エンドポイント側を意識して使うことがないからだそう。
プロトコルを定義する
WebAPIとリアルタイムサーバ・クライアント間の通信プロトコルを定義するものは内製で作ってしまっていて、
それぞれの環境(クライアント側、リアルタイムサーバ側、APIサーバ側)が独自に実装していってしまうことを防いでいます。
もし独自で作ってしまっていたら、そこで色々と共有していく必要が出てきますからね。。
開発だけでなく、ドキュメントの生成やテストクライアントの生成も容易になって、いい感じ!というわけです。
Railsを使うということ
Rails自体がエコシステムになっているところが大きいそうで、難しい実装だったとしても、
既存のgemを使ったり、参考にすれば実装が簡単になるそう。
アーキテクチャが書かれていて、ベストプラクティスが豊富なので、
いろんなことがあっても対処がしやすいのがRails。
ただ、パフォーマンスが劣ることがあるので、そこはトレードオフですかね。
まとめ
当たり前なんですが、いろんな会社がいろんな方法で開発してるもんですねー、って改めて思いました。
いろんな会社のいろんな方法を見ることで、取り入れたほうがいいものとか、そうでないものの取捨選択をすることが出来ます。
弊社の勉強会には学生の方もこられることがあるのですが、どう感じているんでしょう。
ってかAimingさんのオフィスめっちゃきれい。。。
では、第8回でお会いしましょう!