Titanium MobielによるiOSアプリ CERO SEARCH が公開されました
Titanium Mobile による 無料iOSアプリ、
CERO SEARCHが公開されました。
iTunesプレビューで CERO SERACHを開く
CERO SEARCHってなに うまいの?
iPhoneから CEROのビデオゲームタイトル検索 を気軽に行えるようにしたアンオフィシャルフロントエンドです。
Web上の検索と同じく、ゲームタイトル,メーカー,年齢区分,対応機種 などから検索が可能になっており。
ゲームタイトルに設定されたCERO年齢区分(とアイコン)を調べることができます。
また、検索後の画面からタイトル,メーカー,対応機種名でのWeb(Google)検索に移行することも可能です。
年齢区分はAとかBとかになってしまうので検索機能は付けておりません。
そして、実験的にiAdによる広告を付けています。
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といえばiPhoneとAndroidの両方にネイティブアプリを出力できるという点が注目されているかと思います。
ですが、CERO SEARCHについてはAndroidへの出力においてのみ致命的なバグが発生しているためリリースを見送っています。
致命的なバグとは 検索結果のテーブルビュー上で80検定度のところまでスクローすると必ずアプリが強制終了される というものです。
原因が今のところつかめていないため、これについては継続して調査しています。(Titanium Mobileの更新で治らないかなあとちょっと思っている)
今後の更新予定は?
今考えている更新は以下のような内容です。
よくある質問
- 検索結果を10件ずつ表示とかめんどくさいんですけど
- もとの検索結果が10件ずつの表示なので仕方ありません。
- じゃあキャッシュしたらええやん
- データの整合性がひどく取りにくいので避けています
- 10ページ分まとめて取得して100件取得とかでいいやん
- 攻撃に近い振る舞いになりそうなので採用していません。
雑多なこと
- NINJA GAIDEN ΣのΣが機種依存文字でハマった(decode時にreplace指定して回避)
- 2は機種依存文字でなかったりする
- CEROが出来る前のタイトルがチラホラあると思ったらバーチャルコンソールで出す際にCERO審査にかけ直しているらしい