各キャリア絵文字変換について

プログラム(機能)関連の開発の話題
toshi
メンバー
メンバー
記事: 12
登録日時: 2010年7月28日(水) 22:38

各キャリア絵文字変換について

投稿記事by toshi » 2010年8月20日(金) 13:53

MODxにて携帯サイト制作しています。
同URLでUser Agentでの切り替えはsoushi様のMobileConverter使用(現在1.0導入)。
2.0で今後絵文字変換を実装予定とのことですが、自分で挑戦してみましたのですが、うまくいかないので教えていただけますでしょうか?。

色々調べて見た結果、ライブラリとして使えそうなのが

・MobilePictogramConverter
http://d.hatena.ne.jp/ryster/
公式サイトよりDLできないので
http://www.php-labo.net/setup/extend/pictogram.html)からDL。

・絵文字変換ライブラリ
http://libemoji.com/

・PHP 携帯絵文字 自動変換スクリプト
http://surf-style.us/

が使えそうなのですが、どのライブラリを使用するのがベストなのかと、具体的なプラグインでの実装方法をご教授おねがいします。

また理想というか、こういったことがしたいのですが、

上記ライブラリを実装して、絵文字の入力はおそらくDocomoのUnicodeをHTMLテキスト形式で入力し各キャリアに変換する形になると思います。この場合ですと Docomoの252種類の絵文字しか使用できません。AU、SBの絵文字を使う場合imgタグで使用することにします。

それでanysense-debel様の作られたTinyMCE携帯絵文字入力プラグイン( http://hogehack.blog80.fc2.com/blog-entry-22.html )を導入してみました。

emoji1.gif


入力は直感的、ユーザビリティー的にも使いやすいのですが、imgタグでの吐き出しになるので、これを各キャリア毎の絵文字コードに変換するとします。

各キャリア対応の変換ルールのテーブルは作成する必要がありますが、

・PCサイト、編集フォーム(TinyMCE)内ではimgタグで表示
・携帯各キャリアには各キャリア絵文字コードに変換
・対応絵文字コードがない場合 imgタグで表示

といったことを実現したいのですがいかがでしょうか・・。 自分の知識では無理そうなので、お力いただければとても嬉しいです。

【環境】
サーバー:Xserver
PHP : PHP5.1.6
MySQL:MySQL5.0

MODx:1.0.4J-p1


宜しくお願いします。
アバター
kmikage
管理人
記事: 396
登録日時: 2009年9月01日(火) 20:21

Re: 各キャリア絵文字変換について

投稿記事by kmikage » 2010年8月21日(土) 08:35

kmikageです。
とりあえず眠い目をこすりながら。

絵文字の画像ファイル名がリソースに挿入される事、あとUserAgentの処理の関係から、MobilePictogramConverterが最適かと思われます。
割と大胆にMobileConverter側を改造する形になると思いますが、以下のような感じで改造出来るかと思います。

1.MobileConverterのUA判別プロパティに、キャリア情報(何かしらの文字列)を付加
loveとかhageとかauuとかimoとか、そんな感じで適当に。:-)
※他のライブラリと異なりMobilePictogramConverterは独自にUAの解析を行わないので、
 MobileConverterがUA判別を行った結果のキャリア情報を継承する必要がある為。

2.
if( $enableConvertCharset ){
addEvent('OnWebPagePrerender', $MyName);
}
このあたりを書き換えて、強制的にOnWebPagePrerenderイベントをキックします。

3.
case 'OnWebPagePrerender':
ここから下を書き換えて、MobilePictogramConverterに対しオリジナルの文字列と属性、表示するキャリア情報と文字コード(共にプロパティから取得)を渡します。

こんな感じかと思います。

MobilePictogramConverterそのものは大した処理ではなく、
単純に膨大なテーブルを元に置換処理を行っているだけの簡単なクラスですので、
組み込むのはそれほど難しくないと思います。

具体的にコードを書くのは、ご自身で頑張ってみて下さい。
同人サークル にくじゃがソフトウェア
http://www.nikujaga.info/

ブログはじめました。
http://kmikage.nikujaga.info/
アバター
kmikage
管理人
記事: 396
登録日時: 2009年9月01日(火) 20:21

Re: 各キャリア絵文字変換について

投稿記事by kmikage » 2010年8月21日(土) 08:39

念為追記です。

ソースコードしか読んでいないので、具体的なインストール・動作確認などはしていません。
MobilePictogramConverter側に適宜カスタマイズが必要な場合もあるので、確認して下さい。
同人サークル にくじゃがソフトウェア
http://www.nikujaga.info/

ブログはじめました。
http://kmikage.nikujaga.info/
toshi
メンバー
メンバー
記事: 12
登録日時: 2010年7月28日(水) 22:38

Re: 各キャリア絵文字変換について

投稿記事by toshi » 2010年8月21日(土) 10:00

kmikage 様

アドバイス有り難うございます。ん~流れは理解できたのですが、初心者ですみません・・
お忙しい中申し訳ないですが
もう少しだけコードの部分教えていただければうれしいです。
アバター
kmikage
管理人
記事: 396
登録日時: 2009年9月01日(火) 20:21

