blog.hekt.org

ポケモン耐性検索XY についての能書き

去年の話ですが、ポケモン耐性検索XY対応版を公開しました。

以前のと別にしたのは、第六世代で新しいタイプが加わり、既存のタイプ間の相性にも変更があったのが理由です。せっかくなので一から作り直し、インターフェースも全く別のものにしました。

また、以前あった検索オプションのうち「進化前を除外」以外を取り除きましたが、これは利用率がそれぞれ全体の 0.01 % 程度ということから不要と判断しました。

バックエンドについて

旧版は Google App Engine の Python で動かしていますが、今回は Scotty/Haskell で実装したのを VPS で動かしています。今のところサーバーの処理能力に余裕があることもあり、リクエストの半分は 10 ms 以内、残りの半分もおおむね 100 ms 以内に返せているようです。

データベースは MongoDB を使っています。なんとなく使ってみたかったという以上の理由はありませんし、レコードも少なくユーザーによる write も発生しないこの場合に最適なのは SQLite だと思いますが、パフォーマンスに問題がないのでまあいいでしょう。

フロントエンドについて

18種類のタイプというのは一覧から選択するにはちょっと多いように思えたので、文字入力で絞り込むという形にしました。が、スマフォとの親和性があまりよくないので、どう解決するか悩んでいるところです。スマフォでは一覧から選択する形にするのが一番簡単なんでしょうけど……。

技術的なところでいうと、HTML5 の API を使ってみたかったので、以前のようなハッシュ (#!) ではなく、History API を使っています。あと、URL で表示するパラメータも、以上・以下なのに less/more なのがモヤっとしていたので、lte/gte などを使うようにしました。タイプも略さずフルスペルにしたのでちょっと長くなりましたが、URL から内容が分かりやすくなったと思います。

検索結果をグリッドで表示するのはけっこう気に入ってます。なにげにレスポンシブです。

今後について

とりあえず、当分の間はタイプ相性の変更もないでしょうし、じっくりバグと UI を直していく感じですかね。バックエンドの性能なんかも試したいのですが、今のところ高負荷状態になることがないので、もっとユーザーが増えてくれたらなあ、とか。ベンチマークしようかな。