<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10japanesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
<title>MovableType.jp</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/" />

<id>tag:www.movabletype.jp,2007-10-04://1</id>
<updated>2012-01-31T07:28:42Z</updated>
<subtitle>Movable Type のインストールや使い方マニュアル、テンプレートタグ、カスタマイズについて解説します。</subtitle>
<generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.12</generator>

<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/MovableTypeBlog" /><feedburner:info uri="movabletypeblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><entry>
<title>テーマ「Smart Blog」でcanonical属性を設定する</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/canonical.html" />
<id>tag:www.movabletype.jp,2012://1.3832</id>

<published>2012-01-27T09:00:00Z</published>
<updated>2012-01-31T07:28:42Z</updated>

<summary>スマートフォン・オプションに標準添付されているテーマ「Smart Blog」を利...</summary>
<author>
<name>Kaori Kotobuki</name>
<uri>http://www.movabletype.jp</uri>
</author>


<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>スマートフォン・オプションに標準添付されているテーマ「Smart Blog」を利用すると、PC向けページ、スマートフォン向けページのURLを共通化できます。SNSなどで情報をシェアするときに、スマートフォン、PCどちらで閲覧していても、それぞれに最適化されたページデザインを提供することができます。</p>

<p>一方、訪問経路が増えると共に、URLの末尾に「?foo=bar」などのパラメータが加えられることがあります。パラメータ付きのアクセスがまじると、同じページでも集計結果が複数に分散してしまうことがあります。</p>

<p>このような場合、「canonical属性」を設定して、集計結果を統一する方法があります。今回は、「Smart Blog」のテーマにcanonical属性を設定して、アクセス解析の結果を正規化する方法についてご説明します。</p>

<h2>canonical 属性とは？</h2>


<p>canonical属性とは、表示しているページの正統なURLを、検索エンジンや各種シェアサービスに提案するための指定方法です。ブラウザで実際に表示しているURLにかかわらず、canonicalで指定されたURLがそのページのURLとして優先的に利用されます。ちなみにcanonicalという英単語には、「正統な」という意味があります。</p>

<h2>重複するURLを統一する canonical 属性</h2>

<p>以下、５つのURLはそれぞれ同じ内容のコンテンツを表示するものとします。<br>
(最後のURLは、PC向けページをモバイル向けに最適化しているページだとします)</p>
<pre><code>http://www.example.com/
http://www.example.com/index.html
http://www.example.com/index.html?utm_source=test&utm_medium=test
http://example.com/
http://www.example.com/mobile/</code></pre>

<p>index.htmlの有無、wwwの有無、パラメータの有無など、ユーザは少しずつ異なる様々なURLで同じコンテンツにたどり着きます。この状況をそのままにしておくと、どうなるでしょう。</p>

<p>検索エンジンの場合は機械的に重複ページを名寄せし、システムが最適と判断したページをインデックスします。ですが、検索エンジンが最適と判断したページがこちらの意図しないURLである可能性も、また重複判断に失敗し複数インデックスされ検索評価が分散してしまうことがありえます。</p>

<p>このページをソーシャルブックマークしたり、ソーシャルメディアに投稿したりする場合も、同じくブックマーク数やツイート数、Like数などの数がURLごとに分散してしまうことになります。</p>

<p>これを回避するために、今表示しているページの正統なURLが何かを宣言し、各種サービスに提案することが出来るのが、canonical属性です。</p>

<h2>Movable Typeでのcanonical 属性の指定方法</h2>


<h3>canonicalの基本</h3>


<p>canonicalは、&lt;head&gt; タグ内に、以下のように1行追加します。</p>

<pre><code>&lt;link rel="canonical" href="http://www.example.com/"/&gt;</code></pre>

<p>hrefの中の"http://www.example.com/"は、各ページごとに異なります。</p>

<p>例えば、このページの場合、以下のようになります。</p>

<pre><code>&lt;link rel="canonical" href="http://www.movabletype.jp/blog/canonical.html&gt;</code></pre>

<p>このように指定しておくことで、wwwが無いURLでアクセスされても、検索エンジンその他各種シェアサービスからは、http://www.movabletype.jp/blog/canonical.html がこのページの正統なURLであるとみなされます。</p>

<h3>Movable Type スマートフォンオプション付属テンプレートでの指定方法</h3>


<p>ではcanonicalのMTでの設定の仕方を、スマートフォンオプション for Movable Type に付属している、Smart Blog 1.0 テンプレートの例で示します。</p>

<a href="http://www.movabletype.jp/images/smart_blog_desc.png"><img alt="Smart Blog 説明画像" src="http://www.movabletype.jp/assets_c/2012/01/smart_blog_desc-thumb-550x90-3203.png" width="550" height="90" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a>

<h4>トップページ用</h4>


<p>[メインページ] インデックステンプレート内、&lt;head&gt; ヘッダーにトップページURLを指定して、以下を追加</p>
<pre><code>&lt;link rel="canonical" href="&lt;$MTBlogURL$&gt;" /&gt;</code></pre>

<h4>個別ブログ記事ページ用</h4>


<p>[ブログ記事] アーカイブテンプレート内、&lt;head&gt; ヘッダーに以下を追加</p>

<pre><code>&lt;link rel="canonical" href="&lt;$MTEntryPermaLink$&gt;" /&gt;</code></pre>

<h4>個別ページ用</h4>


<p>[ウェブページ記事] アーカイブテンプレート内、&lt;head&gt; ヘッダーに以下を追加</p>

<pre><code>&lt;link rel="canonical" href="&lt;$MTPagePermaLink$&gt;" /&gt;</code></pre>


<h3>上記以外の指定箇所</h3>


<p>忘れがちな場所も含めてリストアップしました。運営ポリシーにより、変わってくるかとは思いますが、設置場所の参考になれば幸いです。</p>

<ul>
	<li>トップページと各枝葉の全ての静的ページ</li>
	<li>スマホ用、ガラケー用、印刷専用ページなど</li>
	<li>ECサイトなどでパラメータが違うだけで同じ商品を指しているような動的ページ</li>
	<li>外部サイトにて自サイト記事を全文引用しているページ</li>
</ul>



<h2>Zenbackもcanonicalに対応しています</h2>



<p>シックス・アパートのソーシャルメディア連携ウィジェット<a href="http://www.sixapart.jp/zenback/" target="_blank">Zenback</a>も、canonical属性でのURL指定に対応しております。各ページの &lt;head&gt; にrel="canonical"で指定されたURLがあれば、ZenbackはそれをページのURLと認識します。そして、URLに関連する情報を表示したり、そのURLをソーシャルメディアにポストする際に、canonicalで指定されたURLを実際のURLよりも優先して利用します。</p>


<h2>プレゼンテーション</h2>

<p>この内容を、社内で発表したときのプレゼンテーションをEmbedします。ご参考まで。</p>
<div style="width:425px" id="__ss_11010526"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/kaorislideshare/canonical-11010526" title="全てのページにcanonicalを！">全てのページにcanonicalを！</a></strong><object id="__sse11010526" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=canonicalforss-120113021351-phpapp01&stripped_title=canonical-11010526&userName=kaorislideshare" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"/><embed name="__sse11010526" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=canonicalforss-120113021351-phpapp01&stripped_title=canonical-11010526&userName=kaorislideshare" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/kaorislideshare">Kaori Kotobuki</a>.</div></div>
]]>

</content>
</entry>

<entry>
<title>スマートフォンオプションを公開</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/smartphone-option.html" />
<id>tag:www.movabletype.jp,2011://1.3819</id>

<published>2011-11-16T03:30:00Z</published>
<updated>2011-11-16T05:26:46Z</updated>

<summary>Movable Type 5.1向けのオプションパッケージ、スマートフォンオプシ...</summary>
<author>
<name>Jun Kaneko</name>

</author>


<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>Movable Type 5.1向けのオプションパッケージ、スマートフォンオプションを公開します。スマートフォンオプションを利用することで、スマートフォンから管理画面にログインしてブログ記事やコメントを管理したり、PCとスマートフォンの両方に最適化されたデザインでウェブサイトを公開できます。</p>

<div style="width:425px" id="__ss_10169723"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/sakk/movable-type-5-smartphone-option-summary" title="Movable Type 5 Smartphone Option summary">Movable Type 5 Smartphone Option summary</a></strong><object id="__sse10169723" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mt5-smartphone-111115073504-phpapp02&stripped_title=movable-type-5-smartphone-option-summary&userName=sakk" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse10169723" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mt5-smartphone-111115073504-phpapp02&stripped_title=movable-type-5-smartphone-option-summary&userName=sakk" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/sakk">Six Apart KK</a>.</div></div>

]]>
<![CDATA[

<div class="section" id="about">
  <h3>サポート環境</h3>

  <p>スマートフォンオプションを利用するためには、以下のバージョンのMovable Typeが必要です。</p>
  <ul>
    <li>Movable Type Pro 5.12 以上</li>
    <li>Movable Type Advanced 5.12 以上</li>
  </ul>
  
  <h3>対応する端末</h3>

  <p>スマートフォンオプションは、以下の端末に対応しています。</p>
  <ul>
    <li>iPhone (iOS4以上)</li>
    <li>iPad (iOS4以上)</li>
    <li>Android OSのバージョン2.3以上を搭載したスマートフォン</li>
  </ul>
</div> <!-- about -->


<div class="section" id="install">
  <h3>ダウンロードとインストール</h3>

  <p>スマートフォンオプションは、商用ライセンスと個人無償ライセンスで公開されています。以下のサイトから購入、ダウンロードしてください。</p>

  <ul>
    <li><a href="http://www.sixapart.jp/movabletype/smart_phone/#smart-price">商用ライセンスの購入</a></li>
    <li><a href="https://mtuser.sixapart.jp/Form/Enquete/Default.aspx?dpid=0&enqid=0000000023">個人ライセンス (無償) </a></li>
  </ul>
  
  <p>Movable Type Open Source (MTOS) 向けには、オープンソース版のスマートフォン用テーマとダイナミックMTMLプラグインを個別にご利用ください。</p>

  <ul>
    <li><a href="https://github.com/movabletype/mt-theme-smart-blog">movabletype/mt-theme-smart-blog - GitHub</a></li>
    <li><a href="https://github.com/alfasado/DynamicMTML">alfasado/DynamicMTML - GitHub</a></li>
  </ul>

  <p>インストール、操作方法、テーマのカスタマイズなどについては、以下のマニュアルを参照してください。</p>

  <ul>
    <li><a href="http://www.movabletype.jp/documentation/smartphone/">スマートフォンオプション マニュアル</a></li>
  </ul>
  
</div> <!-- install -->


<div class="section" id="releasenotes">
  <h3>リリースノート</h3>

  <p>スマートフォンオプション1.0には、以下の既知の制限事項と問題点があります。</p>

  <ul>
    <li>ブログの全般設定で、ダイナミックパブリッシング設定の「ビルド結果をキャッシュする」が有効になっていると、「Smart Blog」テーマが正しく動作しません。</li>
    <li>StaticWebPathにポート番号の指定がある場合に、ダイナミックパブリッシングで&lt;MTStaticWebPath&gt;タグが正しく動作しません(<a href="https://movabletype.fogbugz.com/default.asp?107095">107095</a>)。このため、「Smart Blog」テーマのテンプレートに直接StaticWebPathを記述する必要があります。</li>
    <li>「Smart Blog」テーマのテンプレートを初期化するとエラーになります(<a href="https://movabletype.fogbugz.com/default.asp?104126">104126</a>)。テーマの再適用は可能です。</li>
    <li>「Smart Blog」テーマのブログ記事一覧では、ブログの投稿設定の「表示される記事数」の設定が反映されません。テンプレートに直接記述してください。</li>
    <li>「Smart Blog」テーマのタグを指定したブログ記事一覧では、表示される記事数が環境変数<a href="http://www.movabletype.jp/documentation/appendices/config-directives/searchmaxresults.html">SearchMaxResults</a>で指定された値となります。</li>
    <li>コミュニティ(mt-cp.cgi)でログインする場合には、スマートフォンモードになりません。</li>
  </ul>
</div> <!-- releasenotes -->


<div class="section" id="acknowledgment">
  <h3>謝辞</h3>

  <p>スマートフォンオプションの開発にあたっては、<a href="http://www.ideamans.com/">アイデアマンズ株式会社様</a>にスマートフォン管理画面の開発協力、<a href="http://alfasado.net/">アルファサード有限会社様</a>にスマートフォンテーマ用のDynamicMTMLプラグインの提供をいただいています。</p>
</div> <!-- acknowledgment -->
]]>
</content>
</entry>

<entry>
<title>Movable Type １０周年</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/movable_type_10th_anniversary.html" />
<id>tag:www.movabletype.jp,2011://1.3789</id>

<published>2011-10-08T04:00:00Z</published>
<updated>2011-11-02T06:30:57Z</updated>

<summary>１０月８日、Movable Type は、おかげさまで誕生から１０周年を迎えまし...</summary>
<author>
<name>Jun Kaneko</name>

</author>


<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>１０月８日、Movable Type は、おかげさまで誕生から１０周年を迎えました。たった二人のエンジニアとデザイナによって生み出されたソフトウェアが、１０年もの間、多くの人の手助けによって、進化を続けられることは素晴らしいことです。この場を借りて、皆様の変わらぬサポートに感謝いたします。</p>

<a href="http://www.flickr.com/photos/sixapartkk/6217046654/" title="MT10th　birthday by sixapartkk, on Flickr"><img src="http://farm7.static.flickr.com/6179/6217046654_d85094f9fe.jpg" width="500" height="375" alt="MT10th　birthday" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" ></a>

<p>ささやかですが、記念にシックス・アパートロゴ刺繍入りポロシャツ（黒）を10名様分、用意しました。応募フォーム（応募期間：2011年10月7日〜10月31日）から必要事項を記入の上、ご応募いただければと思います。当選された10名の方には、11月初旬に商品を発送させていただきます。</p>

<p>加えて、現在のMovable Typeの開発状況を、少しご紹介させていただきます。Movable Typeは、開発プロジェクトのケース管理に<a href="https://movabletype.fogbugz.com/">FogBugz</a>というシステムを利用しています。開発チームのお気に入りの機能のひとつに、開発の進捗状況を様々なグラフで表示できるレポート機能があるのですが、グラフを二つ程ご紹介できればと思います。</p>

