hebohebo-mobileprogrammer-diary

|

2008-01-28

3キャリの絵文字変換表を作ってみました 05:26

http://mobilehacker.g.hatena.ne.jp/nihen/20080123

でいっていた絵文字変換表を作ってみた。

2iな部分はwillcomに転送ではなく、webにポストすりゃいいんじゃんと気づきそうしてみました。

http://coderepos.org/share/browser/lang/perl/Encode-JP-Mobile/branches/make-convert-map-myself/

でコミットしたです。

以下は作り方です。

(tools/scrape_convert/BUILD

とかで追加しといたほうがいいかなぁ。)

# make (s|e)2i
1. perl tools/scrape_convert/send-all-pictogram.pl kddi *****@ezweb.ne.jp ****@example.com 'http://example.com/post-pictogram.cgi'
2. perl tools/scrape_convert/send-all-pictogram.pl softbank *****@softbank.ne.jp ****@example.com 'http://example.com/post-pictogram.cgi'
3. (kddi | softbank)デバイス上でそれぞれ)*****@docomo.ne.jpに転送
(docomoデバイス上でそれぞれのメールで)
    4. <pict_map_from_*> から </pict_map_from_*> までコピー
    5. メールに記載されているhttp://example.com/post-pictgram.cgiにアクセス
    6. コピーしたpict_mapを貼り付けて送信
