WordPress に記述できるプロトコル(スキーム)を拡張する

WordPress の記事の中などでリンクを記述する場合、特定のスキームしか書くことができません。たとえば http://mailto: は書くことができますが、git://skype: などと書こうとしても、自動的に削除され、http:// とみなされてしまいます (管理者権限で記事を書いている場合は適用されず、自由に書くことができます。権限が編集者以下の場合です)。

調べてみると、WordPress 3.3 からこの制限は wp-includes/functions.phpwp_allowed_protocols() に書かれています。そこを見てみると、スキーム名を追加するには kses_allowed_protocols というフックを使えばよさそうです。

いま xmpp: というスキームのリンクを記述したいので、テーマの functions.php あたりに

function ext_protocols ($protocols) {
  $protocols[] = 'xmpp';
  return $protocols;
}
add_filter('kses_allowed_protocols', 'ext_protocols');

と書きました。これで記事中にxmpp:mako@pasero.netxmpp:なんでも談話室@muc.step.im?join などのリンクを記述できるようになりました。

公開 Jabber/XMPP サーバー

半年ほど前から、Jabber/XMPP サーバー STEP.imを公開しています。

Jabber/XMPP については、しばらく前に記事にしました。Jabber/XMPP をはじめるには、アカウント (JID) が必要です (ちょうどメールを使う際にメールアドレスが必要なように)。もし GMail のアカウントや WordPress.com のアカウントをお持ちであれば、それらを JID として使うことができます。これらのアカウントを持っていない、または使いたくない場合はこの STEP.im でアカウントを作ることができます。

また、グループチャット(Multi-user chat, MUC) の談話室をこの STEP.im に開設することができます (STEP.im のアカウントを持っていなくても開設・参加できます)。IRC によく似ていますが、後発なだけに、IRC の欠点を補って使い勝手のいいものです。

数年前から、自分のごく近傍で Jabber/XMPP を利用してきました。なかなか優れていると思うのですが、あまり話題になることがありません (Google トークや Facebook チャットなど、ユーザーに意識させないところで浸透しているようですが)。クライアント Gajimの日本語訳、サーバー ejabberd の日本語訳のお手伝いなども行ってきました。そしてとうとう公開サーバーを運用することにしたのです。

どうぞよろしくお願いいたします。

Jabber と WordPress (補遺)

もたもたしている間に年が変わってしまいました。先日の記事に、これまで Jabber/XMPP と WordPress の連関について触れているところは少ない、というようなことを書いたのですが、前の記事を書く際に「WordPress勉強会「Automatticのワークスタイル」に参加しました」を見落としていました。

2009年8月とさらに1年遡って、その時点では Automattic 社内の事例として、P2im.wordpress.com のことに触れられています。その頃にはまったく気づいていませんでしたが。

P2 テーマと Jabber/XMPP

たとえば WordPress の翻訳に関わる人たちの情報交換の場が、昨年(2010年)9月末にメーリングリストから、この P2 を使った WP Polyglots に移行しました。私はもっぱら眺めているだけなのですが、私にとって P2 は非常に読みにくくて、移行後はもう読むこと自体をやめてしまっていました。

前の記事で触れた「ブログ投稿やコメントの即時配信」の記事を読んで、ようやく Jabber 通知を使えることを知り、さっそく継読するようにしました。コメントが投稿されるたびに通知されるので、以後はさっと流し読みだけでもできるようになりました。個人的には、Jabber/XMPP と組み合わせてはじめて P2 の力を見ることができました。

1年前や2年前の記事を見て何を今さら、と言われそうですが、私の検索能力が低いのか、やはり P2 を取り上げながら Jabber/XMPP に触れているのは、特に日本語では、上記の2009年の Automattic 社内の話以外には見つけることができません(このスライドも同じ時期のようです)。どうも Jabber/XMPP はあまり関心を持たれていないようです。

Jabber と WordPress (後編)

XMPP PubSub

Jabber / XMPP には PubSub という機能があります。Publish-Subscribe の意味です。

まず、Jabber サーバー上に「ノード node」と呼ばれるポイントを (たいていの場合、発信者が) 作成します。「発信者 publisher」と「継読者 subscriber」を文字どおり結びつける場所です。継読者は、このノードに対して継読を申し込みます(subscribe)。なお日本語では「購読」と訳されることが多いのですが、ここでは「継読」という語を当てます。そして、発信者がノードに対して情報を送るたびに、登録されている継読者にそのことが通知されます。

配信サービスという意味では、RSS/Atom フィードによく似ています。フィードは、更新があるかどうかを受信者側から (フィードリーダーの設定などにより定期的に) 情報を読みにいきます。このブログのように月に一度ほどしか更新がないのに受信者側がフィードリーダーに「60分」などと設定していると、受信者側からのアクセスに対する返答の十中八九は「更新情報なし」で、無駄足だったということになります。だからと言ってあまり長い時間間隔に設定していると、新しい情報が出た際には受信者がそれを読みにいく時刻までに大きなラグが生じます。

