GAE/J上で携帯の絵文字とか

そういえばUTF-8周りの問題も解決してたよねということで、なんとなくGAE/J上にのせていたサンプルを更新(・∀・)
http://smart-usaxusa.appspot.com/top/


主に携帯周りのサンプルを追加ということで、携帯(エミュレータとかでもOK)から下記にアクセスすると、携帯対応の機能確認ができますにょ(`・ω・´)
http://smart-usaxusa.appspot.com/m/
やっていることは、キャリア毎の文字コード変更、携帯端末スペック情報データベース、絵文字出力&キャリア間相互変換、かな全角半角変換とか。

キャリア毎の文字コード変更

サンプルでは、DoCoMoauShift_JIS、PCとSoftbankUTF-8設定にしてあります。
使っている設定はこんなカンジで。

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <carrier type="default"  encording="UTF-8"       charset="UTF-8" />
  <carrier type="docomo"   encording="Windows-31J" charset="Shift_JIS" ... />
  <carrier type="au"       encording="Windows-31J" charset="Shift_JIS" ... />
  <carrier type="softbank" encording="UTF-8"       charset="UTF-8"     ... />
</config>

この処理のGAE/J対応にあたっては、ちょっと手を入れるところがありました。
GAE/Jというか、Jettyの話なんだけど"org.mortbay.jetty.Request.queryEncoding"とか知らんがな(´д`;)
これまでの稼働実績はTomcatWebLogicしかないので。
とりあえずsetAttribute()するためのJettyオプションを加えてみたが…(;´д`)

携帯端末スペック情報

User Agentからキャリアと型番を判別して、スペック情報データベースから情報をひっぱてくる仕組み(・ω・)
使っているのはデフォルト実装のCSVプロバイダで、ke-tai.orgCSVをベースにした情報。
CSVにある情報は一通りとれるけど、とりあえず表示しているのは解像度だけ。
もっとも、CSVファイルはちゃんとメンテしているものでは無いので、最近のモデルだとおかしな内容が表示されるかも(´ω`)

かな全角半角変換

かな文字を半角変換して出力する仕組み、入力については全角変換する仕組み。
サンプルの設定では、携帯3キャリアについてはデフォルトで変換を実行するように設定。
サンプルのIGNOREボタン押下時は出力時の変換を切るようにしているので、入力時の全角変換結果が出力されます。


ちなみにPCだと変換は行わない設定。

絵文字

絵文字出力のタグライブラリと、入力のUnicode私的領域への変換、出力時のキャリア間相互変換。
GAE/J上での動作は、FireMobileSimulatorと自分の携帯、Softbankのウェブコンテンツヴューアでのみ確認(・∀・)


まず、絵文字出力タグライブラリについては次のような記述で、URL先の様な出力を行うものを用意しています。

<smobile:pic carrier="docomo" no="125"/>DoCoMo:125<br/>
<smobile:pic carrier="au" no="181"/>au:181<br/>
<smobile:pic carrier="softbank" no="230"/>Softbank:230<br/>

絵文字出力確認用URL
http://smart-usaxusa.appspot.com/m/pictgram/


FireMobileSimulatorでキャリアを切り替えながら見ると、各キャリアでの[1]、[2]、[3]の絵文字が表示されます。
なお、PCに対してはタグを出力する仕組み。
もっとも、サンプル上には上記3つに対応する画像しかおいていないので、次の入力確認用URLにそれ以外の画像を入力しても×表示になってしまいますが(´д`;)


っで、絵文字入力とキャリア間の相互変換については、下記URLで絵文字を入力してみると確認可能。


絵文字入力確認用URL
http://smart-usaxusa.appspot.com/m/pictgram/input/

ただ、これも相互変換テーブルのメンテをちゃんとしていないので、おかしな出力が出たりするかも(´д`;)


まあ、この携帯対応機能自体もあまりメンテをしていなくて(;´д`)
余裕があればリファクタリングをしたいところもあるんだけど、とりあえず次に使う機会があるまで放置プレイの予定(´・ω・`)