• Save
use Encode::JP::Mobile;
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

use Encode::JP::Mobile;

on

  • 12,981 views

Perl標準の機能を使った絵文字の相互変換

Perl標準の機能を使った絵文字の相互変換

Statistics

Views

Total Views
12,981
Views on SlideShare
12,683
Embed Views
298

Actions

Likes
4
Downloads
36
Comments
1

6 Embeds 298

http://eonishis.seesaa.net 215
http://okyuu.com 55
http://www.slideshare.net 23
http://webcache.googleusercontent.com 3
http://mgw.hatena.ne.jp 1
http://s.deeeki.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • 早速ですが、最新版をsvn HEAD ではなく CPANからgetできるようになりま した!

    http://search.cpan.org/dist/Encode-JP-Mobile/

    $ sudo cpan Encode::JP::Mobile
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

use Encode::JP::Mobile; Presentation Transcript

  • 1. use Encode::JP::Mobile; Perl 標準の機能を使った絵文字の相互変換 株式会社モードツー 冨田 尚樹 <tomita@cpan.org> http://e8y.net/ YAPC::Asia 2008 2008/5/16
  • 2. アジェンダ
    • Perl とモバイル
    • Encode::JP::Mobile とは
    • 使い方 ~基本編~
    • 使い方 ~発展編~
    • ステータス / インストール
    • さいごに
  • 3.
    • 最新版( svn HEAD )の Encode::JP::Mobile を知らない人もいると思うので、基本的な内容を扱います
    • Encode::JP::Mobile can help foreign web developers certainly!
  • 4. アジェンダ
    • Perl とモバイル ←
    • Encode::JP::Mobile とは
    • 使い方 ~基本編~
    • 使い方 ~発展編~
    • ステータス / インストール
    • さいごに
  • 5. 昨年 2007 年末 出典: 電気通信事業者協会 http://www.tca.or.jp/japan/database/daisu/
  • 6.
    • 携帯契約者数、1億を超える
    • 日本の人口は 1億 2 千万くらい
    日本、どんだけ携帯好き もちろん複数台所有している個人・会社があるでしょうが
  • 7. とりわけ
    • 中学生・高校生
    • 携帯によるインターネット利用
    2007 年 09 月 バンダイ・朝日新聞 http://www.bandai-net.com/corporation/release/release.php?id=946 勉強しろよ
  • 8. そんなわけで
    • 携帯向けウェブサービス
    • 楽しい
    • ビジネスにも
  • 9. ちなみに
    • SNS
    YAPC::Asia Gold Sponsors! ケータイ白書 2008
  • 10.
    • Perl は日本のモバイル業界を支えている! と言っても過言ではない
    この機会に言いたいこと
  • 11. モバイル系の課題
    • キャリアのブラウザ仕様の違い
    • 絵文字
    • ページあたりの表示メモリ制限
    • Flash Lite
    • 端末 ID での認証
    • IP 帯域チェック
    • QR コード
    • mailto: の仕様
    • 迷惑メール拒否機能対策
    • 迷惑メール業者認定回避
    • デコメ
  • 12. モバイル系の課題
    • キャリアのブラウザ仕様の違い
    • 絵文字
    • ページあたりの表示メモリ制限
    • Flash Lite
    • 端末 ID での認証
    • IP 帯域チェック
    • QR コード
    • mailto: の仕様
    • 迷惑メール拒否機能対策
    • 迷惑メール業者認定回避
    • デコメ
    • 本文なし写真添付メール
    • Cookie
    • 簡易位置情報
    • リダイレクト回数制限
    • GPS
    • Java アプリ
    • SSL は高いのしかだめだったり
    • フルブラウザ
    • 着メロ
    • 待ち受け
  • 13. モバイル系の課題
    • キャリアのブラウザ仕様の違い
    • 絵文字
    • ページあたりの表示メモリ制限
    • Flash Lite
    • 端末 ID での認証
    • IP 帯域チェック
    • QR コード
    • mailto: の仕様
    • 迷惑メール拒否機能対策
    • 迷惑メール業者認定回避
    • デコメ
    • 本文なし写真添付メール
    • Cookie
    • 簡易位置情報
    • リダイレクト回数制限
    • GPS
    • Java アプリ
    • SSL は高いのしかだめだったり
    • フルブラウザ
    • 着メロ
    • 待ち受け
    • モバイル検索エンジンのクローラー対策
    • いろんな NDA 縛り
    • 総務省による鶴の一声
    • たまに現れる超特殊端末
    • ARPU ARPU 言うお客様
    • 古い端末を捨てたがらないお客様
    • サービスが終了してしまったキャリア
    • 度重なる運営者変更に見舞われるキャリア
    • キャリアごとに見にくい技術情報
    • なぜか対応表は画像とか PDF で提供されたり
    • たびだび変えられる URL
  • 14. Perl ハッカーなら
    • モジュールで解決しよう
  • 15. アジェンダ
    • Perl とモバイル
    • Encode::JP::Mobile とは ←
    • 使い方 ~基本編~
    • 使い方 ~発展編~
    • ステータス / インストール
    • さいごに
  • 16. ちなみに
    • 今回の YAPC はモバイルネタ多いですね
    ← 今ココ
  • 17. TMTOWTDI
    • Encode::JP::Mobile は、 絵文字周りの課題を扱うモジュールです
    • miyagawa さん作
    • #mobilejp で発展
    • Typecast でも使われているらしい
  • 18. Encode::JP::Mobile でやりたいこと
  • 19. 絵文字を使うと
    • 1.画像を使わないで (サイズを抑えつつ) キラキラにできる
    株式会社ビジュアルワークス http://t-gate.tv/ お世話になっております m(_ _)m
  • 20.
    • 2.携帯ユーザーの大事な表現方法
    株式会社モバイルファクトリー http://wassr.jp/
  • 21. が、各社独自仕様
    • 詳しくは
      • http://coderepos.org/share/wiki/Mobile/Encoding とか。少し触らないと忘れる
    Willcom カバーしきれてません
  • 22. 絵文字対応
    • 1 キャリアだけであれば
    アプリ DB ケータイ
  • 23. アプリ DB ・ 3 キャリアで共通データを使いたい ・テンプレートや DB は一つの文字コードにしたい (utf-8 とか ) ・ アプリ内では、文字はフラグつけて扱いたい ドコモ au などなど
  • 24.
    • キャリアが行ない始めた絵文字の相互変換
    あと、どうせならこれもやりたい
  • 25. 期待する形 共通なもの ドコモの絵文字交じりの sjis au の絵文字交じりの sjis softbank の絵文字交じりの utf-8 ドコモの絵文字交じりの sjis au の絵文字交じりの sjis softbank の絵文字交じりの utf-8
  • 26. Encode::JP::Mobile の解決法
    • Encode を使う
    softbank の絵文字交じりの utf-8 unicode decode ドコモの絵文字交じりの sjis au の絵文字交じりの sjis softbank の絵文字交じりの utf-8 ドコモの絵文字交じりの sjis au の絵文字交じりの sjis encode
  • 27. Encode::JP::Mobile が気持ちいい理由
    • 1. Encode を利用
      • Perl 標準のエンコーディング操作モジュール
      • Encode まわりの資産がそのまま使える
  • 28. Encode::JP::Mobile が気持ちいい理由
    • 2.独特なことをしていない
      • Encode:: の範囲のみ
      • shift_jis ← -> unicode マッピングでどこにマッピングするか
      • できるだけ公式情報(キャリアのページ)から構築しようとする涙ぐましい努力
  • 29. マッピングについて補足
      • shift_jis ← -> unicode のマッピング
  • 30. decode ドコモの絵文字交じりの sjis au の絵文字交じりの sjis softbank の絵文字交じりの utf-8 ドコモの絵文字交じりの sjis au の絵文字交じりの sjis softbank の絵文字交じりの utf-8 encode 絵文字以外 ドコモ絵文字 au 絵文字 softbank 絵文字 unicode PRIVATE USE AREA
  • 31. 絵文字以外 ドコモ絵文字 au 絵文字 softbank 絵文字 unicode PRIVATE USE AREA 詳細 http://subtech.g.hatena.ne.jp/miyagawa/20071112/1194865208 絵文字以外 ドコモ絵文字 au 絵文字 softbank 絵文字 unicode PRIVATE USE AREA x-sjis-kddi-cp932 x-sjis-kddi-auto
  • 32. というわけで、 Encode::JP::Mobile
    • メイン機能
      • 1.エンコーディングの提供 (当初)
      • 2.絵文字のキャリア間変換 (最近追加)
  • 33. アジェンダ
    • Perl とモバイル
    • Encode::JP::Mobile とは
    • 使い方 ~基本編~ ←
    • 使い方 ~発展編~
    • ステータス / インストール
    • さいごに
  • 34. 簡単です use Encode; # shift_jis の「あああ」 my $input = &quot;x82xa0x82xa0x82xa0&quot;; # 該当エンコーディングで decode する… my $text = decode('shift_jis', $input); # 後は文字として好きな処理をする… warn length($text); # 3 # 好きなエンコーディングで encode して出す print encode('utf-8', $text);
  • 35. use Encode; use Encode::JP::Mobile; # エンコーディングが追加される
  • 36. Encode::JP::Mobile が追加する エンコーディング名
    • x-sjis-docomo (x-sjis-imode)
    • x-sjis-kddi-auto (x-sjis-ezweb-auto)
    • x-sjis-softbank (x-sjis-vodafone)
    • x-sjis-airh
    • x-utf8-docomo (x-utf8-imode)
    • x-utf8-kddi (x-utf8-ezweb)
    • x-utf8-softbank (x-utf8-vodafone)
    これだけじゃないけど割愛
  • 37. use Encode; use Encode::JP::Mobile; # DoCoMo で、 chaset=shift_jis のページのフォームから # 「あ  」 を送信 my $input = &quot;x82xa0xF8x9F&quot;; # decode my $text = decode(' x-sjis-docomo ', $input); # 好きな処理をする… warn length($text); # 2 # 好きなエンコーディングで encode して出す print encode(' x-sjis-kddi-auto ', $text); # x82xa0xf6x60 (あ  )
  • 38. 自由自在に unicode 'x-sjis-docomo' で decode ドコモの絵文字交じりの sjis au の絵文字交じりの sjis softbank の絵文字交じりの utf-8 DB とか 'utf-8' で encode 'x-sjis-kddi-auto' で decode 'x-utf8-softbank' で decode unicode は utf8 に表現できるのでロスなし
  • 39. unicode ドコモのへ sjis として au へ sjis として softbank へ utf-8 DB とか 'utf-8' で decode 'x-sjis-docomo' で encode 'x-sjis-kddi-auto' で encode 'x-utf8-softbank' で encode
  • 40. どのエンコーディングを使うか
    • HTTP::MobileAgent::Plugin::Charset
    use HTTP::MobileAgent; use HTTP::MobileAgent::Plugin::Charset; my $agent = HTTP::MobileAgent->new($ua); my $encoding = $agent ->encoding ;# 適したエンコーディング名 use HTTP::MobileAttribute plugins => [qw( Encoding )]; my $agent = HTTP::MobileAttribute->new; my $encoding = $agent ->encoding ; # 適したエンコーディング名
    • HTTP::MobileAttribute::Plugin::Encoding
  • 41. キャリア間変換の話 A : 絵文字 -> 絵文字 B : 絵文字 -> 文字表現 (>3<) とか [ エビフライ ]
  • 42.
    • A は何もしなくて ok
    • B について
      • ないものは encode() 失敗します
      • -> Encode デフォルトの処理では「 ? 」に。
    use Encode; use Encode::JP::Mobile; # decode 済みの au の「     」 my $text = &quot;x{EF60}x{ECA2}&quot;; print encode('x-sjis-docomo', $text); #     ?
  • 43. encode() 失敗するものについては、
    • encode 第三引数で制御可能
    use Encode; use Encode::JP::Mobile; my $text = &quot;x{EF60}x{ECA2}&quot;; # print encode('x-sjis-docomo', $text, Encode::FB_XMLCREF ); &#xeca2;
  • 44. コールバックを指定可能 use Encode; use Encode::JP::Mobile; my $text = &quot;x{EF60}x{ECA2}&quot;; # print encode('x-sjis-docomo', $text, sub {'x'} ); x
  • 45. Encode::JP::Mobile::FB_CHARACTER
    • というカスタムコールバック付属
    use Encode; use Encode::JP::Mobile; my $text = &quot;x{EF60}x{ECA2}&quot;; print encode('x-sjis-docomo', $text, Encode::JP::Mobile::FB_CHARACTER );   (> 3 <) と、キャリアが行なう相互変換と同じようになる ※ Encode::JP::Mobile::Fallback で定義されています。
  • 46. アジェンダ
    • Perl とモバイル
    • Encode::JP::Mobile とは
    • 使い方 ~基本編~
    • 使い方 ~発展編~ ←
    • ステータス / インストール
    • さいごに
  • 47. 今回は基本のものだけ扱いましたが
    • 絵文字だけ除去したい
    • PC 向けに絵文字を画像で表示したい
    • といったこともできて、 Encode::JP::Mobile::CookBook の POD に書いてあります。
  • 48. お役立ち
    • dat   - モジュールが内部的に利用
    • lib   - モジュール
    • t   - テスト
    • tools   - dat/* や ucm/* を生成するもの達
    • ucm   - make 時に c (モジュール)になるマッピング
  • 49. お役立ち
    • ソース ./tools/*
      • キャリアのページをスクレイピングして ./ucm/* や ./dat/* を生成
    • ソース ./dat/*
      • 各種マッピング情報
      • -> tools や dat を他言語のモジュールでも使えるのでは
  • 50. アジェンダ
    • Perl とモバイル
    • Encode::JP::Mobile とは
    • 使い方 ~基本編~
    • 使い方 ~発展編~
    • ステータス / インストール ←
    • さいごに
  • 51. ステータス
    • いちおう still development
    • だいぶ落ち着きましたが
    • TODO
      • clouder さんによる Willcom メールの branch の trunk 取り込み
      • Typecast の絵文字も取り込み?たいかも
    • ぜひ使ってみてください
    • 周辺モジュールの充実が期待
  • 52. Catalyst で使う
    • Catalyst::Plugin::Unicode::Encoding::MobileAgent http://coderepos.org/share/browser/lang/perl/Catalyst-Plugin-Unicode-Encoding-MobileAgent/trunk
    • 楽だけど、いまいちな気もする(融通が利かない)。 今の案件で別な形式も作っているので、合わせて UP 予定す
    use Catalyst qw( ConfigLoader MobileAgent Unicode::Encoding Unicode::Encoding::MobileAgent );
  • 53. インストール
    • CPAN は v0.24 (相互変換がない時代)
      • もし http://search.cpan.org/dist/Encode-JP-Mobile/ が v0.25 じゃなかったら
    • svn HEAD
    $ svn co http://svn.coderepos.org/share/lang/perl/Encode-JP-Mobile/trunk/ Encode-JP-Mobile $ perl Makefile.PL $ make $ make test $ sudo make install
  • 54. アジェンダ
    • Perl とモバイル
    • Encode::JP::Mobile とは
    • 使い方 ~基本編~
    • 使い方 ~発展編~
    • ステータス / インストール
    • さいごに ←
  • 55. モバイルまわりはまだまだモジュール化・ノウハウ共有の余地あり
    • #mobilejp@irc.freenode.net
      • 私は遅レスですすみません
      • 神速な tokuhirom さんがいます
      • Encode::JP::Mobile のチャンネルというわけではない
      • Perl だけってわけでもないです
    • http://mobilehacker.g.hatena.ne.jp/
      • もある
  • 56. ありがとうございました
    • Encode::JP::Mobile はいけてるモジュール
    • モバイル周りのノウハウ共有を進めよう