Connect with Data API

532 views

Published on

MTDDC Meetup TOKYO 2016でお話しした「Connect with Data API」のスライドです

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
532
On SlideShare
0
From Embeds
0
Number of Embeds
487
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Connect with Data API

  1. 1. Connect with Data API 2016/11/12 MTDDC Meetup TOKYO 2016 藤本 壱
  2. 2. 今日のアジェンダ • 自己紹介 • Data APIの概要 • Excelとの連携 • モバイルアプリのバックエンド • Raspberry PIとの連携 • まとめ
  3. 3. 自己紹介
  4. 4. 自己紹介その1 • 藤本 壱(ふじもと はじめ) • 群馬県前橋市在住 • 本職はPC系のフリーライター • Movable Typeのプラグインを 多数開発 4
  5. 5. 自己紹介その2 • ブログ「The Blog of H.Fujimoto」 http://www.h-fj.com/blog/ 5
  6. 6. Data APIの概要
  7. 7. Data APIとは • Movable Type 6で追加された機能 • RESTでMovable Typeのデータにアクセス 例)記事にアクセス http://…/mt-data-api.cgi/v3/sites/X/entries/Y • 処理結果はJSON • プログラム言語を問わない • 公式ライブラリあり(JavaScript/Swift)
  8. 8. JavaScriptライブラリのコードの例 var api = new MT.DataAPI({ baseUrl: 'http://…/mt-data-api.cgi', clientId: 'example' }); api.listEntries(site_id, function(response){ // response.itemsが記事の配列 });
  9. 9. Data APIの事例(Web製作向け) • 各種の動的出力 • ページネーション • 検索 • 独自の管理画面
  10. 10. Data APIの事例(Web製作向け) • SixApartのごはんレシピ http://makanai.sixapart.jp/
  11. 11. Data APIの事例(Web製作向け) • 独自の管理画面 → 「MT7を先取り!? DataAPI と Riot.js で作 るユーザフレンドリーなダッシュボード」の セッション(15時~)
  12. 12. Web製作以外でのData API利用 • 理論的にはさまざまな応用が可能 • 事例がほとんどない • 公式ライブラリも少ない Web製作以外の事例をご紹介
  13. 13. Excelとの連携
  14. 14. ありがちなこと • ExcelやAccessで蓄えたデータをMovable Type にインポートしたい • でも既存のインポートプラグインでは かゆいところに手が届かない… • Movable Typeの記事等をExcelやAccessで処 理したい • Movable Typeの管理画面は使わずに全部 Excelで済ませたい • VBAなら分かるけどPerlは苦手…
  15. 15. そんなあなたに Data API Library For VBA
  16. 16. Data API Library for VBA • VBA(Visual Basic for Applications)でData APIを扱うライブラリ • SixApart謹製JavaScriptライブラリに近い構 文 • VBAでプログラムを組んでOfficeアプリと Movable Typeを連携
  17. 17. デモをご覧ください
  18. 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. 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. 20. 考えられる事例 • Accessと連携 • AccessのデータをMovable Typeに投入 • Wordと連携 • Wordで作成した文書をMovable Typeに投入し てWeb化 • PowerPointとの連携 • スライドを画像に変換してMovable Typeに投 入
  21. 21. モバイルアプリのバックエンド
  22. 22. デモをご覧ください • MTQuiz → Movable Typeに関する クイズアプリ
  23. 23. クイズアプリの課題 • 出題するクイズをなるべく簡単に管理した い • アプリにクイズを埋め込むと管理が複雑化 • アプリとクイズデータを分離 • クイズデータをCMSで管理してインターネッ ト経由で読み込み Movable Type & Data API
  24. 24. Movable Typeでコンテンツを管理 • デモをご覧ください
  25. 25. Androidとの連携 Data API Library For Android
  26. 26. Data API Library for Android • 拙作のData API用ライブラリ • Androidのアプリに組み込む • Volley(Google謹製HTTP通信ライブラリ)を ベースに開発
  27. 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. 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. 29. iOSとの連携 • Data API SDK for Swift • シックスアパート公式 (関根元和氏作) • Movable Type for iOSで利用
  30. 30. Swiftのコードの例 api.listSites( success: {(result: [JSON]!, total: Int!)-> Void in // 通信成功時の処理 }, failure: {(error: JSON!)-> Void in // 通信失敗時の処理 } )
  31. 31. Raspberry PIとの連携
  32. 32. Raspberry PIの概要 • カードサイズのマイコン • 安価(5,000円程度) • センサー等の電子部品を接続可能 • IoT(Internet of Things)のベースとして利用 • Linuxが動作 • Raspbian(Debian系) • 各種ディストリビューション
  33. 33. デモをご覧(お聞き)ください • Movable Typeの記事を読み上げ • 処理状況をLEDでお知らせ 状態 LED 記事読み込み中 赤 音声合成中 黄 音声再生中 緑
  34. 34. このシステムの構成 Raspberry PI Movable Type Open JTalk Festival (音声合成) Data API
  35. 35. Data API Library for Python? • Raspberry PIではPythonを多用(特に電子 工作関係) • Data API Library for Pythonがあれば… • Linuxで動作する言語なら何でも良いはず…
  36. 36. そこで Data API Library For PHP
  37. 37. Data API Library for PHP • 拙作のData API用ライブラリ • PHPのプログラムからMovable Typeと通信 • PHPを含むWebページ • PHPのスクリプト(コマンドラインから実行)
  38. 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. 39. まとめ
  40. 40. CMSはWebだけのものではない • CMS=Content Management System • これまでのCMSはWebのコンテンツを管理 するもの • スマートフォン/タブレットをはじめとしてコ ンテンツの活用先が多様化 • Webコンテンツだけを管理する時代は終了
  41. 41. Data APIでWeb CMSから脱却 • Data APIでMovable Typeと様々なものを接 続可能 • Web以外にMovable Typeの使い道が広が る • 拙作ライブラリをぜひご利用ください
  42. 42. ご清聴ありがとうございました

×