Movable Typeの最近のブログ記事

すみません、タイトルは半分釣りです。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として捕らえると、結構構築が大変でした。

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

MTには、なぜか「ブログの記事リストをページ送りする」という概念がありません。このため、何も設定しないと、縦にだーっと長いブログ記事になるか、あるいはあらかじめブログの設定で定義した記事数で、表示が終わってしまいます。

これらの不都合を回避するのが「Pagebute」です。MTの導入企業として著名なスカイアークシステムさんのプラグインです。

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で、いろいろ遊べそうな仕組みになっています。

MovableTypeは、言うまでもなく日本国内のブログ・CMSシステムの雄です。MTを利用したウェブサイト・ブログの構築については、様々な書籍やウェブ上の情報が存在していて、入り口には事欠きません。

ところが、プラグインの作成となると、なかなか体系だって学べる情報源がありません。Perlのオブジェクト指向による開発作業になるため、先ずPerlの基礎知識がないとすぐに詰まってしまいます。

僕は、10年ほど前に、KENTさんやウェブ裏技さんの掲示板をカスタマイズしたことはありましたが、ここ10年はまったくプログラムを見ていなかったため、プラグインのソースがまったく理解できず苦労しました。

 

ここでは、自分で実際にプラグインを書いてみて、有益だった情報、まとまっていて分かりやすかった情報をピックアップしてみます。(2008/11/19時点の情報となります。ご注意ください)

 

第一段階・・・プラグインの構造を理解

この段階で役に立つのは以下のリソースです。

・シックスアパートの解説サイト
http://www.sixapart.jp/pronet/developers/plugin/

・OpenMajicVox
http://www.magicvox.net/archive/2006/03282324/

・ブログ自由自在 Movable Type 上級カスタマイズ術
藤本 壱
477412379X

 

全て3.x時代に書かれた文章ですが、現時点でも使えます。

これらをみて、
グローバルフィルター → MT変数 (<$mt:foo$>みたいなやつ) → コンテナ

の順番で作ることをお薦めします。 特に、藤本さんが著述した「ブログ自由自在~」は、MTの構造を知る上で、非常に有益な情報です。

 

第二段階

プラグインの概要がつかめてきたら、おそらくMTのオブジェクトの機能と、Perlのオブジェクト指向について悩み始めると思います。そのあたりでよいリファレンスは以下のとおり

・Movable Typeオブジェクトリファレンス
http://www.sixapart.jp/movabletype/manual/object_reference/

・すぐわかる オブジェクト指向 Perl
深沢 千尋
4774135046

・初めてのPerl
Randal L. Schwartz Tom Phoenix 近藤 嘉雪
4873111269

 

僕はオブジェクト指向の概念が良く分からなかったので(今でも詳しく理解できていないのですが)、非常に参考になりました。これらに目を通すと、コードの一つ一つの目的がだんだん見えてきます。

 

第三段階

実際にプラグインを作り始めるたときに、「ここどうすればよいの」とか「このあたりはどういう概念で書かれているのだろう」と悩み始めると思います。その段階でのリファレンス

・Junnama Online
http://junnama.alfasado.net/online/

・Movable Type プロフェッショナル・スタイル MT4.1対応
CSS Nite
4839927537

・アークウェブ wiki
http://www.ark-web.jp/sandbox/wiki/?cmd=list

・シックスアパート 本家サイト ドキュメント ディベロッパー向け
http://www.movabletype.org/documentation/developer/

 

いずれもぎゅぎゅっとエッセンスが詰まった記事が多く、非常に勉強になります。

大枠の構造が理解できたら、既存プラグインのソースコードを眺める、alt-tmplフォルダに代替テンプレートを置いて、管理画面を拡張してみる、なども有効です。手っ取り早くMTの構造を理解できます。

一つの参考情報としてご覧ください。

MT用の簡易承認プラグイン「EasyWorkfow(簡易ワークフロー)」を公開します。

こちらからダウンロードしてお使いください。

English documentation is at the bottom;

dlew.PNG


■□これは何?

簡易な承認機能を実現するプラグインです。

あらかじめ承認者のメールアドレスを指定すると「承認待ち」のブログ記事が投稿された際に 承認者に対して承認依頼のメールを送ります。

■□動作環境

Movable Type4.x、5.x および MTOS4.x 以上 Movable Type5.x以上 4.1、4.2、MTOS4.1、MT5.01で動作確認をしました。 (2010・2・9現在) 3.xでは動作しません。

■□機能概要

プラグインをインストール後、各ブログのプラグイン一覧画面に遷移してください。

