いさぽん部屋(isapon.com)

ゲーム系プログラマによる特に方針のないブログ。技術系とカレー、ラーメンネタ多めだったはずが、最近はダイエットネタ多め。

C++でサーバープログラミングをしようと思う

今までPHPを使っていたし、結構PHP好きなんですけどね。

今度開発するスマホゲームはサーバーサイドもC++で書く予定。

DBはRedisを使うつもりです。

すでにC++でRedisにアクセスするコードも実装済み。

socket開いてread/writeするだけだしめっちゃ簡単。

フロントエンド側はクライアントとの送受信部分をスレッドで制御し、Redisとのやり取りをキューに入れてシングルスレッドで回します。

もともとRedis自身がシングルスレッドで動いているので、むしろRedisに余分な仕事をさせない設計のはずです。

C++にする理由

まず第一にコスト。

従来通りPHPで書くとどうしてもApache+PHPの限界にぶつかります。

同時接続がせいぜい100程度。

今は別件の締め切りがあるのでベンチマークもまだ全然とっていませんが、C++で書くと大体1000くらいでも全然余裕です。

C++で書くとDBとの接続もずっと接続しっぱなしなので、接続を成立させるための時間も不要です。

なので、DBからデータを読んでクライアントに返すだけのプログラムだと今までどんなんしても数ミリ秒くらいかかっていたのがほんと一瞬。

つまり、仮に10倍のパフォーマンスくらい出る。

つまりつまり、サーバー台数も10分の1でよい。

つまりつまりつまり、サーバー費用10分の1。

つまりつまりつまりつまり(サーバー維持費における)、損益分岐点が10分の1。

ソシャゲ10連ガチャで例えるなら、10連を300円にしても大丈夫!!!

※人件費とかもろもろがあるのでそうは単純な話ではないのですが……

ユーザーのため

いや、ガチャで儲ける気はないんだけどね……

でもやっぱりサーバー維持費が下がるってのは凄く良いんです。

運用費が下がるということは、当然維持しないとならない最低売り上げも下がるわけです。

つまり、売り上げが多少下がっても赤字になりにくくなるわけです。

それってつまり、赤字になってサービスを終了させるという状況になりにくくなるということ。

やっぱ自分が遊んでるサービスが終了すると寂しいし。

運営している側だって無念です。

そうならないのはお互いハッピーなはずです。

うぃんうぃん。

でも結局自分のため

一人当たりの目標課金額が減りますから、ガチャを入れてもそんなに絞らないでも大丈夫。

なので、課金疲れ、金銭の負担をぐっと減らせます。

そうなると退会率も抑えられるひとつの要因になると思う。

退会率が下がればプレイ人口を増やしやすくなる。

人が集まれば、また違った切り口も見えてくる。

それって結局、会社のためになる。

ユーザーの利益=会社の利益。

会社法に書いてありますけど「会社とは社会貢献してナンボ」なんです。

娯楽という形で社会貢献したい。

できるプログラマが限られる

でもC++で作ると当然、メンテナンスできるプログラマのスキルがある程度高くないとなりません。

つまり人を探しにくくなる。

でも、それでいっかな?と。

プログラマの世界では「LV100のプログラマ1人の生産量 >>>> LV1のプログラマが1000人の作業量」みたいなもんがあります。

言うなれば、PHPにしてLV1のプログラマでもメンテナンスできるのでLV1のプログラマを10人雇うくらいなら、C++にしてLV100のプログラマを1人雇ったほうが人件費も少ないし精度も高い。

LV1のプログラマが増えると、逆にLV1でも出来る仕事をわざわざ用意してあげないとならなかったり、とにかく大変。

むしろLV100の人がプログラムを書く時間が無くなったりして本末転倒。

名選手名監督に非ず。

イチローなたきっと監督もできそうですが、やっぱり選手であって欲しいのです。

そういうことなのです。

お金と大量の仕事がある大企業なら、それこそ大量のLV1を抱えて、LVの上がった奴だけ残して、残りはオサラバとか、窓際部署とかやり方があるのかもしれません。

でも、ウチの会社みたいな小さな企業は、みんなそれなりに出来るようにならないと厳しい。

それならLV1でも少数に絞って徹底的に叩き込むか、LV100とは言わずともLV30くらいを引っ張って来たほうがいいと思う。

なんか使い捨てみたないなやり方って嫌だ。

なによりワクワク

それにさ「ウチの会社サーバーもC++で書いてます!」ってほうが、なんかプログラマとしてワクワクするでしょ?

仕事だからこそ、ワクワクしたいんだよね!

余談

PHPプログラマならたくさんいるから!って連れてきても、ほんと、なんもできないのが多いのだよね……

ちゃんと引き継げるようなプログラマって、大体レベルが高いのでほかの言語で作ってても大体なんとかなるし。

逆に俺もそこそこまっとうなプログラマが書いてるならC++のコードのほうが引き継ぎやすいと思ったりすことも多いです。

ぶっちゃけどんな言語で書いてあるかよりも「コメントがしっかり書いてあればなんでもいい!」がホンネ