<div class="section" id="closed">
  <h3>実装した機能、修正したバグのケース数</h3>

  <p>以下は、2007年にFogBugzを使い始めて以来、機能を実装、あるいはバグを修正した数のグラフです。過去と比べても、現在、最も活発な開発がされていることがご覧いただけると思います。</p>

  <a href="http://www.movabletype.org/capture/mt-cases.004.png"><img alt="Number of fixed and implemented cases" src="http://www.movabletype.org/assets_c/2011/10/mt-cases.004-thumb-500x375-17463.png" width="500" height="375" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a>

  <p>この中には、コミュニティからの数多くのフィードバックやパッチ提供が含まれます。例えば、<a href="http://www.movabletype.jp/documentation/mt5/release/51.html#ja-contributors">MT5.1リリースノートでの貢献者一覧</a>は、その一部です。</p>
  <p>もし<a href="https://movabletype.fogbugz.com/">FogBugz</a>のアカウントをお持ちの場合は、いつでも<a href="https://movabletype.fogbugz.com/default.asp?pgx=FS&fOpenBugs=0&fClosedBugs=1&">最新のステータスを確認</a>することができます。FogBugzには誰でも自由に登録できるので、もしバグを見つけたり、要望がある場合は、<a href="https://movabletype.fogbugz.com/?W43">ぜひレポートしてみて</a>ください。</p>
</div> <!-- closed -->

<div class="section" id="opened">
  <h3>現在アクティブなケース</h3>

  <p>そのようなレポートは、どのように対応されているのでしょうか？ 開発チームは、週に一度、新しく登録されたケースをすべてレビューしています。また、バージョンアップの際など、定期的に全体のケースを確認し、プライオリティを判断しています。以下は、アクティブなケース数の推移を表しています。レポートいただいた数多くの機能要望やバグを着実に実装している様子が、ご覧いただけると思います。</p>

  <a href="http://www.movabletype.org/capture/mt-cases.005.png"><img alt="Number of open cases" src="http://www.movabletype.org/assets_c/2011/10/mt-cases.005-thumb-500x375-17467.png" width="500" height="375" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a>

  <p>また、機能要望のケースはすべてレビュー後にカテゴリ分けされ、以下のページにまとめられています。</p>
  
  <ul>
    <li><a href="https://github.com/movabletype/Documentation/wiki/Fogbugz:product-backlog">Active feature request cases - GitHub</a></li>
  </ul>
</div> <!-- opened -->

<p>以上、簡単な開発状況のご紹介でしたが、１０周年を迎えたこれからも、より魅力的なプラットフォームにすべく、開発を続けていきたいと思いますので、皆様からも積極的なフィードバックをお待ちしています！</p>]]>

</content>
</entry>

<entry>
<title>FacebookのOGPといいね！ボタンでPV向上(寄稿)</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/mtddc2011_special_06.html" />
<id>tag:www.movabletype.jp,2011://1.3783</id>

<published>2011-08-15T05:00:00Z</published>
<updated>2011-08-15T06:18:58Z</updated>

<summary>MTDDC Meetup 2011 Tokyo 開催記念企画。最終回は、蒲生トシヒロさんによる寄稿「FacebookのOGPといいね！ボタンでPV向上」をお届けします。</summary>
<author>
<name>Takeshi Osanai</name>

</author>

<category term="facebook" label="Facebook" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="ogp" label="OGP" scheme="http://www.sixapart.com/ns/types#tag" />

<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>こんにちは！シックス・アパートの長内です。</p>

<p>今回も「MTDDC Meetup 2011 Tokyo」に登壇いただいた皆様に、Movable TypeのTips、ハウトゥなどについて特別寄稿をいただく企画、今回が最終回となります。</p>

<p>最終回は、<a href="http://www.dakiny.com/">ブログ「世界中の1%の人々へ」</a>で、Movable Typeに関する多数の情報発信を行っている、蒲生トシヒロさんです。</p>