Re: 各キャリア絵文字変換について

投稿記事by kmikage » 2010年8月21日(土) 10:23

>toshiさん
んー、どうでしょう。
逆にどこまでの情報があれば自分でトライ出来そうですか?
個人的に「初心者」は免罪符にならないので、必要なレベルまで情報渡します。^^
同人サークル にくじゃがソフトウェア
http://www.nikujaga.info/

ブログはじめました。
http://kmikage.nikujaga.info/
toshi
メンバー
メンバー
記事: 12
登録日時: 2010年7月28日(水) 22:38

Re: 各キャリア絵文字変換について

投稿記事by toshi » 2010年8月21日(土) 11:33

> kmikage様

お言葉に甘えてお聞きします。PHP詳しくないので、サンプルコードというか(叩き台的な)ものがあれば
うれしいです。

最初にですが、現在使用しているMobileConverterのバージョンは1.12でした(汗

1.MobileConverterのUA判別プロパティに、キャリア情報(何かしらの文字列)を付加
loveとかhageとかauuとかimoとか、そんな感じで適当に。:-)


どのあたりを書き換え、すればいいのかと

2.
if( $enableConvertCharset ){
addEvent('OnWebPagePrerender', $MyName);
}
このあたりを書き換えて、強制的にOnWebPagePrerenderイベントをキックします。


具体的にどういう風に書き換えて

case 'OnWebPagePrerender': 以下
キャリア情報等使ってMobilePictogramConverterへの値の渡し方がわからないです。

なんか全部になりますね・・宜しくお願いします。
アバター
kmikage
管理人
記事: 396
登録日時: 2009年9月01日(火) 20:21

Re: 各キャリア絵文字変換について

投稿記事by kmikage » 2010年8月22日(日) 07:04

とりあえず、結果は写真の通り。
IMG_0472.JPG


http://code.cside.com/i-mode/emojimode/
ここからHTMLないしバイナリでTinyMCEに絵文字を流し込むと、MC経由でMPCのクラスをコールして、自動変換します。

MODx->FOMA、MODx->WINはとりあえず確認しました。
禿はスマートじゃない電話は持っていないので、誰か協力をお願いします。

MODx Evo 1.0.3J-p1@美ら海サーバ
MobileConverter 2.0.0
MobilePictogramConverter 1.2.0
NEC N906iL(変態SIP端末・笑)
SH005(シンプルじゃないシンプル携帯)
BGM : アニソンINDEX @ 秋葉原MOGRA(のust)

結果的に、MC、MPC共に手を入れていますが、
MPCは元々PHPLabのアプリに組み込む共通ライブラリとして配布されているので、
ファイルを参照する時のパスの処理でMODx APIを使うように変更しています。

MobileConverterは予想通り大幅に組み直しをしており、
文字コード関連処理・絵文字変換処理をMPCに依存する形になっています。
(HTMLヘッダに関する処理しかしていません。)
また、MPC側で再度UAの認識をしているので、効率の良いコードではありません。。。

日本のガラケー業界では絵文字の需要は大きいのでMCとMPCはセットで使われる事になるかもしれませんが、とりあえず中身は別物です。

あと、パスをハードコーディングして無理矢理くっつけてる関係で、環境にも軽く依存します。
コードを掃除すれば直るかも知れません。

ついでに、画像変換周りの画像パスの関係で挙動が怪しい部分があったので、MODxAPIに直しました。
MODX_BASE_PATH -> $modx->config{'base_path'}

http://www.php-labo.net/info/
MPCもGPLライセンスなので、(まぁ必要無いとは思いますが、面倒ですけど)許諾を取ればMCに組み込んでも問題無さそうです。

>そうしさん
もう少しコードを掃除したら送ります。
同人サークル にくじゃがソフトウェア
http://www.nikujaga.info/

ブログはじめました。
http://kmikage.nikujaga.info/
soushi
管理人
記事: 224
登録日時: 2009年7月30日(木) 01:59

Re: 各キャリア絵文字変換について

投稿記事by soushi » 2010年8月22日(日) 11:49

soushiです。

色々調整ありがとうございます > kmikageさん

kmikage さんが書きました:http://www.php-labo.net/info/
MPCもGPLライセンスなので、(まぁ必要無いとは思いますが、面倒ですけど)許諾を取ればMCに組み込んでも問題無さそうです。


確認したらライセンスは1.2.0からLGPLからMITへ変更されたみたいです。
また元の作者様のサイトは現在、存在しないようです(ブログはありましたが、2008年で更新停止)

[そのブログサイト]
http://d.hatena.ne.jp/ryster/20080130/1201708214

MITも再配布等制限がないので、著者表示等を明記しMCに組み込んでもよさそうです。
改変も可能です。

MCでMPC巻き取ってGPLにライセンス変えることはできるのだろうか…BSDライセンスはGPLに変えてもいいって聞いた事はあるんだけど。
ただ、GPLよりもゆるいライセンスなのでそのままでも問題はないのかなぁ。

kmikage さんが書きました:>そうしさん
もう少しコードを掃除したら送ります。


了解です。
よろしくお願いしますー。