Tipsの最近のブログ記事

昨日のブログ記事で

「MTのextlibを利用したPerlモジュールの利用」について記述したところ、いつもお世話になっているToI企画のタクさんからメッセージをもらいました。

タクさんは、ToI企画のブログ上で、種々様々なMT向けプラグインを提供している凄腕開発者です。いつも勉強をさせていただいております。

以下、extlibの利用について、ご指摘をいただいたのは

 

・MT4.2からは、プラグインディレクトリ内にextliというディレクトリを作成して、モジュールを配置することによって、利用可能となる。これは、アメリカのMovableTpe.orgに書かれている

http://www.movabletype.org/documentation/developer/other-common-directories.html

・extlibにPerlもモジュールを入れていると、優先的にそのディレクトリを読みにいってしまう。つまり、サーバー自体のPerlモジュールがアップデートされて最新版に更新されても、Mt自体はextlib配下の古いモジュールを読みにいってしまう可能性があるため要注意

(例:File::Tempが2.0だったとして、 extlibに入れたFile::Tempが1.0だったすると、プラグイン内での利用に限らずMT全体で、1.0のFile::Tempが優先で使われてしまうようになる)

とのことでした。タクさん、いつもありがとうございます!

これらを考慮すると、extlibへPerlのモジュールを配置するのは、諸々注意した上で行う必要がありそうです。extlibディレクトリの利用については

・まず、サーバーおよびMTのextlibがデフォルトで持っているモジュール類を確認した上で

・必要な場合のみ、最小限のモジュールを各プラグイン内にextlibディレクトリを作成して利用する

のがベターといえそうです。

皆様におかれましても、extlibディレクトリの利用についてはご留意ください。

最近、思考整理や図形作成、サイトマップ作成などに「Xmind」を使っています。これがなかなか良い感じなので、ご紹介します。

image

■□Xmindとは?

Xmindとは、香港のXMind Ltd.社が開発しているオープンソースのマインドマッピングソフトウェアです。

CMSやプログラムが絡む開発の際に、とても重宝する「Xampp」。
ウェブサーバーのApache、Perlやphpなどのプログラミング言語、データベースのMySQLも使えて便利です。

ただ、デフォルトで使用していると、Image::magickやCrypt::DSAなど、いくつかのモジュールが欠けた状態での利用となってしまいます。Movable Typeでは、画像のサムネイル生成にImage::magickやGDを利用するため、この状態ではサムネイルの生成機能が働きません。

すみません、タイトルは半分釣りです。MTはもちろんよくできたシステムです。テンプレートの代替機能が充実していて、コアに直接手を加えなくても済むところなど、他のオープンソース系CMSを触っていると素直に「すげー」と感嘆します。他のCMS、特にオープンソース系では、機能強化を行うときは当たり前のようにコアに手を入れることが多くて、この一点だけでもMTのすごさが感じられます。

ただ、それでもMTなみに機能を持ったブログ、CMSは数多あります。

米国でMT以上の利用率を誇るWordPressと比較すると、MTはWordPressを意識したバージョンアップを志向しているのが良く分かります。どちらかというと、WordPressのフォロワーのようにさえ見受けられることがあります。また、高機能CMSとして定評の高いjoomlaなどに比べると、コア部分の機能やプラグインの豊富さ、高機能さなども、MTがJoomlaよりもはるかに抜きんでているとは思えません。

では、MTのすごさはどこにあるのでしょうか。

その前に、今一度MTのリリースから振り返ってみます。

MTの4.xから、3.xまでの「ブログ記事(エントリー)」という概念に、「ウェブページ」という概念が加わりました。この違いが、いまひとつ分かりづらいという方も多いのではないでしょうか。

この「ブログ記事」と「ウェブページ」の違いは、個人的に非常に重要だと思っていますし、MT4.xシリーズ以降を使いこなすキーワードのひとつだと思います。ここでは、ブログ記事とウェブページの違いを説明します。

ブログ記事(エントリー)とウェブページの概念

そもそも「ブログ記事」と「ウェブページ」の違いはなんでしょうか。簡単な概念図を書いてみました。

ブログ記事とウェブページの違い

 

