Diplomacy MOE3 on Rails4

Diplomacy MOE

Diplomacy MOE はオンラインでプレイできる審判役不要のディプロマシーである。

MOE という名前は「Mastering Operation Engine」などとうそぶいたこともあったが、実際のところは「各国の画像を萌え絵にしたら多少は殺伐感も薄れんじゃね?」というくだらない思いつきに由来するのは知る人ぞ知るところ。

結局、その思いつきの効果のほどは定かではない。

MOE2

現在稼働中の MOE2 はフレームワークを使用せずフルスクラッチで書かれている。

初代 MOE からリライトした際の努力もあってそれなりに小奇麗にまとまってはいるものの、様々な機能追加予定を放置したまま時間が過ぎ、数か月に一度バグ対応でソースを見直すくらいしかしなくなった今現在、薄れゆく記憶とともに保守性の低下著しい現実を無視できなくなりつつある。

早い話が MOE2 専用の汎用性もかけらもない独自フレームワークを維持するのもいい加減億劫になってきたのであった。

Ruby1.8

MOE2 開発時に現役であった Ruby1.8 は 2013 年 6 月を以てサポートが完全に終了した。

分かっていたことではあったので、流石に何らかの対策を取らねばと去年あたりから MOE の Ruby1.9 対応とか Rails 化計画などを行き当たりばったりで進めてはいたのだが、なまじ MOE2 が大きな問題もなく動いていることもあってモチベーションが保てず、とうとう今ここに至るまで成果は上がっていない。

一応、行軍解決処理がそこそこ動くまでは作ったのだが、Rails の強力な機能に振り回されて無駄に複雑になってしまい、半ば途方に暮れていた。

Ruby2.0 と Rails4

今 Ruby の最新バージョンは 2.0.0 となり、それに合わせて Rails も 4.0.0 に上がった。

良い機会だからと重い腰を上げて開発環境を整え、MOE3 の再開発というか新生 MOE3 の開発着手を宣言したのがつい先日の話である。

もし Ruby2.0 + Rails4 で作りかけの MOE3 が動けばそのまま開発を継続したのだが、サーバーに Ruby2.0 を入れ、gem を入れ直し、Passenger も更新し、どうにかこうにか環境を整えて試しに走らせた rake spec がエラーを吐いた瞬間に希望は捨てた。

その行軍解決処理はあまりにも難解で、テスト抜きでは修正すら覚束ないシロモノと成り果てていたのである。

そもそも Rails の機能を使っているくせに Rails っぽくない自覚と居心地の悪さがあった。根本的なところで Rails への理解が不足していて、リファクタリングでどうこうできるレベルではなかった。少なくともその労力をつぎ込むだけ価値を認めることはできなかった。

MOE3 on Rails4

そして新生 MOE3 である。過去は振り返らない。

当面の目標は行軍解決エンジンの完成だが、しかしその前に必要な部品が多すぎていつになったらスタート地点までたどり着けるかの見通しすら立たない。

それでもここ最近、別件で集中的に Rails を扱う機会があり、期せずして多少の経験を積むことができたのは幸いである。

こつこつやっていこう。