絵文字ライブラリをPEARパッケージ化&sfPictogramMobilePluginをバージョンアップしました。
こんにちは。相変わらず携帯ネタで引っ張る亀本です。
先日、第32回PHP勉強会へ参加してきました。
詳細はid:maru_ccさん、id:sotarokさんなどなど大勢の方がブログに書いてくださっているので割愛しますが、なんだかEthnaの話とPHP以外の話が非常に多い会でした。
そのなかでid:maru_ccさんがEthnaでの携帯サイト構築の話をしてくださったのですが、結構いろいろな質問が飛び交っていて、やっぱりもっと携帯周りの情報共有が進むといいのにね、もったいないよね、という話を何名かの方としていました。
そんな話に少しばかり触発されて、絵文字プラグインを公開していた自分としても、もっといろんな人の役に立ててもらいたいと思って、syfmony用のプラグインだったものを汎用のPEARパッケージ化してみました。
PEARパッケージ版:Text_Pictogram_Mobile-0.0.1.tgz
修正版:Text_Pictogram_Mobile-0.0.2.tgz
--
# 追記:データのインストール先がおかしくなっていたので修正
--
また、併せてsymfonyプラグインの方もバージョンアップしました。
symfonyプラグイン版:sfPictogramMobilePlugin-0.0.4.tgz
インストール方法はそれぞれ、
とやってください。
symfonyプラグインの変更点は
・bugfix: Nonmobileが役立たずだったのを修正
・bugfix: getFromattedPictogramsArray()メソッドのキャリア指定時のバグを修正
・UTF-8を内部絵文字コードに変換できるように追加
・内部文字コードのprefix, suffix, escapeシーケンスを指定できるように変更
・外部の絵文字データベースを指定できるように変更
という感じです。
PEARライブラリの方も機能的には同じです。
ただし、symfonyプラグインを移植した関係上、PHP5以上でないと使えません。
PHP4に対応も考えたのですが、まずはとにかく出すことが優先かなと思って、PHP5用パッケージにしました。
にしても、このやり方は2重化するので修正するにも効率悪くて、もうちょっと何とかしたいですねw
PEARパッケージを使う場合は、まずパッケージをrequireして、factoryメソッドを使って
とします。
その他の基本的な使い方は以前のエントリを見てください。
にしても、隠し機能状態のものがいくつかあるのでw、どっかでマニュアルそろえないと。。。なかなかブログを書く時間内におわらないのが悩みです><
先日、第32回PHP勉強会へ参加してきました。
詳細はid:maru_ccさん、id:sotarokさんなどなど大勢の方がブログに書いてくださっているので割愛しますが、なんだかEthnaの話とPHP以外の話が非常に多い会でした。
そのなかでid:maru_ccさんがEthnaでの携帯サイト構築の話をしてくださったのですが、結構いろいろな質問が飛び交っていて、やっぱりもっと携帯周りの情報共有が進むといいのにね、もったいないよね、という話を何名かの方としていました。
そんな話に少しばかり触発されて、絵文字プラグインを公開していた自分としても、もっといろんな人の役に立ててもらいたいと思って、syfmony用のプラグインだったものを汎用のPEARパッケージ化してみました。
PEARパッケージ版:
修正版:Text_Pictogram_Mobile-0.0.2.tgz
--
# 追記:データのインストール先がおかしくなっていたので修正
--
また、併せてsymfonyプラグインの方もバージョンアップしました。
symfonyプラグイン版:sfPictogramMobilePlugin-0.0.4.tgz
インストール方法はそれぞれ、
- $
pear install http://blog.asial.co.jp/data/Text_Pictogram_Mobile-0.0.2.tgz
- $
symfony plugin-install http://blog.asial.co.jp/data/sfPictogramMobilePlugin-0.0.4.tgz
とやってください。
symfonyプラグインの変更点は
・bugfix: Nonmobileが役立たずだったのを修正
・bugfix: getFromattedPictogramsArray()メソッドのキャリア指定時のバグを修正
・UTF-8を内部絵文字コードに変換できるように追加
・内部文字コードのprefix, suffix, escapeシーケンスを指定できるように変更
・外部の絵文字データベースを指定できるように変更
という感じです。
PEARライブラリの方も機能的には同じです。
ただし、symfonyプラグインを移植した関係上、PHP5以上でないと使えません。
PHP4に対応も考えたのですが、まずはとにかく出すことが優先かなと思って、PHP5用パッケージにしました。
にしても、このやり方は2重化するので修正するにも効率悪くて、もうちょっと何とかしたいですねw
PEARパッケージを使う場合は、まずパッケージをrequireして、factoryメソッドを使って
- require_once("Text/Pictogram/Mobile.php");
- $picObject
= Text_Pictogram_Mobile::factory($carrier, $type);
とします。
その他の基本的な使い方は以前のエントリを見てください。
にしても、隠し機能状態のものがいくつかあるのでw、どっかでマニュアルそろえないと。。。なかなかブログを書く時間内におわらないのが悩みです><
コメント
コメントフォーム
トラックバック
-
- Ethnaで絵文字ライブラリText_Pictogram_Mobileを使って絵文字表示 from maru.cc@はてな
- Asial blogにて、絵文字ライブラリをPEARパッケージ化されたものが公開さ...
2008年05月01日 22:36
-
- 絵文字変換ライブラリ PEARパッケージ from Love Tokyo
- 絵文字ライブラリをPEARパッケージ化&sfPictogramMobilePlu...
2008年05月26日 16:33
-
- [PHP][開発][mobile] MeCabで携帯絵文字変換 from kaz_29@はてな
- ちょっとやりたい事があって最近、MeCabで色々調べたり実験したりして...
2008年07月04日 23:55
最近の記事
- もうすぐ健康診断があるんだ・・・ [2010年09月02日 : 阿部恵]
- Photoshopで壁紙を作りながら、基本的な使い方を覚える [2010年09月01日 : 鴨田健次]
- はじめての共同作業 Canvas編 (node.js + websocket) [2010年09月01日 : 中川善樹]
- 「PHP×Flex(後編)」PHPテクニカルセミナー(無料)第4弾の募集を開始しました!! [2010年08月26日 : 和田記光]
- 【HTML5】Canvasでお絵かきしてみた(前編) [2010年08月25日 : 橋本章史]
- MacにgroongaのMySQL用ストレージエンジン [2010年08月23日 : 笹亀弘]
- Appleのサイトで見たiPhone4をFireworksで描いてみました-1/2 [2010年08月19日 : 和田記光]
- iPad版の会社紹介を作ってみました [2010年08月19日 : 小林有佳]
- iPhoneアプリ開発開始時に気をつけるべきファイルの取り扱い (2) [2010年08月19日 : 亀本大地]
- symfonyセミナー動画無料公開! [2010年08月13日 : 岡本雄樹]



