East
Meets
West Yuki Sonoda
      Yoji Shidara
       Akira Matsuda
    Shintaro Kakutani
East
Meets
West Yoji Shidara
     Yuki Sonoda
       Akira Matsuda
    Shintaro Kakutani
From Japanese mobile-
web world, to Latin-1
developers.


yoji.shidara@enishi-tech.com
My name is
Yoji SHIDARA.
Enishi Tech Inc.
Small Company.
Only 2 staffs.
Small Office.
(CEO’s flat)
“Tech” is for
                 technology.



“Enishi” implies:
          relationship,
          link, bound, fate,
          chance...
We’re from Japan!
    @darashi (me)
Sapporo
 1.4hrs      9.5hrs

Tokyo                 San Fransisco!

 @yugui      @a_matsuda
 @kakutani
Sapporo is a
beautiful provincial
city of Japan.
Delicious foods are
waiting for you!
My works:
Real-time trends
tracker for twitter.
 http://buzztter.com
jpmobile
jpmobile:
A Rails Plugin for
Japanese Mobile
    Phones.
jpmobile absorbs
Chaotic
Specifications of
Japanese Mobile
    Phones.
Today,
I’m going to take
you to the chaotic
      world.
By the way,
We have kinds of
   characters.
I’m so nervous

We have kinds of
   characters.

 at San Fransisco!
We have lots of
  characters.
Not only
characters,
But also
encodings!
Major Encodings:
Shift_JIS Windows
ISO-2022-JP E-Mail
EUC-JP traditional UNIX
UTF-8 modern systems
UTF-8 is not the
 only option.
We’re still using
these encodings
 as the situation
    demands.
Ruby 1.9 works
 nice with this
   situation.
For example,
1.8   require ‘kconv’
      Kconv::kconv("   ",
        Kconv::JIS, # to
        Kconv::UTF8 # from
      )
      #=> "e$B;%KZe(B"
 We must care about the
 encoding of “   ”

1.9   "   ".encode("ISO-2022-JP")
      #=> "e$B;%KZe(B"
 Ruby cares about the
 encoding of “   ”
Now we’re happy!
... in most cases.
Do you know
Emoji
Emoticon
E + Moji
      +
Picture + Character
Emoji makes the
situation worse.
We have three
major mobile
phone carriers
in Japan.
They define their
 own emoticon
    charset.
>A
DoCoMo          au       SoftBank

    >>

(Japanese usually paint the sun red)

    ><
DoCoMo      au   SoftBank
          >>
Unicode
     U+E63E U+E488 U+E04A
SJIS F89F   F660   $Gj
 JIS
       ><   7541     w/escape
SJIS’       EB60
Regular
Encodings
    x
Emoticon
Encodings
That’s not all.
Five sad stories:
(1)
Sometimes the
 corresponding
emoticon is not
available on the
 other carriers.
“Snow crystal”
                 DoCoMo
    au
                  N/A


                 SoftBank
                  N/A
(2)
Nuances may be
 lost during the
   translation.
“Really nonsense, but I had a
quarrel with my girlfriend
because of a problem with
mobile phones.”
- Mr. A (20-year-old office worker, Tokyo)



                       …
                                       20

http://www.j-cast.com/kaisha/2009/07/31046442.html
(3)
Machine-readable
 tables are not
   published.
