絵文字とかケータイ対応を調べてみた。想定は Apache + PHP

まぁこれも今さらなネタですが。

一つのアプリ、コンテンツから PC/ケータイ両対応したいことってよくありますな。そのための変換ツールを調べてみた。

ただし、最初に断っておくと以下のどれも採用していない。

Apache モジュールタイプ

Apache モジュールで画像を変換したり絵文字対応したりというアプローチはアプリの開発言語を選ばないので魅力的。

mod_ktai

  • yumemi
  • Apache License 2.0 と言っているがソースが公開されていないという指摘多数。
  • 企業開発なのでリソースが十分投入されていそうだけどとにかく評価できない

その後、なんでソース公開されていないの?という疑問に答えるようなアクションもないし、実はもう使ってないんじゃないか疑惑。

mod_chxj

  • 基本的に個人開発(確認時点ではメンバー3人)
  • ちゃんとオープンソース(Apache License 2.0)
  • 残念ながら参加も開発も活発な感じはしない

こういうツールって地味なので一人だとモチベーションを維持するのが大変だし、実際開発の停滞した時期もある。もしかすると github に置いたらもう少し盛り上がるかもしれないなーなんてことを思いながら見送りの方向で。

結局 Apache module タイプのツールはなんかちょっと不安が拭えないので今回はスルーで。

あと参考までに

Typepad Mobile

正式名称は結局 TypeCast でしたっけ。イマイチよく分かっていない。

これは HTML を変換するタイプではなく Atom から変換するタイプ、のはず。Atom の出力に対応しているアプリからなら簡単に使えるかもしれない。

公開時にニュースになって以降はそんなに話題になってないっぽく、移転に次ぐ移転でどこに行ったかよく分からなかったけど今は github に落ち着いてるみたい。たぶん。

今回は既存のサイトの絵文字対応で Atom は使えなかったので見送った。

PHP ライブラリタイプ

PHP では差し当たって絵文字のライブラリだけ調べた。

予想通りたくさん見つかった。でも現役でメンテされてそうなものは少ない。そして結論から言うと今回自分は何も採用はしなかった。そう、つまり自作。その理由は以下の通り。

  • mb_convert_encoding をすでに使っているコードがある
  • mb_output_handler をすでに使っているサイトがある

最近は output_handler による自動エンコーディング変換は行わないのがセオリーになっている。はず。そのためもあってか最近の絵文字ライブラリは自動変換が走ると絵文字部分は壊れてしまうものが多いみたい。

HTML_Emoji

速いらしい。

れぶろぐ - [PHP] 絵文字変換ライブラリの処理速度の比較

確かに速い。でも上に書いたように自分の要求とは合わなかった。

また、名前の通り変換ライブラリであり、例えば絵文字入りの HTML 作成を支援してくれるわけではない。UTF-8 でバイナリを直接埋め込んでいかなくちゃいけないとなると、制作現場的には厳しい。あくまで携帯から絵文字を投稿できてそれのハンドリングがちゃんとできるよっていう話のように見える。

emj

こちらは作った方がデザイン業務も行っているということで、さすがに制作現場で使いやすそうな機能を持っている。

絵文字を名前で入力できるというのは実は重要で、この方式は文字コード変換に強く、分業時にトラブルになりにくい。例えばなにがしかのテンプレートシステムと併せて使いたいとなったとき、テンプレート周りでエンコーディングの変換に気を使う必要がない。HTML_Emoji は確かに速いけれど、エンコーディング変換時には独自のメソッドの利用を要求するので「新規開発ですべて UTF-8 に統一できている」などの条件が整っていないと安心して利用することは少し難しいのだ。

そんないいことずくめそうな emj だけど、

  • ライセンスが不明
  • グローバル汚染しまくりで気持ちよくない

という辺りがネック。

Perl 使ってりゃこの辺は日本にはかなり強力なコミュニティがあるから楽できそうなんだけどね。

More

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Develop Document Jekyll