それに対して PubSub は、発信者が情報を出すたびに、「電光石火の速さ」で継読者に通知されます。

WordPress と PubSub

WordPress.com のブログ記事「ブログ投稿やコメントの即時配信」 (この日本語訳は2010年9月24日付ですが、元の英文記事は2010年8月25日付)は、WordPress.com のブログサービスにこの Jabber の PubSub 機能を連動させたことを伝えています。WordPress.com のサポートのページ (英語)の後半の解説によると、継読の申し込みや解除などの操作は bot を介して行うようです。

WordPress.com ではなく、WordPress.org で配布されているインストール型の WordPress には、この機能はないのでしょうか? プラグイン Jabber Feed を使えば実現できそうです。しかし、ノードを作成する権限のある Jabber サーバーがあるかどうか、など環境が整わないと難しそうです。自前で Jabber サーバーを設置できれば自由がききます。このブログにも設定してみました (サイドバーにリンクがあります)。

多くのホスティングサービスでは Web サーバー と Mail サーバーを使わせてくれますが、Jabber サーバーを使わせてくれるところというのは聞いたことがありません。素人考えでは Web サーバー や Mail サーバーに比べて難しいことはないと思うのですが。これが一般的になれば、Jabber の利用が拡がり、インストール型の WordPress でも PubSub を簡単に使えるようになるかもしれません。

【跋】 今頃(2010年11月末)になって、数カ月前の WordPress.com のブログ記事に気づきました。しかし検索してみると、この間にこれに注目しているような日本語の情報はごくわずかの例を除いて見つかりませんでした。また、WordPress.com のブログ記事も PubSub の機能を主に紹介するもので、Jabber のもっとも一般的な面であるインスタントメッセージングについての解説がなかった (そもそも Jabber に関する情報は日本語ではとても少ない) ので、ここに書いてみることにしました。

Jabber と WordPress (前編)

Jabber / XMPP とは

Jabber とはインスタントメッセージングサービスのひとつです。XMPP はそのプロトコルです。Web に対する HTTP と同じ対応で、Jabber に対する XMPP ということになります。

インスタントメッセージングサービスというと、「Yahoo!メッセンジャー」とか「Windows Live メッセンジャー」などと同系統のものですが、仕様がオープンなので、多くのサーバーやクライアントのソフトが存在します。好きなクライアントを選んで使うことができますし、また、Web サーバーや Mail サーバーを設置・運用するのと同じように、自分でサーバーを設置して運用することもできます。XMPP どうしならサーバーを越えて通信できます。たとえば、Google トークは XMPP 準拠なので、ほかの XMPP のサーバー、ネットワークと通信できます。

Jabber / XMPP1対1のチャットは、あまり説明の必要はありませんが、ちょうどメール、その返事、その返事……の連続といったものととらえることもできます。

多人数のチャット (Muiti-User Chat (MUC))もあります。ユーザーからの見た目や操作は IRC によく似ています。

クライアントとアカウント

Jabber を始めるのに必要なものは、まず Jabber クライアントです。Web を利用するのにブラウザが、Mail を利用するのにメールソフトが必要なのと同じです。

クライアントの

などは日本語化されていています。Web ブラウザ上で動くもの、モバイル向けなど、ほかにもたくさんあります

もう一つ、欠かせないのがアカウントです。メールを使う際にはメールアドレスが必要なのと同じことです。Jabber のアカウントは Jabber ID、略して JID と呼ばれ、形はメールアドレスにそっくりで、

name@example.com

アットマークの前はユーザー名、後ろはそのユーザーの属するサーバー名です。

自分で XMPP サーバーを設置できれば簡単に (そして自由に) JID を得られるのですが、そうでない場合はどうすればいいのでしょうか? ひとつの方法は公開 XMPP サーバーで JID を作ることができます。日本語では XMPP.JP というところがあります。

しかし、Jabber をいままで知らなかった人でも実は既に JID を持っている可能性があります。

のいずれかであれば、既に JID を持っています。

GMail の場合、メールアドレスとまったく同じで、たとえば name というアカウントを持っていれば、JID は name@gmail.com です。GMail にはチャット機能が含まれており、これが Google トーク、すなわち XMPP のメッセージングなのです。この Google の JID を別のクライアントで使用することも可能です。

WordPress.com (WordPress.com であって WordPress.org ではありません) の場合、たとえば name というアカウントを持っていれば、JID は name@im.wordpress.comになります。WordPress.com のサポートのページ (英語)に解説があり、そのページのリンクには主なクライアントの設定方法もあります。

前置きのような内容だけでも長くなったので、ここで区切って続きは後編で。

Gajim 0.13.4

XMPPクライアント Gajim の0.13.4 が公開されました。今回から日本語化ファイルが含まれました。 大胆に訳したところ、自信の持てなかったところ、そして手をつけられなかったところが多々あります。お気づきの点がありましたら、メール mako(あっと)pasero.net または XMPP でも同じ形の mako(あっと)pasero.net までお知らせください。