ブログ記事およびブログは「ウェブログ」が語源であるとおり、基本的には「日々の日記や記事を積み重ねていくシステム」です。このため、時間軸によるコンテンツ増加が原点となります。

この、時間と共に増えるコンテンツを整理するための発想がMTでいう「アーカイブ」になります。アーカイブは、日別・月別・年別など、時間軸を基準としてコンテンツを仕分けるの役割を果たします。

一方の「ウェブページ」はどうでしょうか。例えば企業サイトの場合、通常は「オープンした瞬間にコンテンツがそろっている」のが当たり前で、時間と共にコンテンツの量が増加するとは限りません。また、ウェブページは企業としての事業サービスが増えたり減ったり、新事業ができたりすることで増減します。

このため、コンテンツの分類分けは「時間」よりもむしろ「そのコンテンツがどんなジャンルの情報をに属するか」という、書類整理の感覚に近くなります。これが、ウェブサイトでは「ディレクトリ構造、ツリー構造による管理」につながっていきます。

本来、ウェブサイトとブログの情報は質が違うため、ブログをCMSとみてウェブサイト管理に使うのは、構造的に無理があります。MT3.xの頃のウェブ制作会社は、さまざまなテクニックを駆使して、MTをCMSとして使用してきましたが、「なんだかCMSとしてはつくりづらいなぁ」と思った方も多いのではないでしょうか。

一方、企業でも時間軸でコンテンツが増えるものがあります。「ニュースリリース」や「IR情報」です。ブログは、このニュースリリースなどに非常に向いています。

このように、ブログとウェブページは、本来的に違うものです。そして、MTは「ブログシステム」だったので、一般的なCMSとして捕らえると、結構構築が大変でした。

この弱点をカバーするのが「ウェブページ」という機能です。ウェブページは時間軸によるコンテンツ増加を気にせず、ディレクトリ単位でページを増減できます。この「時間軸でコンテンツを管理するかどうか」の観点で考えると、ウェブページとブログページの管理の概念がより分かりやすくなると思います。

MTの4.xから、3.xまでの「ブログ記事(エントリー)」という概念に、「ウェブページ」という概念が加わりました。この違いが、いまひとつ分かりづらいという方も多いのではないでしょうか。

この「ブログ記事」と「ウェブページ」の違いは、個人的に非常に重要だと思っていますし、MT4.xシリーズ以降を使いこなすキーワードのひとつだと思います。ここでは、ブログ記事とウェブページの違いを説明します。

ブログ記事(エントリー)とウェブページの概念

そもそも「ブログ記事」と「ウェブページ」の違いはなんでしょうか。簡単な概念図を書いてみました。

ブログ記事とウェブページの違い

 

ブログ記事およびブログは「ウェブログ」が語源であるとおり、基本的には「日々の日記や記事を積み重ねていくシステム」です。このため、時間軸によるコンテンツ増加が原点となります。

この、時間と共に増えるコンテンツを整理するための発想がMTでいう「アーカイブ」になります。アーカイブは、日別・月別・年別など、時間軸を基準としてコンテンツを仕分けるの役割を果たします。

一方の「ウェブページ」はどうでしょうか。例えば企業サイトの場合、通常は「オープンした瞬間にコンテンツがそろっている」のが当たり前で、時間と共にコンテンツの量が増加するとは限りません。また、ウェブページは企業としての事業サービスが増えたり減ったり、新事業ができたりすることで増減します。

このため、コンテンツの分類分けは「時間」よりもむしろ「そのコンテンツがどんなジャンルの情報をに属するか」という、書類整理の感覚に近くなります。これが、ウェブサイトでは「ディレクトリ構造、ツリー構造による管理」につながっていきます。

本来、ウェブサイトとブログの情報は質が違うため、ブログをCMSとみてウェブサイト管理に使うのは、構造的に無理があります。MT3.xの頃のウェブ制作会社は、さまざまなテクニックを駆使して、MTをCMSとして使用してきましたが、「なんだかCMSとしてはつくりづらいなぁ」と思った方も多いのではないでしょうか。

一方、企業でも時間軸でコンテンツが増えるものがあります。「ニュースリリース」や「IR情報」です。ブログは、このニュースリリースなどに非常に向いています。

