狠狠撸
Submit Search
kay-jpmobile
?
2 likes
?
3,757 views
Tasuku Suenaga
Follow
Google App Engine用フレームワークKayで、日本の携帯電話に対応するためのモジュールについて発表したものです。
Read less
Read more
1 of 19
Download now
More Related Content
kay-jpmobile
1.
Kay-jpmobile 末永 匡 a.k.a.
グニャラくん (株)wktk
2.
開発の経緯 ?
Kayでとにかく何か作ってみよう ? 掲示板サイトを作ろう ? 携帯に対応したい ? 携帯に対応するなら絵文字も対応したい
3.
Django-bpmobile ?神 ? パクろうインスパイアされよう
4.
Kay-jpmobile命名の由来 ? Django ->
Kay ? これはいいけど ? bpmobile-> jpmobile ? 苦肉の策
5.
Kay-jpmobileで は何ができる の?
6.
Kay-jpmobileでできること (1) ? 推奨文字コードでリクエスト?レスポンスを扱う
ことができる ? DoCoMo / au : cp932 ? Softbank : utf-8
7.
Kay-jpmobileでできること (2) ? ビューでキャリアの判定を行う
ことができる ? request.agent.is_docomo() など ? テンプレートでキャリアの判定を行うことができ る ? {% if agent.is_docomo %} DoCoMo {% endif %}
8.
Kay-jpmobileでできること (3) ? 絵文字を受け取り、保存することができる
? 内部文字コードとして、Google絵文字コードを採用 ? テンプレートで絵文字を扱うことができる ? キャリアごとの絵文字、もしくは<img>タグに変換 {{ "?U000fe000"|emoji_html_filter }} ? 識別名を用いた埋め込み {% emoji_html "BLACK SUN WITH RAYS" %}
9.
Kay-jpmobileはスマート!? ? テンプレートでスマートにキャリアの判定を行う
ことができる ? スマート…?
10.
どういうこと? {% if agent.is_docomo
%} DoCoMoです。 {% else %} {% if agent.is_docomo %} {% if agent.is_ezweb %} DoCoMoです。 EZWebです。 {% elif agent.is_ezweb %} {% else %} EZWebです。 {% if agent.is_softbank %} {% elif agent.is_softbank %} SoftBankです。 SoftBankです。 {% else %} {% else %} その他です。 その他です。 {% endif %} {% endif %} {% endif %} {% endif %} ? Jinja2のelifのおかげじゃねーか!
11.
Kay-jpmobileで は何ができて ないの?
12.
Kay-jpmobileの実装 ? テスト実装という名のもとに、結構ひどい実装 ? でも、ないよりも、あったほうがマシだよね
13.
middlewareで何やってるか ? Request
? 各携帯の推奨エンコーディングを、utf-8に正規化 ? 絵文字もGoogle絵文字コードに正規化 ? Response ? utf-8を、各携帯推奨エンコーディングに変更 ? (Google絵文字コードを各携帯の絵文字コードに変更)
14.
werkzeug.Request ? Request.args/formはImmutableMultiDict
? Request.charsetをキャリア推奨charsetに変更 ? ImmutableMultiDictをコピー ? 絵文字コードをGoogle絵文字コードに変換 ? 新しいImmutableMultiDictを作り、args/formに代入
15.
このアプローチの問題点 ? 携帯電話からのアクセス時に、必ず
request.args/formが評価されてしまう ? もともと、request.args/formは遅延評価 ? 本来は、遅延評価にすべき
16.
解決策の提案 ? Kayのsettings.pyで、Requestのクラスを指定できれ
ばよい? ? REQUEST_CLASS = ‘jpmobile.class.Request’ ? klass = import_string(self.app_settings.REQUEST_CLASS) ? local.request = request = klass(environ)
17.
DoCoMoでcookieが食えないヤツ ? 基本cookieが食えることを前提 ? Cookieが食えないDoCoMoだけ、iモードIDを用いて
疑似Cookieを作ってあげればOK? ? iモードIDをキーとして、Response.cookieを保存。 ? Request.cookieは、iモードIdをキーとして保存先から 取得 ? やっぱりRequestクラスを指定できるようになると いいのかも
18.
まとめ ? DoCoMoの件がなんとかなれば、それなりに実用的
になるのではないか ? 是非patchを! ? このIssueでマジ困っているので誰か助けて http://code.google.com/p/googleappengine/issues/ detail?id=4388
19.
Jinja2の拡張 ? 意外とサンプルが少なく、書き方で悩んだ ?
のでメモ ? contextに渡っている値の取り出し方 ? agentの値をfilter内で取り出したかった ? parse時にnodes.ContextReference()を埋め込んでおけ ばOK
Download