SlideShare ist ein Scribd-Unternehmen logo
1 von 103
MT東京-34
はじめよう! Data API ハンズオン
2017年4月15日(土)
シックス・アパート株式会社
長内毅志
自己紹介
•長内毅志
–2011年~ Movable Typeプロダクトマネージャー
–2014年~ ディベロッパーリレーションマネージャー
エバンジェリスト
–趣味 ダンス (ストリート、ジャズ)
ジョギング (サブフォー)
英語の勉強 (TOEIC 875, 英検準1級)
家族と過ごすこと
ハンズオンの概要
•Movable Type と Microsoft Cognitive Services を連
携して、自動翻訳投稿システムを作ってみる
アジェンダ
• Movable Type とは
• Data APIとは
• JavaScript SDKの使い方
• 認証システムの実装
• MTへの投稿システムの実装
• Microsoft Cognitive Services と連携した翻訳システムの実装
• まとめ
今日のゴール
•Movable Type、Data API とは何か
•Data APIの使い方
•JavaScript SDKの使い方
を習得して持ち帰っていただく
•https://goo.gl/lTYLNk
突然ですが
英語で文章が書けるようになりたい!
と思ったことはありませんか?
•英語で日記やブログが書けたらかっこいい!
•でも、英語を書くのは難しい
=>
Movable Type(MT) +クラウドAIで、その夢をかなえて
みましょう
今日の内容
•MT + Microsoft の翻訳AIを組みあわせる
•文章を入力すると、英語に自動翻訳
•英語の文章をMTに投稿・公開する
…というシングルページアプリを開発します
•DEMO
今回のシステムのポイント
•MTの認証をどう実装するか
•MTのブログ記事をどのように投稿・公開するか
•Microsoft Translator Text APIをどのようにつかって
英訳するか
概念図
MTで認証を行う
Microsoft Translator Text APIで日
本語=>英語に翻訳
翻訳済みの英語文章を
MT経由でブログ記事として公開
•以下の順番でハンズオンを行っていきます。
–Data APIを使った認証の実際
–Data API経由で記事を投稿
–入力した日本語をTranslator テキスト APIで翻訳後、Data API経
由で投稿
Movable Type とは
Movable Typeとは
• 10年以上利用されているブログ・CMS(通称MT)
• MTタグ組み合わせでロジック生成
• テンプレートとDBが完全に分離している
(MVCライク)
• プラグインで拡張可能
• どんなコードも生成可能
•ブログから数万ページに及び大規模サイトまで
5万件以上の導入実績
ECサイト
イントラサイト・WEB社内報
メディアサイト・企業オウンドメディア
会員制サイト・コミュニティサイト
実績
コーポレートサイト
5万件以上の導入実績
5万件以上!
ビジネスユーザーに絶大な支持
日経平均225社の
半数以上がMTユーザー
最新10件のブログ記事をリンク付きで生成
<ul>
<MT:Entries limit="10">
<li>
<a href="<MT:EntryPermalink>">
<MT:EntryTitle>
</a>
</li>
</MT:Entries>
</ul>
•静的生成でhtmlを出力
(スタティックパブリッシング)
•動的生成も対応可能
(ダイナミックパブリッシング)
•動的、静的生成どちらも対応することで、様々なサー
バー構成に対して柔軟に対応できる
基本的な構成
公開サーバー兼
CMSサーバー
管理者
閲覧者
(サイト訪問者)
ステージング環境
ステージング
サーバー兼
CMSサーバー
公開
サーバー
管理者 閲覧者
(サイト訪問者)
冗長構成
CMS
サーバー
公開
サーバー
(冗長構成)
ロード
バランサ
静的生成
•静的なhtmlを出力します
•今日のハンズオンファイルも、htmlやphpをリアルに
出力します。
Movable Type にサインインして
記事を投稿する
この章でやること
•実際にMovable Type へサインインして、記事を投稿
します。
• 配布したアカウント情報を使っ
て、Movable Type にサインイン
します。
• サインインを行うと、初期画面「
ユーザーダッシュボード」が表示
されます。
• ウェブサイトのタブから、自分の
ID名と同じウェブサイトを選択し
ます。user01なら「user01」を選び
ます。
• 今回のハンズオンで使うウェブ
サイトの管理画面に移動します
。
• 右上に、□と斜め矢印のアイコ
ンがありますので、クリックして
みましょう。
• ハンズオンで使うウェブサイトが
表示されます。
• 記事を追加していくと、更新され
ます。
• MTの管理画面に戻ります。
• 最初の記事を作成してみましょう
。
• 左メニュー、もしくは右上のボタ
ンから「記事」を新規作成します
。
• 記事の編集画面が表示されます
。
• タイトルや文章を適当に入力しま
しょう。
• 右サイドの操作画面から「公開」
ボタンを選び、記事を公開します
。
• 最初の記事を公開しました。画
面に表示されているリンクをクリ
ックして、公開サイトを確認して
みましょう。
• 入力した記事データが、公開さ
れていることがわかります。
Data APIを触ってみる
Data APIとは
•MTのデータを操作できるAPI
•REST形式 / JSON型データでやり取りする
•データの読み込み、登録、更新、削除などが可能
•ユーザー認証も利用できる
Data API を利用したアプリ例:Movable Type for iOS
Data API を利用したサイト実装例:東京書籍様
Data API のリファレンス
•Movable Type Data API ドキュメント
–https://www.movabletype.jp/developers/data-api/
•Movable Type Data API SDKガイド
–https://github.com/movabletype/mt-data-api-sdk-
js/wiki/DataAPI-SDK-japanese-MT.DataAPI
Data API のSDK
•JavaScript
–パッケージに同梱
•Swift
–Movable Type の GitHubレポジトリ
•今日は、JavaScript SDKを使います
JavaScript SDKのインストール
•html上にJavaScript SDKを読み込ませる
• <script src=“<$MTStaticWebPath$>
data-api/v3/js/mt-data-api.js”>
</script>
• mt-static 配下にあります (MT6以降)
(sample-01)
認証を実装する
sample-01のシナリオ
•Movable Type の認証を、Data API経由で行う
•認証ができたら「認証しました」という文字を出力する
簡単なアプリを作る
• ウェブサイトのダッシュボード左
メニューから
[デザイン]=>[テンプレート]を選
びます。
• MTのテンプレート管理画面が表
示されます。
• [インデックステンプレート]内に
ある[sample-01]を選びます。
• sample-01.htmlのテンプレートが
表示されます。
• 画面下部にある[出力ファイル名
]が [sample-01.html]であること
を確認して、 [保存と再構築]ボタ
ンを押します。
• 再構築が終了すると、htmlが出
力されます。
• 画面右部にある[公開されたテン
プレートを確認]をクリックしてみ
ましょう。
• 出力したhtmlが表示されます。
画面の[サインイン]というボタンを
クリックします。
• 今回出力した、サンプルアプリ用
のサインイン画面が表示されま
す。
• 配布したIDと「ウェブサービスパ
スワード」でサインインしてみまし
ょう。
• 認証が正常に行われると[サイン
インしています]というメッセージ
が表示されます。
• 最初のアプリ「認証アプリ」が無
事に動きました。
認証アプリの仕組み
•Data API 用のJavaScript SDKを利用
•認証が成功したら、ブラウザにCookieでトークンを保
存
•記事の投稿などができるようになる
ブラウザの検証ツールで見た認証
ブラウザに保存されたトークン
もう少し深く見たい方へ
•ブラウザのCookie を一度削除して、もういちど認証
用htmlを見てみましょう。
•ブラウザの検証ツールを使って、ネットワークの流れ
を見てみましょう。
Data API の2つの認証
•Authentication
–IDとパスワードでサインインする
•Authorization
–MTのサインイン画面を呼び出す
–ウェブサイトで使うならAuthorization の方が安全
認証に関するリファレンス
•クイックスタートガイド
–https://www.movabletype.jp/developers/
data-api/quick-start/
(sample-02)
記事を投稿する
sample-02のシナリオ
•サインインしたら、フォーム画面を表示
•入力 => 投稿ボタンを押す
•MTに記事が投稿、公開される
(管理画面を使わずに記事投稿する)
•sample-02フォルダをえらぶ
•[sample-02.html]をテキストエディタ等で開きます。
• ウェブサイトのダッシュボード左
メニューから
[デザイン]=>[テンプレート]を選
びます。
• MTのテンプレート管理画面が表
示されます。
• [インデックステンプレート]内に
ある[sample-02]を選びます。
• sample-02のhtmlコードが表示さ
れます。
• 画面下部にある[出力ファイル名
]を [sample-02.html]であることを
確認して、 [保存と再構築]ボタン
を押します。
• 再構築が終了すると、htmlが出
力されます。
• 画面右部にある[公開されたテン
プレートを確認]をクリックしてみ
ましょう。
• 出力したhtmlが表示されます
• 画面の[サインイン]というボタンを
クリックします。
• 今回出力した、サンプルアプリ用
のサインイン画面が表示されま
す。
• 配布したIDと「ウェブサービスパ
スワード」でサインインしてみまし
ょう。
• MTへ投稿できるサンプルアプリ
のフォーム画面が表示されます
。
• 何か書き込んで「登録する」ボタ
ンを押します。
• 正常に登録されたというメッセー
ジが表示されたら、管理画面に
戻ります。
• 左メニューから[記事]=>[一覧]を
クリックします。
• 投稿した記事が登録されている
ことがわかります。
• 記事の編集画面を開いて、投稿
内容どおりか確認してみましょう
。
• [表示]ボタンか、右上の[サイト
の表示] ボタンをクリックします。
• 登録した記事が、公開されてい
ることが確認できます。
コードの解説
•記事を生成するエンドポイント[entries]へ、フォーム
から入力したデータを送信
•送信には、JavaScript SDKの関数
[createEntry]を使っている。
•59行目-
– const entry = {};
entry.title = $(“#title”).val();
entry.body = $("#body").val();
entry.more = $("#more").val();
api.createEntry(siteId, entry, function(response) {
Translator テキストAPIと連携して、
英訳した記事を投稿する
sample-03のシナリオ
•サインインボタンを押すと認証
•投稿画面から日本語を入力すると、英語に翻訳され
る
•投稿を行うと、英語の記事が公開される
• ウェブサイトのダッシュボード左
メニューから
[デザイン]=>[テンプレート]を選
びます。
• MTのテンプレート管理画面に戻
ります。
• [インデックステンプレート]内に
ある[sample-03-php]を選びます
。
• sample-03のphpコードが表示さ
れます。
• コードの5行目に、Microsoft
Translator テキストAPIと連携す
るための、APIキーを定義する箇
所があります。
• 次のページに記載されている、
APIキーを記述します。
• APIキーを記述します。前後のシ
ングルクオートを削除しないよう
に気をつけて下さい。
• ファイル名が[sample-03.php]で
あることを確認します。
• [保存と再構築]をクリックして、
phpファイルを出力します。
• 再構築が済んだら、終了です。
次は、htmlのフォームを出力しま
す。
• 再び、MTのテンプレート管理画
面に移動します。
• [インデックステンプレート]内に
ある[sample-03-html]を選びま
す。
• sample-03のhtmlコードが表示さ
れます。
• 画面下部にある[出力ファイル名
]を [sample-03.html]であることを
確認して、 [保存と再構築]ボタン
を押します。
• 再構築が終了すると、htmlが出
力されます。
• 画面右部にある[公開されたテン
プレートを確認]をクリックしてみ
ましょう。
公開したテンプレートを見てみましょう
• sample-03のhtmlが表示されま
す。
• 「サインイン」をクリックします。
• 今回出力した、sample-03のサイ
ンイン画面が表示されます。
• 配布したIDと「ウェブサービスパ
スワード」でサインインしてみまし
ょう。
• 投稿用のフォーム画面が表示さ
れます。
• タイトルと本文に、適当に文字を
入力します。
• 入力が終わったら、「英訳する」
ボタンをクリックします。
• Microsoft Translator テキスト
APIを通じて翻訳された英語が、
下部のフォームに表示されます
。
• 「登録する」をクリックして、英訳
した記事をMTに投稿します。
• 投稿が終わったら、ウェブサイト
の画面を確認します。
• 英訳した記事データが投稿され
ていることがわかります。
• MTの管理画面に戻って、英語の
投稿が記事として登録されてい
ることを確認してみましょう。
Microsoft Translator テキストAPIとは
• Microsoft Azure のサービス
[Cognitive Services]の一つ
• 多言語翻訳を行うAPI
Cognitive Services のラインアップ
人間の「認知」機能をクラウド上で提供
Cognitive Services の一例
•画像解析(Computer Vision API)
•MT x AI
•外部サービスとの連携で広がる可能性
リファレンス
Movable Type のリファレンス
•https://www.movabletype.jp
本日の内容
• Movable Type Data API のエンドポイントとJavaScript SDK の使い
方
–http://qiita.com/TakeshiNickOsanai/items/05120e295ee1aab59017
• Movable Type の Data API でユーザー認証を行う
–http://qiita.com/TakeshiNickOsanai/items/5508b2df13be72bf4503
本日の内容
• JavaScript を利用して Movable Type へデータを登録する
–http://qiita.com/TakeshiNickOsanai/items/274c21530f2eb2b72880
• Microsoft Translator テキスト API + Movable Type で、自動英訳
投稿アプリを作る
–http://qiita.com/TakeshiNickOsanai/items/e933df35ddf1aa07eb86
まとめ
•Data APIは、Movable Type が提供するREST型の
APIである
•Data APIを介して、データのやり取りができる
•他サービスと組み合わせることで、可能性が広がる
ありがとうございました。

Weitere ähnliche Inhalte

Ähnlich wie 20170415 mttokyo handson

「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
Yusuke Wada
 
Microsoft Teamsを使ったメッセージ通知開発
Microsoft Teamsを使ったメッセージ通知開発Microsoft Teamsを使ったメッセージ通知開発
Microsoft Teamsを使ったメッセージ通知開発
miekobari
 
Dyna traceによるuxマネジメント
Dyna traceによるuxマネジメントDyna traceによるuxマネジメント
Dyna traceによるuxマネジメント
伸夫 森本
 
Sharoid Service Menu
Sharoid Service MenuSharoid Service Menu
Sharoid Service Menu
sharoid
 
Gmo media.inc dev ops of own way
Gmo media.inc dev ops of own wayGmo media.inc dev ops of own way
Gmo media.inc dev ops of own way
Dai Utsui
 

Ähnlich wie 20170415 mttokyo handson (20)

Black Belt Online Seminar Amazon Cognito
Black Belt Online Seminar Amazon CognitoBlack Belt Online Seminar Amazon Cognito
Black Belt Online Seminar Amazon Cognito
 
和歌山ITカーニバルAWSハンズオンスライド
和歌山ITカーニバルAWSハンズオンスライド和歌山ITカーニバルAWSハンズオンスライド
和歌山ITカーニバルAWSハンズオンスライド
 
Scale Your Business without Servers
Scale Your Business without ServersScale Your Business without Servers
Scale Your Business without Servers
 
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
 
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
 
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
 
PayPalとセキュリティの関係について
PayPalとセキュリティの関係についてPayPalとセキュリティの関係について
PayPalとセキュリティの関係について
 
[AWS DevDay] Cognito / Amplify で加速するエンタープライズのアプリケーション開発
[AWS DevDay] Cognito / Amplify で加速するエンタープライズのアプリケーション開発[AWS DevDay] Cognito / Amplify で加速するエンタープライズのアプリケーション開発
[AWS DevDay] Cognito / Amplify で加速するエンタープライズのアプリケーション開発
 
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルOpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクル
 
Microsoft Teamsを使ったメッセージ通知開発
Microsoft Teamsを使ったメッセージ通知開発Microsoft Teamsを使ったメッセージ通知開発
Microsoft Teamsを使ったメッセージ通知開発
 
20170324 html5j web_paltform_study
20170324 html5j web_paltform_study20170324 html5j web_paltform_study
20170324 html5j web_paltform_study
 
Dyna traceによるuxマネジメント
Dyna traceによるuxマネジメントDyna traceによるuxマネジメント
Dyna traceによるuxマネジメント
 
Sharoid Service Menu
Sharoid Service MenuSharoid Service Menu
Sharoid Service Menu
 
Data API ことはじめ
Data API ことはじめData API ことはじめ
Data API ことはじめ
 
[AWS初心者向けWebinar] AWSを活用したモバイルアプリの開発と運用
[AWS初心者向けWebinar] AWSを活用したモバイルアプリの開発と運用[AWS初心者向けWebinar] AWSを活用したモバイルアプリの開発と運用
[AWS初心者向けWebinar] AWSを活用したモバイルアプリの開発と運用
 
Amazon Pinpoint × グロースハック活用事例集
Amazon Pinpoint × グロースハック活用事例集Amazon Pinpoint × グロースハック活用事例集
Amazon Pinpoint × グロースハック活用事例集
 
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideAuthlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
 
Gmo media.inc dev ops of own way
Gmo media.inc dev ops of own wayGmo media.inc dev ops of own way
Gmo media.inc dev ops of own way
 
概説 Data API v3
概説 Data API v3概説 Data API v3
概説 Data API v3
 
20180326 mt azure_handson_translation
20180326 mt azure_handson_translation20180326 mt azure_handson_translation
20180326 mt azure_handson_translation
 

Mehr von Six Apart

Mehr von Six Apart (20)

20180723 okubo mtc_loud_handson
20180723 okubo mtc_loud_handson20180723 okubo mtc_loud_handson
20180723 okubo mtc_loud_handson
 
20180709 pronet study
20180709 pronet study20180709 pronet study
20180709 pronet study
 
20180709 aws handson_public
20180709 aws handson_public20180709 aws handson_public
20180709 aws handson_public
 
20180702 okubo mtc_loud_handson
20180702 okubo mtc_loud_handson20180702 okubo mtc_loud_handson
20180702 okubo mtc_loud_handson
 
20180625 dev relenglish_public
20180625 dev relenglish_public20180625 dev relenglish_public
20180625 dev relenglish_public
 
20180628 sappor alibaba_event
20180628 sappor alibaba_event20180628 sappor alibaba_event
20180628 sappor alibaba_event
 
20180411 monaca ug_lt
20180411 monaca ug_lt20180411 monaca ug_lt
20180411 monaca ug_lt
 
20180228 jazug
20180228 jazug20180228 jazug
20180228 jazug
 
20180228 aws handson_public
20180228 aws handson_public20180228 aws handson_public
20180228 aws handson_public
 
20180214 okubo mt_cloud_handson
20180214 okubo mt_cloud_handson20180214 okubo mt_cloud_handson
20180214 okubo mt_cloud_handson
 
20171023 mt azure_handson
20171023 mt azure_handson20171023 mt azure_handson
20171023 mt azure_handson
 
20170922 cms security_public
20170922 cms  security_public20170922 cms  security_public
20170922 cms security_public
 
20170926 aws handson_public
20170926 aws handson_public20170926 aws handson_public
20170926 aws handson_public
 
20170921 smartphone apli_seminar_public
20170921 smartphone apli_seminar_public20170921 smartphone apli_seminar_public
20170921 smartphone apli_seminar_public
 
20170905 dev rellt_public
20170905 dev rellt_public20170905 dev rellt_public
20170905 dev rellt_public
 
20170801 monaca ug_lt_public
20170801 monaca ug_lt_public20170801 monaca ug_lt_public
20170801 monaca ug_lt_public
 
20170713 smartphone apli_seminar_public
20170713 smartphone apli_seminar_public20170713 smartphone apli_seminar_public
20170713 smartphone apli_seminar_public
 
20170624 cms idobata_kaigi
20170624 cms idobata_kaigi20170624 cms idobata_kaigi
20170624 cms idobata_kaigi
 
20170609 dev rel_meetup
20170609 dev rel_meetup20170609 dev rel_meetup
20170609 dev rel_meetup
 
20170602 aws lt_public
20170602 aws lt_public20170602 aws lt_public
20170602 aws lt_public
 

20170415 mttokyo handson