動作を軽く、柔軟な拡張を可能に - Movable Type 6で何が変わるの?【第2回 天野編】

こんにちは。マーケティング担当のさわです。

先日、Movable Type 6 のリリース日が10月17日(木)に決定したことをお知らせいたしました。同時に、RC版の提供も開始しています。

リリースまであと1か月! となったところで、前回の「ページに支配されないコンテンツ管理ができる - Movable Type 6で何が変わるの?【第1回 高山編】」に続き、今回は MT6 の目玉である Data API の開発を担当した天野さんに話を聞きました。

amano1.png

プログラマーでない人にこそ使って欲しいと思いながら作りました

まずは、天野さんが、どういう思いで Data API の開発を行っていたのか? というところから。

「Data API というとその名前だけでプログラマー、エンジニア、あるいはギークのための機能にも見えてしまうのですが、むしろプログラマーでない人にこそ使って欲しいと、ずっと考えていました。もちろんプログラマーの方には大いに使って欲しいのですが、現在MTを使っている方の中には、『プラグイン開発はできないけれど、MTタグを覚えればサイトを構築できる』ということでMTを利用している方も多くいると思うので、そういう方にぜひ試してもらいたいと思っています」。

前回の記事でも「HTMLやJavaScriptといった身近な技術で、MT のデータを使ったサイトを構築することができる」ということをお伝えしました。HTMLやCSS、JavaScriptを得意としているデザイナーやフロントエンド系プログラマの皆さんに、ぜひ使ってみていただきたいですね。

「Data API は MT6 をインストールすれば特別な設定の必要なく、すぐに使うことができますし、ちょっとだけ JavaScript を書けば『難しいことが分からなくてもとりあえず動かしてみる』ことができるようになっているので、まずはコピペからでいいので試してもらいたいな」。

jQuery を活用されている方が多いかと思いますが、jQueryを使えばData APIのURLを指定するだけで、簡単に公開されている記事のデータを取ってくることができるとのことなので、ぜひ皆さん、一度使ってみましょう!

前回も紹介しましたが、MovableType.jp でも Data API について少し説明していますので、Data API って何? という方はこちらもご覧くださいね。

内部の設計に腐心しました。まだまだ発展途上なんですけど……

次は、設計のお話です。

「Data API は、Loupe のようなアプリケーションのバックエンドとして動作させることが当初からの一つのターゲットでした。『処理が重い mt.cgi を使わないことで動作を軽くしたい』という動機があったからです。ただし、MT の資産である『高い拡張性』や、『細かい権限設定』などを考えると、全くゼロからの書き直しというのは現実的ではありません。ベースになるPerlのコア・コードは共有する必要があったので、それをベースにしつつ、『PSGI環境で実行した場合には高速に』『CGI 環境で実行した場合にもできるだけ遅くならないように』という方針で設計をしてきました」。

こちらも前回も書いたのですが、MTの機能を充実させるにつれ、ユーザーは「重い管理画面」にストレスを感じるようになりました。ただ、後方互換性などを重視すると、大きな変化は加えない方がよい。でも、ユーザーには大きな変化を感じてもらいたい。この2つを同時に実現することが求められていたんですよね。

「結果として、拡張性に関してはMTらしく、簡単に、そして柔軟に拡張できるものになっていると思います。パフォーマンス面では、PSGI 環境で条件が整った場合には高速に動作するようになっています。ただし一般的な動作としてはまだまだ期待されるようなパフォーマンスが出ていない部分もあるので、この点については6.0以降の次のフェーズで対応するための準備をしています」。

これからもこの辺りは改善・進化予定ですので、ご期待ください。

唐突にすみませんが、ここでちょっと天野さんのインタビューからクラウド版の話に脱線させてください。

Movable Type 6 は10月17日に正式リリース予定ですが、ソフトウェア版と同時に、クラウド版(現 Movable Type EZ)の MT6 もサービス開始予定となっています。実はわたくし、そのクラウド版 MT6 を先取りしてドッグフード的に(?)使っています。

クラウド版はHTTPサーバーにnginx、アプリケーションサーバーにPSGI/Starmanを採用していて、環境がとことん MT に最適化されているのですが、管理画面の動作が速くてすごく快適なんです。本当に……。

