狠狠撸

狠狠撸Share a Scribd company logo
RubyKaigi2008
弾丸レポート
しだら ようじ
SHIDARA Yohji
OSC2008-do
Ruby札幌
From Sapporo,
with Love for Ruby.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
今日お伝えしたいこと
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
RubyKaigiは楽しい
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
皆さんも参加してみませんか?
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
RubyKaigiとは:
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
日本で開催される
Ruby言語に関する会議。
http://d.hatena.ne.jp/keyword/Ruby会議
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
仕様はない
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
Regional RubyKaigiについて考
えることは、RubyKaigiとは何かに
ついて考えることと同じなんだな。
けっこうしんどい。明示的な仕様がな
く、実装しかないーーあれ? 何かと似
ているような……。
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
Regional RubyKaigiについて考
えることは、RubyKaigiとは何かに
ついて考えることと同じなんだな。
けっこうしんどい。明示的な仕様がな
く、実装しかないーーあれ? 何かと似
ているような……。
RubyKaigi2008 運営委員長 角谷信太郎
http://kakutani.com/20080623.html#p02
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
毎年のRubyKaigiが
ただ, そこにある
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
一期一会
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
RubyKaigi2008
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
今年のテーマ
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
多様性は善
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
公式タグは
rubykaigi2008
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
blog, ?ickr, ニコニコ動画などを
検索してみてください
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
まとめ記事
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
RubyKaigi2008 スペシャル★レポート
http://gihyo.jp/news/report/01/rubykaigi2008
【RubyKaigi'08】詳細レポート : 多様化するRuby
http://codezine.jp/a/article/aid/2724.aspx
【RubyKaigi'08】多様化するゆるふわ愛され
Ruby梁山泊
http://codezine.jp/a/article/aid/2727.aspx
【日本Ruby会議2008】すでに現実となった「エン
タープライズRuby」と拡大するコミュニティ
http://itpro.nikkeibp.co.jp/article/NEWS/20080623/309326/
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
RubyKaigi2008弾丸ツアー
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
会場
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
つくば国際会議場
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
多目的ホール
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
大ホール
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
懇親会
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
ノベルティ
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
RejectKaigi
RejectRejectKaigi
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
僕らの視点
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
Ruby札幌のミッション
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
コミュニティブース出展
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
だけのはずでしたが???
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
会場のネットワーク
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
動画の撮影, 配信
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
おかげで
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
とても疲れたけど
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
楽しかったです!!
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
動画も順次公開していきます
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
お楽しみに!!
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
Photos by june29, snoozer05, noplans, mrkn and dara
ガラパゴスに
線路を敷こう
携帯電話用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 ?
? { ? ^ C g ¨
OSC2008-do
Photo taken by Kath B
http://?ickr.com/photos/kathb/2196643434/
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
Photo taken by Kath B
http://?ickr.com/photos/kathb/2196643434/
「日本のモバイル市場はま
さにガラパゴス諸島。独特
の進化?発展を遂げて外に
も出られない、内にも入れ
ない状況になっている。」
The Market of Japanese Cellphones
has 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 ?
? { ? ^ C g ¨
OSC2008-do
日本の携帯電話には
魅力的な機能が沢山
Japanese mobile phones have a lot of
fascinating features ...
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
しかし, どの機能もキャリアごとの
独自仕様に基づいて提供される
However, these features are provided
with Cell-phone-operator-speci?c
speci?cations,
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
しかも,
しばしばドキュメントされていない
which is sometimes undocumented.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
たとえば, 端末位置情報を
端末に要求する場合:
Example.
Requesting GPS location of device:
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
<a href="[URL]" lcs>GPS</a>
<a href="device:gpsone?url=
[URL]&amp;ver=1&amp;datum=0&amp;un
it=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:
(of?cially undocumented)
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
もちろん戻り値もそれぞれ違う!
Of course, the responses are also in
various formats!
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
もう興味ないですよね???
I guess you shouldn’t want to know
them!
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
つまり
In short,
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
携帯電話サイトの開発というのは
working on websites for Japanese
mobiles is
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
バッドノウハウの蓄積
collecting boring “know-hows.”
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
でも, 日本の携帯電話には
魅力的な機能が沢山あるのも事実
But we cannot give up the fascinating
features of Japanese mobile phones ...
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
携帯電話サイトも
Rails流につくりたい
Motivation:
want to build websites for Japanese
mobile phones in Rails way.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
Jpmobile
My answer:
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
<a href="[URL]" lcs>GPS</a>
<a href="device:gpsone?url=
[URL]&amp;ver=1&amp;datum=0&amp;un
it=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:
(of?cially undocumented)
before
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
<%= get_position_link_to "GPS",
:action=> ... %>
for all Japanese mobiles:
after
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
紹介されています
Jpmobile is introduced in ...
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
自己紹介
Who am I?
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
設樂 洋爾 / 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 ?
? { ? ^ C g ¨
OSC2008-do
最近のプロジェクト:
My recent work:
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
http://buzztter.com
extracts buzzphrases from twitter.com
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
ところで, 私事ではありますが
By the way,
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
スープカレーが大好き
I love soupcurry!
(a typical Sapporo food)
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
06: 108
07: 45
08(-6/22): 30
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
Webサイトまで作ってしまった
so that I made a website:
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
http://soupcurry.info
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
http://soupcurry.info
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
最寄りのスープカレー店を携帯電話
のGPS機能で検索できる
You can ?nd the nearby soupcurry
restaurants with your mobile (using
GPS). -- if you are in Japan ;-)
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
最寄りのスープカレー店を携帯電話
のGPS機能で検索できる
You can ?nd the nearby soupcurry
restaurants with your mobile (using
GPS). -- if you are in Japan ;-)
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
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 ?
? { ? ^ C g ¨
OSC2008-do
Jpmobileの機能
Features of Jpmobile
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
携帯電話の判別/キャリア判別
Detecting mobile phones and its
operator
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
携帯電話を扱う上で
最も基本的な処理
is the most fundamental procedure to
handle mobile phones
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
? 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 ?
? { ? ^ C g ¨
OSC2008-do
with Jpmobile,
<% if request.mobile? %>
from mobile!
<% else %>
from PC!
<% end %>
Jpmobile では
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
case request.mobile
when Jpmobile::Mobile::Docomo
# for DoCoMo
when Jpmobile::Mobile::Au
# for au
when Jpmobile::Mobile::Softbank
# for SoftBank
when Jpmobile::Mobile::Willcom
# for Willcom
when Jpmobile::Mobile::Emobile
# for EMOBILE
else
# for PC
end
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
テンプレートの切り替え
Switching templates for mobiles
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
携帯/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 ?
? { ? ^ C g ¨
OSC2008-do
mytemplate.html.erb
mytemplate_mobile.html.erb
を置くだけで自動的に切り替え
just put mytemplate.html.erb and
mytemplate_mobile.html.erb, or
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
mytemplate_mobile_docomo.html.erb
mytemplate_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 ?
? { ? ^ C g ¨
OSC2008-do
以下のテンプレートがあるとき
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 ?
? { ? ^ C g ¨
OSC2008-do
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 ?
? { ? ^ C g ¨
OSC2008-do
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 ?
? { ? ^ C g ¨
OSC2008-do
mytemplate_mobile.html.erb
DoCoMo以外の
携帯電話からのアクセスでは
Access from mobiles except DoCoMo:
mytemplate.html.erb
mytemplate_mobile_docomo.html.erb
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
端末位置情報の取得
Getting position of mobile-phones
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
<%= get_position_link_to "GPS",
:action=> ... %>
緯度(latitude):
request.mobile.position.lat
経度(longitude)
request.mobile.position.lng
in a view:
in a controller, ‘gps’ action:
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
端末製造番号/契約者番号等の取得
Getting production-numbers and/or
subscriber-identi?ers.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
携帯端末からパスワードを
何度も入力するのは苦痛
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 ?
? { ? ^ C g ¨
OSC2008-do
端末あるいは契約者の識別子を
取得できる機能がある
Usually the identi?er of the device or
the subscriber can be obtained.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
もちろん仕様はバラバラ
Of course they are based on the various
speci?cations!
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
with Jpmobile,
request.mobile.ident_device
request.mobile.ident_subscriber
request.mobile.ident
= ident_subscriber || ident_device
Jpmobile では
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
平文で渡されるだけなので
それだけでは信頼はできない
Note that they are not creditable
because these identi?ers are just
passed as plain text.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
IPアドレス帯域の検証と
組み合わせると多少はよくなる
The security will be slightly improved
with combining IP-address veri?cation.
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
IPアドレス帯域の検証
Validation of IP-address range
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
PCからアクセスできないサイトを
作りたい場合や
We may want to block PCs for some
(marketing?) reasons,
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
端末/契約者の識別子が確かに携帯
電話から渡されたか確認したい場合
or we may want to check if the
identi?ers (for a device or a subscribe)
is surely passed from mobile.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
キャリアが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 ?
? { ? ^ C g ¨
OSC2008-do
もちろん書式はバラバラで
機械可読ではないけれど
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 ?
? { ? ^ C g ¨
OSC2008-do
Jpmobileはscrapeした
テーブルを同梱しているので
Since Jpmobile contains the tables
obtained from these machine-unfriendly
websites,
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
request.mobile.valid_ip?
Just do
これだけ
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
セッションIDの付与
Adding session IDs to URL and FORM
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
クッキーに対応していない端末
もある
Some devices does not support cookies.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
セッション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 ?
? { ? ^ C g ¨
OSC2008-do
class MyController <
ApplicationController
trans_sid
end
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
ディスプレイ情報の取得
Getting specs of the screen
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
端末の画面サイズは
機種によって大きく異なっている
The screensize differs according to the
model.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
表示を最適化するために
画面情報が必要になる
In order to optimize the output, we
need the information about the screen.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
HTTPヘッダから情報が渡される
こともあるし,
渡されないこともある
The information may be passed via
HTTP header, or not.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
ヘッダから渡されない場合は
scrapeしたテーブルを参照する
We need to scrape the of?cial websites
in case that the information in the
header is not available.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
request.mobile.display.colors
request.mobile.display.width
request.mobile.display.height
OSC2008-do
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
絵文字の相互変換
Conversion of the Emoticons
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
日本の携帯電話には
表情豊かな絵文字が沢山ある
Lots of lovely emoticons are available
in Japanese mobiles.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
もちろんキャリア毎にバラバラ
Each operator have own set of
emoticons and own encoding.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
仕様はとてもとても複雑なので
これだけでもう一度発表できそう
The speci?cations are so complex that I
can make another presentation.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
変換規則も複雑で, 機械可読な変換
テーブルも公開されてない
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 ?
? { ? ^ C g ¨
OSC2008-do
Jpmobile では Unicode の
私的領域にすべての絵文字を
マッピングして保持し
Jpmobile maps all emoticons (of all
operators) into Unicode Private Area,
and
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
出力時に相手にあわせて
自動的に変換する
the output is transparently converted
into the format appropriate for the
target device.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
in a controller:
class MyController <
ApplicationController
mobile_filter
end
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
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 ?
? { ? ^ C g ¨
OSC2008-do
一部の携帯電話は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 ?
? { ? ^ C g ¨
OSC2008-do
必要に応じて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 ?
? { ? ^ C g ¨
OSC2008-do
in a controller:
class MyController <
ApplicationController
mobile_filter
end
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
まとめ
Summary:
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
日本の携帯電話には
魅力的な機能が沢山
Japanese mobile phones have a lot of
fascinating features.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
携帯電話用サイトには厄介事が一杯
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 ?
? { ? ^ C g ¨
OSC2008-do
それ,
Jpmobile が簡単にします!
Jpmobile helps you!
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
最後に
Finally, I want to ask your help:
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
学生なので, 手元に検証機が沢山あ
るわけではないのです
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 ?
? { ? ^ C g ¨
OSC2008-do
研究室の人に
缶コーヒーをごちそうして
テストに協力してもらっています
I often ask my colleagues for help,
paying a canned coffee.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
問題を発見されたり, 機能を追加さ
れた場合はぜひお知らせください
So, if you ?nd 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 ?
? { ? ^ C g ¨
OSC2008-do
時間がかかるかもしれませんが,
対応していきます
It may take long, but I’d like to work
on it.
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
http://jpmobile-rails.org
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
メーリングリストつくりました
I’ve made the ML for Jpmobile:
http://groups.google.com/group/jpmobile
? { ? ^ C g ?
? {Ruby c2008 S f [ ^
? { ? ^ C g ¨
? { ? ^ C g ?
? { ? ^ C g ¨
OSC2008-do
Thank you!

More Related Content

RubyKaigi2008弾丸レポート / ガラパゴスに線路を敷こう

  • 2. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 今日お伝えしたいこと
  • 3. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do RubyKaigiは楽しい
  • 4. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 皆さんも参加してみませんか?
  • 5. OSC2008-do ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ RubyKaigiとは:
  • 6. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 日本で開催される Ruby言語に関する会議。 http://d.hatena.ne.jp/keyword/Ruby会議
  • 7. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 仕様はない
  • 8. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do Regional RubyKaigiについて考 えることは、RubyKaigiとは何かに ついて考えることと同じなんだな。 けっこうしんどい。明示的な仕様がな く、実装しかないーーあれ? 何かと似 ているような……。
  • 9. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do Regional RubyKaigiについて考 えることは、RubyKaigiとは何かに ついて考えることと同じなんだな。 けっこうしんどい。明示的な仕様がな く、実装しかないーーあれ? 何かと似 ているような……。 RubyKaigi2008 運営委員長 角谷信太郎 http://kakutani.com/20080623.html#p02
  • 10. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 毎年のRubyKaigiが ただ, そこにある
  • 11. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 一期一会
  • 12. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do RubyKaigi2008
  • 13. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 今年のテーマ
  • 14. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 多様性は善
  • 15. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 公式タグは rubykaigi2008
  • 16. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do blog, ?ickr, ニコニコ動画などを 検索してみてください
  • 17. OSC2008-do ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ まとめ記事
  • 18. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do RubyKaigi2008 スペシャル★レポート http://gihyo.jp/news/report/01/rubykaigi2008 【RubyKaigi'08】詳細レポート : 多様化するRuby http://codezine.jp/a/article/aid/2724.aspx 【RubyKaigi'08】多様化するゆるふわ愛され Ruby梁山泊 http://codezine.jp/a/article/aid/2727.aspx 【日本Ruby会議2008】すでに現実となった「エン タープライズRuby」と拡大するコミュニティ http://itpro.nikkeibp.co.jp/article/NEWS/20080623/309326/
  • 19. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do RubyKaigi2008弾丸ツアー
  • 20. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 会場
  • 21. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do つくば国際会議場
  • 22. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 23. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 24. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 25. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 26. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 多目的ホール
  • 27. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 28. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 29. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 30. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 31. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 32. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 大ホール
  • 33. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 34. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 35. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 36. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 37. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 懇親会
  • 38. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 39. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 40. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 41. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do ノベルティ
  • 42. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 43. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 44. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 45. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 46. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do RejectKaigi RejectRejectKaigi
  • 47. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 48. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 49. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 50. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 僕らの視点
  • 51. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do Ruby札幌のミッション
  • 52. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do コミュニティブース出展
  • 53. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 54. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do だけのはずでしたが???
  • 55. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 会場のネットワーク
  • 56. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 57. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 58. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 59. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 60. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 61. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 62. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 63. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 動画の撮影, 配信
  • 64. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 65. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 66. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 67. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 68. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 69. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 70. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 71. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do おかげで
  • 72. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do とても疲れたけど
  • 73. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 楽しかったです!!
  • 74. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 動画も順次公開していきます
  • 75. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do お楽しみに!!
  • 76. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do Photos by june29, snoozer05, noplans, mrkn and dara
  • 77. ガラパゴスに 線路を敷こう 携帯電話用Railsプラグイン Jpmobile しだら ようじ SHIDARA Yohji Lay Rails on “Galapagos” Jpmobile: A Rails Plugin for Japanese Mobile Phones
  • 78. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do Photo taken by Kath B http://?ickr.com/photos/kathb/2196643434/
  • 79. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do Photo taken by Kath B http://?ickr.com/photos/kathb/2196643434/ 「日本のモバイル市場はま さにガラパゴス諸島。独特 の進化?発展を遂げて外に も出られない、内にも入れ ない状況になっている。」 The Market of Japanese Cellphones has evolved Exclusively, just like Galapagos. Movability 代表取締役社長 兼 CEO 三木雄信氏 http://plusd.itmedia.co.jp/mobile/articles/0612/01/news126_2.html
  • 80. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 日本の携帯電話には 魅力的な機能が沢山 Japanese mobile phones have a lot of fascinating features ...
  • 81. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do しかし, どの機能もキャリアごとの 独自仕様に基づいて提供される However, these features are provided with Cell-phone-operator-speci?c speci?cations,
  • 82. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do しかも, しばしばドキュメントされていない which is sometimes undocumented.
  • 83. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do たとえば, 端末位置情報を 端末に要求する場合: Example. Requesting GPS location of device:
  • 84. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do <a href="[URL]" lcs>GPS</a> <a href="device:gpsone?url= [URL]&amp;ver=1&amp;datum=0&amp;un it=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: (of?cially undocumented)
  • 85. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do もちろん戻り値もそれぞれ違う! Of course, the responses are also in various formats!
  • 86. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do もう興味ないですよね??? I guess you shouldn’t want to know them!
  • 87. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do つまり In short,
  • 88. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 携帯電話サイトの開発というのは working on websites for Japanese mobiles is
  • 89. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do バッドノウハウの蓄積 collecting boring “know-hows.”
  • 90. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do でも, 日本の携帯電話には 魅力的な機能が沢山あるのも事実 But we cannot give up the fascinating features of Japanese mobile phones ...
  • 91. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 携帯電話サイトも Rails流につくりたい Motivation: want to build websites for Japanese mobile phones in Rails way.
  • 92. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do Jpmobile My answer:
  • 93. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do <a href="[URL]" lcs>GPS</a> <a href="device:gpsone?url= [URL]&amp;ver=1&amp;datum=0&amp;un it=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: (of?cially undocumented) before
  • 94. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do <%= get_position_link_to "GPS", :action=> ... %> for all Japanese mobiles: after
  • 95. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 紹介されています Jpmobile is introduced in ...
  • 96. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 自己紹介 Who am I?
  • 97. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 設樂 洋爾 / 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
  • 98. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 最近のプロジェクト: My recent work:
  • 99. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do http://buzztter.com extracts buzzphrases from twitter.com
  • 100. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do ところで, 私事ではありますが By the way,
  • 101. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do スープカレーが大好き I love soupcurry! (a typical Sapporo food)
  • 102. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do
  • 103. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 06: 108 07: 45 08(-6/22): 30
  • 104. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do Webサイトまで作ってしまった so that I made a website:
  • 105. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do http://soupcurry.info
  • 106. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do http://soupcurry.info
  • 107. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 最寄りのスープカレー店を携帯電話 のGPS機能で検索できる You can ?nd the nearby soupcurry restaurants with your mobile (using GPS). -- if you are in Japan ;-)
  • 108. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 最寄りのスープカレー店を携帯電話 のGPS機能で検索できる You can ?nd the nearby soupcurry restaurants with your mobile (using GPS). -- if you are in Japan ;-)
  • 109. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do soupcurry.infoから 汎用的な部分を切り離したものが 最初のJpmobile The reusable component dragged out from soupcurry.info is the origin of Jpmobile.
  • 110. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do Jpmobileの機能 Features of Jpmobile
  • 111. OSC2008-do ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ 携帯電話の判別/キャリア判別 Detecting mobile phones and its operator
  • 112. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 携帯電話を扱う上で 最も基本的な処理 is the most fundamental procedure to handle mobile phones
  • 113. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do ? 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:
  • 114. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do with Jpmobile, <% if request.mobile? %> from mobile! <% else %> from PC! <% end %> Jpmobile では
  • 115. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do case request.mobile when Jpmobile::Mobile::Docomo # for DoCoMo when Jpmobile::Mobile::Au # for au when Jpmobile::Mobile::Softbank # for SoftBank when Jpmobile::Mobile::Willcom # for Willcom when Jpmobile::Mobile::Emobile # for EMOBILE else # for PC end
  • 116. OSC2008-do ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ テンプレートの切り替え Switching templates for mobiles
  • 117. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 携帯/PC, もしくはキャリア毎に テンプレートを切り替えたい If you want to switch templates for PCs and for mobiles, or for each operator,
  • 118. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do mytemplate.html.erb mytemplate_mobile.html.erb を置くだけで自動的に切り替え just put mytemplate.html.erb and mytemplate_mobile.html.erb, or
  • 119. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do mytemplate_mobile_docomo.html.erb mytemplate_mobile_au.html.erb を置けばよい put mytemplate_mobile_docomo.html.erb and mytemplate_mobile_au.html.erb. (DoCoMo and au are cell-phone-operators)
  • 120. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 以下のテンプレートがあるとき Supporse that we have these templates. mytemplate_mobile_docomo.html.erb mytemplate_mobile.html.erb mytemplate.html.erb
  • 121. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do PCからのアクセスでは Access from PC: mytemplate_mobile_docomo.html.erb mytemplate_mobile.html.erb mytemplate.html.erb
  • 122. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do DoCoMoからのアクセスでは Access from DoCoMo: mytemplate.html.erb mytemplate_mobile.html.erb mytemplate_mobile_docomo.html.erb
  • 123. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do mytemplate_mobile.html.erb DoCoMo以外の 携帯電話からのアクセスでは Access from mobiles except DoCoMo: mytemplate.html.erb mytemplate_mobile_docomo.html.erb
  • 124. OSC2008-do ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ 端末位置情報の取得 Getting position of mobile-phones
  • 125. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do <%= get_position_link_to "GPS", :action=> ... %> 緯度(latitude): request.mobile.position.lat 経度(longitude) request.mobile.position.lng in a view: in a controller, ‘gps’ action:
  • 126. OSC2008-do ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ 端末製造番号/契約者番号等の取得 Getting production-numbers and/or subscriber-identi?ers.
  • 127. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 携帯端末からパスワードを 何度も入力するのは苦痛 It should be frustrating to input the password with your mobile every time you are going to login.
  • 128. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 端末あるいは契約者の識別子を 取得できる機能がある Usually the identi?er of the device or the subscriber can be obtained.
  • 129. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do もちろん仕様はバラバラ Of course they are based on the various speci?cations!
  • 130. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do with Jpmobile, request.mobile.ident_device request.mobile.ident_subscriber request.mobile.ident = ident_subscriber || ident_device Jpmobile では
  • 131. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 平文で渡されるだけなので それだけでは信頼はできない Note that they are not creditable because these identi?ers are just passed as plain text.
  • 132. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do IPアドレス帯域の検証と 組み合わせると多少はよくなる The security will be slightly improved with combining IP-address veri?cation.
  • 133. OSC2008-do ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ IPアドレス帯域の検証 Validation of IP-address range
  • 134. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do PCからアクセスできないサイトを 作りたい場合や We may want to block PCs for some (marketing?) reasons,
  • 135. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 端末/契約者の識別子が確かに携帯 電話から渡されたか確認したい場合 or we may want to check if the identi?ers (for a device or a subscribe) is surely passed from mobile.
  • 136. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do キャリアがWebで公開している IP帯域情報を利用できる The operators provides the information of the IP-address ranges on the website
  • 137. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do もちろん書式はバラバラで 機械可読ではないけれど of course in various formats, and even worse, usually they are not machine readable (dirty scraping is needed).
  • 138. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do Jpmobileはscrapeした テーブルを同梱しているので Since Jpmobile contains the tables obtained from these machine-unfriendly websites,
  • 139. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do request.mobile.valid_ip? Just do これだけ
  • 140. OSC2008-do ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ セッションIDの付与 Adding session IDs to URL and FORM
  • 141. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do クッキーに対応していない端末 もある Some devices does not support cookies.
  • 142. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do セッションIDをURLやフォームに 付加して引き渡す必要がある For them, you need to pass the session ID via URL and FORM parameters.
  • 143. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do class MyController < ApplicationController trans_sid end
  • 144. OSC2008-do ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ ディスプレイ情報の取得 Getting specs of the screen
  • 145. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 端末の画面サイズは 機種によって大きく異なっている The screensize differs according to the model.
  • 146. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 表示を最適化するために 画面情報が必要になる In order to optimize the output, we need the information about the screen.
  • 147. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do HTTPヘッダから情報が渡される こともあるし, 渡されないこともある The information may be passed via HTTP header, or not.
  • 148. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do ヘッダから渡されない場合は scrapeしたテーブルを参照する We need to scrape the of?cial websites in case that the information in the header is not available.
  • 149. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do request.mobile.display.colors request.mobile.display.width request.mobile.display.height
  • 150. OSC2008-do ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ 絵文字の相互変換 Conversion of the Emoticons
  • 151. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 日本の携帯電話には 表情豊かな絵文字が沢山ある Lots of lovely emoticons are available in Japanese mobiles.
  • 152. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do もちろんキャリア毎にバラバラ Each operator have own set of emoticons and own encoding.
  • 153. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 仕様はとてもとても複雑なので これだけでもう一度発表できそう The speci?cations are so complex that I can make another presentation.
  • 154. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 変換規則も複雑で, 機械可読な変換 テーブルも公開されてない The mappings (between operators) are also complex and not publicly available in machine-readable format.
  • 155. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do Jpmobile では Unicode の 私的領域にすべての絵文字を マッピングして保持し Jpmobile maps all emoticons (of all operators) into Unicode Private Area, and
  • 156. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 出力時に相手にあわせて 自動的に変換する the output is transparently converted into the format appropriate for the target device.
  • 157. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do in a controller: class MyController < ApplicationController mobile_filter end
  • 158. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do PCでも絵文字を 表示できるようにする予定 I’m going to add the feature to send emoticons PCs with embedding images.
  • 159. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 一部の携帯電話はUTF-8に非対応 もしくは絵文字を送ってこなくなる Some mobiles do not support UTF-8 or stop sending emoticons under UTF-8 communication.
  • 160. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 必要に応じてShift-JISで通信 We need to communicate with them in Shift-JIS (a legacy but one of the most commonly used encoding).
  • 161. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do in a controller: class MyController < ApplicationController mobile_filter end
  • 162. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do まとめ Summary:
  • 163. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 日本の携帯電話には 魅力的な機能が沢山 Japanese mobile phones have a lot of fascinating features.
  • 164. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 携帯電話用サイトには厄介事が一杯 But we need lots of boring know-hows to build websites for Japanese mobile phones.
  • 165. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do それ, Jpmobile が簡単にします! Jpmobile helps you!
  • 166. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 最後に Finally, I want to ask your help:
  • 167. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 学生なので, 手元に検証機が沢山あ るわけではないのです I’m a student, so I don’t have many mobile-phones to test Jpmobile on.
  • 168. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 研究室の人に 缶コーヒーをごちそうして テストに協力してもらっています I often ask my colleagues for help, paying a canned coffee.
  • 169. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 問題を発見されたり, 機能を追加さ れた場合はぜひお知らせください So, if you ?nd out some problems or if you make any improvement of Jpmobile, please let me know.
  • 170. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do 時間がかかるかもしれませんが, 対応していきます It may take long, but I’d like to work on it.
  • 171. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do http://jpmobile-rails.org
  • 172. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do メーリングリストつくりました I’ve made the ML for Jpmobile: http://groups.google.com/group/jpmobile
  • 173. ? { ? ^ C g ? ? {Ruby c2008 S f [ ^ ? { ? ^ C g ¨ ? { ? ^ C g ? ? { ? ^ C g ¨ OSC2008-do Thank you!