<p>今回は、MTとFacebookを連動して活用する方法について寄稿いただきました。</p>
<br />]]>
<![CDATA[<h2>FacebookのOGPといいね！ボタンでPV向上</h2>

<p>Facebookはニールセンの2011年5月の調査において国内利用者で820万人となりました。日本では昨年以降にブレイクしたにすぎませんが、すでに成功事例も多数出ており、企業注目度も高いソーシャルメディアです。</p>

<p>今話題のFacebookをうまく利用することにおいてPVやコンバージョンが向上する方法を解説します。</p>

<p>ではどのように利用するのかと言えば、基本は「いいね！」ボタンとOGP（Open Graph protocol）を設置するだけです。Facebookページの運用は、「いいね！」ボタンとOGPを設置してからでも遅くはありません。「いいね！」ボタンの設置法はGoogleで検索すれば容易に探せますので、このブログではOGPそのものの解説および、Movable Typeにおける設置法を解説することにします。</p>

<p>「いいね！」ボタンの設置法について、詳しくは<a href="http://developers.facebook.com/docs/reference/plugins/like/">Facebookのドキュメントページをご覧ください。</a></p>


<h2>Facebookを利用すれば何故PVが向上するのか？</h2>

<p><a href="http://camp-fire.jp/
">CAMPFIRE（キャンプファイヤー）</a>におけるFacebook活用例で解説します。</p>

<p>(注釈：「CAMPFIRE」とは、株式会社ハイパーインターネッツさんが運営する、プロジェクト支援者募集のウェブサービスのことです）</p>

<a href="http://www.movabletype.jp/images/c-ogp.png"><img alt="CAMPFIREのOGP" src="http://www.movabletype.jp/assets_c/2011/08/c-ogp-thumb-450x329-2983.png" width="450" height="329" class="mt-image-none" /></a>

<p>「いいね！」が、「いいね」を呼び共感の輪を広げ、コンバージョンへとつながる仕組みが確立されたことが理解できますね。こうした仕組みがPVを向上させるわけです。</p>

<p>ところが、Facebookの仕組みでは「いいね！」ボタンを設置しただけでは、「いいね！」ボタンを押してくれた人のウォールにしかリンク情報が表示されません。</p>

<p>「いいね！」ボタンを押した人の友だちにまでリンク情報を広げるには、WebページにOGPの設定が必要なわけです。</p>

<p>さて、OGPとは何でしょう。以下で解説します。</p>
<br />



<h2>OGP(Open Graph protocol)とは？</h2>

<a href="http://www.movabletype.jp/images/ogp.png"><img alt="OGP" src="http://www.movabletype.jp/assets_c/2011/08/ogp-thumb-450x369-2979.png" width="450" height="369" class="mt-image-none" style="" /></a>

<p>OGPは、Facebook、mixi、GREEなどのSNSとWebページの連携を⾏うためにHTMLに記述する決まりごとのことです。
具体的にいえば「このページには何が書かれているのか」をメタ情報に明記したものです。</p>

<p>もっと詳しく知りたい方は「The Open Graph Protocol」をお読みください。英文ですが、メタについて理解している方であればさして難しいものではありません。</p>

<p><a href="http://ogp.me/">The Open Graph Protocol</a></p>

<a href="http://www.movabletype.jp/images/fb-ogp.png"><img alt="The Open Graph Protocol" src="http://www.movabletype.jp/assets_c/2011/08/fb-ogp-thumb-450x369-2987.png" width="450" height="369" class="mt-image-none" /></a>
<br />

<h2>FacebookにおけるOGPとは？</h2>

<p>FacebookにおけるOGPは、FacebookのOpen GraphをWebサイトで利用するための決まりごとです。</p>

<p>(わかりやすく書けばFacebookのソーシャルプラグインを活用するには、OGPを設定するのがお約束だよ！ということです）</p>

<p><a href="http://developers.facebook.com/docs/opengraph/">Open Graph protocol - Facebook Developers</a></p>
<br />


<h2>FacebookにおけるOGPの基本コード</h2>

<p>Facebook開発者Open Graph protocolにある基本コードを掲載しておきます。設定の基本はOGPを設置したいページ（※「いいね！ボタン」を貼り付けたWebページ）に、この内容にMTタグを埋め込んだコードを貼り付けるだけです。</p>

<pre><code>
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
xmlns:og=&quot;http://ogp.me/ns#&quot;
xmlns:fb=&quot;http://www.facebook.com/2008/fbml&quot;&gt;
&lt;head&gt;
&lt;title&gt;The Rock (1996)&lt;/title&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;The Rock&quot;/&gt;
&lt;meta property=&quot;og:type&quot; content=&quot;movie&quot;/&gt;
&lt;meta property=&quot;og:url&quot; content=&quot;http://www.imdb.com/title/tt0117500/&quot;/&gt;
&lt;meta property=&quot;og:image&quot; content=&quot;http://ia.media-imdb.com/rock.jpg&quot;/&gt;
&lt;meta property=&quot;og:site_name&quot; content=&quot;IMDb&quot;/&gt;
&lt;meta property=&quot;fb:admins&quot; content=&quot;USER_ID&quot;/&gt;
&lt;meta property=&quot;og:description&quot;
content=&quot;A group of U.S. Marines, under command of a renegade general, take over Alcatraz and threaten San Francisco Bay with biological weapons.&quot;/&gt;
&lt;/head&gt;
</code></pre>

<p>それでは実装してみましょう。</p>


<h2>OGPの実装</h2>


<h3>事前準備：プロフィール画像の設定</h3>

1. プロフィール画像を用意する
<ul>
<li>縦横3:1以下の比率</li>
<li>50px × 50px以上</li>
<li>フォーマットはpng, jpg, gif<br />
※50px × 50pxでは表示されない場合もある</li>
</ul>

2. 画像をサーバーの任意の場所にアップロードする

<h3>基本コードの作成</h3>

<ul>
<li>ジェネレーターを使えば簡単</li>
<li><a href="http://developers.facebook.com/docs/reference/plugins/like/">「Facebook開発者Like Button」</a>にアクセス</li>
<li>「Step 2 - Get Open Graph Tags」のジェネレーターを利用して基本コードを作成します。</li>
<ul>
<li>Typeは基本は「blog」を選択してください。</li>
<li>本来それぞれの目的に準じたTypeを利用するのが好ましいのですがうまく作動しないという報告例が出ておりますので効果の確実な「blog」にしておきます。</li>
</ul>
</ul>

<h3>Movable Typeに埋め込むコード例</h3>

<pre><code>
&lt;meta property=&quot;og:title&quot; content=&quot;&lt;$mt:EntryTitle encode_html=&quot;1&quot;$&gt; |
&lt;$mt:BlogName encode_html=&quot;1&quot;$&gt;&quot;&gt;
&lt;meta property=&quot;og:site_name&quot;
content=&quot;&lt;mt:BlogParentWebsite&gt;&lt;$mt:BlogName
encode_html=&quot;1&quot;$&gt;&lt;/mt:BlogParentWebsite&gt;&quot;&gt;
&lt;meta property=&quot;og:type&quot; content=&quot;blog&quot; /&gt;
&lt;meta property=&quot;og:url&quot; content=&quot;&lt;$mt:EntryPermalink$&gt;&quot;&gt;
&lt;meta property=&quot;og:description&quot; content=&quot;&lt;$mt:EntryBody words=&quot;100&quot;$&gt;&quot;&gt;（※ジェネレータでは作られないが追加を推奨）
&lt;meta property=&quot;og:image&quot; content=&quot;&lt;$mt:BlogURL$&gt;blogimg/gabsogp.png&quot;&gt;
&lt;meta property=&quot;fb:admins&quot; content=&quot;<strong>1008895412</strong>&quot; /&gt;
</code></pre>

<p>※ID(注：content=の部分)は各自の番号に差し替えて下さい</p>


<h2>任意の画像を表示させる方法</h2>

<p>ブログで利用している画像を表示させる一番簡単な方法です。画像がない場合は特定の画像が表示されます。
前述のog:imageの行を下記のコードに差し替えてください。</p>

<pre><code>
&lt;mt:Setvarblock name=&quot;ogimage&quot;&gt;
&lt;mt:EntryAssets sort_order=&quot;ascend&quot; lastn=&quot;1&quot;&gt;&lt;$mt:AssetURL$&gt;&lt;/mt:EntryAssets&gt;
&lt;/mt:Setvarblock&gt;

&lt;meta property=&quot;og:image&quot; content=&quot;&lt;mt:If name='ogimage'&gt;&lt;$mt:GetVar name='ogimage'&gt;&lt;mt:Else&gt;&lt;$mt:BlogURL$&gt;blogimg/gabsogp.png&lt;/mt:If&gt;&quot;&gt;
</code></pre>

<p>記事毎に特定のプロフィール画像を表示させたい場合は、カスタムフィールドを利用してください。</p>


<h2>Debuggerで確認</h2>

<a href="http://www.movabletype.jp/images/url-linter.png"><img alt="URLリンター" src="http://www.movabletype.jp/assets_c/2011/08/url-linter-thumb-450x369-2991.png" width="450" height="369" class="mt-image-none" style="" /></a>

<p>コードを実装したら、Debuggerで確認しましょう。使い方は簡単です。URLを窓に入れてクリックするだけです。
おかしな点は、Debuggerが教えてくれます。</p>


<p><a href="http://developers.facebook.com/tools/debug">Debugger - Facebook Developers</a></p>



<h2>OGPを利用した場合の表示例</h2>

<a href="http://www.movabletype.jp/images/ogp_y_n.png"><img alt="OGPを利用した場合の表示例" src="http://www.movabletype.jp/assets_c/2011/08/ogp_y_n-thumb-450x358-2995.png" width="450" height="358" class="mt-image-none" style="" /></a>

<p>上記はブログ内の画像を表示させた場合、下記は固定画像を表示させた場合です。
いずれがよいということはありません。利用条件で決めてください。</p>

<p>OGPの利用の仕方は理解されましたら、早速でも「いいね！」ボタンと併せて設置してみてください。「いいね！」が、「いいね」を呼び共感の輪を広げ、PVが向上しますよ！</p>

<p>※但し、Webの本来のPVや記事内容によって効果は異なります。</p>

<p>さらに詳しくFacebook活用をしたい方や、Facebookページを作りたい方は<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839938601/">拙著「Facebookページプロフェッショナルガイド」</a>をお読みください。</p>


<dl>
<dt>執筆者</dt>
<dd>蒲生トシヒロ（がもう　としひろ）</dd>
<dt>プロフィール</dt>
<dd>有限会社ITプロフェッショナル代表取締役<br />
テクノロジーとマーケティングの両面を融合して成果に導くWebプロデューサー&プランナー。技術者ではないがテクノロジーに強く、頭だけで理解するのが嫌いで手も動かして理科いるようにつとめている。ソーシャルメディア、CMS、HTML5にスキルと人脈がある。<br />
著書に<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839937311/">「Movable Type5.1 プロの現場の仕事術」</a>など。

</dd>
<dt>ブログなど</dt>
<dd>個人サイト<a href="http://www.dakiny.com/">世界中の1%の人々へ</a><br />
Facebook：<a href="http://www.facebook.com/toshihiro.gamo">蒲生トシヒロ</a><br />
Twitter：<a href="http://twitter.com/#!/Dakiny">@Dakiny</a></dd>
</dl>

<h2>免責事項</h2>

<p>本連載企画は、MTを利用したカスタマイズテクニックの一つで、実際の製品仕様範囲外の利用方法を含む場合がございます。製品仕様範囲外の利用方法については、製品サポートの範囲外となりますのでご注意ください。</p>

<p>本連載企画で説明されているテクニックを実際に適用する場合は、ご自身の環境でお試しいただいた上で適用くださいますようお願い申し上げます。</p>]]>
</content>
</entry>

<entry>
<title>更新履歴管理(リビジョン管理)の詳説(寄稿)</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/mtddc2011_special_05.html" />
<id>tag:www.movabletype.jp,2011://1.3781</id>

<published>2011-08-10T05:00:00Z</published>
<updated>2011-08-11T02:24:42Z</updated>

<summary>MTDDC Meetup 2011 Tokyo 開催記念企画。第五回目は、荒木勇次郎さんによる寄稿「更新履歴管理(リビジョン管理)の詳説」をお届けします。Movable Typeが持つ更新履歴管理のフレームワークについて、詳細な解説をいただきました。</summary>
<author>
<name>Takeshi Osanai</name>

</author>

<category term="リビジョン管理" label="リビジョン管理" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="更新履歴管理" label="更新履歴管理" scheme="http://www.sixapart.com/ns/types#tag" />

<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>こんにちは！シックス・アパートの長内です。</p>

<p>「MTDDC Meetup 2011 Tokyo」に登壇いただいた皆様に、Movable TypeのTips、ハウトゥなどについて寄稿をいただく特別企画、第五回目です。
</p>

<p>寄稿いただくのは、<a href="http://www.koikikukan.com/">小粋空間</a>で、Movable Typeに関わる多数の情報発信を行っている、荒木勇次郎さんです。</p>

<p>MTの履歴管理機能に関する解説を寄稿いただきました。</p>
<br />]]>
<![CDATA[<h2>更新履歴管理について</h2>

<p>Movable Typeでは更新履歴管理フレームワークが用意されています。このフレームワークを利用して、プラグインや独自アプリケーションなどでオブジェクトの更新履歴管理（リビジョン管理）を実現できますが、公式サイトのドキュメント「<a href="http://www.movabletype.jp/documentation/developer/revisable.html">更新履歴をプラグインで利用する</a>」では充分な情報が得られないため、ソースコードをトレースする必要があります。</p>

<p>本稿ではブログ記事の更新履歴管理を例に、フレームワークの内部動作について紹介します。更新履歴管理機能を利用する際の参考になれば幸いです。</p>

<h2>更新履歴管理用テーブル</h2>

<p>データベース上の更新履歴管理用テーブルは、オブジェクト別に生成されます。テーブル名はオブジェクトテーブル名の末尾に「_rev」をつけた名称になります。ブログ記事の場合、オブジェクトテーブル名は「entry」なので、ブログ記事の更新履歴管理用テーブル名は「entry_rev」になります（実際には各テーブルに「mt_」という接頭辞がつきます）。</p>

<p>図のように、entry_revテーブルはentryテーブルとIDで紐づきます。entryテーブルのひとつのデータに、entry_revテーブルの複数のデータ（＝複数のリビジョン）が結びつきます。</p>

<img alt="mtddc2011special_araki_1.png" src="http://www.movabletype.jp/images/mtddc2011special_araki_1.png" width="442" height="291" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" />

<p>更新履歴管理用テーブルの主なフィールドの意味は次のとおりです。</p>

<ul>
<li>description：編集画面の「変更メモ」の内容</li>
<li>entry：記事のリビジョンデータのハッシュ。フィールド名はオブジェクトテーブルのデータソース名</li>
<li>changed：変更があったフィールド名</li>
<li>rev_number：リビジョン番号</li>
</ul>

<p>公式ドキュメントの「<a href="http://www.movabletype.jp/documentation/developer/revisable.html">更新履歴をプラグインで利用する</a> - 任意のオブジェクトの更新履歴を管理する」で触れられている通り、更新履歴管理を行うには、オブジェクトの継承関係にMT::Revisableを追加します。MT::Entryでは次のようになっています。</p>

<pre class="source">use base
    qw( MT::Object MT::Taggable MT::Scorable MT::Summarizable <strong>MT::Revisable</strong> );</pre>

<p>また、履歴管理の対象にしたいフィールドにrevisioned属性を追加します。MT::Entryでは次のようになっています。</p>

<pre class="source">__PACKAGE__->install_properties(
    {   column_defs => {
            'id'      => 'integer not null auto_increment',
            'blog_id' => 'integer not null',
            'status'  => {
                type       => 'smallint',
                not_null   => 1,
                label      => 'Status',
                <strong>revisioned => 1</strong>
            },
            'author_id' => {
                type       => 'integer',
                not_null   => 1,
                label      => 'Author',
                <strong>revisioned => 1</strong>
            },

            # ...</pre>

<h2>ブログ記事の更新履歴管理概要</h2>

<p>ブログ記事のリビジョンを保存する場合、次のような流れになっています。</p>

<h3>1.差分チェック</h3>

<p>直近に保存したオブジェクトデータと、今回保存するオブジェクトデータの差分をチェックします。差分の比較はMT::Revisable::gather_changed_colsで行います。gather_changed_colsはフックポイントcms_pre_save.entryから起動されます。</p>

<p>MT::Revisable::gather_changed_cols</p>

<pre style="margin-top:-3px">sub gather_changed_cols {
    my $obj = shift;
    my ($orig) = @_;
 
    my @changed_cols;
    my $revisioned_cols = $obj->revisioned_columns;
 
    my %date_cols = map { $_ => 1 }
        @{ $obj->columns_of_type( 'datetime', 'timestamp' ) };
 
    foreach my $col (@$revisioned_cols) {
        next if $orig && $obj->$col eq $orig->$col;
        next
            if $orig
                && exists $date_cols{$col}
                && $orig->$col eq MT::Object::_db2ts( $obj->$col );
 
        push @changed_cols, $col;
    }
 
    $obj->{changed_revisioned_cols} = \@changed_cols
        if @changed_cols;
 
    my $class = ref $obj || $obj;
    MT->run_callbacks( $class . '::gather_changed_cols', $obj, @_ );
 
    1;
}</pre>

<p>MT::Revisable::gather_changed_colsの引数は、編集中のオブジェクトデータ$objと、データベースに保存されているオブジェクトデータ$origです。MT::Object::revisioned_columnsを使ってrevisioned属性がついたフィールドを収集し、$objと$origで差分のあるフィールド名の配列を$obj->{changed_revisioned_cols}に保存します。</p>

<p>例えば、ブログ記事のタイトルと本文を変更して更新した場合、$obj->{changed_revisioned_cols}をData::Dumperで出力すると、次のような配列データが保存されていることが分かります。この内容はentry_revテーブルのchangedフィールドに保存されます。</p>

<pre>$VAR1 = [ 'text', 'title' ];</pre>

<p>entryテーブルに追加した独自フィールドにrevisioned属性を指定しておくことで、MT::Revisable::gather_changed_colsで差分を自動で比較してくれます。プラグインで追加した、entryテーブルに紐づいた他のオブジェクトデータの差分を比較したい場合は、gather_changed_colsフックポイントにハンドラメソッドを登録します。</p>

<pre>    MT->run_callbacks( $class . '::gather_changed_cols', $obj, @_ );</pre>

<p>ハンドラメソッドの登録は、プラグインのconfig.yamlに次のように記述します。</p>

<pre>callbacks:
    MT::Entry::gather_changed_cols: $Foo::Foo::gather_changed_cols</pre>

<p>カスタムフィールドもこのgather_changed_colsフックポイントを起動しています。なお、カスタムフィールドのハンドラメソッドCustomFields::Util::gather_changed_colsは、パフォーマンスを考慮し、差分が1つみつかった時点で処理を終了しているので、entry_revテーブルのchangedにはすべての差分フィールド名は保存されません。</p>

<h3>2.リビジョンの保存</h3>

<p>1項で$obj->{changed_revisioned_cols}にフィールド名が設定された場合、つまり新旧のオブジェクトデータに差分がある場合、リビジョンとして更新履歴管理用テーブルに保存します。リビジョンの保存は、MT::Revisable::save_revisionで行われます。save_revisionはフックポイントcms_post_save.entryから起動されます。MT::Revisable::save_revisionはフックポイント（save_revision_filter/pre_save_revision/post_save_revision）の提供だけで、実際の処理はMT::Revisable::Local::save_revisionで行われます。</p>

<p>MT::Revisable::Local::save_revision</p>

<pre style="margin-top:-3px">sub save_revision {
    my $driver = shift;
    my ( $obj, $description ) = @_;
    my $datasource       = $obj->datasource;
    my $obj_id           = $datasource . '_id';
    my $packed_obj       = $obj->pack_revision();
    my $changed_cols     = $obj->{changed_revisioned_cols};
    my $current_revision = $obj->current_revision;
 
    require MT::Serialize;
    my $rev_class = MT->model( $datasource . ':revision' );
    my $revision  = $rev_class->new;
    $revision->set_values(
        {   $obj_id     => $obj->id,
            $datasource => MT::Serialize->serialize( \$packed_obj ),
            changed     => join ',',
            @$changed_cols,
        }
    );
    $revision->rev_number( ++$current_revision );
    $revision->description($description)
        if defined($description);
    $revision->save or return;
 
    return $current_revision;
}</pre>

<p>引数の$objは編集中のオブジェクトデータ、$descriptionは編集画面の「変更メモ」の内容です。リビジョンデータはMT::Revisable::pack_revisionを利用して、フィールド名と値のハッシュを生成します。</p>

<pre>    my $packed_obj       = $obj->pack_revision();</pre>

<p>MT::Revisable::pack_revisionの処理は次のようになっています。</p>

<p>MT::Revisable::pack_revision</p>

<pre style="margin-top:-3px">sub pack_revision {
    my $obj    = shift;
    my $class  = ref $obj || $obj;
    my $values = $obj->column_values;
 
    my $meta_values = $obj->meta;
    foreach my $key ( keys %$meta_values ) {
        next if $key eq 'current_revision';
        $values->{$key} = $meta_values->{$key};
    }
 
    MT->run_callbacks( $class . '::pack_revision', $obj, $values );
 
    return $values;
}</pre>

<p>任意のデータをハッシュに含めたい場合は、メソッドの最後にあるpack_revisionフックポイントを起動します。</p>

<pre>    MT->run_callbacks( $class . '::pack_revision', $obj, $values );</pre>

<p>save_revisionで扱うリビジョンオブジェクト$revisionは、entry_revテーブルにアクセスする場合、MT::modelの引数に「データソース名+':revision'」を指定して取得した更新履歴用テーブルのパッケージ名でnewを実行して生成します。ブログ記事の場合、パッケージ名$rev_classは「MT::Entry::Revision」となります。</p>

<pre>    my $rev_class = MT->model( $datasource . ':revision' );
    my $revision  = $rev_class->new;</pre>

<p>$revisionの各フィールドにデータを設定し、saveメソッドで更新履歴管理用テーブルに保存します。リビジョンデータ$packed_objは、シリアライズを行いバイナリデータに変換します。オブジェクトから取得したリビジョン番号$current_revisionに1加算した値がrev_numberに設定され、save_revisionの返却値となります。保存前の最新リビジョン番号が2であれば、3が設定・返却されます。</p>

<pre>    require MT::Serialize;
    $revision->set_values(
        {   $obj_id     => $obj->id,
            $datasource => MT::Serialize->serialize( \$packed_obj ),
            changed     => join ',',
            @$changed_cols,
        }
    );
    $revision->rev_number( ++$current_revision );
    $revision->description($description)
        if defined($description);
    $revision->save or return;</pre>

<p>MT::Revisable::Local::save_revisionでのリビジョン保存イメージを図に示します。</p>

<img alt="MT::Revisable::Local::save_revisionでのリビジョン保存イメージ" src="http://www.movabletype.jp/images/mtddc2011special_araki_2.png" width="458" height="572" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" />

<h3>3.リビジョンデータの取得</h3>

<p>entry_revテーブルから特定リビジョン番号のオブジェクトデータを収集する動作は、次のような流れになっています。</p>

<p>まず、記事編集画面にある「リビジョン表示」のリンクをクリックすると更新履歴一覧が表示されます。</p>

<img alt="更新履歴一覧" src="http://www.movabletype.jp/images/mtddc2011special_araki_3.png" width="500" height="297" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" />

<p>一覧にある日付のテキストリンク（赤枠部分）をクリックすると、クエリーパラメータに「r=x」というリビジョン番号がついた形で、MT::CMS::Entry::editを起動します。</p>

<pre>http://.../mt.cgi?__mode=view&_type=entry&id=1&blog_id=2&<strong>r=3</strong></pre>

<p>MT::CMS::Entry::editでは、クエリーパラメータの「r=x」を取得し、MT::Revisable::load_revisionを起動します（実際の処理はMT::Revisable::Local::load_revisionに実装されています）。load_revisionでは、save_revisionと逆の動作を行います。</p>

<p>MT::Revisable::Local::load_revision</p>

<pre style="margin-top:-3px">sub load_revision {
    my $driver = shift;
    my ( $obj, $terms, $args ) = @_;
    my $datasource = $obj->datasource;
    my $rev_class  = MT->model( $datasource . ':revision' );
 
    # Only specified a rev_number
    if ( defined $terms && ref $terms ne 'HASH' ) {
        $terms = { rev_number => $_[0] };
    }
    $terms->{ $datasource . '_id' } ||= $obj->id;
 
    if (wantarray) {
        my @rev = map { $obj->object_from_revision($_); }
            $rev_class->load( $terms, $args );
        unless (@rev) {
            return $obj->error( $rev_class->errstr );
        }
        return @rev;
    }
    else {
        my $rev = $rev_class->load( $terms, $args )
            or return $obj->error( $rev_class->errstr );
        my $array = $obj->object_from_revision($rev);
        return $array;
    }
}</pre>

<p>引数の$objはブログ記事のオブジェクトデータ、$termsおよび$argsにはオブジェクトをロードする条件を指定します。MT::CMS::Entry::editからload_revisionを起動するときは、引数にリビジョン番号のみを指定しています。</p>

<p>MT::CMS::Entry::edit</p>

<pre style="margin-top:-3px">sub edit {
 
    # ...
 
    my $rn = $q->param('r');
    if ( defined($rn) && $rn != $obj->current_revision ) {
 
        # ...
 
        <strong>my $rev = $obj->load_revision( { rev_number => $rn } );</strong></pre>

<p>load_revisionでのオブジェクトデータ取得は、entry_revテーブルを指定してロードします。</p>

<pre>    my $datasource = $obj->datasource;
    my $rev_class  = MT->model( $datasource . ':revision' );
 
    # ...
 
        my $rev = $rev_class->load( $terms, $args )</pre>

<p>load_revisionの中で起動されるobject_from_revisionでは、entry_revテーブルから取得した特定リビジョンのデータ（リビジョンオブジェクト・差分フィールド名・リビジョン番号）を配列で返却します。object_from_revisionは、更新履歴一覧を表示する際にも起動されます。</p>

<p>MT::Revisable::Local::object_from_revision</p>

<pre style="margin-top:-3px">sub object_from_revision {
    my $driver = shift;
    my ( $obj, $rev ) = @_;
    my $datasource = $obj->datasource;
 
    my $rev_obj        = $obj->clone;
    my $serialized_obj = $rev->$datasource;
    require MT::Serialize;
    my $packed_obj = MT::Serialize->unserialize($serialized_obj);
    $rev_obj->unpack_revision($$packed_obj);
 
    # Here we cheat since audit columns aren't revisioned
    $rev_obj->modified_by( $rev->created_by );
    $rev_obj->modified_on( $rev->modified_on );
 
    my @changed = split ',', $rev->changed;
 
    return [ $rev_obj, \@changed, $rev->rev_number ];
}</pre>

<p>引数の$objは編集中のオブジェクト、$revはリビジョンオブジェクトです。最初に$objのクローン$rev_objを生成し、記事編集画面に表示するための元データとします。$revから取得したリビジョンデータ$serialized_objはアンシリアライズして$packed_objに設定し、さらにMT::Revisable::unpack_revisionを使って、フィールド名と値のハッシュを復元します。unpack_revisionの処理が完了した時点で、$rev_objにはリビジョンデータが復元されています。</p>

<pre>    require MT::Serialize;
    my $packed_obj = MT::Serialize->unserialize($serialized_obj);
    $rev_obj->unpack_revision($$packed_obj);</pre>

<p>更新のタイムスタンプとユーザーは、$revから$rev_objにコピーします。</p>

<pre>    $rev_obj->modified_by( $rev->created_by );
    $rev_obj->modified_on( $rev->modified_on );</pre>

<p>unpack_revisionの処理は次のようになっています。</p>

<p>MT::Revisable::unpack_revision</p>

<pre style="margin-top:-3px">sub unpack_revision {
    my $obj          = shift;
    my ($packed_obj) = @_;
    my $class        = ref $obj || $obj;
 
    delete $packed_obj->{current_revision}
        if exists $packed_obj->{current_revision};
 
    $obj->set_values($packed_obj);
 
    MT->run_callbacks( $class . '::unpack_revision', $obj, $packed_obj );
}</pre>

<p>任意のデータをハッシュから取得したい場合は、メソッドの最後にあるunpack_revisionフックポイントを起動します。</p>

<pre>    MT->run_callbacks( $class . '::unpack_revision', $obj, $packed_obj );</pre>

<p>データベースから特定のリビジョンデータを取得し、記事編集画面の表示データとなる$rev_objを生成するまでのイメージを図に示します。</p>

<img alt="$rev_objを生成" src="http://www.movabletype.jp/images/mtddc2011special_araki_4.png" width="435" height="554" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" />

<h2>リビジョン管理メソッドのコールバック登録</h2>

<p>リビジョン管理メソッドのコールバック登録は、MT::Revisable::install_propertiesで行っています。</p>

<p>MT::Revisable::install_properties</p>

<pre style="margin-top:-3px">sub install_properties {
    my $pkg        = shift;
    my ($class)    = @_;
    my $props      = $class->properties;
    my $datasource = $class->datasource;
 
    # ...
 
    MT->add_callback( 'api_pre_save.' . $datasource,
        9, undef, \&mt_presave_obj );
    MT->add_callback( 'cms_pre_save.' . $datasource,
        9, undef, \&mt_presave_obj );
 
    # ...
 
    MT->add_callback( 'api_post_save.' . $datasource,
        9, undef, \&mt_postsave_obj );
    MT->add_callback( 'cms_post_save.' . $datasource,
        9, undef, \&mt_postsave_obj );
 
    $class->add_callback( 'post_remove', 0, MT->component('core'),
        \&mt_postremove_obj );
}</pre>

<p>コールバック登録MT::add_callbackで使われている変数$datasourceには、MT::Revisableを継承しているオブジェクトのデータソース名が設定されます。よって、ブログ記事のコールバックとして、次の5種類が自動的に登録されることになります。</p>

<ul>
<li>api_pre_save.entry</li>
<li>cms_pre_save.entry</li>
<li>api_post_save.entry</li>
<li>cms_post_save.entry</li>
<li>post_remove</li>
</ul>

<p>ハンドラメソッドのmt_presave_objでは、「1.差分チェック」で紹介したgather_changed_colsを実行します。mt_postsave_objでは、「2.リビジョンの保存」で紹介したsave_revisionを実行します。mt_postremove_objでは、remove_revisionsを実行します。</p>

<h2>ハンドラメソッドのオーバーライド</h2>

<p>ブログ記事では、各ハンドラメソッドgather_changed_cols、pack_revision、unpack_revisionをオーバーライドしています。理由は、ブログ記事データを保存するmt_entryテーブルに含まれない、タグやカテゴリといったデータをリビジョンデータとして扱う必要があるためです。</p>

<p>MT::Revisable::gather_changed_colsをオーバーライドしたMT::Entry::gather_changed_colsでは、次のようにMT::Revisable::gather_changed_colsの処理を行ってから、タグやカテゴリなどの独自処理を行っています。</p>

<p>MT::Entry::gather_changed_cols</p>

<pre style="margin-top:-3px">sub gather_changed_cols {
    my $obj = shift;
    my ( $orig, $app ) = @_;
 
    MT::Revisable::gather_changed_cols( $obj, @_ );
 
    # ...</pre>

<h2>更新履歴数の制御</h2>

<p>ブログ記事やテンプレートなどの更新履歴数は「設定」→「全般」で設定しています。この更新履歴数を超えないよう、mt_postsave_objの中でMT::Revisable::handle_max_revisionsを起動し、リビジョンデータ保存時に更新履歴数を超えた一番古いデータをリビジョンデータから削除しています。</p>

<p>MT::Revisable::Local::handle_max_revisions</p>

<pre style="margin-top:-3px">sub handle_max_revisions {
    my $driver = shift;
    my ( $obj, $max ) = @_;
    return unless $max;
 
    my $datasource = $obj->datasource;
    my $rev_class  = MT->model( $datasource . ':revision' );
    my $terms      = { $datasource . '_id' => $obj->id };
    my $count      = $rev_class->count($terms);
    if ( $max <= $count ) {
        my $rev_iter = $rev_class->load_iter(
            $terms,
            {   sort      => 'created_on',
                direction => 'ascend',
                limit     => $count - $max + 1
            }
        );
        while ( my $rev = $rev_iter->() ) {
            $rev->remove;
        }
        return $max - 1;
    }
    return $count;
}</pre>

<h2>更新履歴管理メソッド</h2>

<p>更新履歴管理（MT::Revisable）で提供されているメソッドを紹介します。</p>

<strong>$obj->gather_changed_cols($orig, $app)</strong>
<p>$origと$objの差分フィールドを$obj->{changed_revisioned_columns}に設定します。</p>

<strong>$obj->save_revision()</strong>
<p>差分がある場合のみ、$objをリビジョンとして保存します。</p>

<strong>$obj->load_revision(\%terms, \%args)</strong>
<p>%termsと%argsで指定した条件のリビジョンデータをロードします。%termsには次の値を指定できます。</p>

<ul>
<li>id</li>
<li>label</li>
<li>description</li>
<li>rev_number</li>
<li>changed</li>
</ul>

<strong>$obj->apply_revision(\%terms, \%args)</strong>
<p>%termsと%argsを引数としてload_revisionを起動し、ロードしたリビジョンデータを最新データとして適用（オブジェクトテーブルに保存）します。</p>

<strong>$obj->pack_revision()</strong>
<p>オブジェクトデータのハッシュを生成し、ハッシュリファレンスを返却します。</p>

<strong>$obj->unpack_revision($packed_obj)</strong>
<p>引数のハッシュリファレンスから取り出した値を$objに設定します。</p>

<strong>$obj->remove_revisions()</strong>
<p>$objのリビジョンデータを削除します。</p>

<strong>$obj->diff_object($obj_b)</strong>
<p>$objと$obj_bの差分をハッシュリファレンスで返却します。</p>

<strong>$obj->diff_revision(\%terms, \%diff_args)</strong>
<p>%termsで指定した2つのリビジョン番号のリビジョンデータの差分をハッシュリファレンスで返却します。</p>

<strong>$class->revision_pkg</strong>
<p>$classの更新履歴管理テーブルのパッケージ名を返却します</p>

<strong>$class->revisioned_columns</strong>
<p>$classのrevisioned属性のフィールドを配列のリファレンスで返却します</p>

<strong>$class->is_revisioned_column($col)</strong>
<p>引数で指定した$classのフィールドがrevisioned属性か判定します</p>

<h2>プラグイン開発のポイント</h2>

<p>既存テーブルへのフィールド追加を行った場合は、前述したとおり、フィールドにrevisioned属性を追加することでリビジョン管理対象となります。独自テーブルについては、プラグインのハンドラメソッドに次の実装を行うことでリビジョン管理が実現できます。</p>

<h3>リビジョンデータ保存</h3>

<ul>
<li>gather_changed_colsフックポイントで起動したハンドラメソッドで、差分のあるフィールド名を$obj->{changed_revisioned_cols}に保存</li>
<li>pack_revisionフックポイントで起動したハンドラメソッドで、独自データをリビジョンテーブルに保存</li>
</ul>

<h3>リビジョンデータ取得</h3>

<ul>
<li>unpack_revisionフックポイントで起動したハンドラメソッドで、リビジョンデータを復元</li>
</ul>

<h2>関連アイテムをリビジョンに含めるプラグイン</h2>

<p>筆者の運営するブログ「<a href="http://www.koikikukan.com/">小粋空間</a>」では、関連アイテムを更新履歴管理に含めるプラグイン「RevisableAsset」を公開しています。個人無償版やMovable Type Open Sourceであれば無償でご利用いただけます。</p>

<a href="http://www.koikikukan.com/archives/2011/07/07-015555.php">Movable Typeで記事アイテムのリビジョン管理ができる「RevisableAssetプラグイン」</a>

<p>独自オブジェクトを既存オブジェクトに含めて更新履歴管理対象にする場合のサンプルとして参考になれば幸いです。</p>

<dl>
<dt>執筆者</dt>
<dd>荒木勇次郎（あらき　ゆうじろう）</dd>
<dt>プロフィール</dt>
<dd>Movable Typeの情報を提供するブログ「小粋空間」の管理人。SE、プログラマー。<br />
2010年「MTDDC Tokyo」、2011年「MTDDC Meetup Tokyo 2011」に講師として出演。<br />
著書に「Movable Type 5プロフェッショナルガイド」（毎日コミュニケーションズ）、「Movable Type 5.1プロの現場の仕事術」（毎日コミュニケーションズ）など多数。</dd>
<dt>ブログなど</dt>
<dd>個人サイト<a href="http://www.koikikukan.com/">小粋空間</a><br />
Facebook:<a href="http://www.facebook.com/koikikukan">koikikukan</a><br />
Twitter：<a href="http://twitter.com/#!/yujiro">@yujiro</a></dd>
</dl>

<h2>免責事項</h2>

<p>本連載企画は、MTを利用したカスタマイズテクニックの一つで、実際の製品仕様範囲外の利用方法を含む場合がございます。製品仕様範囲外の利用方法については、製品サポートの範囲外となりますのでご注意ください。</p>

<p>本連載企画で説明されているテクニックを実際に適用する場合は、ご自身の環境でお試しいただいた上で適用くださいますようお願い申し上げます。</p>
]]>
</content>
</entry>

<entry>
<title>PCサイトへのアクセスをスマートフォンサイトに転送するJavaScript(寄稿)</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/mtddc2011_special_04.html" />
<id>tag:www.movabletype.jp,2011://1.3779</id>

<published>2011-08-04T05:00:00Z</published>
<updated>2011-08-04T04:40:56Z</updated>

<summary>MTDDC Meetup 2011 Tokyo 開催記念企画。第四回目の今回は、西畑一馬さんによる寄稿「PCサイトへのアクセスをスマートフォンサイトに転送するJavaScript」をお届けします。ちょっとしたスクリプトで、スマートフォン向けサイトへの表示振り分けを行う、便利なTipsです。</summary>
<author>
<name>Takeshi Osanai</name>

</author>

<category term="android" label="Android" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="iphone" label="iPhone" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="javascript" label="JavaScript" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="スマートフォン" label="スマートフォン" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="表示振り分け" label="表示振り分け" scheme="http://www.sixapart.com/ns/types#tag" />

<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>こんにちは！シックス・アパートの長内です。</p>

<p>今回も「MTDDC Meetup 2011 Tokyo」に登壇いただいた皆様に、Movable TypeのTips、ハウトゥなどについて特別寄稿をしていただきます。</p>

<p>第四回目は、<a href="http://blog.webcreativepark.net/">ブログ「to-R」</a>上で、JavaScriptやSEO対策、CSS、Movable Typeなどの情報発信を行っている、西畑一馬さんです。</p>

<p>今回は、JavaScriptを利用して、スマートフォンとPC用のページを振り分けるTipsについて記述いただきました。</p>
<br />]]>
<![CDATA[<h2>PCサイトへのアクセスをスマートフォンサイトに転送するJavaScript</h2>

<p><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839937311/">『Movable Type 5.1 プロの現場の仕事術』</a>では.htaccessを利用してPCサイトへのアクセスをスマートフォンサイトに転送する方法を紹介させていただきました。今回は、書籍とは別の方法を使って、PC向けページとスマートフォン向けページの振り分けを行ってみましょう。

<p>異なるページの表示振り分けを実装するために、JavaScriptを利用する方法を紹介します。</p>

<p>PC用サイトのURL、スマートフォン用のサイトURLは、それぞれ以下であると仮定します。<p>

<ul>
<li>PCサイト用のサイトURL - http://example.com/</li>
<li>スマホ向けのサイトURL - http://example.com/sp/</li>
</ul>

<p>次のようなJavaScriptのコードを、振り分けを行いたいページのhead要素内に記述します。記述位置はCSSファイルやJavaScriptファイルを読み込む前がいいでしょう。</p>

<pre><code>(function(){
	var ua = navigator.userAgent;
	if (localStorage 
		 && !localStorage.getItem("sp_flag") 
		 && (ua.indexOf('iPhone') > 0 || ua.indexOf('iPod') > 0 || ua.indexOf('Android') > 0 )) {
		if(confirm('スマートフォン用サイトを表示しますか？')) {
			location.href = 'http:/example.com/sp/';
		}else{
			localStorage.setItem("sp_flag",true);
		}
	}
})();</code></pre>

<p>今回の例では、UA(ユーザーエージェント)判定を行ないiPhoneやiPod、Androidなどのスマートフォンの場合にのみ確認画面を表示してスマートフォンサイトへ転送を行っています。</p>

<p>毎回、確認画面が表示されるのもわずらわしいのでHTML5のWeb Storageを利用し、確認画面で一度『スマートフォンサイトを表示しない』と選択したユーザーには、次回以降、確認画面を表示しないようにしています。</p>

<a href="http://www.movabletype.jp/images/mtddc2011_special_02_smartphone.png"><img alt=PCサイトへのアクセスをスマートフォンサイトに転送するJavaScript" src="http://www.movabletype.jp/assets_c/2011/08/mtddc2011_special_02_smartphone-thumb-184x358-2967.png" width="184" height="358" class="mt-image-none" /></a>


<p>JavaScriptを利用すれば、他にもスマートフォンの場合のみスマートフォンサイトへのリンクを表示するなどユーザーへの配慮が可能になりますので試してみてください。</p>

<dl>
<dt>執筆者</dt>
<dd>西畑一馬（にしはた　かずま）</dd>
<dt>プロフィール</dt>
<dd>フリーランスのWebクリエイター。<br />
PHPやJavaScriptによるシステム開発や、Movable TypeやWordpressなどのCMSを利用したWebサイト制作、SEO対策などのマーケティング、コンサルティング、Webクリエイター向けの講座、執筆などを業務で行う。<br /> 
著書には「<a href="http://amazon.co.jp/o/ASIN/4839929734/tor0-22/ref=nosim">現場のプロから学ぶXHTML+CSS</a>(共著)」がある。</dd>
<dt>ブログなど</dt>
<dd>個人サイト<a href="http://blog.webcreativepark.net/">to-R</a><br />
Twitter：<a href="http://twitter.com/#!/KazumaNishihata">@KazumaNishihata</a></dd>
</dl>

<h2>免責事項</h2>

<p>本連載企画は、MTを利用したカスタマイズテクニックの一つで、実際の製品仕様範囲外の利用方法を含む場合がございます。製品仕様範囲外の利用方法については、製品サポートの範囲外となりますのでご注意ください。</p>

<p>本連載企画で説明されているテクニックを実際に適用する場合は、ご自身の環境でお試しいただいた上で適用くださいますようお願い申し上げます。</p>]]>
</content>
</entry>

<entry>
<title>プライベートタグでウェブページを部品データにする(寄稿)</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/mtddc2011_special_03.html" />
<id>tag:www.movabletype.jp,2011://1.3775</id>

<published>2011-07-21T05:00:00Z</published>
<updated>2011-08-03T06:55:33Z</updated>

<summary>MTDDC Meetup 2011 Tokyo 開催記念企画。第三回目は、伊藤のりゆきさんによる寄稿「プライベートタグでウェブページを部品DBにする」をお届けします。MTを実際の制作業務に利用する際に、覚えておいて損はない、実践的なTipsです。</summary>
<author>
<name>Takeshi Osanai</name>

</author>

<category term="ウェブページ" label="ウェブページ" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="プライベートタグ" label="プライベートタグ" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="プレビュー" label="プレビュー" scheme="http://www.sixapart.com/ns/types#tag" />

<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>こんにちは！シックス・アパートの長内です。</p>

<p>前回の記事に引き続き、「MTDDC Meetup 2011 Tokyo」に登壇いただいた皆様に、Movable TypeのTips、ハウトゥなどについて特別寄稿をしていただきます。</p>

<p>第三回目は、<a href="http://www.togoru.net/">トゴルカンパニー</a>で様々なクリエイティブ活動を行なっており、Movable Typeのヘビーユーザーでもある、伊藤のりゆきさんです。</p>

<p>今回は、プライベートタグを利用した、MTのTipsについて、記述いただきました。</p>
<br />]]>
<![CDATA[<h2>MTのウェブページとは</h2>

<p>MTのウェブページという機能では、ブログ記事のように日付やカテゴリ毎のアーカイブページが作成されず、単体で存在するページ（HTML）を作成出来ます。ウェブページは、企業ウェブサイトでは、会社概要や沿革など、個人ブログなら、プロフィールページなどに向いています。</p>

<h2>プライベートタグをウェブページで利用</h2>

<p>筆者は、ウェブページをそのまま利用するだけでなく、クライアントが編集できる部品データとして利用しています。どういうことかというと、HTMLの中に埋め込みがちなデーター部分をウェブページを利用して管理します。例えば、会社なら住所や「はじめまして」メッセージなどです。</p>

<p>@からはじまるタグのことをプライベートタグと呼びます。（参考：<a href="http://www.movabletype.jp/documentation/mt5/compose/edit.html#edit-privatemode">「ブログ記事・ウェブページタグのプライベート・モード」の項</a>）</p>

<p>実際に作成してみましょう。</p>

<h2>プライベートタグ付きウェブページの作成</h2>

<h3>ウェブページの作成</h3>

<p>リッチテキストエディタを使用すれば本文に入力した改行を反映させることも可能です。また、その改行を反映させることも可能です。以下の内容でウェブページを作成します。</p>

<pre><code>
＝＝＝＝＝＝＝＝＝＝＝＝
タイトル    住所
本文     227-0043（改行）横浜市青葉区藤が丘○－△－□
タグ     @address
フォルダ     /parts/
－－－－－－－－－－－－ 
</code></pre>


<a href="http://www.movabletype.jp/images/tag%20addeed%20webpage.png"><img alt="tag addeed webpage.png" src="http://www.movabletype.jp/assets_c/2011/07/tag%20addeed%20webpage-thumb-450x521-2959.png" width="450" height="521" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a>

<p>重要なポイントは、タグに半角で「@address」と指定して公開する点です。</p>


<h3>ウェブページを保存</h3>

<p>保存するとウェブページは公開されますが、ウェブサイトのどこからもリンクされていなければ、通常はみれません。ただし、標準テーマのインデックステンプレートなどは、ウェブページへのリンクが表示されるのでご注意ください。</p>

<h3>テンプレートを作成</h3>

<p>以下のMTタグをテンプレートを使用すればウェブページ（タグが@address）の内容が表示されます。この状態なら、リッチテキストエディタによる装飾なども反映されます。</p>

<pre><code>
&lt;mt:Pages tag="@address"&gt;
  &lt;$mt:Pagebody$&gt;
&lt;/mt:Pages&gt;
</code></pre>

<p>もし、ウェブページのテキストだけを使いたい場合、&lt;$mt:Pagebody remove_html="1"$&gt;　としてHTML要素を削除することもできます。ただし、改行も無視されます。</p>

<p>ウェブページを部品データとして利用する方法は、画像にも応用できます。ウェブページ本文に画像を挿入するだけで、同様に他のテンプレートで呼び出すことができます。</p>

<a href="http://www.movabletype.jp/images/index%20template%20preview.png"><img alt="index template preview.pngのサムネイル画像" src="http://www.movabletype.jp/assets_c/2011/07/index%20template%20preview-thumb-450x464-2953.png" width="450" height="464" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a>

<p>テンプレートに、前述のMTタグを書いて[プレビュー]するとHTMLの表示を確認できます。</p>


<h2>まとめ</h2>

<p>クライアントが実際に更新したい内容は、ちょっとした文言の修正だけだったりします。そこで、MTのテンプレートやHTMLソースを見ずに自由に編集する方法を提供することで、そのようば場合のサポートをする必要がなくなり、もっと高度な修正や改良を加えるための時間が取れるのでは？と思ったのが、今回の方法を考えたキッカケでした。</p>

<p>この方法のキーになるのは「タグ」です。@が先頭についたプライベートタグは、&lt;mt:EntryTags&gt;や&lt;mt:Tags&gt;といったブロックタグの対象から外され、結果としてタグクラウドにも反映されません。そのため、そのフィールドが本来のタグではなく、内部の検索キーとして機能することになります。もちろん、,（カンマ）で区切って、2つ目のタグを普通に書けば、それは本来のタグとして機能します。</p>

<p>プライベートタグは、MT標準の検索には引っかかってしまうため、注意が必要です。しかし、クライアントさんから修正依頼の多い部分だけでも部品データ化すると、便利だと思います。</p>

<p>拙ブログ「HelloWorld」では<a href="http://3oclock.com/hello-world/2011/07/privatetag-webpage-mtentry.html">「@付きプライベートタグのウェブページとブログ記事」</a>でさらに突っ込んだ話をしています。併せてご覧いただければと思います。</p>

 
<dl>
<dt>執筆者</dt>
<dd>伊藤　のりゆき（いとう　のりゆき）</dd>
<dt>プロフィール</dt>
<dd>2000年<a href="http://www.togoru.net/">有限会社トゴル・カンパニー</a>を共同設立後、同代表に。<br />Web連載<a href="http://thinkit.co.jp/author/412">『Movable Type入門』（ThinkIT）</a>、<a href="http://gihyo.jp/design/serial/01/flash_mt">『NORIのFlashユーザのためのMovable Type講座　gihyo.jp版』（gihyo.jp）</a>がある。
Movable TypeとFlashの連携だけでなくFlashアクセシビリティにも取り組み<a href="http://daremoga.jp">「だれもが使えるウェブコンクール」</a>審査員も務める。<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839937311/">『Movable Type 5.1 プロの現場の仕事術』（毎日コミュニケーションズ）</a>の執筆に参加。iPhoneの写真集アプリ<a href="http://itunes.apple.com/jp/app/id358666827?mt=8">『Snap or Nothing写真集』（ソフトバンク クリエイティブ刊）</a>を出すなど写真家としての顔も持つ。</dd>
<dt>ブログなど</dt>
<dd>個人サイト<a href="http://3oclock.com/">3oclock.com</a><br />
Twitter：<a href="http://twitter.com/#/nori_togoru">@nori_togoru</a><br />
Facebook：<a href="http://facebook.com/nori.3oclock">伊藤のりゆき</a></dd>
</dl>

<h2>免責事項</h2>

<p>本連載企画は、MTを利用したカスタマイズテクニックの一つで、実際の製品仕様範囲外の利用方法を含む場合がございます。製品仕様範囲外の利用方法については、製品サポートの範囲外となりますのでご注意ください。</p>

<p>本連載企画で説明されているテクニックを実際に適用する場合は、ご自身の環境でお試しいただいた上で適用くださいますようお願い申し上げます。</p>]]>
</content>
</entry>

<entry>
<title>Movable Typeは「Web専用CMS」ではない(寄稿)</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/mtddc2011_special_02.html" />
<id>tag:www.movabletype.jp,2011://1.3773</id>

<published>2011-07-14T05:00:00Z</published>
<updated>2011-07-19T01:57:43Z</updated>

<summary>MTDDC Meetup 2011 Tokyo 開催記念企画。第ニ回目の今回は、藤本壱さんによる寄稿「Movable Typeは「Web専用CMS」ではない」をお届けします。Movable Typeをウェブサイト以外の用途に利用する、様々なケースを交えた活用提案です。</summary>
<author>
<name>Takeshi Osanai</name>

</author>

<category term="epub" label="Epub" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="movabletype" label="Movable Type" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="ロケーションサービスシステム" label="ロケーションサービスシステム" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="電子書籍" label="電子書籍" scheme="http://www.sixapart.com/ns/types#tag" />

<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>こんにちは！シックス・アパートの長内です。</p>

<p>前回の記事に引き続き、「MTDDC Meetup 2011 Tokyo」に登壇いただいた皆様に、Movable TypeのTips、ハウトゥなどについて特別寄稿をしていただきます。</p>

<p>第ニ回目は、<a href="http://www.h-fj.com/blog/">「The blog of H.Fujimoto」</a>の作者であり、Movable Typeの書籍を多数著述されている、藤本壱さんです。</p>

<p>今回は、MTの可能性について、記述いただきました。</p>
<br />]]>
<![CDATA[<h2>Movable Typeは「Web専用CMS」ではない</h2>

<p>皆様にとって、Movable Typeとはどんな存在でしょうか？おそらく、多くの方から「CMS」という答えが返ってくると思います。</p>

<p>Movable Type 5以降では、ウェブサイト機能の装備や、カスタムフィールド機能の改良など、Webサイト制作を行うCMSとしての機能が充実しました。これらのことからも、多くの方にとっては、「Movable Type＝Web制作用CMS」だと思います。</p>

<p>しかし、Movable Typeの可能性は、そこにはとどまりません。活用次第で、幅広い用途に使うことができます。</p>

<h2>「汎用テキストファイル生成ツール」としての活用</h2>

<p>Movable Typeでは、データベースに保存した内容を、テンプレートによって出力することができます。通常は、テンプレートの出力はHTMLファイルとして保存します。これによって、様々なWebページを作り出すことができ、Web制作用CMSとして使うことができます。</p>

<p>ただ、出力先のファイルは、HTMLにしなければならないわけではありません。テキストファイルであれば、任意の形式で出力することができます。</p>

<p>テキストファイルの一例として、XMLファイルがあります。XMLファイルはさまざまなアプリケーションと連携するのに使うことができ、応用の幅が広いです。例えば、AdobeのInDesignには、XMLを読み込んで文書中に割り付ける機能があります。このXMLをMovable Typeで出力すれば、同じような体裁の印刷物のコンテンツを、Movable Typeで管理することができます。</p>

<p>この他、CSV（コンマ区切り）ファイルを出力してExcel等のソフトに読み込んだり、JSON（JavaScript Object Notation）を出力してAjaxで使用するなど、様々な連携方法が考えられます。</p>

<p>さらに、Movable Typeを、電子書籍フォーマットの1つである「EPUB」の出力に使うこともできます。EPUBを大まかにいうと、XHTMLとCSSで作ったコンテンツを、Zipファイルに圧縮したものです。XHTMLとCSSはどちらもテキストファイルなので、Movable Typeで出力することができます。Zipファイルの作成はMovable Typeの標準機能ではできませんが、その処理はプラグイン化すれば可能です<a href="http://communities.movabletype.jp/plugins/2010/11/mtepub.html">（すでに、拙作のEPUBプラグイン等があります）</a>。</p>

<div style="width:425px" id="__ss_8425387"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/hjfuji/epub-8425387" title="EPUBプラグインで、Movable Typeで電子書籍" target="_blank">EPUBプラグインで、Movable Typeで電子書籍</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8425387" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/hjfuji" target="_blank">Hajime Fujimoto</a> </div> </div>


<h2>Webアプリケーションフレームワークとしての活用</h2>

<p>Movable Typeのプログラムは、「オブジェクト指向」と呼ばれるプログラミング手法によって作られています。オブジェクト指向は、プログラムを構成する要素を「オブジェクト」という部品にまとめ、オブジェクト同士が相互に連携して動作するように、プログラムを作っていく考え方です。また、個々のオブジェクトは再利用しやすい形にし、さらに後から拡張できるような形になるように、プログラムを作っていきます。</p>

<p>Movable Typeはプラグインで拡張することができます。Movable Type本体がオブジェクト指向であるおかげで、プラグインも作りやすくなっています。</p>

<p>また、Movable Typeを土台（フレームワーク）として、さまざまなWebアプリケーションを作ることも可能です。例えば、筆者が実際に行った例として、Foursquareのような位置情報記録アプリケーションを、Movable Typeのフレームワークをベースに作ったことがあります。</p>

<div style="width:425px" id="__ss_6188522"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/hjfuji/mtappframework" title="Movable TypeのＷｅｂアプリケーションフレームワークの基本" target="_blank">Movable TypeのＷｅｂアプリケーションフレームワークの基本</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/6188522" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/hjfuji" target="_blank">Hajime Fujimoto</a> </div> </div>


<h2>Movable Typeのポテンシャルを生かしたい</h2>

<p>ここまでで述べたように、Movable Typeには「Web制作用CMS」以外にも使えるポテンシャルがあります。皆様も、単なるCMSとしてだけでなく、さまざまな活用方法を編み出して、Movable Typeのポテンシャルを生かしていただきたく思います。</p>

<h2>執筆者紹介</h2>

<dl>
  <dt>執筆者</dt>
  <dd>藤本 壱（ふじもと はじめ）</dd>

  <dt>プロフィール</dt>
  <dd>1969年兵庫県伊丹市生まれ。パッケージソフトメーカー勤務後、フリーライターとして独立。ここ数年はMovable Type関連の著作が多く、「Movable Type 5.1プロの現場の仕事術」（毎日コミュニケーションズ）や、「Movable Type 5.1 Webサイト制作ガイド Volume 1」（PDFにて発売中）などの著作がある。<br />

また、2010年の「MTDDC Tokyo」「MTDDC Meetup FUKUSHIMA 2010」「MTDDCHOKKAIDO」や、2011年のなど、「MTDDC Meetup Tokyo 2011」など、Movable Type関連のイベントにも多数出演している。<br />

ブログ「The Blog of H.Fujimoto」でも、Movable Type関連の情報を多く公開している。</dd>

  <dt>ブログなど</dt>
  <dd><a href="http://www.h-fj.com/blog/">ブログ（The Blog of H.Fujimoto）<br />
  <a href="http://www.facebook.com/hjfuji">Facebookページ</a><br />
  <a href="http://twitter.com/hjfuji">Twitter</a></dd>
</dl>
]]>
</content>
</entry>

