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

use Encode::JP::Mobile;

on

  • 12,872 views

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

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

Statistics

Views

Total Views
12,872
Slideshare-icon Views on SlideShare
12,579
Embed Views
293

Actions

Likes
4
Downloads
36
Comments
1

6 Embeds 293

http://eonishis.seesaa.net 210
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

11 of 1

  • 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; use Encode::JP::Mobile; Presentation Transcript

    • use Encode::JP::Mobile; Perl 標準の機能を使った絵文字の相互変換 株式会社モードツー 冨田 尚樹 <tomita@cpan.org> http://e8y.net/ YAPC::Asia 2008 2008/5/16
    • アジェンダ
      • Perl とモバイル
      • Encode::JP::Mobile とは
      • 使い方 ~基本編~
      • 使い方 ~発展編~
      • ステータス / インストール
      • さいごに
      • 最新版( svn HEAD )の Encode::JP::Mobile を知らない人もいると思うので、基本的な内容を扱います
      • Encode::JP::Mobile can help foreign web developers certainly!
    • アジェンダ
      • Perl とモバイル ←
      • Encode::JP::Mobile とは
      • 使い方 ~基本編~
      • 使い方 ~発展編~
      • ステータス / インストール
      • さいごに
    • 昨年 2007 年末 出典: 電気通信事業者協会 http://www.tca.or.jp/japan/database/daisu/
      • 携帯契約者数、1億を超える
      • 日本の人口は 1億 2 千万くらい
      日本、どんだけ携帯好き もちろん複数台所有している個人・会社があるでしょうが
    • とりわけ
      • 中学生・高校生
      • 携帯によるインターネット利用
      2007 年 09 月 バンダイ・朝日新聞 http://www.bandai-net.com/corporation/release/release.php?id=946 勉強しろよ
    • そんなわけで
      • 携帯向けウェブサービス
      • 楽しい
      • ビジネスにも
    • ちなみに
      • SNS
      YAPC::Asia Gold Sponsors! ケータイ白書 2008
      • Perl は日本のモバイル業界を支えている! と言っても過言ではない
      この機会に言いたいこと
    • モバイル系の課題
      • キャリアのブラウザ仕様の違い
      • 絵文字
      • ページあたりの表示メモリ制限
      • Flash Lite
      • 端末 ID での認証
      • IP 帯域チェック
      • QR コード
      • mailto: の仕様
      • 迷惑メール拒否機能対策
      • 迷惑メール業者認定回避
      • デコメ
    • モバイル系の課題
      • キャリアのブラウザ仕様の違い
      • 絵文字
      • ページあたりの表示メモリ制限
      • Flash Lite
      • 端末 ID での認証
      • IP 帯域チェック
      • QR コード
      • mailto: の仕様
      • 迷惑メール拒否機能対策
      • 迷惑メール業者認定回避
      • デコメ
      • 本文なし写真添付メール
      • Cookie
      • 簡易位置情報
      • リダイレクト回数制限
      • GPS
      • Java アプリ
      • SSL は高いのしかだめだったり
      • フルブラウザ
      • 着メロ
      • 待ち受け
    • モバイル系の課題
      • キャリアのブラウザ仕様の違い
      • 絵文字
      • ページあたりの表示メモリ制限
      • Flash Lite
      • 端末 ID での認証
      • IP 帯域チェック
      • QR コード
      • mailto: の仕様
      • 迷惑メール拒否機能対策
      • 迷惑メール業者認定回避
      • デコメ
      • 本文なし写真添付メール
      • Cookie
      • 簡易位置情報
      • リダイレクト回数制限
      • GPS
      • Java アプリ
      • SSL は高いのしかだめだったり
      • フルブラウザ
      • 着メロ
      • 待ち受け
      • モバイル検索エンジンのクローラー対策
      • いろんな NDA 縛り
      • 総務省による鶴の一声
      • たまに現れる超特殊端末
      • ARPU ARPU 言うお客様
      • 古い端末を捨てたがらないお客様
      • サービスが終了してしまったキャリア
      • 度重なる運営者変更に見舞われるキャリア
      • キャリアごとに見にくい技術情報
      • なぜか対応表は画像とか PDF で提供されたり
      • たびだび変えられる URL
    • Perl ハッカーなら
      • モジュールで解決しよう
    • アジェンダ
      • Perl とモバイル
      • Encode::JP::Mobile とは ←
      • 使い方 ~基本編~
      • 使い方 ~発展編~
      • ステータス / インストール
      • さいごに
    • ちなみに
      • 今回の YAPC はモバイルネタ多いですね
      ← 今ココ
    • TMTOWTDI
      • Encode::JP::Mobile は、 絵文字周りの課題を扱うモジュールです
      • miyagawa さん作
      • #mobilejp で発展
      • Typecast でも使われているらしい
    • Encode::JP::Mobile でやりたいこと
    • 絵文字を使うと
      • 1.画像を使わないで (サイズを抑えつつ) キラキラにできる
      株式会社ビジュアルワークス http://t-gate.tv/ お世話になっております m(_ _)m
      • 2.携帯ユーザーの大事な表現方法
      株式会社モバイルファクトリー http://wassr.jp/
    • が、各社独自仕様
      • 詳しくは
        • http://coderepos.org/share/wiki/Mobile/Encoding とか。少し触らないと忘れる
      Willcom カバーしきれてません
    • 絵文字対応
      • 1 キャリアだけであれば
      アプリ DB ケータイ
    • アプリ DB ・ 3 キャリアで共通データを使いたい ・テンプレートや DB は一つの文字コードにしたい (utf-8 とか ) ・ アプリ内では、文字はフラグつけて扱いたい ドコモ au などなど
      • キャリアが行ない始めた絵文字の相互変換
      あと、どうせならこれもやりたい
    • 期待する形 共通なもの ドコモの絵文字交じりの sjis au の絵文字交じりの sjis softbank の絵文字交じりの utf-8 ドコモの絵文字交じりの sjis au の絵文字交じりの sjis softbank の絵文字交じりの utf-8
    • Encode::JP::Mobile の解決法
      • Encode を使う
      softbank の絵文字交じりの utf-8 unicode decode ドコモの絵文字交じりの sjis au の絵文字交じりの sjis softbank の絵文字交じりの utf-8 ドコモの絵文字交じりの sjis au の絵文字交じりの sjis encode
    • Encode::JP::Mobile が気持ちいい理由
      • 1. Encode を利用
        • Perl 標準のエンコーディング操作モジュール
        • Encode まわりの資産がそのまま使える
    • Encode::JP::Mobile が気持ちいい理由
      • 2.独特なことをしていない
        • Encode:: の範囲のみ
        • shift_jis ← -> unicode マッピングでどこにマッピングするか
        • できるだけ公式情報(キャリアのページ)から構築しようとする涙ぐましい努力
    • マッピングについて補足
        • shift_jis ← -> unicode のマッピング
    • decode ドコモの絵文字交じりの sjis au の絵文字交じりの sjis softbank の絵文字交じりの utf-8 ドコモの絵文字交じりの sjis au の絵文字交じりの sjis softbank の絵文字交じりの utf-8 encode 絵文字以外 ドコモ絵文字 au 絵文字 softbank 絵文字 unicode PRIVATE USE AREA
    • 絵文字以外 ドコモ絵文字 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
    • というわけで、 Encode::JP::Mobile
      • メイン機能
        • 1.エンコーディングの提供 (当初)
        • 2.絵文字のキャリア間変換 (最近追加)
    • アジェンダ
      • Perl とモバイル
      • Encode::JP::Mobile とは
      • 使い方 ~基本編~ ←
      • 使い方 ~発展編~
      • ステータス / インストール
      • さいごに
    • 簡単です 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);
    • use Encode; use Encode::JP::Mobile; # エンコーディングが追加される
    • 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)
      これだけじゃないけど割愛
    • 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 (あ  )
    • 自由自在に 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 に表現できるのでロスなし
    • unicode ドコモのへ sjis として au へ sjis として softbank へ utf-8 DB とか 'utf-8' で decode 'x-sjis-docomo' で encode 'x-sjis-kddi-auto' で encode 'x-utf8-softbank' で encode
    • どのエンコーディングを使うか
      • 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
    • キャリア間変換の話 A : 絵文字 -> 絵文字 B : 絵文字 -> 文字表現 (>3<) とか [ エビフライ ]
      • 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); #     ?
    • 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;
    • コールバックを指定可能 use Encode; use Encode::JP::Mobile; my $text = &quot;x{EF60}x{ECA2}&quot;; # print encode('x-sjis-docomo', $text, sub {'x'} ); x
    • 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 で定義されています。
    • アジェンダ
      • Perl とモバイル
      • Encode::JP::Mobile とは
      • 使い方 ~基本編~
      • 使い方 ~発展編~ ←
      • ステータス / インストール
      • さいごに
    • 今回は基本のものだけ扱いましたが
      • 絵文字だけ除去したい
      • PC 向けに絵文字を画像で表示したい
      • といったこともできて、 Encode::JP::Mobile::CookBook の POD に書いてあります。
    • お役立ち
      • dat   - モジュールが内部的に利用
      • lib   - モジュール
      • t   - テスト
      • tools   - dat/* や ucm/* を生成するもの達
      • ucm   - make 時に c (モジュール)になるマッピング
    • お役立ち
      • ソース ./tools/*
        • キャリアのページをスクレイピングして ./ucm/* や ./dat/* を生成
      • ソース ./dat/*
        • 各種マッピング情報
        • -> tools や dat を他言語のモジュールでも使えるのでは
    • アジェンダ
      • Perl とモバイル
      • Encode::JP::Mobile とは
      • 使い方 ~基本編~
      • 使い方 ~発展編~
      • ステータス / インストール ←
      • さいごに
    • ステータス
      • いちおう still development
      • だいぶ落ち着きましたが
      • TODO
        • clouder さんによる Willcom メールの branch の trunk 取り込み
        • Typecast の絵文字も取り込み?たいかも
      • ぜひ使ってみてください
      • 周辺モジュールの充実が期待
    • 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 );
    • インストール
      • 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
    • アジェンダ
      • Perl とモバイル
      • Encode::JP::Mobile とは
      • 使い方 ~基本編~
      • 使い方 ~発展編~
      • ステータス / インストール
      • さいごに ←
    • モバイルまわりはまだまだモジュール化・ノウハウ共有の余地あり
      • #mobilejp@irc.freenode.net
        • 私は遅レスですすみません
        • 神速な tokuhirom さんがいます
        • Encode::JP::Mobile のチャンネルというわけではない
        • Perl だけってわけでもないです
      • http://mobilehacker.g.hatena.ne.jp/
        • もある
    • ありがとうございました
      • Encode::JP::Mobile はいけてるモジュール
      • モバイル周りのノウハウ共有を進めよう