プロエリソフト

個人でアプリを作っています

【プロエリソフト2(仮)】ここ最近やったこと

大学生活が始まり、部活に入ったりサークルに入ったりしていたらいつのまにか6月が終わってしまいそうで、本当に時の流れが早いです。時間を見つけて開発に時間を当てないと終わらないぞと、

というわけで最近の土日は完全にアプリ開発デーとなっております。

 

Unityでクライアント側はだいたい作り終え、「あとはサーバーを勉強するだけっしょ!」って意気込んでちょっと手をつけて見たものの、こいつがなかなかの厄介者

 

去年の4月くらいにPHPをいじったりしていたのですが、やっぱりTCGはリアルタイムオンライン対戦が必要だということで、Node.jsとSocket.ioというのがよさげやな、、というふわっとした感覚で勉強を始めてみました。

 

まあとりあえず一冊行っとくか、というわけでNodeクックブックという本を購入。

基本なにか初めるときはとりあえず一冊買ってます。

 

Nodeクックブック

Nodeクックブック

 

こいつ 

 

感想:クッソだるい

結構分厚く1/5くらい読んでやめました。

そこそこプログラミングやってきたし俺ならいけるっしょ!ってのりでいったら土日でたった30ページしか進みませんでした。

結構ソースコードが細切れで読みにくい構成になっていてしんどかったです。

途中からwebから本に載っているコードを公式サイトから取ってきて、眺めてコピペっていう勉強をしていたのですが、コピペでエラーってどういうことやねんってなって放置。

 

 とにかくサーバー言語初心者がイキって一冊めに買う本じゃねーというわけで、

 

ド安定、超定番の「ドットインストー

 

 感想:やっぱり最強

動画ってのが理解を促進させますね、本を読むという労力から解放されます。また、動画なんで巻き戻したり、人に聞き直したりする必要がないってのもメリット。

若干エラーが出てきて困りましたが、ググって解決

 

そして、Node.js入門に続いてSocket.io入門も視聴。

その辺りで、Cloud9(クラウドナイン)というサービスを発見。

 

こいつはかなり画期的です。普通はterminal等でごちゃごちゃ設定しなければならないものを、テンプレートをポチッと選ぶだけで、サーバー側言語の統合開発環境ができあがるというもの。環境構築の手間だけでなく、PCにはインストール不要でweb上で全てソースコードもかけてある程度のコード補完が付いています。初心者にとってこれほど手軽なものは存在しないでしょうw

 

そんである程度わかったから実際にUnityと連携してみようってところで、socket.ioをUnityで使う方法を検索したところ、全部方法が違ってわからなかったので結構困りました。

色々探った結果、AssetStoreのBESTHttpというものが良さげだと。

f:id:proelisoft:20170626231022p:plain

決め手になったのは、Fight Leagueというソシャゲアプリのライセンスを見ていたら偶然みつけたことです。ソシャゲのライセンスを見て、使っているライブラリーを見るのは結構発見があるのでおすすめです。

 

値が張るなーと思いながら、購入。

実際に使って見たのですが、

 

感想:全然わっかんねー

クライアント側は詳しく書いているのですが、サーバー側のソースコードが載っていなかったことが購入後に判明しました。

多分こういう高級なアセットを買っちゃう人はサーバーのスペシャリストが手間を省くために買うのであってわざわざサーバーの処理まで公開する必要がないんでしょうね。

Http通信でグーグルにアクセスするくらいはできたのですが、Socket.ioのサーバーの処理が絶対にエラーが出て通信できないと6時間くらい検索や試行錯誤した結果、わからなかったので、フォーラムを遡って見ていったところ、「さっさと2.0に対応しろ^^」っていうのをようやく発見しました。

Socket.ioの最新バージョンに対応していないというクライアント側しかやったことのない人間が想定している範囲外の原因に、これがサーバー言語というものか...と勝手に感じました。

 

まあただのバージョン違いなだけで、クライアント側の実装はわかりやすかったです。

 問題はサーバーでした。基本的なことは公式に載っているのですが、細かいことまでは書かれていませんでした。具体的には、

・送信してきたユーザーでないユーザーをroomに入れる

・roomにいる人数を取得する

・ユーザーが所属しているroomを取得する

方法が結構バージョンによってちがったりしたので、面倒でした。

Unityなどであれば、コード補完機能などを利用して理解することもあるのですが、Javascriptという言語は全然型を指定しないようで、なかなか慣れないです。

 

書き出したら画面が完全に紫色になるUnityのバグに遭遇したり、BestHttpのデモがバグってたり、親のパソコンが死を迎えたりと色々ありましたがもうちょっとサーバーの知識を詰め込みつつ実装していきたいと思います。

 

では