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
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]&ver=1&datum=0&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]&ver=1&datum=0&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!