<entry>
<title>フォルダ管理のドラッグアンドドロップを利用してブログを並べ替える(寄稿)</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/mtddc2011_special_01.html" />
<id>tag:www.movabletype.jp,2011://1.3771</id>

<published>2011-07-11T06:00:00Z</published>
<updated>2011-07-19T02:46:50Z</updated>

<summary>MTDDC Meetup 2011 Tokyo 開催記念企画。第一回目の今回は、奥脇知宏さんによる寄稿「フォルダ管理のドラッグアンドドロップを利用してブログを並べ替える」をお届けします。MT5.1から搭載された、並び替え機能を利用した技術的Tipsです。</summary>
<author>
<name>Takeshi Osanai</name>

</author>

<category term="リスティングフレームワーク" label="リスティングフレームワーク" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="並び替え" label="並び替え" scheme="http://www.sixapart.com/ns/types#tag" />

<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>こんにちは！シックス・アパートの長内です。</p>

<p>先日の予告通り、今回から数回にわたって、「MTDDC Meetup 2011 Tokyo」に登壇いただいた皆様に、Movable TypeのTips、ハウトゥなどについて特別寄稿をしていただきます。</p>

<p>第一回目は、 <a href="http://www.tinybeans.net/blog/ ">「かたつむりくんのWWW」</a>上で、様々なMovable Typeのテクニックを紹介している、奥脇知宏さんです。</p>

