ガラパゴスに線路を敷こう携帯電話用RailsプラグインJpmobile
しだら ようじSHIDARA Yohji
Lay Rails on “Galapagos”Jpmobile: A Rails Plugin for Japanese Mobile Phones
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
Photo taken by Kath Bhttp://flickr.com/photos/kathb/2196643434/
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
Photo taken by Kath Bhttp://flickr.com/photos/kathb/2196643434/
「日本のモバイル市場はまさにガラパゴス諸島。独特の進化・発展を遂げて外にも出られない、内にも入れない状況になっている。」
The Market of Japanese Cellphoneshas evolved Exclusively,just like Galapagos.
Movability 代表取締役社長 兼 CEO 三木雄信氏http://plusd.itmedia.co.jp/mobile/articles/0612/01/news126_2.html
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
日本の携帯電話には魅力的な機能が沢山
Japanese mobile phones have a lot of fascinating features ...
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
しかし, どの機能もキャリアごとの独自仕様に基づいて提供される
However, these features are provided with Cell-phone-operator-specific specifications,
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
しかも, しばしばドキュメントされていない
which is sometimes undocumented.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
たとえば, 端末位置情報を端末に要求する場合:
Example.Requesting GPS location of device:
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
<a href="[URL]" lcs>GPS</a>
<a href="device:gpsone?url= [URL]&ver=1&datum=0&unit=0">GPS</a>
for DoCoMo:
for au:
for SoftBank 3G:<a href=location:auto?[URL]>GPS</a>for SoftBank 2G:<a href="[URL]" z>GPS</a>
<a href="http://location.request/dummy.cgi?my=[URL]&pos=$location">GPS</a>
for Willcom:
(officially undocumented)
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
もちろん戻り値もそれぞれ違う!
Of course, the responses are also in various formats!
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
もう興味ないですよね・・・
I guess you shouldn’t want to know them!
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
つまり
In short,
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
携帯電話サイトの開発というのは
working on websites for Japanese mobiles is
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
バッドノウハウの蓄積
collecting boring “know-hows.”
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
でも, 日本の携帯電話には魅力的な機能が沢山あるのも事実
But we cannot give up the fascinating features of Japanese mobile phones ...
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
携帯電話サイトもRails流につくりたい
Motivation:want to build websites for Japanese mobile phones in Rails way.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
Jpmobile
My answer:
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
<a href="[URL]" lcs>GPS</a>
<a href="device:gpsone?url= [URL]&ver=1&datum=0&unit=0">GPS</a>
for DoCoMo:
for au:
for SoftBank 3G:<a href=location:auto?[URL]>GPS</a>for SoftBank 2G:<a href="[URL]" z>GPS</a>
<a href="http://location.request/dummy.cgi?my=[URL]&pos=$location">GPS</a>
for Willcom:
(officially undocumented)before
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
<%= get_position_link_to "GPS", :action=> ... %>
for all Japanese mobiles:
after
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
紹介されていますJpmobile is introduced in ...
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
自己紹介
Who am I?
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
設樂 洋爾 / SHIDARA Yohji / dara‣ Jpmobile 作者 the author of Jpmobile‣http://d.hatena.ne.jp/darashi
http://twitter.com/darashi(in Japanese)
‣札幌生まれ, 札幌育ち, 札幌大好きborn in Sapporo, live in Sapporo,love Sapporo-- 1.5hrs. from Tokyo by air‣大学院生 a graduate student‣Ruby Sapporo Staff‣RubyKaigi2008 Staff
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
最近のプロジェクト:
My recent work:
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
http://buzztter.comextracts buzzphrases from twitter.com
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
ところで, 私事ではありますが
By the way,
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
スープカレーが大好き
I love soupcurry!(a typical Sapporo food)
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
’06: 108’07: 45
’08(-6/22): 30
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
Webサイトまで作ってしまった
so that I made a website:
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
http://soupcurry.info
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
http://soupcurry.info
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
最寄りのスープカレー店を携帯電話のGPS機能で検索できる
You can find the nearby soupcurry restaurants with your mobile (using GPS). -- if you are in Japan ;-)
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
最寄りのスープカレー店を携帯電話のGPS機能で検索できる
You can find the nearby soupcurry restaurants with your mobile (using GPS). -- if you are in Japan ;-)
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
soupcurry.infoから汎用的な部分を切り離したものが
最初のJpmobile
The reusable component dragged out from soupcurry.info is the origin of Jpmobile.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
Jpmobileの機能
Features of Jpmobile
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
携帯電話の判別/キャリア判別
Detecting mobile phones and its operator
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
携帯電話を扱う上で最も基本的な処理
is the most fundamental procedure to handle mobile phones
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
‣ DoCoMo/2.0 SH902i(c100;TB;W24H12)‣ KDDI-CA32 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0‣ SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1‣ Vodafone/1.0/V903SH/SHJ001/SN000000000000000 Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0‣ J-PHONE/4.3/V603SH/SNXXXX0000000 SH/0007aa Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.3.2‣ Mozilla/3.0(WILLCOM;KYOCERA/WX310K/2;1.2.2.16.000000/0.1/C100) Opera 7.0
それほど単純ではないIt’s not so easy ...
Various User-Agents:
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
with Jpmobile,
<% if request.mobile? %> from mobile! <% else %> from PC!<% end %>
Jpmobile では
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
case request.mobilewhen Jpmobile::Mobile::Docomo # for DoCoMowhen Jpmobile::Mobile::Au # for auwhen Jpmobile::Mobile::Softbank # for SoftBankwhen Jpmobile::Mobile::Willcom # for Willcomwhen Jpmobile::Mobile::Emobile # for EMOBILEelse # for PCend
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
テンプレートの切り替え
Switching templates for mobiles
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
携帯/PC, もしくはキャリア毎にテンプレートを切り替えたい
If you want to switch templates for PCs and for mobiles, or for each operator,
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
mytemplate.html.erbmytemplate_mobile.html.erbを置くだけで自動的に切り替え
just put mytemplate.html.erb and mytemplate_mobile.html.erb, or
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
mytemplate_mobile_docomo.html.erbmytemplate_mobile_au.html.erb
を置けばよい
put mytemplate_mobile_docomo.html.erb and mytemplate_mobile_au.html.erb.(DoCoMo and au are cell-phone-operators)
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
以下のテンプレートがあるときSupporse that we have these templates.
mytemplate_mobile_docomo.html.erb
mytemplate_mobile.html.erb
mytemplate.html.erb
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
PCからのアクセスではAccess from PC:
mytemplate_mobile_docomo.html.erb
mytemplate_mobile.html.erb
mytemplate.html.erb
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
DoCoMoからのアクセスではAccess from DoCoMo:
mytemplate.html.erb
mytemplate_mobile.html.erb
mytemplate_mobile_docomo.html.erb
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
mytemplate_mobile.html.erb
DoCoMo以外の携帯電話からのアクセスでは
Access from mobiles except DoCoMo:
mytemplate.html.erb
mytemplate_mobile_docomo.html.erb
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
端末位置情報の取得
Getting position of mobile-phones
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
緯度(latitude):request.mobile.position.lat
経度(longitude)request.mobile.position.lng
in a view:
in a controller, ‘gps’ action:
<%= get_position_link_to "GPS", :action=> :gps %>
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
端末製造番号/契約者番号等の取得
Getting production-numbers and/or subscriber-identifiers.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
携帯端末からパスワードを何度も入力するのは苦痛
It should be frustrating to input the password with your mobile every time you are going to login.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
端末あるいは契約者の識別子を取得できる機能がある
Usually the identifier of the device or the subscriber can be obtained.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
もちろん仕様はバラバラ
Of course they are based on the various specifications!
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
with Jpmobile,
request.mobile.ident_devicerequest.mobile.ident_subscriber
request.mobile.ident= ident_subscriber || ident_device
Jpmobile では
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
平文で渡されるだけなのでそれだけでは信頼はできない
Note that they are not creditable because these identifiers are just passed as plain text.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
IPアドレス帯域の検証と組み合わせると多少はよくなる
The security will be slightly improved with combining IP-address verification.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
IPアドレス帯域の検証
Validation of IP-address range
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
PCからアクセスできないサイトを作りたい場合や
We may want to block PCs for some (marketing?) reasons,
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
端末/契約者の識別子が確かに携帯電話から渡されたか確認したい場合
or we may want to check if the identifiers (for a device or a subscribe) is surely passed from mobile.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
キャリアがWebで公開しているIP帯域情報を利用できる
The operators provides the information of the IP-address ranges on the website
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
もちろん書式はバラバラで機械可読ではないけれど
of course in various formats, and even worse, usually they are not machine readable (dirty scraping is needed).
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
Jpmobileはscrapeしたテーブルを同梱しているので
Since Jpmobile contains the tables obtained from these machine-unfriendly websites,
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
request.mobile.valid_ip?
Just doこれだけ
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
セッションIDの付与
Adding session IDs to URL and FORM
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
クッキーに対応していない端末もある
Some devices does not support cookies.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
セッションIDをURLやフォームに付加して引き渡す必要がある
For them, you need to pass the session ID via URL and FORM parameters.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
class MyController < ApplicationController trans_sidend
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
ディスプレイ情報の取得
Getting specs of the screen
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
端末の画面サイズは機種によって大きく異なっている
The screensize differs according to the model.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
表示を最適化するために画面情報が必要になる
In order to optimize the output, we need the information about the screen.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
HTTPヘッダから情報が渡されることもあるし,
渡されないこともある
The information may be passed via HTTP header, or not.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
ヘッダから渡されない場合はscrapeしたテーブルを参照する
We need to scrape the official websites in case that the information in the header is not available.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
request.mobile.display.colorsrequest.mobile.display.widthrequest.mobile.display.height
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
絵文字の相互変換
Conversion of the Emoticons
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
日本の携帯電話には表情豊かな絵文字が沢山ある
Lots of lovely emoticons are available in Japanese mobiles.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
もちろんキャリア毎にバラバラ
Each operator have own set of emoticons and own encoding.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
仕様はとてもとても複雑なのでこれだけでもう一度発表できそう
The specifications are so complex that I can make another presentation.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
変換規則も複雑で, 機械可読な変換テーブルも公開されてない
The mappings (between operators) are also complex and not publicly available in machine-readable format.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
Jpmobile では Unicode の私的領域にすべての絵文字をマッピングして保持し
Jpmobile maps all emoticons (of all operators) into Unicode Private Area, and
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
出力時に相手にあわせて自動的に変換する
the output is transparently converted into the format appropriate for the target device.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
in a controller:
class MyController < ApplicationController mobile_filterend
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
PCでも絵文字を表示できるようにする予定
I’m going to add the feature to send emoticons PCs with embedding images.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
一部の携帯電話はUTF-8に非対応もしくは絵文字を送ってこなくなる
Some mobiles do not support UTF-8 or stop sending emoticons under UTF-8 communication.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
必要に応じてShift-JISで通信
We need to communicate with them in Shift-JIS (a legacy but one of the most commonly used encoding).
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
in a controller:
class MyController < ApplicationController mobile_filterend
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
まとめ
Summary:
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
日本の携帯電話には魅力的な機能が沢山
Japanese mobile phones have a lot of fascinating features.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
携帯電話用サイトには厄介事が一杯
But we need lots of boring know-hows to build websites for Japanese mobile phones.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
それ,Jpmobile が簡単にします!
Jpmobile helps you!
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
最後に
Finally, I want to ask your help:
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
学生なので, 手元に検証機が沢山あるわけではないのです
I’m a student, so I don’t have many mobile-phones to test Jpmobile on.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
研究室の人に缶コーヒーをごちそうして
テストに協力してもらっています
I often ask my colleagues for help, paying a canned coffee.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
問題を発見されたり, 機能を追加された場合はぜひお知らせください
So, if you find out some problems or if you make any improvement of Jpmobile, please let me know.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
時間がかかるかもしれませんが,対応していきます
It may take long, but I’d like to work on it.
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
http://jpmobile-rails.org
œ { Œ ^ C g Ł
œ {Ruby c2008 S f [ ^
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
w i “ Œ w i “ Œ
1 F ¯ w i “ Œ 1 F ¯ w i “ Œ
œ { Œ ^ C g ¨
œ { Œ ^ C g Ł
œ { Œ ^ C g ¨
Thank you!
Top Related