Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo

1

Connect with Data API
2016/11/12
MTDDC Meetup TOKYO 2016
藤本 壱

2

今日のアジェンダ
• 自己紹介
• Data APIの概要
• Excelとの連携
• モバイルアプリのバックエンド
• Raspberry PIとの連携
• まとめ

3

自己紹介

4

自己紹介その1
• 藤本 壱(ふじもと はじめ)
• 群馬県前橋市在住
• 本職はPC系のフリーライター
• Movable Typeのプラグインを
多数開発
4

5

自己紹介その2
• ブログ「The Blog of H.Fujimoto」
http://www.h-fj.com/blog/
5

6

Data APIの概要

7

Data APIとは
• Movable Type 6で追加された機能
• RESTでMovable Typeのデータにアクセス
例)記事にアクセス
http://…/mt-data-api.cgi/v3/sites/X/entries/Y
• 処理結果はJSON
• プログラム言語を問わない
• 公式ライブラリあり(JavaScript/Swift)

8

JavaScriptライブラリのコードの例
var api = new MT.DataAPI({
baseUrl: 'http://…/mt-data-api.cgi',
clientId: 'example'
});
api.listEntries(site_id, function(response){
// response.itemsが記事の配列
});

9

Data APIの事例(Web製作向け)
• 各種の動的出力
• ページネーション
• 検索
• 独自の管理画面

10

Data APIの事例(Web製作向け)
• SixApartのごはんレシピ
http://makanai.sixapart.jp/

11

Data APIの事例(Web製作向け)
• 独自の管理画面
→ 「MT7を先取り!? DataAPI と Riot.js で作
るユーザフレンドリーなダッシュボード」の
セッション(15時~)

12

Web製作以外でのData API利用
• 理論的にはさまざまな応用が可能
• 事例がほとんどない
• 公式ライブラリも少ない
Web製作以外の事例をご紹介

13

Excelとの連携

14

ありがちなこと
• ExcelやAccessで蓄えたデータをMovable Type
にインポートしたい
• でも既存のインポートプラグインでは
かゆいところに手が届かない…
• Movable Typeの記事等をExcelやAccessで処
理したい
• Movable Typeの管理画面は使わずに全部
Excelで済ませたい
• VBAなら分かるけどPerlは苦手…

15

そんなあなたに
Data API Library
For
VBA

16

Data API Library for VBA
• VBA(Visual Basic for Applications)でData
APIを扱うライブラリ
• SixApart謹製JavaScriptライブラリに近い構
文
• VBAでプログラムを組んでOfficeアプリと
Movable Typeを連携

17

デモをご覧ください

18

初期化と認証
' 初期化
Set api = New MTDataAPI
api.init BASE, CLIENT_ID
' 認証
Set params = New Scripting.Dictionary
params("username") = USERNAME
params("password") = PASSWORD
Set response = api.send("authenticate",
params)

19

記事作成部分
For i = 2 To 4
Set entry = New Scripting.Dictionary
entry("title") = Cells(i, 1).value
entry("body") = Cells(i, 2).value
entry("date") = api.convDate(Cells(i,3).value)
Set response = api.send("createEntry",
SITE_ID, entry)
Next

20

考えられる事例
• Accessと連携
• AccessのデータをMovable Typeに投入
• Wordと連携
• Wordで作成した文書をMovable Typeに投入し
てWeb化
• PowerPointとの連携
• スライドを画像に変換してMovable Typeに投
入

21

モバイルアプリのバックエンド

22

デモをご覧ください
• MTQuiz
→ Movable Typeに関する
クイズアプリ

23

クイズアプリの課題
• 出題するクイズをなるべく簡単に管理した
い
• アプリにクイズを埋め込むと管理が複雑化
• アプリとクイズデータを分離
• クイズデータをCMSで管理してインターネッ
ト経由で読み込み
Movable Type & Data API

24

Movable Typeでコンテンツを管理
• デモをご覧ください

25

Androidとの連携
Data API Library
For
Android

26

Data API Library for Android
• 拙作のData API用ライブラリ
• Androidのアプリに組み込む
• Volley(Google謹製HTTP通信ライブラリ)を
ベースに開発

27

認証
Map<String, String> params = new HashMap<String, String>();
params.put("username", USERNAME);
params.put("password", PASSWORD);
DataAPI.send("authenticate", params, new DataAPIListener() {
@Override
public void onResponse(JSONObject resp) {
// 認証成功時の処理
}
@Override
public void onError(VolleyError error) {
// 認証失敗時の処理
}
});

28

問題(記事)の読み込み
Map<String, String> params = new HashMap<String, String>();
params.put("limit",1);
params.put("offset",offset);
DataAPI.send("listEntries", SITE_ID, params,
new DataAPIListener() {
@Override
public void onResponse(JSONObject resp) {
// 読み込み成功時の処理
}
@Override
public void onError(VolleyError error) {
// 読み込み失敗時の処理
}
});

29

iOSとの連携
• Data API SDK for Swift
• シックスアパート公式
(関根元和氏作)
• Movable Type for iOSで利用

30

Swiftのコードの例
api.listSites(
success: {(result: [JSON]!, total:
Int!)-> Void in
// 通信成功時の処理
},
failure: {(error: JSON!)-> Void in
// 通信失敗時の処理
}
)

31

Raspberry PIとの連携

32

Raspberry PIの概要
• カードサイズのマイコン
• 安価(5,000円程度)
• センサー等の電子部品を接続可能
• IoT(Internet of Things)のベースとして利用
• Linuxが動作
• Raspbian(Debian系)
• 各種ディストリビューション

33

デモをご覧(お聞き)ください
• Movable Typeの記事を読み上げ
• 処理状況をLEDでお知らせ
状態 LED
記事読み込み中 赤
音声合成中 黄
音声再生中 緑

34

このシステムの構成
Raspberry PI
Movable Type
Open JTalk
Festival
(音声合成)
Data API

35

Data API Library for Python?
• Raspberry PIではPythonを多用(特に電子
工作関係)
• Data API Library for Pythonがあれば…
• Linuxで動作する言語なら何でも良いはず…

36

そこで
Data API Library
For
PHP

37

Data API Library for PHP
• 拙作のData API用ライブラリ
• PHPのプログラムからMovable Typeと通信
• PHPを含むWebページ
• PHPのスクリプト(コマンドラインから実行)

38

今回のスクリプト
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コマンドで再生
}

39

まとめ

40

CMSはWebだけのものではない
• CMS=Content Management System
• これまでのCMSはWebのコンテンツを管理
するもの
• スマートフォン/タブレットをはじめとしてコ
ンテンツの活用先が多様化
• Webコンテンツだけを管理する時代は終了

41

Data APIでWeb CMSから脱却
• Data APIでMovable Typeと様々なものを接
続可能
• Web以外にMovable Typeの使い道が広が
る
• 拙作ライブラリをぜひご利用ください

42

ご清聴ありがとうございました

More Related Content

Connect with Data API