ガラパゴスに線路を敷こう: 携帯電話用railsプラグインjpmobile

96
ガラパゴスに 線路を敷こう 携帯電話用Railsプラグイン Jpmobile しだら ようじ SHIDARA Yohji Lay Rails on “Galapagos” Jpmobile: A Rails Plugin for Japanese Mobile Phones

Upload: yoji-shidara

Post on 28-May-2015

3.933 views

Category:

Business


0 download

TRANSCRIPT

Page 1: ガラパゴスに線路を敷こう: 携帯電話用RailsプラグインJpmobile

ガラパゴスに線路を敷こう携帯電話用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 ¨

Page 2: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

Photo taken by Kath Bhttp://flickr.com/photos/kathb/2196643434/

Page 3: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

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

Page 4: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

日本の携帯電話には魅力的な機能が沢山

Japanese mobile phones have a lot of fascinating features ...

Page 5: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

しかし, どの機能もキャリアごとの独自仕様に基づいて提供される

However, these features are provided with Cell-phone-operator-specific specifications,

Page 6: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

しかも, しばしばドキュメントされていない

which is sometimes undocumented.

Page 7: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

たとえば, 端末位置情報を端末に要求する場合:

Example.Requesting GPS location of device:

Page 8: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

<a href="[URL]" lcs>GPS</a>

<a href="device:gpsone?url= [URL]&amp;ver=1&amp;datum=0&amp;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)

Page 9: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

もちろん戻り値もそれぞれ違う!

Of course, the responses are also in various formats!

Page 10: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

もう興味ないですよね・・・

I guess you shouldn’t want to know them!

Page 11: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

つまり

In short,

Page 12: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

携帯電話サイトの開発というのは

working on websites for Japanese mobiles is

Page 13: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

バッドノウハウの蓄積

collecting boring “know-hows.”

Page 14: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

でも, 日本の携帯電話には魅力的な機能が沢山あるのも事実

But we cannot give up the fascinating features of Japanese mobile phones ...

Page 15: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

携帯電話サイトもRails流につくりたい

Motivation:want to build websites for Japanese mobile phones in Rails way.

Page 16: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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

My answer:

Page 17: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

<a href="[URL]" lcs>GPS</a>

<a href="device:gpsone?url= [URL]&amp;ver=1&amp;datum=0&amp;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

Page 18: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

<%= get_position_link_to "GPS", :action=> ... %>

for all Japanese mobiles:

after

Page 19: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 is introduced in ...

Page 20: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

自己紹介

Who am I?

Page 21: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

設樂 洋爾 / 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

Page 22: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

最近のプロジェクト:

My recent work:

Page 23: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

http://buzztter.comextracts buzzphrases from twitter.com

Page 24: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

ところで, 私事ではありますが

By the way,

Page 25: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

スープカレーが大好き

I love soupcurry!(a typical Sapporo food)

Page 26: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

Page 27: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

’06: 108’07: 45

’08(-6/22): 30

Page 28: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

Webサイトまで作ってしまった

so that I made a website:

Page 29: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

http://soupcurry.info

Page 30: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

http://soupcurry.info

Page 31: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

最寄りのスープカレー店を携帯電話のGPS機能で検索できる

You can find the nearby soupcurry restaurants with your mobile (using GPS). -- if you are in Japan ;-)

Page 32: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

最寄りのスープカレー店を携帯電話のGPS機能で検索できる

You can find the nearby soupcurry restaurants with your mobile (using GPS). -- if you are in Japan ;-)

Page 33: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

soupcurry.infoから汎用的な部分を切り離したものが

最初のJpmobile

The reusable component dragged out from soupcurry.info is the origin of Jpmobile.

Page 34: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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

Page 35: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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

Page 36: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

携帯電話を扱う上で最も基本的な処理

is the most fundamental procedure to handle mobile phones

Page 37: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

‣ 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:

Page 38: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

with Jpmobile,

<% if request.mobile? %> from mobile! <% else %> from PC!<% end %>

Jpmobile では

Page 39: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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

Page 40: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

テンプレートの切り替え

Switching templates for mobiles

Page 41: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

携帯/PC, もしくはキャリア毎にテンプレートを切り替えたい

If you want to switch templates for PCs and for mobiles, or for each operator,

Page 42: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

mytemplate.html.erbmytemplate_mobile.html.erbを置くだけで自動的に切り替え

just put mytemplate.html.erb and mytemplate_mobile.html.erb, or

Page 43: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

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)

Page 44: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

以下のテンプレートがあるときSupporse that we have these templates.

mytemplate_mobile_docomo.html.erb

mytemplate_mobile.html.erb

mytemplate.html.erb

Page 45: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

PCからのアクセスではAccess from PC:

mytemplate_mobile_docomo.html.erb

mytemplate_mobile.html.erb

mytemplate.html.erb

Page 46: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

DoCoMoからのアクセスではAccess from DoCoMo:

mytemplate.html.erb

mytemplate_mobile.html.erb

mytemplate_mobile_docomo.html.erb

Page 47: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

mytemplate_mobile.html.erb

DoCoMo以外の携帯電話からのアクセスでは

Access from mobiles except DoCoMo:

mytemplate.html.erb

mytemplate_mobile_docomo.html.erb

Page 48: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

端末位置情報の取得

Getting position of mobile-phones

Page 49: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

