MOVABLETYPE 6
OVERVIEW
~ PLAY WITH API ~
2013.8.3 (Sat) MTDDCTokyo
YujiTakayama
MovableType Engineer, Six Apart, Ltd.
13年8...
MT6:約4年ぶりのメジャーアップデート
13年8月3日土曜日
MT6:約4年ぶりのメジャーアップデート
拍手する所ですよ
13年8月3日土曜日
TODAY’S AGENDA
• What’s new in MT6
• New Features
• Improvement
• What’s new API
• The point of upgrade
• Plugin Directory...
WHAT’S NEW IN MT6
13年8月3日土曜日
NEW LOGO
13年8月3日土曜日
•5 new features
•3 improvement
•1 new application
13年8月3日土曜日
SCHEDULED UN-PUBLISHING
13年8月3日土曜日
13年8月3日土曜日
13年8月3日土曜日
SCHEDULED UN-PUBLISHING
• 記事とページに対して公開終了日を設定可能
• 公開終了処理は run_periodic_tasks で実行
• 公開終了ステータスになった記事とページを一覧
• 公開終了した記事とページは改め...
SCHEDULED UN-PUBLISHING
• 指定日公開と指定日公開終了を同時に利用する事で、
指定された期間だけ公開される記事とページを作れる
• 手動で公開終了ステータスに変更はできないです
• 公開終了処理時にコールバックあります
...
SCHEDULED UN-PUBLISHING
YAML
callbacks:
unpublish_past_entries: $YOUR::CALLBACK::HANDLER
Perl
MT->add_callback( ‘unpublish...
SCHEDULED UN-PUBLISHING
sub my_callback_handler {
my ( $cb, $mt, $entry) = @_;
# Do Something
}
Arguments
$mt: Instance of...
GOOGLE ANALYTICS
13年8月3日土曜日
13年8月3日土曜日
13年8月3日土曜日
13年8月3日土曜日
13年8月3日土曜日
13年8月3日土曜日
<MT:StatsSnippet>
• アクセス解析サービスの提供する JavaScript を出力
• StatsProvider 側で実装する
• Google Analytics Providerは、Google AnalyticsのJa...
EXTENDS STATS PROVIDER
YAML
stats_providers:
OtherService:
provider: OtherService::Provider ←パッケージ名を指定
13年8月3日土曜日
EXTENDS STATS PROVIDER
package OtherService::Provider;
sub is_ready {
# should return true value if this provider is config...
EXTENDS STATS PROVIDER
sub pageviews_for_path {#Do something }
sub visits_for_path {#Do something }
sub pageviews_for_date...
EXAMPLE
/MT_HOME/plugins/GoogleAnalytics/lib/GoogleAnalytics/Provider.pm
13年8月3日土曜日
NOTIFICATION CENTER
13年8月3日土曜日
13年8月3日土曜日
13年8月3日土曜日
13年8月3日土曜日
NOTIFICATION CENTER
YAML
callbacks:
set_notification_dashboard: $YOUR::CALLBACK::HANDLER
Perl
MT->add_callback( ‘set_notific...
NOTIFICATION CENTER
sub my_handler {
my ( $cb, $messages ) = @_;
my @notifications = ({
level => 'error',
text => MT->trans...
NOTIFICATION CENTER
• Dashboardにアクセスする時にコールバックが実行され
るので、あまり重い処理を記述するのはお奨めしませ
ん・・・。
• textに指定した内容は、管理者以外のユーザーにも表示
されるのた、セキュ...
WEBSITE MANAGEMENT
13年8月3日土曜日
13年8月3日土曜日
WEBSITE MANAGEMENT
• ウェブサイト上に記事を書くことができるように
• カテゴリーの作成ももちろんできます
• ”ブログ”テーマを適用することができるように
• <MT:Blog....>系のタグを<MT:Website.....
WEBSITE MANAGEMENT
• MT4以前のバージョンからのアップグレード時に、ブ
ログをウェブサイトに分解しません
• 全て”ウェブサイト”にする事でアップグレード前の
構造を維持します
• MT5以降のバージョンからのアップグレー...
WEBSITE MANAGEMENT
• テンプレートの中で、ウェブサイトのコンテクストを
自動判別するようになりました
13年8月3日土曜日
WEBSITE MANAGEMENT
これまで
<mt:IfBlog>
<mt:BlogParentWebsite>
<mt:WebsiteName>
</mt:BlogParentWebsite>
<mt:Else>
<mt:WebsiteN...
WEBSITE MANAGEMENT
これから
<mt:WebsiteName>
13年8月3日土曜日
DASHBOARD
13年8月3日土曜日
13年8月3日土曜日
13年8月3日土曜日
DASHBOARD
• すっきりと生まれ変わりました
• This isYou widget がサイドに移動
• Flash ベースの Blog Stats widget を廃止して、Movable
Type Chart API ベースの wi...
SITE STATS WIDGET
• ウェブサイト、ブログの10日分の記事数をグラフに
• Google Analytics を設定すれば、PageViews もグラフに
反映されます
• 実は、Pluggable なので、プラグインからグラ...
EXTENDS SITE STATS
YAML
applications:
cms:
site_stats_lines:
key_for_graph:
hlabel:‘Label for the line’
handler: $YOUR::HA...
EXTENDS SITE STATS
hlabel: グラフのポイントに表示されるラベル名
handler: グラフデータを返すハンドラー
condition: handlerに指定されたコードを実行するかどうか
    指定が無ければ毎回実行...
EXTENDS SITE STATS
sub my_handler {
my ( $app, $ten_days_ago_tl, $param ) = @_;
# Do something
return %results; # Key:YYYY...
EXAMPLE
/MT_HOME/lib/MT/CMS/Dashboard.pm
13年8月3日土曜日
CATEGORY ARCHIVE
13年8月3日土曜日
13年8月3日土曜日
13年8月3日土曜日
CATEGORY ARCHIVE
• 全般設定 - アーカイブ設定で設定を有効にすると、
記事がないカテゴリーアーカイブを出力されます
• デフォルトでは、設定は無効になってます
13年8月3日土曜日
LOUPE
13年8月3日土曜日
13年8月3日土曜日
LOUPE
• JavaScript + MovableType Data API + Chart API を用いた
リファレンス アプリケーション
• スマートフォン向けの Web アプリケーション
• ただのサンプルではなく普段使いができる...
LOUPE
• 実はPluggable
• Card と呼ばれるウィジェッ
トを自分で開発することが
できる
• 近日中に Card の作成方法
のドキュメントを公開予定
13年8月3日土曜日
MOVABLETYPE DATA API
13年8月3日土曜日
MOVABLETYPE DATA API
• REST API
• MT Authentication
• JavaScript Library
• Pluggable
• CGI based API
13年8月3日土曜日
http://pages.apigee.com/web-api-design-ebook.html
13年8月3日土曜日
REST API
Create Read Update Delete
Entry    
Comment    
Trackback   
User  
Site(Blog,Website) 
Category 
...
https://github.com/movabletype/Documentation/wiki/Quick-reference
13年8月3日土曜日
curl -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/sites/1
HTTP/1.1 200 OK
Date: Fri, 02 Aug 2013 13:12:10 GMT
Server:...
MT AUTHENTICATION
• 公開されていない記事や、コメントなどの更新・削除
には、認証が必要
• 認証は、CMS と同じ MT 認証+ Role ベース
• 既存の権限ルールをそのまま適用できる
• もちろん、公開済みの記事の内容...
curl -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/users/me
HTTP/1.1 401 Authorization Required
Date: Fri, 02 Aug 2013...
curl -i -d clientId=test -d username=takayama -d password=password http://
localhost/cgi-bin/mt/mt-data-api.cgi/v1/authent...
curl -H "X-MT-Authorization: MTAuth
accessToken=MAQgv0HhhN82CQm88aP6r0QjtYpvRtMm8cS0av7E" -i http://
localhost/cgi-bin/mt/...
curl -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/users/1
HTTP/1.1 200 OK
Date: Fri, 02 Aug 2013 13:34:34 GMT
Server:...
JAVASCRIPT LIBRARY
• REST API の呼び出しをラッピングした、JavaScript ライ
ブラリを提供
• 他の言語についても(需要次第で)順次サポート予定
(時期未定)
• MIT で提供中
13年8月3日土曜日
var api = new MT.DataAPI({
baseUrl: "https://your-host/mt/mt-data-api.cgi",
clientId: "your-client-id"
});
api.listEntries...
var api = new MT.DataAPI({
baseUrl: "https://your-host/mt/mt-data-api.cgi",
clientId: "your-client-id"
});
api.getToken(fu...
var api = new MT.DataAPI({
baseUrl: "https://your-host/mt/mt-data-api.cgi",
clientId: "your-client-id"
});
var params = {
...
https://github.com/movabletype/mt-data-api-sdk-js
13年8月3日土曜日
PLUGGABLE
• REST API のエンドポイントは、MT のレジストリで管理
• プラグインから、エンドポイントの追加が可能
• 出力形式を追加する事が可能
• MT6.0 では、JSON 形式をサポート
• プラグインによる実装方法...
YAML
applications:
data_api:
endpoints:
- id: list_foobar
route: /sites/:site_id/foobars
verb: GET
version: 1
handler: $Co...
CGI BASED API
• データ構造だけを返すので、ページ生成を伴うCGIより
は軽量ではある
• とはいえ、CGI であるので、起動時のオーバーヘッド
はやはりある
• PSGI などの永続化環境で実行することを推奨
• フロントサーバ...
DATA API - USE CASES
• MT の管理画面をカスタマイズせずに、ユーザー専用
の管理画面を作る
• 公開されているサイト側で・・・
• Pagination
• mt-search.cgi に変わる検索エンジン
• コミュニ...
MOVABLETYPE CHART API
13年8月3日土曜日
CHART API
• Flash ベースの Blog Stats を何とかしたくて開発
• Loupe でも使いたいと思ってスマフォ対応
• MT 無しでも使えると、公開サイト側でも使えていい
かも?と思って、独立した JavaScript ...
13年8月3日土曜日
CHART API
• Morris.JS / Easel をグラフ描画エンジンとして採用
• グラフの種類によって、それぞれのエンジンを利用
• 一部のブラウザでは Canvas が使えなかったりするの
で、環境に応じて別エンジンで描画を続行...
CHART API
Internet Explorer
Google Chrome
Safari
FireFox
Android
13年8月3日土曜日
<html>
<head>
<link rel="stylesheet" href="/mt-static/chart-api/mtchart.css">
<script src="/mt-static/jquery/jquery.min.js...
<html>
<head>
<link rel="stylesheet" href="/mt-static/chart-api/mtchart.css">
<script src="/mt-static/jquery/jquery.min.js...
<html>
<head>
<link rel="stylesheet" href="/mt-static/chart-api/mtchart.css">
<script src="/mt-static/jquery/jquery.min.js...
$(function(){
var data = [
{ x: '2013-04', y: '123', y1: '90' },
{ x: '2013-05', y: '235', y1: '128' },
{ x: '2013-06', y:...
https://github.com/movabletype/Documentation/wiki/Movable-type-chart-api
13年8月3日土曜日
THE POINT OF UPGRADE
13年8月3日土曜日
THE POINT OF UPGRADE
• Transformer をご利用の皆様
• User Dashboard のThis isYou を移動した
• 記事/ページ編集画面に公開終了日の項目を追加した
• Blog Stats が無くな...
THE POINT OF UPGRADE
• Plugin 開発者の皆様
• Callback や API レベルで変更した点はほとんどない
• レジストリの変更はない
• ウェブサイトで記事が作れることにより、ブログの
み対応していた記事・カ...
THE POINT OF UPGRADE
• Theme 開発者の皆様
• ウェブサイトでブログのテーマが利用可能になるの
で、”class: Blog” と指定していても、ウェブサイトで
適用されます
• “class:Website”と指定...
PLUGIN DIRECTORY
RENEWAL
13年8月3日土曜日
PLUGIN ANDTHEME
DIRECTORY
• 現在提供しているプラグイン&テーマディレクトリを
日米ともに完全リニューアル
• 本日よりベータオープン
• http://beta.plugins.movabletype.jp
• ht...
13年8月3日土曜日
PLUGIN ANDTHEME
DIRECTORY
• 現行サイトに登録されている方も改めてユーザー登
録、プラグイン・テーマの登録をお願いします
13年8月3日土曜日
PLUGIN ANDTHEME
DIRECTORY
• github と連動することで、バージョンアップ時の情報
更新を自動化
• github レポジトリの Service Hooks に 更新通知を設定す
るだけ
13年8月3日土曜日
PLUGIN ANDTHEME
DIRECTORY
• 一度の登録で日本語サ
イト、英語サイトの両
方に登録される
• 説明分の翻訳は運営サ
イドで実施
13年8月3日土曜日
PLUGIN ANDTHEME
DIRECTORY
• 最新の MovableType 開発コードで構築
• フリーワード検索には Data API による検索を搭載
• プラグインの互換性レポート、github の スター数表示
などの機能も...
PLUGIN ANDTHEME
DIRECTORY
• 正式オープンは MovableType 6 のリリースと同時期を
予定
• ベータ中に登録していただいた内容は、そのまま正式
オープンするサイトにも残ります
13年8月3日土曜日
ANY QUESTIONS?
13年8月3日土曜日
MOVABLETYPE
HACK-A-THON
13年8月3日土曜日
久しぶりにやります
13年8月3日土曜日
お題
Movable Type 6 に対応したプラグイン、アプリケーション、
テーマなどをワイワイと作る。
アイディアを口にすると誰かが作ってくれるかもしれない
日時
2013.8.4 (Sun)
10:00 開場 ~ 18:00 発表会
場所...
13年8月3日土曜日
ビールもあるよ
13年8月3日土曜日
THANKYOU FOR LISTENING
13年8月3日土曜日
Upcoming SlideShare
Loading in …5
×

Mtddc2013: Movable Type 6 Overview

5,895 views

Published on

Published in: Technology, Business
2 Comments
7 Likes
Statistics
Notes
No Downloads
Views
Total views
5,895
On SlideShare
0
From Embeds
0
Number of Embeds
1,415
Actions
Shares
0
Downloads
9
Comments
2
Likes
7
Embeds 0
No embeds

No notes for slide

Mtddc2013: Movable Type 6 Overview

  1. 1. MOVABLETYPE 6 OVERVIEW ~ PLAY WITH API ~ 2013.8.3 (Sat) MTDDCTokyo YujiTakayama MovableType Engineer, Six Apart, Ltd. 13年8月3日土曜日
  2. 2. MT6:約4年ぶりのメジャーアップデート 13年8月3日土曜日
  3. 3. MT6:約4年ぶりのメジャーアップデート 拍手する所ですよ 13年8月3日土曜日
  4. 4. TODAY’S AGENDA • What’s new in MT6 • New Features • Improvement • What’s new API • The point of upgrade • Plugin Directory Renewal 13年8月3日土曜日
  5. 5. WHAT’S NEW IN MT6 13年8月3日土曜日
  6. 6. NEW LOGO 13年8月3日土曜日
  7. 7. •5 new features •3 improvement •1 new application 13年8月3日土曜日
  8. 8. SCHEDULED UN-PUBLISHING 13年8月3日土曜日
  9. 9. 13年8月3日土曜日
  10. 10. 13年8月3日土曜日
  11. 11. SCHEDULED UN-PUBLISHING • 記事とページに対して公開終了日を設定可能 • 公開終了処理は run_periodic_tasks で実行 • 公開終了ステータスになった記事とページを一覧 • 公開終了した記事とページは改めてステータスを変え て公開する事もできる 13年8月3日土曜日
  12. 12. SCHEDULED UN-PUBLISHING • 指定日公開と指定日公開終了を同時に利用する事で、 指定された期間だけ公開される記事とページを作れる • 手動で公開終了ステータスに変更はできないです • 公開終了処理時にコールバックあります 13年8月3日土曜日
  13. 13. SCHEDULED UN-PUBLISHING YAML callbacks: unpublish_past_entries: $YOUR::CALLBACK::HANDLER Perl MT->add_callback( ‘unpublish_past_entries’, 5, &your_handler ); 13年8月3日土曜日
  14. 14. SCHEDULED UN-PUBLISHING sub my_callback_handler { my ( $cb, $mt, $entry) = @_; # Do Something } Arguments $mt: Instance of MovableType (Not MT::App, MT object) $entry: Unpublished entry(or page) object 13年8月3日土曜日
  15. 15. GOOGLE ANALYTICS 13年8月3日土曜日
  16. 16. 13年8月3日土曜日
  17. 17. 13年8月3日土曜日
  18. 18. 13年8月3日土曜日
  19. 19. 13年8月3日土曜日
  20. 20. 13年8月3日土曜日
  21. 21. <MT:StatsSnippet> • アクセス解析サービスの提供する JavaScript を出力 • StatsProvider 側で実装する • Google Analytics Providerは、Google AnalyticsのJavaScriptコ ードの中に自動的にアカウントIDを埋め込んで出力 13年8月3日土曜日
  22. 22. EXTENDS STATS PROVIDER YAML stats_providers: OtherService: provider: OtherService::Provider ←パッケージ名を指定 13年8月3日土曜日
  23. 23. EXTENDS STATS PROVIDER package OtherService::Provider; sub is_ready { # should return true value if this provider is configured # and usable } sub snipet { #should return tracking code (JS or something?) } 13年8月3日土曜日
  24. 24. EXTENDS STATS PROVIDER sub pageviews_for_path {#Do something } sub visits_for_path {#Do something } sub pageviews_for_date {#Do something } sub visits_for_date {#Do something } Parameters: startDate endDate offset limit path 13年8月3日土曜日
  25. 25. EXAMPLE /MT_HOME/plugins/GoogleAnalytics/lib/GoogleAnalytics/Provider.pm 13年8月3日土曜日
  26. 26. NOTIFICATION CENTER 13年8月3日土曜日
  27. 27. 13年8月3日土曜日
  28. 28. 13年8月3日土曜日
  29. 29. 13年8月3日土曜日
  30. 30. NOTIFICATION CENTER YAML callbacks: set_notification_dashboard: $YOUR::CALLBACK::HANDLER Perl MT->add_callback( ‘set_notification_dashboard’, 5, &your_handler ); 13年8月3日土曜日
  31. 31. NOTIFICATION CENTER sub my_handler { my ( $cb, $messages ) = @_; my @notifications = ({ level => 'error', text => MT->translate('Error'), detail => MT->translate('You have an error.'), }); push @{ $messages }, @notifications; } Level: error, success, warning 13年8月3日土曜日
  32. 32. NOTIFICATION CENTER • Dashboardにアクセスする時にコールバックが実行され るので、あまり重い処理を記述するのはお奨めしませ ん・・・。 • textに指定した内容は、管理者以外のユーザーにも表示 されるのた、セキュリティ関係は表示しない方がいい です・・・。 13年8月3日土曜日
  33. 33. WEBSITE MANAGEMENT 13年8月3日土曜日
  34. 34. 13年8月3日土曜日
  35. 35. WEBSITE MANAGEMENT • ウェブサイト上に記事を書くことができるように • カテゴリーの作成ももちろんできます • ”ブログ”テーマを適用することができるように • <MT:Blog....>系のタグを<MT:Website...>に書き換える 必要はありません • 基本コンセプトは小規模(ウェブサイト1,2個)から、 大規模(ウェブサイト複数個、子ブログ複数個)まで 13年8月3日土曜日
  36. 36. WEBSITE MANAGEMENT • MT4以前のバージョンからのアップグレード時に、ブ ログをウェブサイトに分解しません • 全て”ウェブサイト”にする事でアップグレード前の 構造を維持します • MT5以降のバージョンからのアップグレード時は、特 に変更をしません(既存の構造をそのままにします) 13年8月3日土曜日
  37. 37. WEBSITE MANAGEMENT • テンプレートの中で、ウェブサイトのコンテクストを 自動判別するようになりました 13年8月3日土曜日
  38. 38. WEBSITE MANAGEMENT これまで <mt:IfBlog> <mt:BlogParentWebsite> <mt:WebsiteName> </mt:BlogParentWebsite> <mt:Else> <mt:WebsiteName> </mt:IfBlog> 13年8月3日土曜日
  39. 39. WEBSITE MANAGEMENT これから <mt:WebsiteName> 13年8月3日土曜日
  40. 40. DASHBOARD 13年8月3日土曜日
  41. 41. 13年8月3日土曜日
  42. 42. 13年8月3日土曜日
  43. 43. DASHBOARD • すっきりと生まれ変わりました • This isYou widget がサイドに移動 • Flash ベースの Blog Stats widget を廃止して、Movable Type Chart API ベースの widget になりました • 後方互換性の為に Blog Stats widget を表示する事もで きます (EnableBlogStats) 13年8月3日土曜日
  44. 44. SITE STATS WIDGET • ウェブサイト、ブログの10日分の記事数をグラフに • Google Analytics を設定すれば、PageViews もグラフに 反映されます • 実は、Pluggable なので、プラグインからグラフデー タを追加する事もできる 13年8月3日土曜日
  45. 45. EXTENDS SITE STATS YAML applications: cms: site_stats_lines: key_for_graph: hlabel:‘Label for the line’ handler: $YOUR::HANDLER condition: $YOUR::CONDITION::HANDLER 13年8月3日土曜日
  46. 46. EXTENDS SITE STATS hlabel: グラフのポイントに表示されるラベル名 handler: グラフデータを返すハンドラー condition: handlerに指定されたコードを実行するかどうか     指定が無ければ毎回実行 13年8月3日土曜日
  47. 47. EXTENDS SITE STATS sub my_handler { my ( $app, $ten_days_ago_tl, $param ) = @_; # Do something return %results; # Key:YYYY-MM-DD /Value: Count } Arguments $app: MT::App::CMS object $ten_days_ago_tl: gmtime array of date of 10 days ago $param: Optional parameter hash 13年8月3日土曜日
  48. 48. EXAMPLE /MT_HOME/lib/MT/CMS/Dashboard.pm 13年8月3日土曜日
  49. 49. CATEGORY ARCHIVE 13年8月3日土曜日
  50. 50. 13年8月3日土曜日
  51. 51. 13年8月3日土曜日
  52. 52. CATEGORY ARCHIVE • 全般設定 - アーカイブ設定で設定を有効にすると、 記事がないカテゴリーアーカイブを出力されます • デフォルトでは、設定は無効になってます 13年8月3日土曜日
  53. 53. LOUPE 13年8月3日土曜日
  54. 54. 13年8月3日土曜日
  55. 55. LOUPE • JavaScript + MovableType Data API + Chart API を用いた リファレンス アプリケーション • スマートフォン向けの Web アプリケーション • ただのサンプルではなく普段使いができる • MITライセンスで公開 https://github.com/movabletype/mt-plugin-Loupe 13年8月3日土曜日
  56. 56. LOUPE • 実はPluggable • Card と呼ばれるウィジェッ トを自分で開発することが できる • 近日中に Card の作成方法 のドキュメントを公開予定 13年8月3日土曜日
  57. 57. MOVABLETYPE DATA API 13年8月3日土曜日
  58. 58. MOVABLETYPE DATA API • REST API • MT Authentication • JavaScript Library • Pluggable • CGI based API 13年8月3日土曜日
  59. 59. http://pages.apigee.com/web-api-design-ebook.html 13年8月3日土曜日
  60. 60. REST API Create Read Update Delete Entry     Comment     Trackback    User   Site(Blog,Website)  Category  Site Statistics  Asset  ex) http(s)://<your-server>/<your-mt>/mt-data-api.cgi/v1/sites/2/entries 13年8月3日土曜日
  61. 61. https://github.com/movabletype/Documentation/wiki/Quick-reference 13年8月3日土曜日
  62. 62. curl -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/sites/1 HTTP/1.1 200 OK Date: Fri, 02 Aug 2013 13:12:10 GMT Server:Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 X-content-type: nosniff Cache-control: no-cache Transfer-Encoding: chunked Content-Type: application/json; charset=UTF-8 {"name":"First Website","archiveUrl":"http://localhost/blogs/ 20130731-1/","url":"http://localhost/blogs/ 20130731-1/","id":"1","class":"website","description":null} 13年8月3日土曜日
  63. 63. MT AUTHENTICATION • 公開されていない記事や、コメントなどの更新・削除 には、認証が必要 • 認証は、CMS と同じ MT 認証+ Role ベース • 既存の権限ルールをそのまま適用できる • もちろん、公開済みの記事の内容などは認証なしで取 得できる 13年8月3日土曜日
  64. 64. curl -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/users/me HTTP/1.1 401 Authorization Required Date: Fri, 02 Aug 2013 13:14:54 GMT Server:Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 X-content-type: nosniff Cache-control: no-cache Transfer-Encoding: chunked Content-Type: application/json; charset=UTF-8 {"error":{"code":401,"message":"Unauthorized"}} 13年8月3日土曜日
  65. 65. curl -i -d clientId=test -d username=takayama -d password=password http:// localhost/cgi-bin/mt/mt-data-api.cgi/v1/authentication HTTP/1.1 200 OK Date: Fri, 02 Aug 2013 13:20:08 GMT Server:Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 X-content-type: nosniff Cache-control: no-cache Transfer-Encoding: chunked Content-Type: application/json; charset=UTF-8 {"accessToken":"MAQgv0HhhN82CQm88aP6r0QjtYpvRtMm8cS0av7E","session Id":"Z9STct7OztObi6Bd4aDMH8qcZBbPh6mlxpkh5yQo","expiresIn": 3600,"remember":false} 13年8月3日土曜日
  66. 66. curl -H "X-MT-Authorization: MTAuth accessToken=MAQgv0HhhN82CQm88aP6r0QjtYpvRtMm8cS0av7E" -i http:// localhost/cgi-bin/mt/mt-data-api.cgi/v1/users/me HTTP/1.1 200 OK Date: Fri, 02 Aug 2013 13:31:13 GMT Server:Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 X-content-type: nosniff Cache-control: no-cache Transfer-Encoding: chunked Content-Type: application/json; charset=UTF-8 {"email":"ytakayama@sixapart.com","userpicUrl":null,"language":"ja","url":null,"name ":"takayama","updatable":true,"id":"1","displayName":"YujiTakayama"} 13年8月3日土曜日
  67. 67. curl -i http://localhost/cgi-bin/mt/mt-data-api.cgi/v1/users/1 HTTP/1.1 200 OK Date: Fri, 02 Aug 2013 13:34:34 GMT Server:Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 X-content-type: nosniff Cache-control: no-cache Transfer-Encoding: chunked Content-Type: application/json; charset=UTF-8 {"email":"ytakayama@sixapart.com","userpicUrl":null,"language":"ja","url":null,"upda table":false,"displayName":"YujiTakayama"} 13年8月3日土曜日
  68. 68. JAVASCRIPT LIBRARY • REST API の呼び出しをラッピングした、JavaScript ライ ブラリを提供 • 他の言語についても(需要次第で)順次サポート予定 (時期未定) • MIT で提供中 13年8月3日土曜日
  69. 69. var api = new MT.DataAPI({ baseUrl: "https://your-host/mt/mt-data-api.cgi", clientId: "your-client-id" }); api.listEntries(siteId, function(response) { if (response.error) { // Handle error return; } for (var i = 0; i < response.items.length; i++) { var entry = response.items[i]; // Render an entry } }); 13年8月3日土曜日
  70. 70. var api = new MT.DataAPI({ baseUrl: "https://your-host/mt/mt-data-api.cgi", clientId: "your-client-id" }); api.getToken(function(response) { if (response.error) { if (response.error.code === 401) { // You have not been authenticated yet. location.href = api.getAuthorizationUrl(location.href); } else { /* Handle error */ } } else { // You have been authenticated. api.listEntries(siteId, {status: 'Draft'}, function(response) { if (response.error) { /* Handle error */ return; } // Fetched a list of drafts. for (var i = 0; i < response.items.length; i++) { var entry = response.items[i]; // Render an entry } }); } }); 13年8月3日土曜日
  71. 71. var api = new MT.DataAPI({ baseUrl: "https://your-host/mt/mt-data-api.cgi", clientId: "your-client-id" }); var params = { search: "foo", searchFields: "title,body", fields: "assets,author,title,permalink,body,categories" }; api.listEntries(siteId, params, function(response) { if (response.error) { // Handle error return; } for (var i = 0; i < response.items.length; i++) { var entry = response.items[i]; // Render an entry } }); 13年8月3日土曜日
  72. 72. https://github.com/movabletype/mt-data-api-sdk-js 13年8月3日土曜日
  73. 73. PLUGGABLE • REST API のエンドポイントは、MT のレジストリで管理 • プラグインから、エンドポイントの追加が可能 • 出力形式を追加する事が可能 • MT6.0 では、JSON 形式をサポート • プラグインによる実装方法のドキュメントを近日公開 13年8月3日土曜日
  74. 74. YAML applications: data_api: endpoints: - id: list_foobar route: /sites/:site_id/foobars verb: GET version: 1 handler: $Core::MT::API::Endpoint::FooBar::list requires_login: 0 default_params: limit: 10 offset: 0 sort_by: authored_on sort_order: descend search_fields: title,text,text_more,keywords error_codes: 403:blah blah blah 13年8月3日土曜日
  75. 75. CGI BASED API • データ構造だけを返すので、ページ生成を伴うCGIより は軽量ではある • とはいえ、CGI であるので、起動時のオーバーヘッド はやはりある • PSGI などの永続化環境で実行することを推奨 • フロントサーバーでキャッシュするのも効果的 13年8月3日土曜日
  76. 76. DATA API - USE CASES • MT の管理画面をカスタマイズせずに、ユーザー専用 の管理画面を作る • 公開されているサイト側で・・・ • Pagination • mt-search.cgi に変わる検索エンジン • コミュニティサイトは Community.Pack より作りやす い気がする 13年8月3日土曜日
  77. 77. MOVABLETYPE CHART API 13年8月3日土曜日
  78. 78. CHART API • Flash ベースの Blog Stats を何とかしたくて開発 • Loupe でも使いたいと思ってスマフォ対応 • MT 無しでも使えると、公開サイト側でも使えていい かも?と思って、独立した JavaScript で開発 • MITで公開 https://github.com/movabletype/mt-chart-api-sdk-js 13年8月3日土曜日
  79. 79. 13年8月3日土曜日
  80. 80. CHART API • Morris.JS / Easel をグラフ描画エンジンとして採用 • グラフの種類によって、それぞれのエンジンを利用 • 一部のブラウザでは Canvas が使えなかったりするの で、環境に応じて別エンジンで描画を続行 13年8月3日土曜日
  81. 81. CHART API Internet Explorer Google Chrome Safari FireFox Android 13年8月3日土曜日
  82. 82. <html> <head> <link rel="stylesheet" href="/mt-static/chart-api/mtchart.css"> <script src="/mt-static/jquery/jquery.min.js"></script> <script src="/mt-static/chart-api/mtchart.min.js"></script> <script> $(function(){ var config = { data: [ { x: '2013-04', y: '123' }, { x: '2013-05', y: '235' }, { x: '2013-06', y: '76' } ]} var range = { dataType: 'general', length: 3 } new MT.ChartAPI.Graph(config, range) .trigger('APPEND_TO', $('#graph')); }) </script> </head> <body> <div id="graph" style="width: 500px;"></div> </body> </html> 13年8月3日土曜日
  83. 83. <html> <head> <link rel="stylesheet" href="/mt-static/chart-api/mtchart.css"> <script src="/mt-static/jquery/jquery.min.js"></script> <script src="/mt-static/chart-api/mtchart.min.js"></script> <script> $(function(){ var config = { data: [ { x: '2013-04', y: '123' }, { x: '2013-05', y: '235' }, { x: '2013-06', y: '76' } ]} var range = { dataType: 'general', length: 3 } new MT.ChartAPI.Graph(config, range) .trigger('APPEND_TO', $('#graph')); }) </script> </head> <body> <div id="graph" style="width: 500px;"></div> </body> </html> 13年8月3日土曜日
  84. 84. <html> <head> <link rel="stylesheet" href="/mt-static/chart-api/mtchart.css"> <script src="/mt-static/jquery/jquery.min.js"></script> <script src="/mt-static/chart-api/mtchart.min.js"></script> <script> $(function(){ var config = { data: [ { x: '2013-04', y: '123' }, { x: '2013-05', y: '235' }, { x: '2013-06', y: '76' } ]} var range = { dataType: 'general', length: 3 } new MT.ChartAPI.Graph(config, range) .trigger('APPEND_TO', $('#graph')); }) </script> </head> <body> <div id="graph" style="width: 500px;"></div> </body> </html> 13年8月3日土曜日
  85. 85. $(function(){ var data = [ { x: '2013-04', y: '123', y1: '90' }, { x: '2013-05', y: '235', y1: '128' }, { x: '2013-06', y: '76', y1: '283' } ]; var config = { data: data, type: 'morris.donut', autoResize: true, yLength: 2 } var range = { dataType: 'general', length: 3 } new MT.ChartAPI.Graph(config, range) .trigger('APPEND_TO', $('#graph')); }) 13年8月3日土曜日
  86. 86. https://github.com/movabletype/Documentation/wiki/Movable-type-chart-api 13年8月3日土曜日
  87. 87. THE POINT OF UPGRADE 13年8月3日土曜日
  88. 88. THE POINT OF UPGRADE • Transformer をご利用の皆様 • User Dashboard のThis isYou を移動した • 記事/ページ編集画面に公開終了日の項目を追加した • Blog Stats が無くなって、Site Stats になった • Notification Centerのメッセージバーが出る領域 13年8月3日土曜日
  89. 89. THE POINT OF UPGRADE • Plugin 開発者の皆様 • Callback や API レベルで変更した点はほとんどない • レジストリの変更はない • ウェブサイトで記事が作れることにより、ブログの み対応していた記事・カテゴリ系のプラグインは対 応が必要になると想定されます 13年8月3日土曜日
  90. 90. THE POINT OF UPGRADE • Theme 開発者の皆様 • ウェブサイトでブログのテーマが利用可能になるの で、”class: Blog” と指定していても、ウェブサイトで 適用されます • “class:Website”と指定されているテーマは、旧バージ ョン同様にウェブサイトでのみ利用可能です 13年8月3日土曜日
  91. 91. PLUGIN DIRECTORY RENEWAL 13年8月3日土曜日
  92. 92. PLUGIN ANDTHEME DIRECTORY • 現在提供しているプラグイン&テーマディレクトリを 日米ともに完全リニューアル • 本日よりベータオープン • http://beta.plugins.movabletype.jp • http://beta.plugins.movabletype.org 13年8月3日土曜日
  93. 93. 13年8月3日土曜日
  94. 94. PLUGIN ANDTHEME DIRECTORY • 現行サイトに登録されている方も改めてユーザー登 録、プラグイン・テーマの登録をお願いします 13年8月3日土曜日
  95. 95. PLUGIN ANDTHEME DIRECTORY • github と連動することで、バージョンアップ時の情報 更新を自動化 • github レポジトリの Service Hooks に 更新通知を設定す るだけ 13年8月3日土曜日
  96. 96. PLUGIN ANDTHEME DIRECTORY • 一度の登録で日本語サ イト、英語サイトの両 方に登録される • 説明分の翻訳は運営サ イドで実施 13年8月3日土曜日
  97. 97. PLUGIN ANDTHEME DIRECTORY • 最新の MovableType 開発コードで構築 • フリーワード検索には Data API による検索を搭載 • プラグインの互換性レポート、github の スター数表示 などの機能も追加していく予定 • ベータなので問題あったらレポートください・・・ 13年8月3日土曜日
  98. 98. PLUGIN ANDTHEME DIRECTORY • 正式オープンは MovableType 6 のリリースと同時期を 予定 • ベータ中に登録していただいた内容は、そのまま正式 オープンするサイトにも残ります 13年8月3日土曜日
  99. 99. ANY QUESTIONS? 13年8月3日土曜日
  100. 100. MOVABLETYPE HACK-A-THON 13年8月3日土曜日
  101. 101. 久しぶりにやります 13年8月3日土曜日
  102. 102. お題 Movable Type 6 に対応したプラグイン、アプリケーション、 テーマなどをワイワイと作る。 アイディアを口にすると誰かが作ってくれるかもしれない 日時 2013.8.4 (Sun) 10:00 開場 ~ 18:00 発表会 場所 シックス・アパート本社(赤坂) 持ち物 PCとハッカー魂、デザイナー魂 参加費 ¥0 無料 その他 昼食、スナック、飲み物など用意あります。 Movable Type エンジニアに直接質問したり要望を伝えるチャンス 13年8月3日土曜日
  103. 103. 13年8月3日土曜日
  104. 104. ビールもあるよ 13年8月3日土曜日
  105. 105. THANKYOU FOR LISTENING 13年8月3日土曜日

×