WYSIWYG 編集プラグイン TinyMCEforMT 1.00 が公開間近

Posted by
ぴろり
Posted at
2006/04/27 21:25
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
MovableType カテゴリ
 私を含め 3 名で開発を行っている TinyMCE for MovableType プラグインが、 正規版(バージョン1.00)の公開を前に、モニタ向けリリースを公開しています。 ドキュメント類の整備が済んでいないだけで機能的には何ら遜色ないので、 いち早く試してみたい方は是非。
 このプラグインを導入することで、MovableType のエントリ編集画面において、 TinyMCE の持つ強力な WYSIWYG 編集機能を使用することができるようになります。 TinyMCE とは Web ブラウザで使えるフリーの WYSIWYG 編集ライブラリで、 驚くことに全て JavaScript で書かれています。 このエントリでは、特にその TinyMCE について開発側の視点で徒然と。
このエントリーをはてなブックマークに追加  

TinyMCE とは?

TinyMCE.png  スウェーデンにあるMoxiecode Systems AB が、LGPL ライセンスで公開している WYSIWYG エンジンで、 JavaScript だけで書かれています。 そのため、ブラウザに別途コンポーネントをインストールするなどの手間が一切無く、 ブラウザ上で Microsoft Word 並の表現を持った WYSIWYG 編集が可能となっています。
 『百聞は一見に如かず』とも謂いますから、何はともあれサンプル画面でその機能を触ってみてください。 「本当に JavaScript だけで動いているの?」と驚かれるに違いありません。  また、JavaScript プログラムの頭痛の種であるブラウザによる挙動の違いを、 このライブラリ側で全て吸収してくれるよう作られているので、 TinyMCE を使う側はそういった問題を全く意識せずに組み込むことができます。 これだけの機能を持ちながら、IE・Netscape・Firefox・Opera・Safari で、 ほぼ同じ機能を(多少の機能制限等はあるにせよ)難なく提供できているのは、 まさに驚きとしか言いようがありませんね 驚き