<p>今回は、Movable Typeに同梱されている「プロフェッショナルウェブサイト」を題材にした、ナビゲーションの並び替えに関するTipsです。</p>

<p>プロフェッショナルウェブサイトには、「複数ブログのナビゲーション表示」や「並び替え」という機能は無いのですが、今回、フォルダの並び替え機能を利用して、ウェブサイト配下のブログの並び順を変える、という方法について記述いただきました。</p>

<br />



]]>
<![CDATA[<h2>フォルダ管理のドラッグアンドドロップを利用してブログを並べ替える</h2>

<p>Movable Type 5.1 から、カテゴリとフォルダをドラッグアンドドロップで並べ替えることができるようになりました。今回は、この新機能を利用して、ブログをドラッグアンドドロップで並べ替えてみます。</p> 
<h2>前提</h2> 
<p>今回のサンプルは「プロフェッショナル・ウェブサイト」のテーマを利用します。また、ウェブサイト名とウェブサイトの URL は以下のように仮定します。</p> 
<ul> 
	<li>かたつむりくんのWWW : http://www.example.com/</li> 
</ul> 
<p>「プロフェッショナル・ウェブサイト」のテーマは、ナビゲーション部分の各メニューがウェブページで構成されていますが、今回のサンプルでは、この各メニューをブログで構成し、これをドラッグアンドドロップで並べ替えられるようにします。</p> 
<h2>ブログを作成する</h2> 
<p>初めに、各メニューに該当するブログを作成します。サンプルで利用するブログ名とブログのURLは以下のようにします。</p> 
<ul> 
	<li>ブログ１ : http://www.example.com/blog1/</li> 
	<li>ブログ２ : http://www.example.com/blog2/</li> 
	<li>ブログ３ : http://www.example.com/blog3/</li> 
</ul> 
<h2>フォルダを作成する</h2> 
<p>次に、上記で作成したブログと同じ名前、パスになるようにフォルダを作成します。フォルダ名と出力ファイル名および並び順は次のとおりです。</p> 
<ol> 
	<li>ブログ１ : blog1</li> 
	<li>ブログ２ : blog2</li> 
	<li>ブログ３ : blog3</li> 
</ol> 
<p><img alt="sortblog01.png" src="http://movabletype.jp/images/sortblog01.png" width="406" height="305" class="mt-image-none" style="" /></p> 
<h2>ナビゲーション部分のテンプレートをカスタマイズする</h2> 
<p>プロフェッショナル・ウェブサイトのテーマにある「ナビゲーション」テンプレートモジュールを以下のようにカスタマイズします。</p> 
<pre class="code"><code>&lt;mt:BlogParentWebsite&gt;
&lt;ul&gt;
    &lt;li class="first&lt;mt:If name="main_index"&gt; on&lt;/mt:If&gt;"&gt;&lt;a href="&lt;$mt:WebsiteURL$&gt;"&gt;ホーム&lt;/a&gt;&lt;/li&gt;
    &lt;mt:SubFolders top="1" include_current="1" sort_by="user_custom"&gt;
        &lt;$mt:FolderLabel setvar="loop_folder_label"$&gt;
    &lt;li class="&lt;mt:If name="loop_folder_label" eq="$folder_label"&gt;on&lt;/mt:If&gt;"&gt;&lt;a href="&lt;$mt:WebsiteURL$&gt;&lt;$mt:FolderPath$&gt;/"&gt;&lt;$mt:FolderLabel$&gt;&lt;/a&gt;&lt;/li&gt;    
    &lt;/mt:SubFolders&gt;
&lt;/ul&gt;
&lt;/mt:BlogParentWebsite&gt;
</code></pre> 
<p>このナビゲーションは、ウェブサイトのコンテキストで解釈される必要があるので、全体を MTBlogParentWebsite タグで囲みます。</p> 
<p>また、このテンプレートモジュールでは、MTIf タグを利用して、現在表示されているページのナビゲーションには「class="on"」が付与されるように設定されています。この MTIf タグで条件分岐に利用する値は、「ナビゲーション」テンプレートモジュールをインクルードする側の MTInclude タグに変数をセットして値を渡すようにします。</p> 
<h2>ナビゲーションを読み込む側の MTInclude タグの設定</h2> 
<p>ウェブサイトでは、「ヘッダー」テンプレートモジュール内で、次のようにしてナビゲーションをインクルードします。</p> 
<pre class="code"><code>&lt;mt:If name="main_index"&gt;
    &lt;$mt:Include module="ナビゲーション" website_index="1"$&gt;
&lt;mt:Else&gt;
    &lt;$mt:Include module="ナビゲーション"$&gt;
&lt;/mt:If&gt;
</code></pre> 
<p>こうすることで、ウェブサイトのトップページのときだけ、「ホーム」に「class="on"」が付与されます。</p> 
<p>各ブログでは、「ヘッダー」テンプレートモジュール内で、次のようにしてナビゲーションをインクルードします。</p> 
<pre class="code"><code>&lt;$mt:BlogName setvar="blog_name"$&gt;
&lt;$mt:Include module="ナビゲーション" folder_label="$blog_name" parent="1"$&gt;
</code></pre> 
<p>ここで、一度ブログ名を変数 blog_name にセットして、その値（ブログ名）を MTInclude タグで、変数 folder_label の値としてセットします。これにより、現在表示されているブログには「class="on"」が付与されます。</p> 
<p>ウェブサイトとブログをすべて再構築すると、ナビゲーション部分は次のようになります。</p> 
<p><img alt="sortblog03.png" src="http://movabletype.jp/images/sortblog03.png" width="475" height="231" class="mt-image-none" style="" /></p> 
<h2>ウェブサイトのフォルダを並べ替えてみる</h2> 
<p>ここで、並べ替えがきちんと動作するかテストしてみます。並び替え前の状態を次のようになっています。</p> 
<p><img alt="sortblog01.png" src="http://movabletype.jp/images/sortblog01.png" width="406" height="305" class="mt-image-none" style="" /></p> 
<p>これを次のように並び替えてみます。</p> 
<p><img alt="sortblog02.png" src="http://movabletype.jp/images/sortblog02.png" width="399" height="318" class="mt-image-none" style="" /></p> 
<p>変更を保存し、ウェブサイトとブログをすべて再構築します。結果は次のようにきちんと反映されました。</p> 
<p><img alt="sortblog04.png" src="http://movabletype.jp/images/sortblog04.png" width="475" height="231" class="mt-image-none" style="" /></p> 
<p>これで出力側は完成です。</p> 
<h2>さらにもう一歩 - 管理画面のカスタマイズ</h2> 
<p>さて、この仕組みでフォルダを利用したとき、ユーザーがウェブページを作成するときに、誤ってそのフォルダにウェブページを作ってしまうと不具合が生じる可能性があります（以後の説明が分かりやすいように、並べ替えの対象とならないフォルダ「お問い合わせ」を追加しています）。</p> 
<p><img alt="sortblog05.png" src="http://movabletype.jp/images/sortblog05.png" width="278" height="185" class="mt-image-none" style="" /></p> 
<p>そこで、ウェブページの編集画面では、このフォルダを選択できないようにしておくと良いでしょう。</p> 
<p>管理画面のカスタマイズには、著者の「<a href="http://www.tinybeans.net/blog/download/mt-plugin/mtapp-jquery.html">MTAppjQuery プラグイン</a>」を利用すると便利ですが、今回は代替テンプレートを利用してカスタマイズします。</p> 
<p>まず、以下のファイルをコピーします（mt_dir は Movable Type をインストールしてあるディレクトリです）。</p> 
<ul> 
	<li>/mt_dir/tmpl/cms/include/category_selector.tmpl</li> 
</ul> 
<p>これを代替テンプレート用の alt-tmpl ディレクトリに、次のようなパスになるようにペーストします。</p> 
<ul> 
	<li>/mt_dir/alt-tmpl/cms/include/category_selector.tmpl</li> 
</ul> 
<p>次に、alt-tmpl 内の category_selector.tmpl をカスタマイズします。</p> 
<p>5行目の「Template.templates.categorySelectorList = （省略）」の手前の行に、以下のソースを挿入します。保存するときは、文字コードが utf-8 になるようにします。</p> 
<pre class="code"><code>&lt;mt:If name="blog_id" eq="6"&gt;
var sortBlogs = ['ブログ１','ブログ２','ブログ３'];
MT.App.categoryList = jQuery.grep(MT.App.categoryList, function(item, i){
    return (jQuery.inArray(item.label.replace(/\/$/,''), sortBlogs) == -1);
});
&lt;/mt:If&gt;
</code></pre> 
<p>1行目の「eq="6"」の「6」の部分には、今回カスタマイズしているウェブサイトIDを入れます。</p> 
<p>2行目の「['ブログ１','ブログ２','ブログ３']」には、並べ替えの対象となっているブログ名（＝フォルダ名）を入れます。</p> 
<p>これで、管理画面のフォルダ選択リストから、該当するフォルダがなくなります。</p> 
<p><img alt="sortblog06.png" src="http://movabletype.jp/images/sortblog06.png" width="273" height="187" class="mt-image-none" style="" /></p> 
<p>以上です。</p> 
<p>いかがでしょうか、カテゴリとブログの並べ替え機能、アイデア次第で色々と応用できそうです。</p> 

<h2>執筆者紹介</h2>

<dl>
  <dt>執筆者</dd>
  <dd>奥脇　知宏（おくわき　ともひろ）</dd>
  <dt>プロフィール</dt>
  <dd>1976年生まれ、2児の父。Web制作とは関わりのない仕事をしながら、独学でWeb制作関連の技術を学ぶ。個人のブログ「かたつむりくんのWWW」では、Movable TypeやjQueryの自作プラグインやTipsなどを公開。「Update Me, Everyday！」をモットーに日々精進中</dd>
  <dt>ブログなど</dt>
  <dd><a href="http://www.tinybeans.net/blog/">かたつむりくんのWWW</a><br />
      <a href="http://twitter.com/#!/tinybeans/">Twitter</a>
  </dd>
</dl>

<h2>免責事項</h2>

<p>本連載企画は、MTを利用したカスタマイズテクニックの一つで、実際の製品仕様範囲外の利用方法を含む場合がございます。製品仕様範囲外の利用方法については、製品サポートの範囲外となりますのでご注意ください。</p>

<p>本連載企画で説明されているテクニックを実際に適用する場合は、ご自身の環境でお試しいただいた上で適用くださいますようお願い申し上げます。</p>]]>
</content>
</entry>