緯度(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 %>

Page 50: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

端末製造番号/契約者番号等の取得

Getting production-numbers and/or subscriber-identifiers.

Page 51: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

携帯端末からパスワードを何度も入力するのは苦痛

It should be frustrating to input the password with your mobile every time you are going to login.

Page 52: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

端末あるいは契約者の識別子を取得できる機能がある

Usually the identifier of the device or the subscriber can be obtained.

Page 53: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

もちろん仕様はバラバラ

Of course they are based on the various specifications!

Page 54: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

with Jpmobile,

request.mobile.ident_devicerequest.mobile.ident_subscriber

request.mobile.ident= ident_subscriber || ident_device

Jpmobile では

Page 55: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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.

Page 56: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

IPアドレス帯域の検証と組み合わせると多少はよくなる

The security will be slightly improved with combining IP-address verification.

Page 57: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

IPアドレス帯域の検証

Validation of IP-address range

Page 58: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

PCからアクセスできないサイトを作りたい場合や

We may want to block PCs for some (marketing?) reasons,

Page 59: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

端末/契約者の識別子が確かに携帯電話から渡されたか確認したい場合

or we may want to check if the identifiers (for a device or a subscribe) is surely passed from mobile.

Page 60: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

キャリアがWebで公開しているIP帯域情報を利用できる

The operators provides the information of the IP-address ranges on the website

Page 61: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

もちろん書式はバラバラで機械可読ではないけれど

of course in various formats, and even worse, usually they are not machine readable (dirty scraping is needed).

Page 62: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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はscrapeしたテーブルを同梱しているので

Since Jpmobile contains the tables obtained from these machine-unfriendly websites,

Page 63: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

request.mobile.valid_ip?

Just doこれだけ

Page 64: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

セッションIDの付与

Adding session IDs to URL and FORM

Page 65: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

クッキーに対応していない端末もある

Some devices does not support cookies.

Page 66: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

セッションIDをURLやフォームに付加して引き渡す必要がある

For them, you need to pass the session ID via URL and FORM parameters.

Page 67: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

class MyController < ApplicationController trans_sidend

Page 68: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

ディスプレイ情報の取得

Getting specs of the screen

Page 69: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

端末の画面サイズは機種によって大きく異なっている

The screensize differs according to the model.

Page 70: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

表示を最適化するために画面情報が必要になる

In order to optimize the output, we need the information about the screen.

Page 71: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

HTTPヘッダから情報が渡されることもあるし,

渡されないこともある

The information may be passed via HTTP header, or not.

Page 72: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

ヘッダから渡されない場合はscrapeしたテーブルを参照する

We need to scrape the official websites in case that the information in the header is not available.

Page 73: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

request.mobile.display.colorsrequest.mobile.display.widthrequest.mobile.display.height

Page 74: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

絵文字の相互変換

Conversion of the Emoticons

Page 75: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

日本の携帯電話には表情豊かな絵文字が沢山ある

Lots of lovely emoticons are available in Japanese mobiles.

Page 76: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

もちろんキャリア毎にバラバラ

Each operator have own set of emoticons and own encoding.

Page 77: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

仕様はとてもとても複雑なのでこれだけでもう一度発表できそう

The specifications are so complex that I can make another presentation.

Page 78: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

変換規則も複雑で, 機械可読な変換テーブルも公開されてない

The mappings (between operators) are also complex and not publicly available in machine-readable format.

Page 79: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 では Unicode の私的領域にすべての絵文字をマッピングして保持し

Jpmobile maps all emoticons (of all operators) into Unicode Private Area, and

Page 80: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

出力時に相手にあわせて自動的に変換する

the output is transparently converted into the format appropriate for the target device.

Page 81: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

in a controller:

class MyController < ApplicationController mobile_filterend

Page 82: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

PCでも絵文字を表示できるようにする予定

I’m going to add the feature to send emoticons PCs with embedding images.

Page 83: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

一部の携帯電話はUTF-8に非対応もしくは絵文字を送ってこなくなる

Some mobiles do not support UTF-8 or stop sending emoticons under UTF-8 communication.

Page 84: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

必要に応じてShift-JISで通信

We need to communicate with them in Shift-JIS (a legacy but one of the most commonly used encoding).

Page 85: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

in a controller:

class MyController < ApplicationController mobile_filterend

Page 86: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

まとめ

Summary:

Page 87: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

日本の携帯電話には魅力的な機能が沢山

Japanese mobile phones have a lot of fascinating features.

Page 88: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

携帯電話用サイトには厄介事が一杯

But we need lots of boring know-hows to build websites for Japanese mobile phones.

Page 89: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 が簡単にします!

Jpmobile helps you!

Page 90: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

最後に

Finally, I want to ask your help:

Page 91: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

学生なので, 手元に検証機が沢山あるわけではないのです

I’m a student, so I don’t have many mobile-phones to test Jpmobile on.

Page 92: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

研究室の人に缶コーヒーをごちそうして

テストに協力してもらっています

I often ask my colleagues for help, paying a canned coffee.

Page 93: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

問題を発見されたり, 機能を追加された場合はぜひお知らせください

So, if you find out some problems or if you make any improvement of Jpmobile, please let me know.

Page 94: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

時間がかかるかもしれませんが,対応していきます

It may take long, but I’d like to work on it.

Page 95: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

http://jpmobile-rails.org

Page 96: ガラパゴスに線路を敷こう: 携帯電話用Railsプラグイン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 ¨

Thank you!