!"#$%&'()*+,-./01

                                                          v¶·y!]^                                                                                     v¶·y!]^
                        ¢QQ£&'(¤                           7´µ¤ª£¥                                                  ¢QQ£&'(¤                           7´µ¤ª£¥
&'(                                             !²¬³´µ¤                 &'(                                                                 !²¬³´µ¤
      45         -.67   ¥¦§”¨©ª£¥«¬   ¯°§’±“$             ¸^lž¹º                         45                  -.67   ¥¦§”¨©ª£¥«¬   ¯°§’±“$             ¸^lž¹º
 23                                             ª£¥«¬-®                  23                                                                 ª£¥«¬-®
                             -®                           »¼¥¦§”¨©ª£¥                                                    -®                           »¼¥¦§”¨©ª£¥
                                                            ¸^l                                                                                         ¸^l



 8         9            : ; < = ! > ? 8 @ < A B ! C < =                 AD                              EFGH        : @ < ! ! < > D @ @ A : ! I < !



 D         9            : ; < B ! > ? D @ < A C ! C < B                 AA                              JFGH        : @ < : ! < > A @ @ > K ! I < :



 A         L            : ; < C ! > ? A @ < A I ! C < C                 A>                              EFGM        : @ ; K ! < > > @ @ > 8 ! I ; K



 >         L            : @ > ? ! < D I @ @ D = ! I > ?                 A<                              JFGM        : @ ; 8 ! < > < @ @ > D ! I ; 8



 <         NOPFGH       : @ > = ! < D Q @ @ D B ! I > =                 A;                              RSTH        : @ ; D ! < > ; @ @ > A ! I ; D



 ;         UOPFGH       : @ > B ! < D ! @ @ D C ! I > B                 A@                              RSTM        : @ ; A ! < > @ @ @ > > ! I ; A



 @         NOPFGM       : @ > C ! < D : @ @ D I ! I > C                 A?                              VRWGH       : @ ; > ! < > ? @ @ > < ! I ; >



 ?         UOPFGM       : @ > I ! < A K @ @ D Q ! I > I                 A=                              VRWGM       : @ ; < ! < > = @ @ > ; ! I ; <



 =         XWGH         : @ > Q ! < A 8 @ @ D ! ! I > Q                 >K                              RYH         : @ ; ; ! < > B @ @ > @ ! I ; ;




                                                                                                                                                               http://www.nttdocomo.co.jp/service/
8K         XWGM         : @ > ! ! < A D @ @ D : ! I > !                 >8                              RYM         : @ ; @ ! < > C @ @ > ? ! I ; @


           .Z[]^_`Z
88                      : @ > : ! < A A @ @ A K ! I > :                 >D                                          : @ ; ? ! < > I @ @ > = ! I ; ?


                                                                                                                                                               imode/make/content/pictograph/basic/
                                                                                                        JbcM
           _Za7



8D         d.Zefg       : ; = B ! > I 8 @ < @ B ! C = B                 >A                              EbcM        : @ ; = ! < > Q @ @ > B ! I ; =



8A         gh^i         : ; ! B ! < 8 8 @ ; ; I ! C ! B                 >>                              jk          : ; ; K ! > ? ? @ < > 8 ! C ; K



8>         l7           : @ = ; ! < @ = @ @ @ ; ! I = ;                 ><                              mna^7       : ; = A ! > C B @ < @ A ! C = A



8<         oH           : ; < ! ! > ? ; @ < A : ! C < !                 >;                              pq          : @ C 8 ! < = > @ ? A A ! I C 8



8;         rstu         : ; < : ! > ? @ @ < > K ! C < :                 >@                              oMvwxPy     : ; ; 8 ! > ? = @ < > D ! C ; 8



8@         zWGH         : @ < K ! < A > @ @ A 8 ! I < K                 >?                              {7          : ; ! C ! < 8 D @ ; ; Q ! C ! C


                                                                                                        /|_}hZv4
8?         zWGM         : @ < 8 ! < A < @ @ A D ! I < 8                 >=                              ~y
                                                                                                                    : @ @ I ! < ; K @ @ < Q ! I @ I



8=         XSTH         : @ < D ! < A ; @ @ A A ! I < D                 <K                              Xw          : ; Q A ! > : B @ ; < < ! C Q A



DK         XSTM         : @ < A ! < A @ @ @ A > ! I < A                 <8                              •^6         : @ C D ! < = < @ ? A > ! I C D


                                                                                                        €•‚^ƒvi„•
D8         RWGH         : @ < > ! < A ? @ @ A < ! I < >                 <D                              7efgy
                                                                                                                    : ; = C ! > I D @ < @ C ! C = C



DD         RWGH         : @ < < ! < A = @ @ A ; ! I < <                 <A                              Wx…         : ; ! I ! < 8 A @ ; ; ! ! C ! I


                                                                                                        6†^l€^„
DA         XYH          : @ < ; ! < A B @ @ A @ ! I < ;                 <>                              v‡ˆy
                                                                                                                    : @ ; B ! < > ! @ @ > C ! I ; B



D>         XYD          : @ < @ ! < A C @ @ A ? ! I < @                 <<                              ‰Š‹         : @ ; C ! < > : @ @ > I ! I ; C



D<

      http://www.au.kddi.com/
           Œpq          : @ = @ ! < @ B @ @ @ @ ! I = @                 <;                              '•H         : @ @ Q ! < ; 8 @ @ < ! ! I @ Q
                                                                                                                                                                    http://creation.mb.softbank.jp/
      ezfactory/tec/spec/pdf/typeD.pdf                                                                                                                              web/web_pic_01.html
D;         /fg          : @ < ? ! < A I @ @ A = ! I < ?                 <@                              ŽpqH        : @ = ? ! < @ C @ @ @ ? ! I = ?



D@         €.•g         : @ < = ! < A Q @ @ A B ! I < =                 <?    •‘‘‘%‘‘‘’‘‘‘“‘‘‘$‘‘‘”‘‘   ŽpqM        : ; < > ! > @ I @ < A < ! C < >


                                                                                                        [–|h^—‚g„
D?         •H           : @ < B ! < A ! @ @ A C ! I < B                 <=                              H
                                                                                                                    : @ @ ! ! < ; D @ @ < : ! I @ !
(4)
The official tables
are not complete.
(e.g. emoticons of
  prior company
name are hidden)
(5)
Assignments of
Unicode private area
    are partially
    overlapping
      between
    two carriers.
Solution:
jpmobile
Automatically translate
= B the emoticons.
               >A        Eb




! B        Rails >>    jk
           App
          jpmobile
jpmobile supports GPS,
  session management,
subscriber identification,
  template switching, ...
Conclusion:
If you are asked to
build a website for
  Japanese mobile
      phones,
Say “No.”
Or use jpmobile.
Future works:
Reimplement
 jpmobile on
Ruby 1.9 m17n
  framework!
Thank you!
Questions:

After the last speech.
Thank you.
We’ll have
Regional RubyKaigi in
Sapporo on 5th Dec 2009 :-)

           Visit Sapporo!
Sapporo!
  1.4hrs    11.15hrs

Tokyo                  San Fransisco

From Japanese mobile-web world, to Latin-1 developers. (a part of "East Meets West")

  • 1.
    East Meets West Yuki Sonoda Yoji Shidara Akira Matsuda Shintaro Kakutani
  • 2.
    East Meets West Yoji Shidara Yuki Sonoda Akira Matsuda Shintaro Kakutani
  • 3.
    From Japanese mobile- webworld, to Latin-1 developers. yoji.shidara@enishi-tech.com
  • 4.
  • 5.
    Enishi Tech Inc. SmallCompany. Only 2 staffs.
  • 6.
  • 7.
    “Tech” is for technology. “Enishi” implies: relationship, link, bound, fate, chance...
  • 8.
    We’re from Japan! @darashi (me) Sapporo 1.4hrs 9.5hrs Tokyo San Fransisco! @yugui @a_matsuda @kakutani
  • 9.
    Sapporo is a beautifulprovincial city of Japan.
  • 10.
  • 11.
  • 12.
    Real-time trends tracker fortwitter. http://buzztter.com
  • 13.
  • 14.
    jpmobile: A Rails Pluginfor Japanese Mobile Phones.
  • 15.
  • 16.
  • 17.
  • 18.
    I’m going totake you to the chaotic world.
  • 19.
  • 20.
    We have kindsof characters.
  • 21.
    I’m so nervous Wehave kinds of characters. at San Fransisco!
  • 22.
    We have lotsof characters.
  • 23.
  • 24.
  • 25.
    Major Encodings: Shift_JIS Windows ISO-2022-JPE-Mail EUC-JP traditional UNIX UTF-8 modern systems
  • 26.
    UTF-8 is notthe only option.
  • 27.
    We’re still using theseencodings as the situation demands.
  • 28.
    Ruby 1.9 works nice with this situation.
  • 29.
  • 30.
    1.8 require ‘kconv’ Kconv::kconv(" ", Kconv::JIS, # to Kconv::UTF8 # from ) #=> "e$B;%KZe(B" We must care about the encoding of “ ” 1.9 " ".encode("ISO-2022-JP") #=> "e$B;%KZe(B" Ruby cares about the encoding of “ ”
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
    E + Moji + Picture + Character
  • 37.
  • 38.
    We have three majormobile phone carriers in Japan.
  • 39.
    They define their own emoticon charset.
  • 40.
    >A DoCoMo au SoftBank >> (Japanese usually paint the sun red) ><
  • 41.
    DoCoMo au SoftBank >> Unicode U+E63E U+E488 U+E04A SJIS F89F F660 $Gj JIS >< 7541 w/escape SJIS’ EB60
  • 42.
    Regular Encodings x Emoticon Encodings
  • 43.
  • 44.
  • 45.
  • 46.
    Sometimes the corresponding emoticonis not available on the other carriers.
  • 47.
    “Snow crystal” DoCoMo au N/A SoftBank N/A
  • 48.
  • 49.
    Nuances may be lost during the translation.
  • 50.
    “Really nonsense, butI had a quarrel with my girlfriend because of a problem with mobile phones.” - Mr. A (20-year-old office worker, Tokyo) … 20 http://www.j-cast.com/kaisha/2009/07/31046442.html
  • 51.
  • 52.
  • 53.
    !"#$%&'()*+,-./01 v¶·y!]^ v¶·y!]^ ¢QQ£&'(¤ 7´µ¤ª£¥ ¢QQ£&'(¤ 7´µ¤ª£¥ &'( !²¬³´µ¤ &'( !²¬³´µ¤ 45 -.67 ¥¦§”¨©ª£¥«¬ ¯°§’±“$ ¸^lž¹º 45 -.67 ¥¦§”¨©ª£¥«¬ ¯°§’±“$ ¸^lž¹º 23 ª£¥«¬-® 23 ª£¥«¬-® -® »¼¥¦§”¨©ª£¥ -® »¼¥¦§”¨©ª£¥ ¸^l ¸^l 8 9 : ; < = ! > ? 8 @ < A B ! C < = AD EFGH : @ < ! ! < > D @ @ A : ! I < ! D 9 : ; < B ! > ? D @ < A C ! C < B AA JFGH : @ < : ! < > A @ @ > K ! I < : A L : ; < C ! > ? A @ < A I ! C < C A> EFGM : @ ; K ! < > > @ @ > 8 ! I ; K > L : @ > ? ! < D I @ @ D = ! I > ? A< JFGM : @ ; 8 ! < > < @ @ > D ! I ; 8 < NOPFGH : @ > = ! < D Q @ @ D B ! I > = A; RSTH : @ ; D ! < > ; @ @ > A ! I ; D ; UOPFGH : @ > B ! < D ! @ @ D C ! I > B A@ RSTM : @ ; A ! < > @ @ @ > > ! I ; A @ NOPFGM : @ > C ! < D : @ @ D I ! I > C A? VRWGH : @ ; > ! < > ? @ @ > < ! I ; > ? UOPFGM : @ > I ! < A K @ @ D Q ! I > I A= VRWGM : @ ; < ! < > = @ @ > ; ! I ; < = XWGH : @ > Q ! < A 8 @ @ D ! ! I > Q >K RYH : @ ; ; ! < > B @ @ > @ ! I ; ; http://www.nttdocomo.co.jp/service/ 8K XWGM : @ > ! ! < A D @ @ D : ! I > ! >8 RYM : @ ; @ ! < > C @ @ > ? ! I ; @ .Z[]^_`Z 88 : @ > : ! < A A @ @ A K ! I > : >D : @ ; ? ! < > I @ @ > = ! I ; ? imode/make/content/pictograph/basic/ JbcM _Za7 8D d.Zefg : ; = B ! > I 8 @ < @ B ! C = B >A EbcM : @ ; = ! < > Q @ @ > B ! I ; = 8A gh^i : ; ! B ! < 8 8 @ ; ; I ! C ! B >> jk : ; ; K ! > ? ? @ < > 8 ! C ; K 8> l7 : @ = ; ! < @ = @ @ @ ; ! I = ; >< mna^7 : ; = A ! > C B @ < @ A ! C = A 8< oH : ; < ! ! > ? ; @ < A : ! C < ! >; pq : @ C 8 ! < = > @ ? A A ! I C 8 8; rstu : ; < : ! > ? @ @ < > K ! C < : >@ oMvwxPy : ; ; 8 ! > ? = @ < > D ! C ; 8 8@ zWGH : @ < K ! < A > @ @ A 8 ! I < K >? {7 : ; ! C ! < 8 D @ ; ; Q ! C ! C /|_}hZv4 8? zWGM : @ < 8 ! < A < @ @ A D ! I < 8 >= ~y : @ @ I ! < ; K @ @ < Q ! I @ I 8= XSTH : @ < D ! < A ; @ @ A A ! I < D <K Xw : ; Q A ! > : B @ ; < < ! C Q A DK XSTM : @ < A ! < A @ @ @ A > ! I < A <8 •^6 : @ C D ! < = < @ ? A > ! I C D €•‚^ƒvi„• D8 RWGH : @ < > ! < A ? @ @ A < ! I < > <D 7efgy : ; = C ! > I D @ < @ C ! C = C DD RWGH : @ < < ! < A = @ @ A ; ! I < < <A Wx… : ; ! I ! < 8 A @ ; ; ! ! C ! I 6†^l€^„ DA XYH : @ < ; ! < A B @ @ A @ ! I < ; <> v‡ˆy : @ ; B ! < > ! @ @ > C ! I ; B D> XYD : @ < @ ! < A C @ @ A ? ! I < @ << ‰Š‹ : @ ; C ! < > : @ @ > I ! I ; C D< http://www.au.kddi.com/ Œpq : @ = @ ! < @ B @ @ @ @ ! I = @ <; '•H : @ @ Q ! < ; 8 @ @ < ! ! I @ Q http://creation.mb.softbank.jp/ ezfactory/tec/spec/pdf/typeD.pdf web/web_pic_01.html D; /fg : @ < ? ! < A I @ @ A = ! I < ? <@ ŽpqH : @ = ? ! < @ C @ @ @ ? ! I = ? D@ €.•g : @ < = ! < A Q @ @ A B ! I < = <? •‘‘‘%‘‘‘’‘‘‘“‘‘‘$‘‘‘”‘‘ ŽpqM : ; < > ! > @ I @ < A < ! C < > [–|h^—‚g„ D? •H : @ < B ! < A ! @ @ A C ! I < B <= H : @ @ ! ! < ; D @ @ < : ! I @ !
  • 54.
  • 55.
    The official tables arenot complete. (e.g. emoticons of prior company name are hidden)
  • 56.
  • 57.
    Assignments of Unicode privatearea are partially overlapping between two carriers.
  • 58.
  • 59.
  • 60.
    Automatically translate = Bthe emoticons. >A Eb ! B Rails >> jk App jpmobile
  • 61.
    jpmobile supports GPS, session management, subscriber identification, template switching, ...
  • 62.
  • 63.
    If you areasked to build a website for Japanese mobile phones,
  • 64.
  • 65.
  • 66.
  • 67.
    Reimplement jpmobile on Ruby1.9 m17n framework!
  • 68.
  • 69.
    Questions: After the lastspeech. Thank you.
  • 70.
    We’ll have Regional RubyKaigiin Sapporo on 5th Dec 2009 :-) Visit Sapporo! Sapporo! 1.4hrs 11.15hrs Tokyo San Fransisco