Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Connect with Data API

887 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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. ご清聴ありがとうございました

×