7. cp /tmp/*2i.yml dat/conv/


# make (i|s)2e
1. perl tools/scrape_convert/send-all-pictogram.pl docomo *****@docomo.ne.jp ****@example.com 'http://example.com/post-pictogram.cgi'
2. perl tools/scrape_convert/send-all-pictogram.pl softbank *****@softbank.ne.jp ****@example.com 'http://example.com/post-pictogram.cgi'
3. (docomo | softbank)デバイス上でそれぞれ)*****@ezweb.ne.jpに転送
4. kddiデバイス上でそれぞれのメールを*****@example.comに転送
5. 受け取ったメールを perl tools/scrape_convert/scrape_kddi_from_mail.pl < receive_mail 等で実行(aliasにpipeを設定しておくと楽)
6. cp /tmp*2e.yml dat/conv


# make (i|e)2s
1. perl tools/scrape_convert/send-all-pictogram.pl docomo *****@docomo.ne.jp ****@example.com 'http://example.com/post-pictogram.cgi'
2. perl tools/scrape_convert/send-all-pictogram.pl kddi *****@ezweb.ne.jp ****@example.com 'http://example.com/post-pictogram.cgi'
3. (docomo | kddi)デバイス上でそれぞれ)*****@softbank.ne.jpに転送
4. softbankデバイス上でそれぞれのメールを*****@yahoo.co.jpに転送(要Yahoo!アカウント)
5. Yahooメールにアクセスしてそれぞれのメールのhtmlを保存(e2s.html, i2s.html)
6. perl tools/scrape_convert/scrape_convert/scrape_softbank_from_yahoomail.pl < e2s.html > dat/conv/e2s.yml
7. perl tools/scrape_convert/scrape_convert/scrape_softbank_from_yahoomail.pl < i2s.html > dat/conv/i2s.yml

やってみるとなかなか面倒ですね・・・。

ちなみにdocomo以外がwebにポストする方式をとっていないのはうちの検証端末では

kddi,softbankともにコピーの容量に制限があり面倒だったからです・・・。

なぜかdocomoは大丈夫だった。

あー、最後に。convert-map-utf8.yamldiff

Index: dat/convert-map-utf8.yaml
===================================================================
--- dat/convert-map-utf8.yaml	(リビジョン 5755)
+++ dat/convert-map-utf8.yaml	(リビジョン 5756)
@@ -5667,10 +5667,10 @@
   F0A9:
     docomo:
       type: name
-      unicode: ' '
+      unicode:  
     softbank:
       type: name
-      unicode: ' '
+      unicode:  
   F0AA:
     docomo:
       type: name
@@ -8094,55 +8094,27 @@
     kddi:
       type: name
       unicode: 〓
-  E254:
-    docomo:
-      type: name
-      unicode: 〓
-    kddi:
-      type: name
-      unicode: 〓
   E255:
     docomo:
       type: name
-      unicode: 〓
+      unicode: ''
     kddi:
       type: name
-      unicode: 〓
+      unicode: ''
   E256:
     docomo:
       type: name
-      unicode: 〓
+      unicode: ''
     kddi:
       type: name
-      unicode: 〓
+      unicode: ''
   E257:
     docomo:
       type: name
-      unicode: 〓
+      unicode: ''
     kddi:
       type: name
-      unicode: 〓
-  E258:
-    docomo:
-      type: name
-      unicode: 〓
-    kddi:
-      type: name
-      unicode: 〓
-  E259:
-    docomo:
-      type: name
-      unicode: 〓
-    kddi:
-      type: name
-      unicode: 〓
-  E25A:
-    docomo:
-      type: name
-      unicode: 〓
-    kddi:
-      type: name
-      unicode: 〓
+      unicode: ''
   E301:
     docomo:
       type: pictogram
@@ -9599,52 +9571,3 @@
     kddi:
       type: pictogram
       unicode: F06A
-  E538:
-    docomo:
-      type: name
-      unicode: 〓
-    kddi:
-      type: name
-      unicode: 〓
-  E539:
-    docomo:
-      type: name
-      unicode: 〓
-    kddi:
-      type: name
-      unicode: 〓
-  E53A:
-    docomo:
-      type: name
-      unicode: 〓
-    kddi:
-      type: name
-      unicode: 〓
-  E53B:
-    docomo:
-      type: name
-      unicode: 〓
-    kddi:
-      type: name
-      unicode: 〓
-  E53C:
-    docomo:
-      type: name
-      unicode: '[v'
-    kddi:
-      type: name
-      unicode: '[v'
-  E53D:
-    docomo:
-      type: name
-      unicode: oda
-    kddi:
-      type: name
-      unicode: oda
-  E53E:
-    docomo:
-      type: name
-      unicode: 'fone]'
-    kddi:
-      type: name
-      unicode: 'fone]'

まぁ気にしなくていいレベルかな?

type: pictogramには差異がなかったのでucmには変化なかったです。

テンプレートに絵文字をどう書く? 21:21

SoozyConference4にいってきました。

刺激を受けるのを通り越して自分のへぼさに凹んでいたのですがそんなことはおいといて

懇親会の隅っこのほうでid:tomi-ruさんやid:tokuhiromさんとテンプレートに絵文字をどう記述する?なんて話をしていました。

自分はテンプレート自体がShift_JIS(CP932)で絵文字もDoCoMoの絵文字のShift_JISバイナリをi絵文字からはっつけているなんて話をしてたところテンプレートもUTF-8で絵文字は実体参照なんてのが主流っぽくて自分のやり方はださいのかー。とまた凹んでいました。

Shift_JISバイナリを埋め込むためにテンプレートだけShift_JISにしてる人おおいよね」(俺か)なんて話もあり。

コードはUTF-8なのにテンプレートはShift_JISってやっぱ気持ち悪いよね。たしかに。

自分も実体参照に移行しようかなぁなんて思ってたところ、ふとさっき気づいたことが。(前振り長すぎ)


DoCoMoの絵文字ってCP932の完全なサブセットじゃん。と。


いままでそのことを意識せず恩恵を受けてたわけで。x-utf8-docomoでencodeされたページをi-絵文字のフォントいれてるPCで見るとちゃんと絵文字みれていたのだ。そもそもi絵文字には「SHIFT-JISの形式で挿入」なんて選択肢になってるので騙されてたけど実際にはWindowsは内部的にはUnicodeなわけで。


というわけでどうなったか。

テンプレートをUTF-8にしてそこにi絵文字からUTF-8バイナリな絵文字をはっつけることできたよ><

ちゃんと絵文字フォントも表示されてるよ><

実体参照もいいけどやっぱり視覚的に確認したいよね><

というわけで、絵文字onテンプレートのベストプラクティスはUTF-8バイナリで記述だという主張をしてみる。


←ちなみにこれがDoCoMoの晴れマーク。(はてなはUTF-8

BulutBulut2012/09/23 19:42Woot, I will cetrailny put this to good use!

iplzkqvxlpeiplzkqvxlpe2012/09/24 11:08L1IYbX <a href="http://pbbtobruwdii.com/">pbbtobruwdii</a>

ztsdaujzvztsdaujzv2012/09/27 08:10DJ5jza , [url=http://fawbzydqjyvp.com/]fawbzydqjyvp[/url], [link=http://stofqmrmlhmx.com/]stofqmrmlhmx[/link], http://niugdrkbjwcd.com/

2008-01-24

UTF8フラグ付けベンチマークストップウォッチ編 18:56

pack(unpack?)でやると早いよとid:tokuhiromさんに聞いたのですが

やり方がわからなくて挫折したので携帯についてるストップウォッチでさっきのをもう一回図って遊んでました><

(何やってんだか・・・)

結果はこんな感じでした。

Encode::decode: 26m37s
utf8::decode: 2m54s
Encode::_utf8_on: 2m50s

結論。

ストップウォッチは使えます。馬鹿にしないでくだしあ><

ConvertPictgramSJISのEncode::decode 17:19

http://d.hatena.ne.jp/tokuhirom/20060114/1137253723

たまたま上記のエントリを見つけてしまったので自分でもベンチしてみた。

(今回気になってるのはdecodeだけなのでそれだけ)


#!/usr/bin/perl
use strict;

use Encode;
use Benchmark;

my $str = 'あいうえおかきくけこさしすせそ';

Benchmark::cmpthese(1000000, {
    'Encode::_utf8_on' => sub { my $_str = $str; Encode::_utf8_on($_str); },
    'Encode::decode'   => sub { my $_str = $str; $_str = Encode::decode('utf8', $_str); },
    'utf8::decode'     => sub { my $_str = $str; utf8::decode($_str); },
});
                      Rate   Encode::decode     utf8::decode Encode::_utf8_on
Encode::decode     36563/s               --             -98%             -98%
utf8::decode     1492537/s            3982%               --              -4%
Encode::_utf8_on 1562500/s            4173%               5%               --

となったので、どうみて明らかに遅いEncode::decodeを使う理由はなさそうです。本当にありがとうございました。

->http://coderepos.org/share/changeset/5411で変更してみました。

FB_CROAKしたいとか 02:26

http://mobilehacker.g.hatena.ne.jp/tomi-ru/20080123/1201107906

で楽になるのは分かるのですがー。

print encode('x-utf8-docomo', "\x{ECA2}", FB_CROAK);

が例外発生しちゃうのはなんとなく違うような気がしたのですが

かといって顔文字をucmに含めると現状との差異がありすぎるし

なんだかなぁというのも分かるわけで。

そろそろ自重します><

fallbackの件(>3<) 02:09

http://mobilehacker.g.hatena.ne.jp/tomi-ru/20080123

# それ以外、(>3<)みたいなのはEncode::JP::Mobile::Charactor的なのを作ってfailback関数でやろうよ(ぼくも賛成

うーむ。個人的にはencodeするだけでキャリア互換の文字列が帰ってくるとうれしいかなぁとおもいました。


ちょっと話は違うけどx-sjis-softbank-rawだけPRIVATE AREAが抜かれてない素のcp932でencodeしてるんだなぁとおもた。

cp932 - PRIVATE AREA

なucmを単独で作る必要あるのかな。

LeatriceLeatrice2011/12/23 21:51I really appreciate free, suiccnct, reliable data like this.

geirfttfoegeirfttfoe2011/12/24 17:52It8Tjr <a href="http://cfvcuxnehcje.com/">cfvcuxnehcje</a>

oqetabfsgoioqetabfsgoi2011/12/25 19:389ARzza <a href="http://snmgrxggkutm.com/">snmgrxggkutm</a>

2008-01-23絵文字変換表の作成

DoCoMo

http://www.nttdocomo.co.jp/service/mail/imode_mail/emoji_convert/index.html

Au

http://www.au.kddi.com/email/emoji/taiohyo/index.html

SoftBank

http://mb.softbank.jp/mb/service/3G/mail/pictogram/

を基に作成するのが進んでますが

PC=>携帯キャリアへは絵文字をロストせずに送信可能

auは携帯キャリア以外のメールアドレスには変換もロストもせずに絵文字を送信可能

Softbankは@yahoo.co.jp宛てには(画像に変換されるけど)ロストせずに絵文字を送信可能

DoCoMowillcomには絵文字変換されずに送信可能(であってほしい)

Willcomは携帯キャリア以外のメールアドレスには変換もロストもせずに絵文字を送信可能(であってほしい)

(上二つはWillcom端末無しなため自信なし)

という前提を整理すると、

i2e: i => e => pc

i2s: i => s => @yahoo.co.jp

e2i: e => i => willcom => pc

e2s: e => s => @yahoo.co.jp

s2i: s => i => willcom => pc

s2e: s => e => pc

て感じで機械的に対応表つくることもできそう?

↑転送は人の手を介すので完全に機械的とはいわないか

auなら自動転送可能だけど)

こんなかんじでまずは全キャリに送信 15:40

#!/usr/bin/perl
use strict;
use warnings;

use YAML;
use FindBin;
use Path::Class;

&main;exit;

sub main {

    my $carrier = shift @ARGV or die "Usage: all-pictgrams.pl docomo|kddi|softbank";

    my $table = YAML::LoadFile file($FindBin::Bin, '..', 'dat', "${carrier}-table.yaml");

    for my $map ( @${table} ) {
        printf "%s %s\n", $map->{unicode}, pack('H*', $map->{sjis});
    }
}

言うだけいってやらんのか(Shut the fuck up and try convert code) 20:03

いえ、やります><

いまちょっとたてこんでるので明日か明後日には><

2e

2s

はできますが、Willcom機がないのでは

2i

はできませんが・・・。(そもそもできるのか分からないし><)

JonayJonay2011/12/25 11:39I much prfeer informative articles like this to that high brow literature.

jedmgcqknhjedmgcqknh2011/12/25 17:15XYVJCm <a href="http://fusgryyhfjqh.com/">fusgryyhfjqh</a>

paeweqrhfpaeweqrhf2011/12/26 19:41PKvyof , [url=http://yjqvthjsdpel.com/]yjqvthjsdpel[/url], [link=http://xdrfbdoswgun.com/]xdrfbdoswgun[/link], http://voncfrfqmxea.com/

jhqeqrdxnjhqeqrdxn2011/12/27 04:46kUIF46 <a href="http://cdcjzpoyrbuj.com/">cdcjzpoyrbuj</a>

yrbvtkfgkyrbvtkfgk2011/12/27 20:42pTAgYJ , [url=http://zinmccfrljpz.com/]zinmccfrljpz[/url], [link=http://xwwwjrmnpylc.com/]xwwwjrmnpylc[/link], http://xdcankpszxod.com/

AlejandroAlejandro2015/08/11 12:36What a plsueare to find someone who thinks through the issues

2008-01-21x-sjis-*-convert_pictgram

$str = decode("x-sjis-docomo", $str);

とかしたあとに

print encode("x-sjis-kddi-convert_pictgram", $str);

とかすると自動的に他キャリアの絵文字に変換するやつつくったですよ。

いままでも自分でx-utf8-*でencode->decodeすればできたことだけどね><

http://coderepos.org/share/browser/lang/perl/Encode-JP-Mobile/branches/auto-convert-sjis-pictgram

にコミットしたです。

id:tokuhiromさんの

http://mobilehacker.g.hatena.ne.jp/tokuhirom/20080121/1200895302

に似てるけどencodeとdecodeが反対かもかも。

x-sjis-* と x-sjis-*-raw 21:05

その後紆余曲折して

http://mobilehacker.g.hatena.ne.jp/tokuhirom/20080121/1200910780

こんな感じになりました。

さようならx-sjis-kddi。x-sjis-kddiを使う理由はほぼ無いので

みなさん、x-sjis-kddi-autoでdecodeしてくださいね。

でふとおもった。x-sjis-kddiはx-sjis-kddi-autoのエイリアスにしちゃ駄目だろうか。

x-sjis-kddi-rawはそのままでいいとして。

KDDIならx-sjis-kddiを使っとけばいいんだろうという誤解が防げるような。

NikhilNikhil2012/07/18 14:31This is the precfet post for me to find at this time

rlojecvwaanrlojecvwaan2012/07/19 07:25a8Kvih , [url=http://qtolgwbjfzcm.com/]qtolgwbjfzcm[/url], [link=http://mozrmfmugfvz.com/]mozrmfmugfvz[/link], http://qntlaocjrbwe.com/

zcwvhpvyzcwvhpvy2012/07/20 14:53jNXnAn <a href="http://fikoqswhavdq.com/">fikoqswhavdq</a>

zeijhmmpddzeijhmmpdd2012/07/21 00:25oWHILD , [url=http://oxrpnttfdhaz.com/]oxrpnttfdhaz[/url], [link=http://pevexcwsrbds.com/]pevexcwsrbds[/link], http://ekiccwzjoyyo.com/

2008-01-20x-sjis-softbank-auto.ucmのつくりかた

http://www.geminium.com/chiba_blog/2007/06/10/10/

で作ってるpre_shift_jis-vodafone-private.ucm

を自動で作れるようにしたいとid:tokuhiromのリクエストをうけたので

調査中。。。

半年以上前のことなのか。

とりあえずのこってる素材を整理

voda.txt

vodamap.txt

voda.pl

#!/usr/bin/perl

use strict;

my %voda_code_map;

open R, '<', 'vodamap.txt';
while (my $line = <R>) {
    chomp $line;
    my @codes = split /\s+/, $line;
    if (@codes == 4 && $codes[1] =~/^&#x/) {
        my $unicode = $codes[1];
        $unicode =~ s/(^&#x|;$)//g;
        my $shiftjis = $codes[3];
        $shiftjis =~ s/^(..)(..)$/\\x$1\\x$2/g;

        $voda_code_map{$unicode} = $shiftjis;
    }


}
close R;

foreach my $unicode (sort keys %voda_code_map) {
    print "<U$unicode> $voda_code_map{$unicode} |0 # Vodafone Pictogram\n";
}

voda.txtは103-111-HTML_2.0.0.pdfをxdoc2txt -nかけたやつ

vodamap.txtはそれを手動で表部分を切り抜いてきたところみたい。

ここの部分を自動化したらいけそうかも。

引き続き調査。。。

RochmatRochmat2012/07/16 21:00Four score and seven minutes ago, I read a sweet arctile. Lol thanks

nqehodrmnnqehodrmn2012/07/18 00:40b9E4kM <a href="http://wrhncuszsemz.com/">wrhncuszsemz</a>

|