絵文字ライブラリのPEAR化、すばらしいです!
さっそく落としてみました。
pearコマンドでインストールした場合、dataディレクトリ以下のdata/*/jsonがインストールされないみたいです~
wgetしてtarで解凍したら入っていました。
探したら、データディレクトリの方に入ってました。
お騒がせしました。
ethna pear-localで入れると tmpの下に入るので、これはmumumuさんが直してくれるのを期待します。
すいません、まさかdataディレクトリに行ってしまうとは思ってませんでしたw
たぶん、Packageマネージャの側で自動判定されてしまっているようですが、本来の意図とは違うところに入っているので、バグのもとになりそうです。
近日修正版を出しますので、もう少々お待ちください><
さっそくの修正版の対応ありがとうございます!
問題なく入れられました~
ちょっとわがまま言ってもよいですか?
jsonデータの16進文字列が大文字小文字が混在しているのって、どちらかに統一ってできないっすかね?
また、ezwebのjis-emailを指定しrestoreした際、文字集合の切り替え規則が1文字ごとになっているようですが、mb_convert_encodingと同様に行うのって大変ですか?
切り替えが1文字づつになってしまうのは、
内部文字列変換時にマッピングが存在しない場合発生致します。(以下の一番始め)
また、ついでですが、
内部文字列が不正な場合、
・絵文字番号が存在しない → 空文字変換
・キャリア名が空 → Exception
・番号、キャリア名空 → Exception
・キャリア名が不正 → Exception
となっているようですが、
文字列変換ユーティリティであれば
不正な内部文字列が指定された場合の挙動を
統一して頂けると非常にありがたく思います。
わがままばかり言ってしまい、申し訳ありません。
つかっていただいてありがとうごじます><
> jsonデータの16進文字列が大文字小文字が混在しているのって、どちらかに統一ってできないっすかね?
すいません。。。統一はしていたつもりなんですが、どこかで変え損ねがあったのでしょうか><
softbankのwebcodeは小文字になっていましたが、一応の所統一は取れているようなので、もし気づかれた所がありましたら、教えていただけるとたすかります><
なにぶん、目grepはちょっと辛い量なので。。。
> また、ezwebのjis-emailを指定しrestoreした際、文字集合の切り替え規則が1文字ごとになっているようですが、mb_convert_encodingと同様に行うのって大変ですか?
不可能ではないのですが、実害はないことと、無駄に処理を増やしてもしょうがないと思い、省いています。
auの場合にjis-emailで送信するというシチュエーションはあまりないかな?と思うので、問題はないと考えています。
> 不正な内部文字列が指定された場合の挙動を
> 統一して頂けると非常にありがたく思います。
仰るとおりですね。
内部文字は不可侵のつもりで作っていたもので、そもそもエラーが発生する可能性をろくに想定していませんでした。
今度のバージョンアップの際にはこのあたりもきちんと見直しておきます。
ご回答ありがとうございます。
jsonデータの件ですが、
>softbankのwebcodeは小文字になっていましたが
すいません、まさにここです。
コード上TODO扱いになっていましたが、
検証作業中、UnitTestで引っかかってしまったので。
>auの場合にjis-emailで送信するというシチュエーションはあまりないかな?と思うので、問題はないと考えています。
確かにそうですね、こちらに関しても上記同様、
赤信号で怒られちゃったので一応ご報告いたしました。
>今度のバージョンアップの際にはこのあたりもきちんと見直しておきます。
よろしくお願いいたします。
できれば、次バージョンでは配布物にUnitTestも一緒に含めて頂けると、検証作業の手間が省けると思うのですが、無理っすか?
また、パッチ等のcontribute受付先等を明示しといて頂けると、使用者からのフィードバックも得られるのではないでしょうか?
是非ご検討頂ければと思います。
お返事遅くなりました。
> 次バージョンでは配布物にUnitTestも一緒に含めて頂けると
UnitTestはそのうち入れたいとは考えています。
機能作る方が楽しいので、どうにも後回しになってしまいますが。。w
むしろ、検証作業に使ったUnitTestのコードをください!とか言ってみたり(^^;
> パッチ等のcontribute受付先等を明示しといて頂ける
そうですね。。ほんと。
むしろ、CodeReposなりに投げてフリーに開発できるようにしたいところです。。。
>UnitTestはそのうち入れたいとは考えています。
>機能作る方が楽しいので、どうにも後回しになってしまいますが。。w
お気持ち分かります。。。
>むしろ、検証作業に使ったUnitTestのコードをください!とか言ってみたり(^^;
別に構いませんが、弊社案件に関するデータもあるので、整理してからであればお渡しできるかと思います。
>むしろ、CodeReposなりに投げてフリーに開発できるようにしたいところです。。。
良いアイデアですね。
本ライブラリのようなピュアPHP5による実装は
まだまだ少ないので、CodeRepos等から始めて
php5への移行が上手く行っていない
pearをアシアルさんが乗っ取る!なんてどうですか?(笑)
switch (strtolower($agent)) {
case 'docomo':
case 'imode':
case 'i-mode':
case 'emobile':
case 'willcom':
$agent = 'docomo';
break;
case 'ezweb':
case 'au':
case 'kddi':
$agent = 'ezweb';
break;
case 'disney':
case 'softbank':
case 'vodafone':
case 'jphone':
case 'j-phone':
$agent = 'softbank';
break;
default:
$agent = 'nonmobile';
}
正しくはファイルを作成したほうがいいのでしょうけど。
おおう。。。orz
どうもコメントは見過ごしてしまいがちですね。超遅レスすみません。。。
ソースそのものを公開領域においてしまうと、ドラスティックな変更がしにくいという問題が生まれちゃうのが今の悩みどころです。
それほど使われまくるライブラリでもないけどw
今のAPIは個人的にはgdgdだと感じているので、そこだけ整理したいなぁ。。。と思う今日この頃です。
> KuniTesujiさん
パッチありがとうございますー。
参考にさせていただきます<(。_。)>
ソースを見てて気づいたことがあったのでコメントしました。
Common::setIntercode()において
167行目 $this->intercodePrefix($prefix);
168行目 $this->intercodeSuffix($suffix);
となっていますが、正しくは
167行目 $this->setIntercodePrefix($prefix);
168行目 $this->setIntercodeSuffix($suffix);
ではないでしょうか?
使われていないメソッドのように思いましたが
バグの元になりそうなので、とりあえずご報告まで・・・
うおお。。。wこれは恥ずかしいw
すっかり使わないメソッドだったもので、ノーチェックでした。。。orz