承認者のメールアドレスを入力する欄がありますので、メールアドレスを入力してください。(承認者は、当該ブログの「ウェブサイト管理者「ブログ管理者「編集者」のいずれかの権限を持っている必要があります。)その後、ブログ記事を作成します公開権限がないユーザーが作成したブログ記事は「未公開(原稿)」もしくは「未公開(承認待ち)」のいずれかを選ぶ形になります。

ブログ記事を作成後、「未公開(承認待ち)」を選んで保存すると、承認権限者に対してメールが送られます。

承認権限者は、ログインして、ブログ記事の一覧から承認待ちのブログを選んで公開手続きを行えます。

▽公開権限がないユーザー本プラグインでは、

・MT4の場合「ライター」「ユーザー」のいずれかが「公開権限がない、ブログ・ウェブページ投稿者」になります。

・MT5の場合「ライター」が「公開権限が無い、ブログ・ウェブページ投稿者」になります。

*MT4における「ユーザー」の権限は、通常自分が所有するブログの公開権限を持ちますが、このプラグインを有効にすると公開の権限を持ちません。ご注意ください。


■□MT5の制限事項

*MT4では「ライター」も「承認依頼」を出せたのですが、MT5では権限周りの仕様変更により、
ライターの権限で「承認依頼」を出すことができません。ご了承ください。

*本プラグインでは「ブログ」のみに承認フローを設定可能です。
仕様上、「ウェブサイト」には承認フローが設定できません。


▽各ブログごとの承認フローについて

本プラグインでは、ブログごとに承認フローを設定できます。ひとつのMTで2つのブログ(A,B)を作成した場合

・Aブログの承認権限者はYさん ・Bブログの承認権限者はZさん

という風に、別々に指定できます。

■□設定方法

プラグインのzipファイルを解凍後、 フォルダ「EasyWorkflow」ごと、MTのPluginディレクトリにFTPでアップロードしてください。

■□使用条件と免責

個人、商用問わず、ご自由にお使いください。

利用の際は、本ブログ(もしくは本ブログ記事)へのリンクを貼っていただきますようお願いいたします。

利用サイトが顧客案件で、リンクを貼るのが難しい場合、導入者・導入会社様のサイト、個人ブログ、もしくはソーシャルブックマークから、本ブログ(もしくは本ブログ記事)へリンクを貼っていただきますようお願いいたします。

なお作者およびURLのクレジットはそのままでお使いいただくようお願いいたします。

本プラグインの不具合によるいかなる事象についても免責とさせていただきます。

利用方法についてのお問い合わせについては必ずしもお答えできないことがございます。ご了承ください。

※どうしてもクレジットなどをはずしたい場合はご相談ください。

■□作成理由

作者はプログラマーではなく、ディレクション畑の人間です。MTの構造およびプログラムの勉強をかねて作成いたしました。

このプラグインは、アルファサードの野田さんが作成した「EntryReview」の改良版です。EntryReviewには、公開権限の設定概念がないため、メール送信機能を付加して拡張しました。 (PowerCMSの完成度には及びもしませんが)

■□フィードバック

本プラグインを利用したご意見、ご感想、誤動作などのご報告、プラグインの書き方の指摘などはいつでも歓迎いたします。

■□謝辞

本プラグインは以下のプラグインおよびサイトを参考にしました。特に、本プラグインの参考にさせていただいたプラグイン作者の野田純生さん、西畑一馬さんにお礼申し上げます。 「EntryReview」 http://junnama.alfasado.net/online/2007/12/mtosmt41.html 「PostToMail http://blog.webcreativepark.net/2008/05/06-210312.html

English Documentation

** Summary of this plugin

This plugin enables you to make a simple workflow. You can set an acknowledger's email address to the plugin.After that, when a blog writer make an entry and save it as a status of "Unpublished(Review)", a request email for approval will be sent to the acknowledger.

** Version

0.4(Sep 9th, 2009)

** Compatibility

Movable Type 4.1, 4.2 ,5.0,and MTOS 4.1,4.2,5.0

** License

Donationware

You can use this plugin for personal use and commercial use for free, unless you delete my credit in email messages. Please make a lin to this blog URL ot this entry. If you want to delete this credit, or if you like this plugin, please consider about a donation.

** Install

1.Download a zip file and extract it 2.Upload the "EasyWorkflow" folder to the under /mtpath/plugin/ directory.

** How to use

After installation, you can set an acknowledger's email address to each blogs. You can set every different acknowledger to every blogs.Acknowledgers should have a permission of "Manage Entries" or "Publish Blog".In default settings of MT4, acknowledger's rolls are similar to "Editor" and "Blog administrator".

Please see a sixapart's onlinedocumentations for detail rolls; http://www.movabletype.org/documentation/administrator/managing-users/roles.html http://www.movabletype.org/documentation/administrator/managing-users/creating-roles.html

前の10件 1  2  3  4