さらにData APIを利用しているスマートフォン向けアプリケーションLoupeを活用しています。Loupeには「メディアアップロード」という機能があり、iPhoneで撮った写真を、とりあえず MT のアイテムとしてアップロードしておくことができるんですね。それがもう……めっちゃ速いんです (人´∀`*).☆.。.:*・゚
Loupe
天野さんが「PSGIでは高速に」と言っているのを聞いて、これを言わずにはおれませんでした。今回のMT6は、MT5と比較して再構築スピードが約1.6倍(PSGI 環境では約1.7倍)速くなっている、というのも大きな改善ポイントの1つなのですが、再構築スピードだけではなく、普段の操作がサクサクできるのは、本当にうれしいものです。Loupe はData APIを使ったアプリの1つの実装例ですが、Data APIを使って、自分に必要な(ユーザーのニーズに応じた)機能を搭載したオリジナル管理アプリをどんどん作ってもらいたいです!

ということで、天野さんの話に戻りましょう!

Data API の JavaScript ライブラリは「IE対応」みたいな泥臭いところも対応済み

amano2.png

「この辺りは技術的な話になってしまいますが……。Data APIはREST形式でJSONを返すシンプルな設計になっているので、jQueryを使って簡単にデータを取得することができます。でもjQuery単体だと、『ユーザー認証をしてデータの取得や更新をする』『ファイルをアップロードする』『外部のサイト(ドメインの異なる場所)から Data API にアクセスする』といったあたりの機能を、ブラウザー互換性の高い状態で利用することが難しい場面もあります」。

こういうところにもブラウザー問題があるのですね。

「そのために、Data APIのJavaScriptライブラリを用意しています。Data APIのJavaScriptライブラリは、いわゆる『IE対応』みたいな面倒な部分も対応済みなので、このライブラリを使えば互換性などの『低レベル』な問題を意識しなくてもData APIを使うことができるようになります。シンプルなライブラリなので、Data API の JavaScript ライブラリと jQuery を一緒に使ったりすることも可能ですよ」。

低レベルな問題! そうですよね。低レベルだけど時間食いなブラウザー問題。苦しいブラウザー問題。エンジニアじゃないですが、わかります。

ここまでかなり詳しく Data API の設計方針や、特長について話してもらいましたが、皆さん、MT6 の Data API に興味を持っていただけたでしょうか?

最後に、「天野さんのイチオシ機能って何ですか?」と聞いてみました。

「イチオシの機能はですね、マニアックな上にちょっと前にリリースされた機能なのですが……」

大丈夫です。ぜひマニアックなところをひとつ、お願いします。

「Plack::Middleware を Movable Type に適用する、という機能がありまして、この機能を使うと簡単に Data API に BASIC 認証をかけたり、出力結果を加工することができるんです」。

こちら ↓ ですね!

「大事なことなので二回言いますが、この機能を使うと、簡単に Data API に BASIC 認証をかけたり、出力結果を加工することができるんです。これは Data API のために作られた機能ではないんですけど、Data API とも非常に相性がよく、面白いことができる機能だと思います」。

なるほど。これはぜひ Data API と組み合わせて活用してもらいたい! ただ、天野さんイチオシのこの機能、今のところ、検索してみても、MTのドキュメントと天野さんが個人で書いた記事ぐらいしかヒットしない……というさみしい状況らしいので、これを機会に皆さんにもぜひ触ってみてもらいたい!とのことでした。

10月に札幌でMTハッカソンを開催します

Data APIに興味はあるが…という方に朗報です。10月5日(土)に、札幌で MTDDC Meetup HOKKAIDO が開催されるのですが、その翌日、同じく札幌でMTハッカソンを開催予定です。本編の MTDDC Meetup はもちろんですが、翌日のMTハッカソンにもMTチームのエンジニアやシックス・アパートCTOの平田が参加予定ですので、この機会に、新しいAPIに触れていただけると嬉しいです。

ハッカソンは事前申し込みなどは不要です。MTDDC Meetup HOKKAIDOのほうは現在、参加申し込み絶賛受け付け中です。

公式サイトはこちら→ http://mtddc2013.mt-ezo.net/

MTDDC Meetup HOKKAIDOでたくさん話を聞いて、懇親会で飲んで、翌日はハッカソンで朝から一緒に黙々とハックしましょう!

今回のインタビューはData API一色になりましたが、次回は誰にしようかな。バックエンド組かな、QAチームかな、CTOかな、デザイナーとしてMT6プロジェクトに参画している長谷川恭久さんかな?

人選は今から考えます。もしご意見があればぜひ MTのTwitterアカウントシックス・アパートのFacebookページなどにフィードバックをお願いします!

それでは次回もお楽しみに!

Six Apart をフォローしませんか?

次の記事へ

YAPC::Asia Tokyo 2013でもろもろご紹介してきました

前の記事へ

Key Lime Pie じゃなかったのか、Android! Zenbackの和菓子コードネームを紹介します