TinyMCE 自体のバグはご愛嬌(^^;

 JavaScript で書かれた WYSIWYG エンジンは、他にも FCKeditorhtmlAreaなどがありますが、 TinyMCE はその拡張性や汎用性の面で、 そして何よりも使って見た中で一番動作が軽かったなどの利点が挙げられます。

TinyMCE を組込んでみる

 TinyMCE を組み込むのは全く以って簡単です。具体的には、
  1. ページ中に<textarea>エレメントを作っておく
  2. TinyMCE のプログラムコードを読み込む
  3. TinyMCE を初期化する
  4. 必要であれば、編集用ボタンを追加したり、プラグインを読み込む
 HTML コードに書くと以下のようになります。  たったこれだけのコードで、<textarea>で作ったテキストエリアに、 強力無比なWYSIWYG編集が付加されます。
<html>
<head>
  <title>Installation Example 00</title>
  <script language="javascript" type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
  <script language="javascript" type="text/javascript">
    tinyMCE.init ({
        mode : "textareas",
        theme : "simple"
    });
  </script>
</head>
<body>
  <textarea name="content" cols="50" rows="15">
    This is some content that will be editable with TinyMCE.
  &/textarea>
  </body>
</html>

 MovableType で TinyMCE を使えるようにした TinyMCEforMT プラグインでも、 その実質は上のコードと殆んど変わりません。 TinyMCE をエントリ編集画面に組み込むにしても、これまた先人による BigPAPI プラグインを使用しています。 そのため、TinyMCEforMT プラグイン中で私が書いたコードと云えば、 前回の WYSIWYG 編集状態を復元するための Cookie 操作部分くらいですから、 機能的に見ればほんの一部に過ぎません。
 このような少量の開発で誰もがアイディアを実現でき、そして非常に大きなメリットを期待できるのは、 先人達による多くのオープンソースプロジェクトのお陰と言えるでしょう。

TinyMCE をカスタマイズ

 TinyMCE 自体、LGPL ライセンスの元でソースコードが公開されているため、 自分が必要とする機能を用意に追加・変更することができます。 しかし、TinyMCE には、TinyMCE のソースコードに手を入れずとも、 柔軟にその動作を変更できるように、様々な仕組みが最初から用意されています。
 以下は、TinyMCEforMT プラグインが TinyMCE ライブラリを初期化するコードの抜粋です。 TinyMCE を初期化する段階で適切なオプション引数を与えることで、 編集機能を制限したり、その動作をきめ細かに設定することができます。
tinyMCE.init({
		theme : "advanced",
		plugins : "table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime",
		theme_advanced_blockformats : "p,div,pre,h1,h2,h3,h4,h5,h6",
		theme_advanced_buttons1_add : "fontsizeselect",
		theme_advanced_buttons3_add_before : "tablecontrols,separator",
		theme_advanced_buttons3_add : "emotions,iespell,flash",
		theme_advanced_resize_horizontal : false,
		theme_advanced_resizing : true,
		convert_urls : false,
		convert_fonts_to_spans : true,
		convert_newlines_to_brs : false,
		force_p_newlines : true,
		force_br_newlines : false,
		relative_urls : false,
		apply_source_formatting : false,
		width : "577",
		cleanup_callback : "TinyMCEforMT_CallbackOnCleanup",
		onpageload : "TinyMCEforMT_CallbackOnPageLoad",
		oninit : "TinyMCEforMT_CallbackOnInit"
});
 特にコールバック処理という形で、自前で用意した処理を TinyMCE から呼び出せるのは開発側としては嬉しい仕様です。 TinyMCEforMT プラグインではこれらコールバック機能を使用して、 テキストエリアのサイズを復元したり、TinyMCE が書き出す HTML を必要に応じて整形するなどの処理を行っています。

 TinyMCE のドキュメントがしっかりしているので、英語さえ読めれば特に難しい部分はないでしょう。 TinyMCEforMT プラグインの開発でも、こういったドキュメントの存在が大きな助けになりました。 欲しいと思った機能や、動作を変更したいと思ったら、大方、それをサポートするオプションが用意されているので、 ドキュメント通りに書けばそれで事足りることが多いです。
 ユーザからの要求仕様に合わせながら、TinyMCE の初期化オプションの追加・変更が度々行われましたが、 それ以外のコードについてはβ1から殆んど変更されておらず、私が開発に関係したのも実質的にはこの部分のみ。 それだけ TinyMCE の設計がライブラリとして優れていることの証とも言えますね。

"WYSIWYG" と云う名に潜む永遠の問題

 "What You See is What You Get" の名を冠する WYSIWYG ですが、 そもそも、そこには小さいようで本質的に大きな問題が横たわっています。 特に HTML のように同じ見た目(What You See)を幾つモノ方法で記述できるような場合、 アナタが本当に欲しいもの(What You Want)を手にすることができるのか?という点です。
 例えば、WYSIWYG エディタの書き出す HTML が XHTML 1.0 Strict 的には正しくても、 HTML 4.01 Trasitional が欲しいユーザにしてみれば無用の長物に過ぎません。 高々 Valid な HTML であれば"十分"と思うユーザにしてみれば、 Strict な HTML は逆に編集の邪魔になることがあります。 確かに時代の流れや主流によって HTML に流行り廃りはあるにせよ、 それを理由に『WYSIWYG エディタの仕様にユーザを強制する』となれば、 それはツールとしては本末転倒になってしまいます。

乗用車が欲しいアナタに「時代はコンパクトカーだ」という理由で軽自動車を買わせようとするディーラーみたいな。

 WYSIWYG という"判りやすいプレゼンテーション(Presentation)" によって、 "そこに隠蔽された本質(Specification)" をユーザは忘れがちになります。 未だに "What You See is What You Want" を実現できていない以上、 その機能を過信せずに適材適所、上手にお使いくださいね、と云うことでm(_ _)m

関連リンク

このエントリーをはてなブックマークに追加  



関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。