CMS プログラミング

WordPress2.7で長すぎる投稿が表示されない不具合の原因と対策

Published by:

shortcodes
このドイツ語のブログでやっと原因と修正方法が分かりました。
几帳面にも、問題の正規表現の図解で解説までつけてくれたドイツ人に感謝。
それにつけても、やっぱりドイツ人てすげぇ・・・

 現象

そもそもの問題の現象ですが、WordPress2.7で長めの投稿をすると、何も表示されなくなるということが起こりました。
最初はプラグインを疑って利用停止したりしたのですが、それでも改善しません。

WordPressにはデフォルトでいくつかのフィルター(記事の内容に対して行われるコンテンツの更新機能)がありますが、途中のフィルターまではちゃんと動作している。
一つずつ確認していったところ、wpautopフィルターでコンテンツが削除されていることが分かりました。

wpautopフィルターの問題箇所を探していくと、下記の最終行で削除されています。

wpautop関数:
$pee = preg_replace('/<p>s*?(' . get_shortcode_regex() . ')s*</p>/s', '$1', $pee); // don't auto-p wrap shortcodes that stand alone

ここまできてGoogleで検索して確認しましたが、WordPress2.5.1のときからこの行に関しては問題を起こしていたようで、対応としてはコメントアウトする(臭いものにふたをする)というものばかり。

・・・で、件のブログを見つけました。

原因

ドイツ語ブログで書かれているとおり、本当の問題はショートコード(画像のキャプションなどを[caption] ~[/caption]のように記述する記法)用の正規表現を定義したget_shortcode_regex関数(wp-includes/shortcodes.php)にありました。

get_shortcode_regex関数(修正前):
return '[('.$tagregexp.')b(.*?)(?:(/)?](?:(.+?)[/1])?';

wpautop関数もそうですが、get_shortcode_regex関数もほとんどプログラム効率無視なコードになっていて、貪欲な正規表現によってpreg_replace関数が悲鳴を上げたのが原因のようでした。

対策

対策は、問題のget_shortcode_regex関数内のコードを修正すること。

get_shortcode_regex関数(修正後):
return '[('.$tagregexp.')b([^]]*?)(/)?](?:(.+?)[/1])?';