このように、ブログとウェブページは、本来的に違うものです。そして、MTは「ブログシステム」だったので、一般的なCMSとして捕らえると、結構構築が大変でした。

この弱点をカバーするのが「ウェブページ」という機能です。ウェブページは時間軸によるコンテンツ増加を気にせず、ディレクトリ単位でページを増減できます。この「時間軸でコンテンツを管理するかどうか」の観点で考えると、ウェブページとブログページの管理の概念がより分かりやすくなると思います。

Movable Typeでkeywordsを指定する場合、通常はブログ記事の「キーワード」もしくは「タグ」のデータをそのまま使うということになると思います。当ブログでは、タグ欄に記事に関するキーワードを埋め込んでいるため、

「ブログ記事のタグに列挙されている言葉をカンマ区切りで表示」

という処理になります。このMTタグの書き方は以下のとおりになります。

 

MTにブログをお引越ししたのはよいですが、metaタグのdescriptionを初期設定しておらず、「サイト内の全部のページが同じdescriptionだよ」と、Googleウェブマスターツールに怒られてしまいました。

MTのバックアップを行う方法は大きく分けて2つあり

1・MySQLのダンプデータを作成

2・MovableTypeの機能として持っているバックアップ機能を利用

 

となります。

 

1番目は、MySQLのバックアップをcronで定期的に取得→保存が有効です。

2番目は、今までは手動で行う必要があり、手間がかかったのですが、ツールとして配布されているものがありました。作者は、プラグイン作者、MTOSのコミッターとしても有名なogawaさんです。

http://as-is.net/blog/archives/001344.html

http://code.as-is.net/public/wiki/mt4-backup

 

これをMTの/tools/ディレクトリ下に解凍・保存して、cronで定期的に実行を行う設定をすれば、MTのデータが定期的に取得できます。

 

僕も試して見ましたが、非常に便利です。たとえば、週に1度、MTのバックアップをとりたい場合、

1・mt4-backupを取得、解凍して、「/MTインストールパス/tools/」以下へアップロード

2・crontabから以下のように設定

0 0 * * 6 cd /MTinstall_path/; ./tools/backup

(上記は土曜日の0時0分にバックアップをとる例)

 

これで毎土曜日に、xmlのバックアップファイルを取得してくれます。

もし、出力先を独自定義したい場合は

0 0 * * 6 cd /MTinstall_path/; ./tools/backup --/home/foo/var

 

などと指定すればよいでしょう。

 

cronの設定については、たとえばNECさんが公開している技術情報など、別途Googleなどで「cron 設定」と打ち込めば、たくさんの情報が出てくるかと思います。

Movable Typeは動的なファイル生成、静的ファイル生成ともに扱うことが可能ですが、やはりどちらかというと静的生成がメイン機能です。

静的なファイル生成のメリットの一つは、サーバ負荷の軽減やシステムリプレースの容易さ、メンテナンスの簡易さにありますが、反面、動的にデータを呼び出すような動作は苦手です。RSSリーダーなどもその一つだといえるでしょう。

WordPressは、サイドバーウィジェットにデフォルトでRSSリーダーが存在しており、誰でも手軽にRSSフィードを読み込んで、ブログやサイトに表示させることができます。

MTでこれをやろうとすると、RSSリーダーの部分だけ動的生成するなど、別手段が必要になります。

MTユーザーの間では良く知られている「Movable Type備忘録」の作者さんも、動的生成(ダイナミックパブリッシング)でRSSリーダーを実現しています。

このサイト静的生成(スタティックパブリッシング)ですが、動的なRSSリーダーを実装してみたい、と思いました。そこで、「Google AJAX Feed API」を利用して実装してみました。右脇に表示されている「CMSニュース」というのが、そのRSSリーダーになります。とりあえずつけてみた、程度ですが、順調に動いているようです。このサイト自体は再構築して出力された静的htmlファイルですが、CMSニュース部分はGoogleのAPIを利用した、クライアントサイドのRSSリーダーになっています

僕は最近、この「Google AJAX Feed API」の存在を知ったのですが、比較的分かりやすいAPIで、いろいろ遊べそうな仕組みになっています。

1