<entry>
<title>「MTDDC Meetup 2011 Tokyo」レポートと、特別企画のお知らせ</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/mtddc_meetup_2011_tokyo.html" />
<id>tag:www.movabletype.jp,2011://1.3769</id>

<published>2011-07-07T05:00:00Z</published>
<updated>2011-07-07T07:14:32Z</updated>

<summary>2011年6月25日(土)に行われた、Movable Typeユーザーのためのイベント「MTDDC Meetup 2011 Tokyo」のレポートをお伝えします。合わせて、「MTDDC(Movable Type Developers and Designers Conference」とはなにか、についてもお伝えしています。</summary>
<author>
<name>Takeshi Osanai</name>

</author>

<category term="mtddc" label="MTDDC" scheme="http://www.sixapart.com/ns/types#tag" />
<category term="コミュニティ" label="コミュニティ" scheme="http://www.sixapart.com/ns/types#tag" />

<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>こんにちは！シックス・アパートの長内です。</p>

<p>去る6月25日に、Movable Typeユーザーのためのイベント「MTDDC Meetup 2011 Tokyo」が行われ、多数のMTユーザーの皆様が参加されました。</p>

<p><img src="http://farm4.static.flickr.com/3230/5874890643_f5337375af_z.jpg" width="425" alt="MTDDC Meetup 2011 Tokyo" /></p>

<p>今回は、イベントの簡単なレポートと、</p>

<ul>
<li><span class="caps">MTDDC </span>開催記念 特別企画のお知らせ</li>
<li><span class="caps">MTDDC</span>とは何か</li>
</ul>

<p>について、お伝えしたいと思います。</p>]]>
<![CDATA[<h2><span class="caps">MTDDC</span> Meetup 2011 Tokyo</h2>

<p>6月25日(土)、東京・竹橋にある毎日コミュニケーションズ本社で、「MTDDC Meetup 2011 Tokyo」が行われました。今回の企画は、毎日コミュニケーションズの書籍『Movable Type 5.1　プロの現場の仕事術』発刊記念という形で、書籍執筆に参加された著者の皆様が登壇されました。</p>

<p>弊社からは、金子が「Movable Type 5.1 今すぐできるセキュリティ強化」と題して、MTを導入する際に気にしておきたいセキュリティ対策sをご紹介しました。</p>

<div style="width:425px" id="__ss_8418274"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/sakk/mtddc-tokyo-2011" title="MTDDC Tokyo 2011" target="_blank"><span class="caps">MTDDC</span> Tokyo 2011</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8418274" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/sakk" target="_blank">Six Apart KK</a> </div> </div>

<p>MTユーザーの皆様は、ぜひご一読ください。</p>

<p>以下、登壇した皆様のプレゼンテーション資料です。</p>

<h3>セッション2・「よく分かる条件分岐」伊藤のりゆきさん</h3>

<div style="width:425px" id="__ss_8425204"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/NoriyukiIto/ss-8425204" title="よくわかる条件分岐" target="_blank">よくわかる条件分岐</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8425204" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/NoriyukiIto" target="_blank">Noriyuki Ito</a> </div> </div>

<h3>セッション3・「Movable TypeとFacebookの素敵な関係」蒲生トシヒロさん</h3>

<div style="width:425px" id="__ss_8417330"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/Dakiny/mtddc-0625-gamo" title="Movable TypeとFacebookの 素敵な関係" target="_blank">Movable TypeとFacebookの 素敵な関係</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8417330" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/Dakiny" target="_blank">Toshihito Gamo</a> </div> </div>

<h3>セッション4・「Movable Type＋CSS3＋jQueryで作るiPhoneサイト」西畑一馬さん</h3>

<p><a href="http://www.to-r.net/s/mtddc/slide.pdf">http://www.to-r.net/s/mtddc/slide.pdf</a></p>

<h3>セッション5・「EPUBプラグインで、Movable Typeで電子書籍」藤本壱さん</h3>

<div style="width:425px" id="__ss_8425387"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/hjfuji/epub-8425387" title="EPUBプラグインで、Movable Typeで電子書籍" target="_blank"><span class="caps">EPUB</span>プラグインで、Movable Typeで電子書籍</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8425387" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/hjfuji" target="_blank">Hajime Fujimoto</a> </div> </div>

<h3>セッション6・「クライアントの満足度を高める！管理画面の簡単カスタマイズ！」奥脇知宏さん</h3>

<div style="width:425px" id="__ss_8440533"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/tinybeans/mtddc-followup" title="クライアントの満足度を高める！管理画面の簡単カスタマイズ！" target="_blank">クライアントの満足度を高める！管理画面の簡単カスタマイズ！</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8440533" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/tinybeans" target="_blank">Tomohiro Okuwaki</a> </div> </div>

<h3>セッション7・「もっとディープにMovable Typeを使いこなす」荒木勇次郎さん</h3>

<div style="width:425px" id="__ss_8422851"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/yujiro/deep-mt-r2-8422851" title="MTDDC Meetup Tokyo 2011：もっとディープにMovable Type" target="_blank"><span class="caps">MTDDC</span> Meetup Tokyo 2011：もっとディープにMovable Type</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8422851" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/yujiro" target="_blank">Yujiro Araki</a> </div> </div>

<p>また、当日会場にいらした <a href="http://twitter.com/#!/herl_SaGa">@herl_SaGa</a> さんが、Twitterの様子(ハッシュタグ#mtddc)をtogetterでまとめてくださいました。<br />
<a href="http://togetter.com/li/154016">Togetter - 「MTDDC Meetup Tokyo 2011(2011年6月25日)　まとめ</a></p>

<p>イベントの様子は、弊社高橋が「広報ブログ」で詳細なレポートを書いていますので、こちらも合わせてご覧ください。</p>

<p><a href="http://www.sixapart.jp/pressroom/2011/06/mtddc_meetup_tokyo_2011.html"><span class="caps">MTDDC</span> Meetup Tokyo 2011（#mtddc）、イベントレポート</a></p>




<h2>特別企画のお知らせ</h2>

<p>シックス・アパートはこれから、今まで以上に、ユーザーの皆様と「Movable Typeコミュニティを盛り上げていこう！」と考えています。</p>

<p>今回、MTDDC開催を記念した特別企画として、「MTDDC Meetup 2011 Tokyo」にご登壇いただいたスピーカーの皆様に、「movabletype.jp」の記事を寄稿していただくことになりました。トップバッターとして、奥脇知宏さんに寄稿いただき、企画を開始する予定です。</p>

<p><span class="caps">MTDDC</span>をきっかけに、MTユーザーの皆様同士が、MTに関するTips、ノウハウを共有していただければ幸いです。</p>

<p>これからも、MTコミュニティの皆様が、MTをより便利に、楽しく使えるような企画を考えてまいりますので、ご期待ください。</p>



<h2><span class="caps">MTDDC</span>とは？</h2>

<p>ここで、「MTDDC」とはなにか、簡単に説明をさせていただきます。</p>

<p><span class="caps">MTDDC</span>とは「Movable Type Developers and Designers Conference」の略で、MTユーザーの皆様にご参加いただくイベントの愛称です。</p>

<p>もう一つ、「Meetup」という単語がありますが、これはコミュニティー主催のイベントの意味です。日本語でいう「オフ会」に当たります。</p>

<p>「Developers and Designers」と書いているとおり、技術者の方だけでなく、デザイナーの皆様はもちろん、ディレクター、ブロガーをはじめ、仕事でMTを使っている方からユーザーの皆様まで、幅広くご参加いただいています。</p>

<p><span class="caps">MTDDC</span>は、必ずしも弊社が主催しているイベントではありません。弊社以外にも、MT関連書籍の出版社、MTを取り扱っていただいている制作会社様、あるいはMTユーザーの方々まで、いろいろな方々によって開催いただいています。</p>

<p><span class="caps">MTDDC</span>はこれまでも、日本全国で開催されてきました。今までの様子は、以下のレポート記事を御覧ください。</p>

<ul>
<li><a href="http://www.movabletype.jp/blog/mtddc_osaka_report.html"><span class="caps">MTDDC</span> Osaka 2009</a></li>
<li><a href="http://www.movabletype.jp/blog/mtddc_tokyo_report.html"><span class="caps">MTDDC</span> Tokyo 2010</a></li>
<li><a href="http://www.movabletype.jp/blog/mtddc_tokyo_theme_report.html"><span class="caps">MTDDC</span> Tokyo 2010 テーマ編</a></li>
<li><a href="http://www.sixapart.jp/pressroom/2010/11/mtddc_meetup_fukushima_mtddcfks.html"><span class="caps">MTDDC</span> Meetup <span class="caps">FUKUSHIMA</span> 2010</a></li>
<li><a href="http://www.movabletype.jp/blog/mtddc_hokkaido_report.html"><span class="caps">MTDDC HOKKAIDO</span> 2010</a></li>
<li><a href="http://www.sixapart.jp/pressroom/2011/04/mtddc_meetup_nagoya.html"><span class="caps">MTDDC</span> Meetup <span class="caps">NAGOYA</span> 2011</a></li>
</ul>


<p>皆様も、Movable Typeを扱う勉強会、ユーザーイベントを気軽に企画してみませんか？</p>

<p>企画内容が決まりましたら、ぜひ詳細を <a href="http://communities.movabletype.jp/"><span class="caps">MTQ</span></a> などで告知してみてください。</p>]]>
</content>
</entry>

<entry>
<title>[重要] Movable Type 5.12 および、5.06、4.292 セキュリティーアップデートの提供を開始</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/_movable_type_512_5064292.html" />
<id>tag:www.movabletype.jp,2011://1.3765</id>

<published>2011-06-23T00:30:00Z</published>
<updated>2011-06-23T01:48:35Z</updated>

<summary>Movable Type 4 および Movable Type 5 で確認された...</summary>
<author>
<name>Jun Kaneko</name>

</author>


<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>Movable Type 4 および Movable Type 5 で確認された複数のセキュリティ問題の修正バージョンとして、Movable Type 4.292、5.06、5.12の提供を開始いたします。すべてのMovable Typeユーザーは、修正版に必ずアップグレードしてください。加えて、Movable Type 4.291、5.051、5.11 で発見されたバグを修正しています。</p>

<div class="section">
  <h2>セキュリティアップデートの概要</h2>

  <p>Movable Type 4.291、4.361 および 5.11、5.051 を含む以前のバージョンでは、アプリケーション上の一部の操作において、ブログの管理者、あるいは投稿権限を持っているユーザーが、ファイルシステム上の既知のファイルへのアクセスが可能になる場合があります。</p>
  
  <h2>影響を受けるバージョン</h2>
  <p>以下の各製品の、5.11、5.051 および 4.361、4.291 を含む以前のバージョン。</p>
  
  <ul class="bulletPoint">
    <li>Movable Type Open Source 4.x</li>
    <li>Movable Type Open Source 5.x</li>
    <li>Movable Type 4.x <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type 5.x <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type Enterprise 4.x</li>
    <li>Movable Type Advanced 5.x</li>
  </ul>

  <h2>バージョンの確認方法</h2>

  <p>Movable Type の管理画面に、システム管理者としてサインインし、システムメニューから『ツール』&gt; 『システム情報』を選択して、Movable Type のバージョンを確認してください。</p>
  
</div>

<div class="section">
  <h2>提供を開始するバージョン</h2>
  
  <p>インストール済みのすべてのMovable Typeは、2011年6月22日に公開された、以下の修正済みバージョンのいずれかに、必ずアップグレードしてください。</p>
  
  <ul class="bulletPoint">
    <li>Movable Type Open Source 4.292</li>
    <li>Movable Type Open Source 4.37</li>
    <li>Movable Type Open Source 5.06</li>    
    <li>Movable Type Open Source 5.12</li>
    <li>Movable Type 4.292 <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type 5.06 <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type 5.12 <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type Enterprise 4.292</li>
    <li>Movable Type Advanced 5.06</li>
    <li>Movable Type Advanced 5.12</li>    
  </ul>

  <p>以下のページよりダウンロード可能です。</p>

  <dl>
    <dt>Movable Type ライセンスをお持ちの方</dt>
    <dd>
      <ul class="links"><li><a href="https://mtuser.sixapart.jp/">シックス・アパート ユーザーサイト</a></li></ul>
    </dd>
    <dt>個人ライセンスでお使いの方</dt>
    <dd>
      <ul class="links">
        <li><a href="http://www.sixapart.jp/movabletype/personal.html">個人ライセンス（無償）ダウンロード</a></li>
      </ul>
    </dd>
    <dt>オープンソース版をお使いの方</dt>
    <dd>
      <ul class="links">
        <li><a href="http://www.movabletype.jp/opensource/">Movable Type Open Source Project</a> (<a href="http://movabletype.org/downloads/stable/MTOS-5.12-ja.zip">MTOS-5.12-ja.zip</a>, <a href="http://movabletype.org/downloads/stable/MTOS-5.06-ja.zip">MTOS-5.06-ja.zip</a>, <a href="http://movabletype.org/downloads/stable/MTOS-4.292-ja.zip">MTOS-4.292-ja.zip</a>, <a href="http://movabletype.org/downloads/stable/MTOS-4.37-ja.zip">MTOS-4.37-ja.zip</a>)</li>
      </ul>
    </dd>
  </dl>
  
</div><!-- h2 提供を開始するバージョン -->

<div class="section" id="otherissues">
  <h2>その他の変更点</h2>

  <p>以下の問題点が、Movable Type 5.12, 5.06, 4.37, および 4.292 で修正されました。</p>
  <ul>
    <li><a href="http://bugs.movabletype.org/?106307">106307</a> カスタムフィールドの設定を保存するときに、権限エラーが発生する。</li>
  </ul>

  <p>以下の問題点が、Movable Type 5.12で修正されました。</p>
  <ul>
    <li><a href="http://bugs.movabletype.org/?106303">106303</a> MT5.1と5.11では、ベースネームに複数のハイフン（-）を含むときに、公開URLでハイフンがひとつに短縮されていましたが、これを短縮しない以前の挙動に戻しました。</li>
  </ul>
  
</div> <!-- otherissues -->

<p>以上です。</p>
]]>