おおおっ!動いた~(T  T
プログラミングに国境なし、を改めて感じました。

#追記
次のバージョンで修正が消されるといやなので、WordPressサイトにバグ報告しました。
#再追記
と思ったら、http://trac.wordpress.org/ticket/8553とduplicateでしたorz
#2009/2/14 追記
WordPress2.7.1で直ってなかったので、自動アップグレードで元に戻ってしまった。
ぐはあ。

発表、ニュース

A8minでA8.net+WordPressの簡単連携

Published by:

最近いくつかのサイトを公開したので、一つアフィリエイトのバナーでも付けようと思い、アフィリエイトサービスのA8.netへ登録してみました。

、が、面倒くさい!!
1つずつ広告プログラムを検索したり登録するのは仕方ないですが、それをWordPressに反映しようとすると、1つずつバナーを選んでコピーしてペーストして・・・というのを際限なく行わなければいけません。

何かいいツールをが無いかと探してみましたが、まるでありません。
ということで作りました!
自分で言うのもなんですが、かなりの力作です! 

A8min -WordPressプラグイン

くわしくはリンク先のページを見てみてください。

発表、ニュース

(3) PC3.0を予想してみた:データにはアクション(操作)がもれなく付いてくる

Published by:

はがき

すべてのデータにインターフェース・アクション(iAction)を

インターフェース・アクション(iAction)とは今作った造語ですが、あらゆるファイルやデータを汎用的に操作するための仕様のようなもの・・・と考えてください。

ここにOfficeの文書データが10,000ファイルと、メールが10,000通 あるとします。
これらデータ全てから、特定の情報(個人情報など)を削除しなくてはいけないとします。
一つ一つのファイルを開いて、検索して、削除してという方法では大変な時間と手間がかかります。
もしこの文書データとメールデータに、「検索」というiActionと「削除」というiActionがあれば、全体を選択→検索→削除が行えるわけです。

「オンラインでの買い物について、勝手に家計簿をつけてくれる」とか、「去年知り合った人用に年賀状を印刷する」とか、「やった仕事の内容を請求書に書き忘れない」(?)とか、とにかく便利に動いて欲しいものです。

もちろん、多少手が器用な方であれば、何らかの方法で手早く同じ作業を行うことが出来るかもしれませんが、一家に一人、一部署に一人、そういう人がいるとは限りません。
アルゴリズムが出来ることは、コンピュータに任せたほうが良いのです。 

インターネット上のデータはどうすればよいのでしょう?
これも、1データとしてカウントできる単位に対して、iActionを定義できるとさらに便利ですね。
Gmailのメールデータや、ブログのコンテンツなども、同じようにまとめ処理が出来てしまいます。
技術的にどうするんだろ・・・
たとえば、POST/GETのような「IACT」みたいなメソッドを作るとか(ここまでくるとやりたい放題ですが) 。

指話+AI秘書ツール+iAction=PC3.0?

タッチパネルを使った指話、AIによる秘書ツール、データ単位で任意の処理を行うiActionを組み合わせることでPC3.0時代がやってくるのでしょうか。

ユニバーサルデザインの観点から見ると指話の部分に課題が残りそうですが、それを抜きにすればちょっと近未来的なコンピュータ操作が実現できそうな気がします。

最後の問題は、これを誰が作るのか?というところでしょうか。
すぐに思いつくのは、Google、Microsoft、Appleの3つ。
どこかのベンチャーが作って公開して、うまいこと人気が出たらGoogleが買収してグローバル化して、MicrosoftがWindowsに取り入れて、Appleが次世代インタフェースをもう一つ作る・・・
もしくは、Mozillaがオープンソース・ソフトウェアとして作って、運営も有志の人々によってまかなわれたり・・・

とまあ、妄想はこのあたりまでにしておきます。
3年後5年後といわず、今年2009年の変化を楽しみにしつつ、 自分の仕事に戻りたいと思います。

まとめ

2008年末ごろから経済面での不況のニュースが相次いだためか、技術関連のニュースまで新しいものが目立たなくなったように感じたので、自分を励ます意味でもこのエントリーを書いてみました。

自分でもどこまで本気で書いたのか分からなくなってしまいましたが、昨年からなんとなく考えていた「未来のコンピュータ」をとりあえず忘れないように書いておこうということでもありました。

この文章が陳腐な予想になるような、すばらしいコンピュータ技術が近い将来に到来することを心から信じています。

« 前へ

発表、ニュース

(2)PC3.0を予想してみた:情報整理のためのAI秘書ツールの台頭

Published by:

チャーリーとチョコレート工場

本当に必要な作業だけを行う

AI(人工知能)という言葉には、そこはかとない古臭さを感じてしまいます。
おそらくコンピュータが巷に姿を現したことから、人々は「コンピュータ=何でも出来る万能機械」 という認識があり、色々なメディアでそのように取り沙汰されてきたためでしょう。

一番身近なところではゲームのキャラクターや対戦相手としてAI が使われています。
車の自動運転技術や、医療現場のサポートとしてAIが使われているという話も聞いたことがあります。
「ドラえもん」のようなヒューマノイドのロボットをイメージせず、「一定の範囲で不都合なく動作する経験フィードバック型アルゴリズム」と考えれば、AIはぐっと実現可能、もしくはすでに実現済みのものになるはずです。

だいぶ以前から作られていそうでまだ一般的ではないのが、次のようなAIシステム。

受信したメールや閲覧したWebサイト、PDF、Officeドキュメントなどをすべて自動マイニングし、情報の要約、要/不要の判断、スケジュール管理、アポイント管理等を行うAI秘書ソフト

すべての作業をAI秘書ソフトが行うのではなく、あくまで既にあるデータを分類整理することが主な役割です。
いわば雑用はコンピュータに任せてしまいましょう。 

例えばメールの場合、AI秘書ソフトがメールごとの要約や重要度(★5つとか)を自動的に設定し、メール中の住所には地図がつき、日程があればスケジュール情報として管理する、みたいな。

PCを立ち上げたら、「今日は15時に田中さんと新宿駅で待ち合わせでしたが、田中さんから16時に時間を変えてほしいというご連絡がありました」くらいは言ってもらいたいものです。 
「バックアップ用のHDDの調子が悪いので、交換用のHDDを注文しておきました。」とか、「来週から当分仕事がありませんので、この映画なんてどうですか?」(←大きなお世話)くらいまできたら、かなり親しみを持てるかも知れません。

既に同じような機能を持ったソフトウェアは存在するかもしれませんし既存のツールを組み合わせれば、これに近い環境をそろえることが出来るかもしれませんが、今のところ一般的に利用されているとはあまり耳にしません。

なぜいつまでたってもこのようなAIシステムが実現しないのでしょう。
アプリケーションごとにそのような機能を組み込むことは可能であっても、その機能や得られた情報を他のアプリケーションと上手に連携出来ないのが、その原因のひとつではないでしょうか。

次のページにあるような「すべてのデータにインターフェース・アクション(iAction)を」が実現できれば、アプリケーション間のマッシュアップが爆発しそうです。

« 前へ  次へ »

発表、ニュース

(1) PC3.0を予想してみた:キーボードとマウスに変わるもの

Published by:

hand_on_heart

旧ブログで書いたEee Topは『PC 2.1』の先駆けとなるかの続きを書いてみます。
前回のエントリーは タッチパネルという新インターフェースを持つことで、PCは2.0(Appleが作ったGUIインターフェース)から2.1になるのでは、というような内容のことを書きましたが、さらに発展させてPC3.0を予想してみました。
これもまた独断と偏見による無責任な内容となっております。 

進化の速度

毎日のようにコンピュータを使っているとつい当たり前のように感じてしまいますが、コンピュータを取り巻く技術はものすごい勢いで進化しています。
Google マップが2005年に登場するまでAjaxという言葉は存在していませんでしたし、そもそも私がGoogleを使い始めたのも2000年です。
それまではまともに機能する全文検索エンジンが無かった!
キーワードを入力して検索するという行為は、つい10年前まで一般的はものではなかったのです。 

ただそれでも、この20年以上コンピュータそのものはず~~~っとPC2.0のままだったと言えるのです。
PC1.0といえるApple II(1977年発売)からPC2.0(初代Macintosh。1984年発売)まで7年。

いい加減PC3.0になっても良かろうと。 
※そもそもPC(パーソナル・コンピュータ)という言葉はIBMが作ったのですが、便利なのでこの言葉を使って話を進めます。 

インターフェース・デバイスの進化

1980年代にAppleが発売したMacintoshは、これまでキーボードでのみ行ってきたコンピュータへの入力ンターフェースを見直し、マウスを導入しました。
これによってOSやファイルシステムの構造を理解していなくても、コンピュータを使うことが出来るようになったのです。

現在までコンピュータを使ったことが無かった人々でも触れることが出来るよう、新しいインターフェースデバイスが必要なのではないでしょうか。

  1. タッチパネル
  2. リモコン

タッチパネルはiTouch以降注目を集めており、同時に複数の指で操作するマルチタッチインターフェースも今年発売予定のWindows 7で対応予定です。

リモコンはすでに多少存在しているようですが、私はWiiリモコンと携帯が合体したかのような風貌をイメージしています。

リモコンを使って画面上のポインタを移動できるようにすれば、このリモコン一つで必要な操作を全て出来るのですが、それを言えばタッチパネルでもソフトウェアキーボードを使って文字入力出来るので、好みと状況に応じて使い分けできると思います。

マウスとキーボードが無くなることはないでしょうが、家庭での利用は少なくなるのではないでしょうか。

インターフェース言語の進化

FirefoxプラグインのUbiquityをご存知でしょうか。
コマンドラインでありとあらゆるブラウザ上の操作を行えるようにするツールで、Mozilla Labsで開発が進められています。
例えば、選択した住所文字列の地図をメールに貼り付けるといった操作を、ごく簡単なコマンド入力で行えます。

Ubiquityは基本的にすべてキーボードによるコマンドライン操作のため、使いこなすことが出来ない人も多くいると思いますが、例えばタッチパネルによる操作を可能にすることで、より多くの人が使えるようになるでしょう。

タッチパネルといっても、指一本だけでの操作で行えるのは、これまでマウスで行ってきた操作量となんら変わりありません。
指を2本~6本くらい同時に扱うことのできるマルチタッチインターフェースで、より多くの情報を同時に入力することが出来るようになります。

手話のように「指話」といった新しいインターフェース言語を作ることが出来れば、コンピュータとの対話速度は急速に向上するのではないでしょうか。
肉声を使った発話式のインターフェースは既に現在も開発されていますが、一人で操作するのは恥ずかしいものです。

映画のマイノリティリポートでトム・クルーズが両手で自在にデータを扱っている様子は、映画をご覧になった方は必ず覚えていると思います。
あれは映画用に立ち姿でオーバーに腕を振っていましたが、デスクトップで指を使って行えばすむわけです。

何だか長くなりそうなのでページを分けることにします。

次へ »