connect with data api

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

Upload: hajime-fujimoto

Post on 16-Apr-2017

632 views

Category:

Technology


0 download

TRANSCRIPT

Connect with Data API2016/11/12

MTDDC Meetup TOKYO 2016

藤本 壱

今日のアジェンダ

• 自己紹介

• Data APIの概要

• Excelとの連携

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

• Raspberry PIとの連携

• まとめ

自己紹介

自己紹介その1

• 藤本 壱(ふじもと はじめ)

• 群馬県前橋市在住

• 本職はPC系のフリーライター

• Movable Typeのプラグインを多数開発

4

自己紹介その2• ブログ「The Blog of H.Fujimoto」

http://www.h-fj.com/blog/

5

Data APIの概要

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が記事の配列});

Data APIの事例(Web製作向け)

• 各種の動的出力

• ページネーション

• 検索

• 独自の管理画面

Data APIの事例(Web製作向け)

• SixApartのごはんレシピhttp://makanai.sixapart.jp/

Data APIの事例(Web製作向け)

• 独自の管理画面→ 「MT7を先取り!? DataAPI と Riot.js で作

るユーザフレンドリーなダッシュボード」のセッション(15時~)

Web製作以外でのData API利用

• 理論的にはさまざまな応用が可能

• 事例がほとんどない

• 公式ライブラリも少ない

Web製作以外の事例をご紹介

Excelとの連携

ありがちなこと

• ExcelやAccessで蓄えたデータをMovable Typeにインポートしたい

• でも既存のインポートプラグインではかゆいところに手が届かない…

• Movable Typeの記事等をExcelやAccessで処理したい

• Movable Typeの管理画面は使わずに全部Excelで済ませたい

• VBAなら分かるけどPerlは苦手…

そんなあなたに

Data API LibraryForVBA

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に投入

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

デモをご覧ください

• MTQuiz→ Movable Typeに関するクイズアプリ

クイズアプリの課題

• 出題するクイズをなるべく簡単に管理したい

• アプリにクイズを埋め込むと管理が複雑化

• アプリとクイズデータを分離

• クイズデータをCMSで管理してインターネット経由で読み込み

Movable Type & Data API

Movable Typeでコンテンツを管理

• デモをご覧ください

Androidとの連携

Data API LibraryFor

Android

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) {

// 読み込み失敗時の処理}

});

iOSとの連携

• Data API SDK for Swift• シックスアパート公式

(関根元和氏作)• Movable Type for iOSで利用

Swiftのコードの例

api.listSites(success: {(result: [JSON]!, total:

Int!)-> Void in// 通信成功時の処理

},failure: {(error: JSON!)-> Void in

// 通信失敗時の処理}

)

Raspberry PIとの連携

Raspberry PIの概要

• カードサイズのマイコン

• 安価(5,000円程度)• センサー等の電子部品を接続可能

• IoT(Internet of Things)のベースとして利用

• Linuxが動作

• Raspbian(Debian系)• 各種ディストリビューション

デモをご覧(お聞き)ください

• Movable Typeの記事を読み上げ

• 処理状況をLEDでお知らせ

状態 LED記事読み込み中 赤

音声合成中 黄

音声再生中 緑

このシステムの構成

Raspberry PI

Movable Type

Open JTalkFestival

(音声合成)

Data API

Data API Library for Python?

• Raspberry PIではPythonを多用(特に電子工作関係)

• Data API Library for Pythonがあれば…• Linuxで動作する言語なら何でも良いはず…

そこで

Data API LibraryForPHP

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の使い道が広がる

• 拙作ライブラリをぜひご利用ください

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