</content>
</entry>

<entry>
<title>[重要] Movable Type 5.11 および、5.051、4.291 セキュリティーアップデートの提供を開始</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/_movable_type_511_50514291.html" />
<id>tag:www.movabletype.jp,2011://1.3764</id>

<published>2011-06-09T03:49:49Z</published>
<updated>2011-06-14T02:08:32Z</updated>

<summary>Movable Type 4 および Movable Type 5 で確認された...</summary>
<author>
<name>Jun Kaneko</name>

</author>


<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>Movable Type 4 および Movable Type 5 で確認された複数のセキュリティ問題の修正バージョンとして、Movable Type 4.291、5.051、5.11の提供を開始いたします。すべてのMovable Typeユーザーは、修正版に必ずアップグレードしてください。加えて、Movable Type 4.29、5.05、5.1 で発見された複数のバグを修正しています。</p>

<div class="section">
  <h2>セキュリティアップデートの概要</h2>
  
  <p>Movable Type 4.29、4.36 および 5.1、5.05 を含む以前のバージョンでは、当該製品で管理している情報を、アプリケーション上の一部の操作において、遠隔の第三者により更新、閲覧、変更される可能性があります。</p>
  
  <h2>影響を受けるバージョン</h2>
  <p>以下の各製品の、5.1、5.05 および 4.36、4.29 を含む以前のバージョン。</p>
  
  <ul class="bulletPoint">
    <li>Movable Type Open Source 4.x</li>
    <li>Movable Type Open Source 5.x</li>
    <li>Movable Type 4.x <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type 5.x <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type Enterprise 4.x</li>
    <li>Movable Type Advanced 5.x</li>
  </ul>

  <h2>バージョンの確認方法</h2>

  <p>Movable Type の管理画面に、システム管理者としてサインインし、システムメニューから『ツール』&gt; 『システム情報』を選択して、Movable Type のバージョンを確認してください。</p>
  
