connect with data api
TRANSCRIPT
Data APIとは
• Movable Type 6で追加された機能
• RESTでMovable Typeのデータにアクセス例)記事にアクセスhttp://…/mt-data-api.cgi/v3/sites/X/entries/Y
• 処理結果はJSON• プログラム言語を問わない
• 公式ライブラリあり(JavaScript/Swift)
JavaScriptライブラリのコードの例
var api = new MT.DataAPI({baseUrl: 'http://…/mt-data-api.cgi',clientId: 'example'
});api.listEntries(site_id, function(response){
// response.itemsが記事の配列});
ありがちなこと
• ExcelやAccessで蓄えたデータをMovable Typeにインポートしたい
• でも既存のインポートプラグインではかゆいところに手が届かない…
• Movable Typeの記事等をExcelやAccessで処理したい
• Movable Typeの管理画面は使わずに全部Excelで済ませたい
• VBAなら分かるけどPerlは苦手…
Data API Library for VBA
• VBA(Visual Basic for Applications)でDataAPIを扱うライブラリ
• SixApart謹製JavaScriptライブラリに近い構文
• VBAでプログラムを組んでOfficeアプリとMovable Typeを連携
初期化と認証
' 初期化Set api = New MTDataAPIapi.init BASE, CLIENT_ID
' 認証Set params = New Scripting.Dictionaryparams("username") = USERNAMEparams("password") = PASSWORDSet response = api.send("authenticate",
params)
記事作成部分
For i = 2 To 4Set entry = New Scripting.Dictionaryentry("title") = Cells(i, 1).valueentry("body") = Cells(i, 2).valueentry("date") = api.convDate(Cells(i,3).value)Set response = api.send("createEntry",
SITE_ID, entry)Next
考えられる事例
• Accessと連携
• AccessのデータをMovable Typeに投入
• Wordと連携
• Wordで作成した文書をMovable Typeに投入してWeb化
• PowerPointとの連携
• スライドを画像に変換してMovable Typeに投入
クイズアプリの課題
• 出題するクイズをなるべく簡単に管理したい
• アプリにクイズを埋め込むと管理が複雑化
• アプリとクイズデータを分離
• クイズデータをCMSで管理してインターネット経由で読み込み
Movable Type & Data API
Data API Library for Android
• 拙作のData API用ライブラリ
• Androidのアプリに組み込む
• Volley(Google謹製HTTP通信ライブラリ)をベースに開発
認証Map<String, String> params = new HashMap<String, String>();params.put("username", USERNAME);params.put("password", PASSWORD);DataAPI.send("authenticate", params, new DataAPIListener() {
@Overridepublic void onResponse(JSONObject resp) {
// 認証成功時の処理}
@Overridepublic void onError(VolleyError error) {
// 認証失敗時の処理}
});
問題(記事)の読み込みMap<String, String> params = new HashMap<String, String>();params.put("limit",1);params.put("offset",offset);DataAPI.send("listEntries", SITE_ID, params,
new DataAPIListener() {@Overridepublic void onResponse(JSONObject resp) {
// 読み込み成功時の処理}
@Overridepublic void onError(VolleyError error) {
// 読み込み失敗時の処理}
});
Swiftのコードの例
api.listSites(success: {(result: [JSON]!, total:
Int!)-> Void in// 通信成功時の処理
},failure: {(error: JSON!)-> Void in
// 通信失敗時の処理}
)
Raspberry PIの概要
• カードサイズのマイコン
• 安価(5,000円程度)• センサー等の電子部品を接続可能
• IoT(Internet of Things)のベースとして利用
• Linuxが動作
• Raspbian(Debian系)• 各種ディストリビューション
Data API Library for Python?
• Raspberry PIではPythonを多用(特に電子工作関係)
• Data API Library for Pythonがあれば…• Linuxで動作する言語なら何でも良いはず…
Data API Library for PHP
• 拙作のData API用ライブラリ
• PHPのプログラムからMovable Typeと通信
• PHPを含むWebページ
• PHPのスクリプト(コマンドラインから実行)
今回のスクリプトrequire_once('mt-data-api.php');…… (初期化等)…$api = new MTDataAPI('http://…/mt-data-api.cgi', 'sample');$response = $api->getEntry(SITE_ID, $entry_id);if (isset($response['error'])) {
// エラー処理}else {
// $response['body']に文章// Open JTalk/Festivalで音声合成// aplayコマンドで再生
}
CMSはWebだけのものではない
• CMS=Content Management System• これまでのCMSはWebのコンテンツを管理するもの
• スマートフォン/タブレットをはじめとしてコンテンツの活用先が多様化
• Webコンテンツだけを管理する時代は終了
Data APIでWeb CMSから脱却
• Data APIでMovable Typeと様々なものを接続可能
• Web以外にMovable Typeの使い道が広がる
• 拙作ライブラリをぜひご利用ください