top

絵文字考

ここ数日Quicktagsで遊んでいたわけですが、絵文字を入れる実験をしていて気付いたことなどがあるので、少しまとめてみようと思います。
ネットで見つけることができた絵文字挿入方法は以下の3種類あるようです。いずれもコメント欄への文字列挿入動作はjavascriptで行っています。

■imgタグを直接コメント欄に挿入
<img src="画像のアドレス">の形でコメント欄に画像を表示するタグを直接書き込んでしまう方法。

メリット
・javascriptが無効な環境でも絵文字が表示される。
・データベースに<img src="・・・の形でしっかりタグとして残るので、絵文字をやめた後でも投稿済みの絵文字は表示される。
デメリット
・ズラズラとタグが挿入されるので、コメントを書く時ちょっと分かりにくい。
・imgタグを許可しなければならない。

■[ハート]のような仮タグをjavascriptで変換
コメント欄には[ハート]のような仮のタグで挿入し、ブラウザ表示時にjavascriptでimgタグに変換する方法です。

メリット
・コメントを書く時それほど邪魔にならない。
・imgタグを許可しない、許可できない環境でも使える。
デメリット
・javascriptが無効な環境では表示されない。
・データベースには[ハート]のような仮タグの形で残るので、スクリプトの使用をやめると絵文字が消えて仮タグ丸出し状態になってしまう。

■[ハート]のような仮タグをプラグインで変換
実はMTにはMTMacroというプラグインがありまして、これを使うと仮タグをプラグインで変換するというjavascript方法と同じことが出来ます。

メリット
・コメントを書く時それほど邪魔にならない。
・再構築時に仮タグをimgタグに変換するため、javascriptが無効な環境でも絵文字が表示される。
デメリット
・データベースには[ハート]のような仮タグの形で残るので、プラグインの使用をやめると絵文字も消えて仮タグ丸出し状態になってしまう。
・imgタグを許可しなければならない。
・ダイナミックパブリッシングでは使えない(←致命的^^;)


☆まとめ☆
こうやって並べてみるとどれも一長一短あって、悩ましいところであります…。MTMacroに関してはダイナミックでは使えないので当ブログでは詳しく触れていませんが、静的生成でjavascript無効時も絵文字を表示したい人にはいいかもしれません。
「javascript版・プラグイン版」と「imgタグ直接記入版」との決定的な違いは「データベースにタグの形で残るかどうか」です。また、「imgタグ直接記入版・プラグイン版」と「javascript版」の決定的な違いは「imgタグを許可できるかどうか」ということになります。結局はそのブログの考え方次第ということになりそうですが…。

後々のことも考えてデータベースにimgタグの形で残すことを最優先したい場合は「imgタグ直接記入」がやっぱりベストでしょうね。少々の書きにくさは我慢してもらうことにして(笑)。本来ならそうであるべき姿で記入するわけですから、どの環境でも表示されますし、プラグインにも依存しませんから、ある意味基本かもと。

しかしどうしてもimgタグは許可したくない、という場合もあると思います。imgタグを許可すると悪意のある画像を貼られる可能性が出てくるので、セキュリティ上やや甘くなってしまいます。安全面を優先したい場合はjavascript版がベターかと。ただし環境によっては表示されないし、リニュなどでスクリプトの使用をやめた時も表示されなくなるし、しかも表示されない場合は仮タグ丸出しというあまりかっこよろしくない状態になるので、そこを妥協できるかどうかですね。

☆対策案☆
それぞれの弱点を出来る限りカバーする方法を考えてみました。
・imgタグを許可する場合は「src="http://」を禁止ワードに指定して、外部から参照される画像が貼られた場合は未公開コメント扱いにして管理人が許可しないと表示されないようにする。絵文字は相対パスで記入します。ただ、ブログの構成や方針によっては無理な場合もあると思うので、出来る人だけになりますが…。
・仮タグは表示されても不自然でないものにする。例えば(^^)など。ただしやりすぎると被ったものが全部変換されてしまうので注意。

------------------------------

番外考察:エントリーに絵文字を使う場合は?
これはもうハッキリ申し上げて、面倒でもしっかり<img src="画像のアドレス">の形で記入するべきです。間違ってもコメント欄向けの[仮タグ]なんぞ使わないこと! データベースに[はぁと]なんて形で残ってしまいます。javascriptを無効にしている人もけっこういるものなので、javascriptで変換している場合は気付かないところで思わぬものをさらけ出している…てことになりかねないです。MTMacroもリニュやテンプレ変更などでMTmacro用のタグが無い状態で再構築したら全部仮タグに戻ってしまうので、エントリーには使わない方が無難。

関連するエントリー:コメントにQuicktagsで絵文字挿入ボタンを

 

コメント

こんにちは、いつも参考にさせていただいてます。
お前がやって見せろと言われても、簡単には出来ないような気がしますが、Textarea内の表示自体を「コメントプレビューみたいに置換結果で表示」みたいには出来ないんでしょうかね。
実際にはタグで入力されてるけど、表示上は[はあと]になってる、もしくは実際のアイコンが表示されてるみたいな状態。

それだと、コメントプレビュー必要ないのか・・・

こんにちは、コメントありがとうございます。
実は私もoscarさんのブログ、時々拝見させていただいていたので、驚くと同時に大変嬉しいです。

Textarea内で変換表示させることって可能なのでしょうかね…。出来たらいいですよね。
Textarea内では[はあと]で投稿時(再構築時やブラウザ表示時ではなくて)にタグに変換されるのが理想なんですが、それだとやっぱりcgiになるのかな?と思います。
自分でプログラム書けたらいいんですが、そこまでのスキルがないので誰か作ってくれないかな~な人頼み状態です(^^;。そんなプラグインあったら便利だと思うんですけどね。