</div>

<div class="section">
  <h2>提供を開始するバージョン</h2>
  
  <p>インストール済みのすべてのMovable Typeは、2011年6月9日に公開された、以下の修正済みバージョンのいずれかに、必ずアップグレードしてください。</p>
  
  <ul class="bulletPoint">
    <li>Movable Type Open Source 4.291</li>
    <li>Movable Type Open Source 4.361</li>    
    <li>Movable Type Open Source 5.051</li>    
    <li>Movable Type Open Source 5.11</li>
    <li>Movable Type 4.291 <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type 5.051 <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type 5.11 <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type Enterprise 4.291</li>
    <li>Movable Type Advanced 5.051</li>
    <li>Movable Type Advanced 5.11</li>    
  </ul>

  <p>以下のページよりダウンロード可能です。</p>

  <dl>
    <dt>Movable Type ライセンスをお持ちの方</dt>
    <dd>
      <ul class="links"><li><a href="https://mtuser.sixapart.jp/">シックス・アパート ユーザーサイト</a></li></ul>
    </dd>
    <dt>個人ライセンスでお使いの方</dt>
    <dd>
      <ul class="links">
        <li><a href="http://www.sixapart.jp/movabletype/personal.html">個人ライセンス（無償）ダウンロード</a></li>
      </ul>
    </dd>
    <dt>オープンソース版をお使いの方</dt>
    <dd>
      <ul class="links">
        <li><a href="http://www.movabletype.jp/opensource/">Movable Type Open Source Project</a> (<a href="http://movabletype.org/downloads/stable/MTOS-5.11-ja.zip">MTOS-5.11-ja.zip</a>, <a href="http://movabletype.org/downloads/stable/MTOS-5.051-ja.zip">MTOS-5.051-ja.zip</a>, <a href="http://movabletype.org/downloads/stable/MTOS-4.291-ja.zip">MTOS-4.291-ja.zip</a>, <a href="http://movabletype.org/downloads/stable/MTOS-4.361-ja.zip">MTOS-4.361-ja.zip</a>)</li>
      </ul>
    </dd>
  </dl>
  
</div><!-- h2 提供を開始するバージョン -->

<div class="section" id="otherissues">
  <h2>その他の変更点</h2>

  <p>今回追加された機能、および修正された問題点については、リリースノートを参照してください。</p>

  <ul>
    <li><a href="http://www.movabletype.jp/documentation/mt5/release/511.html">Movable Type 5.11 / 5.051 / 4.361 / 4.291 リリースノート</a></li>
    <li>環境変数 <strong><a href="http://www.movabletype.jp/documentation/appendices/config-directives/deniedassetfileextensions.html">DeniedAssetFileExtensions</a></strong> が新しく追加されました。</li>
    <li>環境変数 <strong><a href="http://www.movabletype.jp/documentation/appendices/config-directives/assetfileextensions.html">AssetFileExtensions</a></strong> が、Movable Type 4.291 と 4.361に追加されました。（Movable Type 5.01 以降のバージョンには、すでに実装されています。）</li>
    <li><a href="http://www.movabletype.jp/documentation/mt5/release/511.html#other">その他の変更点</a></li>
  </ul>
  
</div> <!-- otherissues -->

<div class="section" id="fogbugz">
  <h2>FogBugzメンテナンス延期のお知らせ（6/14追記）</h2>
<a href="http://www.movabletype.jp/blog/fogbugz-maintenance.html">以前の記事</a>でお知らせしていた、6月15日から6月30日の<a href="http://bugs.movabletype.org/default.asp">FogBugz</a>（Movable Typeのバグ管理システム）のメンテナンスは、都合により延期します。該当期間も通常通り<a href="http://bugs.movabletype.org/default.asp">FogBugz</a> をご利用いただけます。新しいメンテナンス時期については、改めて告知いたします。
</div>

<p>以上です。</p>
]]>

</content>
</entry>

<entry>
<title>[重要] Movable Type 5.1 および、5.05、4.29 セキュリティーアップデートの提供を開始</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/_movable_type_51_505429.html" />
<id>tag:www.movabletype.jp,2011://1.3758</id>

<published>2011-05-25T00:30:00Z</published>
<updated>2011-06-03T04:21:48Z</updated>

<summary> Movable Type 5.1 を正式リリースします。同時に、Movable...</summary>
<author>
<name>Jun Kaneko</name>

</author>


<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[
<p>Movable Type 5.1 を正式リリースします。同時に、Movable Type 4 および Movable Type 5 で確認された複数のセキュリティ問題の修正バージョンとして、 Movable Type 4.29 および Movable Type 5.05 の提供を開始いたします。</p>

<div class="section">
  <h2>Movable Type 5.1の概要</h2>

  <div style="width:425px" id="__ss_4999073"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/sakk/movable-type-51-whats-new" title="Movable Type 5.1 : What&#39;s New">Movable Type 5.1 : What&#39;s New</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/4999073" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/sakk">Six Apart KK</a> </div> </div>
  

  <p>詳細は、以下のページを参照してください。なお、以下のセキュリティ問題はMovable Type 5.1 で修正済みです。</p>

  <ul>
    <li><a href="http://www.movabletype.jp/documentation/mt5/release/movable-type-51-beta.html">Movable Type 5.1 の新機能</a></li>
    <li><a href="http://www.movabletype.jp/documentation/mt5/release/51.html">5.1 リリースノート</a></li>
  </ul>

  <p>企画、開発、ベータ期間を通じて、コミュニティーの皆様より、<a href="http://www.movabletype.jp/documentation/mt5/release/51.html#ja-contributors">数多くのフィードバック、バグ報告、パッチ提供</a>をいただきました。この場を借りて、お礼申し上げます。</p>
</div>

<div class="section">
  <h2>セキュリティアップデートの概要</h2>

  <p>Movable Type 5.04 および 4.28 を含む以前のバージョンでは、アプリケーション上の入力項目の一部において、適切に入力エスケープ処理されないため、クロスサイトスクリプティング（XSS）および クロスサイトリクエストフォージェリ(CSRF)が発生する可能性があります。Movable Type 4 および Movable Type 5 のすべてのバージョンの、修正版へのアップグレードを強く推奨します。</p>
  
  <h2>影響を受けるバージョン</h2>
  <p>以下の各製品の、5.04 および 4.28 を含む以前のバージョン。</p>
  
  <ul class="bulletPoint">
    <li>Movable Type Open Source 4.x</li>
    <li>Movable Type Open Source 5.x</li>
    <li>Movable Type 4.x <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type 5.x <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type Enterprise 4.x</li>
    <li>Movable Type Advanced 5.x</li>
  </ul>
</div>

<div class="section">
  <h2>提供を開始するバージョン</h2>
  
  <p>問題の対象となるバージョンをお使いの場合は、2011年5月25日に公開された、以下の修正済みのバージョンのいずれかにアップグレードしてください。</p>
  
  <ul class="bulletPoint">
    <li>Movable Type Open Source 4.29</li>
    <li>Movable Type Open Source 5.05</li>    
    <li>Movable Type Open Source 5.1</li>
    <li>Movable Type 4.29 <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type 5.05 <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type 5.1 <span class="memo">(Professional Pack, Community Pack を同梱)</span></li>
    <li>Movable Type Enterprise 4.29</li>
    <li>Movable Type Advanced 5.05</li>
    <li>Movable Type Advanced 5.1</li>    
  </ul>

  <p>以下のページよりダウンロード可能です。</p>

  <ul class="links">
    <li><a href="https://mtuser.sixapart.jp/">Movable Type ライセンスをお持ちの方</a></li>
    <li><a href="http://www.sixapart.jp/movabletype/personal.html">個人ライセンス（無償版）のダウンロード</a></li>
    <li><a href="http://www.movabletype.jp/opensource/">MTOS（オープンソース版）のダウンロード</a> （<a href="http://movabletype.org/downloads/stable/MTOS-5.1-ja.zip">MTOS-5.1-ja.zip</a>, <a href="http://movabletype.org/downloads/stable/MTOS-5.05-ja.zip">MTOS-5.05-ja.zip</a>, <a href="http://movabletype.org/downloads/stable/MTOS-4.29-ja.zip">MTOS-4.29-ja.zip</a>）</li>
  </ul>

  <p>本脆弱性に関するレポートをいただいた、<a href="http://alfasado.net/">Alfasado Inc.</a> <a href="http://www.justanotherhacker.com/">Eldar Marcussen</a>氏、および他の報告者の方々の、ご協力に感謝いたします。</p>
  
</div><!-- h2 提供を開始するバージョン -->


<p>以上です。</p>


]]>

</content>
</entry>

<entry>
<title>FogBugz メンテナンスのお知らせ</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/fogbugz-maintenance.html" />
<id>tag:www.movabletype.jp,2011://1.3754</id>

<published>2011-05-24T03:00:00Z</published>
<updated>2011-05-24T03:30:22Z</updated>

<summary>6月15日からFogBugz (http://bugs.movabletype....</summary>
<author>
<name>Yuji Takayama</name>

</author>


<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[<p>6月15日から<a href="http://bugs.movabletype.org/" title="http://bugs.movabletype.org/">FogBugz (http://bugs.movabletype.org/)</a> のメンテナンスを行います。
メンテナンス期間中はフィードバックの登録、閲覧を行うことが出来ません。メンテナンスの詳細は以下の通りです。</p>
<ul>
<li>日時：6月15日から6月30日</li>
<li>メンテナンスの内容：サーバー移転</li>
</ul>
<p>メンテナンス期間中のフィードバックレポートは<a href="http://www.sixapart.jp/movabletype/feedback.html" title="不具合、バグ、機能に関するリクエスト送信フォーム">リクエスト送信フォーム</a>をご利用下さい。</p>
<p>メンテナンス終了時期は前後する可能性がありますので、予めご了承下さい。サービス再開前に改めてこのサイトにて告知を行います。</p>]]>

</content>
</entry>

<entry>
<title>Movable Type 5.1 RC4 を公開</title>
<link rel="alternate" type="text/html" href="http://www.movabletype.jp/blog/movable_type_51_rc4.html" />
<id>tag:www.movabletype.jp,2011://1.3750</id>

<published>2011-05-20T06:56:09Z</published>
<updated>2011-05-20T06:56:49Z</updated>

<summary> Movable Type 5.1 RC4 を公開します。報告されたバグ （10...</summary>
<author>
<name>Jun Kaneko</name>

</author>


<content type="html" xml:lang="ja" xml:base="http://www.movabletype.jp/">
<![CDATA[
<p>Movable Type 5.1 RC4 を公開します。報告されたバグ （<a href="http://bugs.movabletype.org/default.asp?106201">106201</a>）を修正いたしました。</p>

<ul>
  <li><a href="http://www.movabletype.jp/documentation/mt5/release/movable-type-51-beta.html#beta-features">Movable Type 5.1 マニュアル</a></li>
  <li><a href="http://www.movabletype.jp/documentation/mt5/release/51.html">Movable Type 5.1 リリースノート（ RC4 ）</a></li>  
</ul>


<div class="section" id="download-mt51">
  <h3>ダウンロード</h3>

  <p>Betaページからパッケージをダウンロードしてください。開発途中の最新コードのナイトリービルドや、GitHubからソースコードを取得して利用することも可能です。</p>

  <ul>
    <li><a href="http://www.movabletype.jp/documentation/mt5/release/movable-type-51-beta.html#beta-download">ベータページからダウンロード</a></li>
    <li><a href="http://www.movabletype.jp/documentation/mt5/release/movable-type-51-beta.html#nightly">MTOSナイトリービルド</a></li>
    <li><a href="http://www.movabletype.jp/documentation/mt5/release/movable-type-51-beta.html#github">GitHubからのソースコード取得</a></li>
  </ul>
  
</div> <!-- download -->


<div class="section" id="feedback-mt51">
  <h3>フィードバック</h3>

  <p>Movable Type 5.1 Beta への日本語でのフィードバックは、FogBugz あるいは、MTQフォーラムでお受けしています。</p>
  <ul>
    <li><a href="http://bugs.movabletype.org/">FogBugz</a> : <a href="http://www.movabletype.jp/blog/movable_type_fogbugz.html">バグ報告、機能要望にFogBugzを活用しよう</a></li>
    <li><a href="http://communities.movabletype.jp/start-topic.html?100;MT5%20Beta%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89%E3%83%90%E3%83%83%E3%82%AF">MTQフォーラムでのフィードバック</a></li>    
  </ul>
  
</div> <!-- feedback -->

]]>

</content>
</entry>

</feed>

