"ROGv - Forts Watching System"の裏側
先日、ROに関するクライアント/サーバシステムのソースコードを公開しました
- ROGv - Forts Watching System
- RO Blog's Entry:http://parrot.blog21.fc2.com/blog-entry-2547.html
ROをやってない方には何のためのものかわからないと思いますが、
ゲーム内で流れるログを解析し、
戦闘状況を俯瞰・解析できるシステム、と思ってください
これに関しては100%「私が欲しいから作った」ものなのですが、
技術的に新しいことをかなり取り込んでいます
- Client
- C# 4.0 <- New!
- .NET Framework 4 <- New!
- Server
正確には、Bootstrapを初めて採用したのは自サイト*2ですが、
各構成パーツを意識的に使ったのは今回が初めて、ということで
以下、初めて使ったものに関するメモ書きを...φ(・ω・`)
C# / .NET Framework 4
そもそも今回のシステムを発案したのは別な方で、
私は完全にそのアイデアをパクったのですが、
せっかく作るならC#を使ってみたいと思いまして
そこで、Twitterで設計的な話をしていたのですが、
C#に詳しい方から各部品を紹介してもらい、
この時点でもうできあがったようなものだったのですが・・・
・・・実際に組んでみるとそう簡単にはいかないものです(´-ω-)
とはいえ、やはりC#とVisualStudioはなかなか完成度が高いです
クライアントUIに必須の、イベントドリブンな構造が楽に書けます
.NETのライブラリが大量なのも利点です
C#自体、わりと最近出てきた言語*3だけに、
最近のパラダイムをかなり取り入れてまして*4、
宣言的なコードが書きやすくなっています(`・ω・´) b
Server側がRubyで書かれたAPIであっても、
RESTfulな設計をしておけば、基本的に問題ないです
UTF-8に変換した文字列をJSONで投げてますが、そのための部品もあります
一方で、Windowsが絡まないところで使う気になるかというと、
やはりちょっと厳しいですね・・・
C#の利便性に.NETが寄与しているのは事実で、
いくら他OSに.NET的なものがある*5とはいえ、
他の環境なら他の言語を選ぶかな・・・と
まあ、今後Windows8や、特にWindowsPhoneと関わる機会が出てくるかもしれませんし、
今回触っておいたのは役に立つと思ってます
Bootstrap
前回のGunma.webで発表がありましたが、
私みたいなデザインに疎いプログラマにとって、
とても使いやすいフレームワークです(`・ω・´) b
今回は独自のCSSをほとんど書いてませんが、
かなり「それっぽく」見えます
デザインのわかる方なら、定義しなおしてカスタマイズもできます*6
サンプルが揃っているので、それを見ながら構築していったのですが、
当然ながらHTML5のタグが多用されており、
結構知らないものがあったのでかなり(゚д゚)マズーでした
ということで、これを買って読んでいます(´・ω・)っ
(先日のデブサミでもこの方の講演を聴きました)
徹底解説 HTML5マークアップガイドブック 最終草案対応版―全要素・全属性完全収録
- 作者: 羽田野太巳
- 出版社/メーカー: 秀和システム
- 発売日: 2011/11
- メディア: 単行本
- 購入: 1人 クリック: 20回
- この商品を含むブログ (2件) を見る
分厚いながらも読みやすい本ですので、
HTML5(のタグ周り)を整理したい方にお勧めです
MongoDB / MongoMapper
正直、「MongoDB=大規模サービス」という先入観があり、
これまであまり細かく調べていなかったのですが・・・
今回のデータ構造的はRDBよりKVSの方が向いているとわかっていたので、
久々にKVSについて調べていくうちに、思っていたよりずっと
MongoDBが「手軽」であることがわかりましてΣ(゚Д゚)ガーン
インストールもHomebrewやyumが使えるので簡単です
標準でコマンドラインツールが付属してますが、
Mac用のGUIクライアントもあります
でも、一番便利だったのはRubyのMongoMapperです
Rails3以降のActiveRecordに慣れた方なら、
かなり直感的に使えます(`・ω・´)
実際のデータを検索・更新するとき、
irb(というかpry)からModelをrequireして操作してました
下手なクライアントよりそっちが楽だったもので・・・
で、実際に運用してみた感じですが、
そもそもKVSということで、かなり速いです
indexも使えるので、複雑な操作でもわりとレスポンスが早い気がします
仕事でもKVSを使ってますが、
やはり更新より参照が多い系では強いですね
というか、仕事のシステムもMongoDB+MongoMapperに置き換えると、
相当はかどる気がしますが、
設計当時はTokyoCabinetとかkumofsあたりしかなくてですね・・・(´-ω-)
ということで、特に大規模なシステムでなくても、
単純にKVSとして、MongoDBはかなりお勧めです(`・ω・´) b
もちろん、何でもKVSにするのは間違いで、
RDBとKVSの使いどころを吟味する必要があるのですが・・・