読者です 読者をやめる 読者になる 読者になる

Titanium MobielによるiOSアプリ CERO SEARCH が公開されました

Titanium Mobile CERO SEARCH

Titanium Mobile による 無料iOSアプリ、
CERO SEARCHが公開されました。
f:id:nanmo:20110218121029p:image
iTunesプレビューで CERO SERACHを開く

CERO SEARCHってなに うまいの?

iPhoneから CEROのビデオゲームタイトル検索 を気軽に行えるようにしたアンオフィシャルフロントエンドです。
f:id:nanmo:20110218121030p:image
Web上の検索と同じく、ゲームタイトル,メーカー,年齢区分,対応機種 などから検索が可能になっており。
ゲームタイトルに設定されたCERO年齢区分(とアイコン)を調べることができます。


また、検索後の画面からタイトル,メーカー,対応機種名でのWeb(Google)検索に移行することも可能です。
f:id:nanmo:20110218121031p:image
年齢区分はAとかBとかになってしまうので検索機能は付けておりません。

そして、実験的にiAdによる広告を付けています。

iTunesプレビューで CERO SEARCH を開く

Titaniumだけで出来てるの?

iPhoneアプリはTitanium Mobileによりビルドされていますが、検索結果を得るのにGoogleAppEngineによる専用サービスを立ち上げています。
この専用サービスは CEROのタイトル検索の結果画面を解析し、JSONにエンコードしてiPhoneアプリ(CERO SEARCH)に渡す役割を担っています。

Titaniumだけの処理ではなく、このような仕組みをとったのは以下の要因によります。

  • CEROのタイトル検索は EUC-JP によるページ生成が行われている
  • Titanium Mobileから日本語を含むGETパラメータをCEROのタイトル検索に投げた際、URLエンコードUTF-8により行われてしまう。
  • Titanium Mobileには今のところ文字コードの変換機構が存在しない
  • 上記の回避策として EUC-JPによるHTMLからMETAタグのリフレッシュで転送するとうまくいくことを発見
  • 当初はiPhone上にフォームを用意し、そこからWebサイトに転送するだけのアプリとして提出、当たり前にリジェクトされる
  • リジェクト理由解消のため CEROのタイトル検索結果をGAE(Python)からフェッチし、文字コード変換、BeautifulSoupでスクレイピング、JSONにエンコードする形の専用サービスを実装

なお、このサービスの転送量などはGAEの無料分クォータでまかなえると踏んでいますが、念のため、$1/day程度の有料クォータも設定してあります。

Androidアプリは?

Titanium MobileといえばiPhoneAndroidの両方にネイティブアプリを出力できるという点が注目されているかと思います。
ですが、CERO SEARCHについてはAndroidへの出力においてのみ致命的なバグが発生しているためリリースを見送っています。

致命的なバグとは 検索結果のテーブルビュー上で80検定度のところまでスクローすると必ずアプリが強制終了される というものです。

原因が今のところつかめていないため、これについては継続して調査しています。(Titanium Mobileの更新で治らないかなあとちょっと思っている)

今後の更新予定は?

今考えている更新は以下のような内容です。

  • 3DSタイトルがそのうち掲載されるはずなので、されたら3DSの項目を増やす
  • 安定度の向上(Titanium Mobileの更新に従って向上するはず)
  • Android対応
  • 横向き対応

よくある質問

  • 検索結果を10件ずつ表示とかめんどくさいんですけど
    • もとの検索結果が10件ずつの表示なので仕方ありません。
  • じゃあキャッシュしたらええやん
    • データの整合性がひどく取りにくいので避けています
  • 10ページ分まとめて取得して100件取得とかでいいやん
    • 攻撃に近い振る舞いになりそうなので採用していません。

雑多なこと