SlideShare a Scribd company logo
1 of 55
Data APIで作る
スマホアプリ
2016/02/22
エムロジック株式会社 関根元和
@MT東京-21 Data API 3.0
自己紹介
関根元和
エムロジック株式会社 取締役
iOSアプリの開発をしています
StoryEditor、ペタろう、PiloWeb、
MovableType日本語版、CuteDbook、Twit
、BPM、ミイル、SUGARWAVE、トレタ
、SENSEINOTE
Movable Type for iOS
CHEEBOW
週末音楽家
作曲、編曲、プロデュース
ライブアイドルを中心に楽曲提供していま
す
夢眠ねむ(でんぱ組.inc)
ディアステージアイドル部
愛乙女★DOLL
COSMIC STAGE
Doll☆Elements
Jewel Kiss
逢沢ありあ
T!P
丸山夏鈴
asfi
佐野友里子(愛乙女★DOLL)
Honey Squash
ハックガールズ
白鹿はるの
飴涙める
Luce Twinkle Wink☆
マボロシ可憐GeNE
留守番ガールズ
ハピドル〜Happy Idol Project〜
佐原百音
Ange☆Reve
PIP: Platonics Idol Platform
PICK UP GIRLS」
Carnival☆Stars
RYUKYU IDOL
じぇるの!
S☆UTHERN CROSS
Lovin&S
SnowRabbit feat. 鈴木ゆき
LasRabbi
神宿
CAMOUFLAGE
割とガチ
Movable Typeとわたし
iOSアプリ開発
必要なもの
Mac
Xcode
Apple Developer Program
iPhone
Mac
Mac
iMac
MacBook Pro
MacBook Air
Macならどれでも大丈夫です!
OS X Yosemite 10.10.5以上
Xcode
Xcode
アプリを作るために必要なものが全部入って
います
しかも無料!
Mac App Storeからダウンロードできます
最新バージョンはXcode 7。iOS 9に対応させ
るにはXcode 7が必要です!
Apple Developer
Program
Apple Developer
Program
App Storeでアプリを配布するために必要
年間参加費 11,800円
たとえ配布するのが無料アプリでも、年間
参加費が必要です
新しいOSもいち早く試すことができます
iPhone
iPhone
開発そのものは実機がなくてもできます
しかし、リリース前には「ほんとに動くのか
」確認した方が良いでしょう
普段使っているiPhoneでも大丈夫です
iPadにも対応させるならiPadでの確認も必要
です
開発言語
Objective-C
Swift
Objective-C
C言語+オブジェクト指向
float ver = [[[UIDevice currentDevice] systemVersion] floatValue];
if (ver >= 7.0) {
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}
Objective-C
第一印象
なんか大カッコ([])多すぎ
気持ち悪い…
Swift
2014年生まれの新しい言語
オープンソース
Objective-Cよりスッキリしたコードが書け
ます
let ver = (UIDevice.currentDevice().systemVersion as NSString).floatValue
if ver >= 7.0 {
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
}
Swift
すっきり!
今選ぶならSwiftでしょう
ただし、Objective-Cの知識も必要になるこ
とがあります
DataAPIを使う
DataAPIを使ってMovable Typeにアクセス
します
iOSアプリ開発では、Swiftで書かれたSDK
を使います
Swift用SDK
https://github.com/movabletype/mt-data-
api-sdk-swift
CocoaPods
https://cocoapods.org/
Mac アプリや iOS アプリ開発者向けのラ
イブラリ管理ツール
CocoaPodsを使えば簡単にDataAPI SDKを
組み込めます
platform :ios, '8.0'
use_frameworks!
pod 'MTDataAPI-SDK'
pod install
CocoaPodsの使い方
詳しくは公式ペー
ジを参照
https://guides.coco
apods.org/
ブログ一覧の取得
import MTDataAPI_SDK
let api = DataAPI.sharedInstance
api.APIBaseURL = “http://host/mt/mt-data-api.cgi"
api.authentication("username", password: "password", remember: true,
success:{_ in
api.listSites(
success: {(result: [JSON]!, total: Int!)-> Void in
print(items)
},
failure: {(error: JSON!)-> Void in
}
)
},
failure: {(error: JSON!)-> Void in
}
)
記事の作成
import MTDataAPI_SDK
let api = DataAPI.sharedInstance
api.APIBaseURL = "http://host/mt/mt-data-api.cgi"
var entry = [String:String]()
entry["title"] = "title"
entry["body"] = "text"
entry["status"] = "Publish"
api.authentication("username", password: "password", remember: true,
success:{_ in
api.createEntry(siteID: "1", entry: entry,
success: {(result: JSON!)-> Void in
print(result)
},
failure: {(error: JSON!)-> Void in
}
)
},
failure: {(error: JSON!)-> Void in
}
)
画像のアップロード
import MTDataAPI_SDK
let api = DataAPI.sharedInstance
api.APIBaseURL = “http://host/mt/mt-data-api.cgi"
api.authentication("username", password: "password", remember: true,
success: {_ in
let image = UIImage(named:"photo")
let data = UIImageJPEGRepresentation(image!, 1.0)
api.uploadAssetForSite("1",
assetData: data!,
fileName: "photo.jpeg",
options: ["path":"/images", "autoRenameIfExists":"true"],
success: {(result: JSON!)-> Void in
print(result)
},
failure: {(error: JSON!)-> Void in
}
)
},
failure: {(error: JSON!)-> Void in
}
)
DataAPIで広がる世界
DataAPIを使った
チャットアプリ
仕組み
Movable Typeの記事 = チャットルーム
記事へのコメント = 発言
デモ
JSQMessagesViewContr
oller
オープンソースのチャットUIライブラリ
https://github.com/jessesquires/JSQMessa
gesViewController
メッセージ送信
var comment = [String:String]()
comment["body"] = text
self.inputToolbar?.contentView?.rightBarButtonItem?.enabled = false
self.api.authentication(USERNAME, password: PASSWORD, remember: true,
success:{_ in
self.api.createCommentForEntry(
siteID: self.SITE_ID,
entryID: self.ENTRY_ID,
comment: comment,
success: {(result: JSON!)-> Void in
self.inputToolbar?.contentView?.rightBarButtonItem?.enabled = true
self.finishSendingMessageAnimated(true)
self.receiveMessage()
},
failure: {(error: JSON!)-> Void in
self.inputToolbar?.contentView?.rightBarButtonItem?.enabled = true
}
)
},
failure: {(error: JSON!)-> Void in
self.inputToolbar?.contentView?.rightBarButtonItem?.enabled = true
}
)
メッセージ受信
let options = [
"limit":"100",
"no_text_filter":"1",
"fields":"author,body"
]
self.api.authentication(USERNAME, password: PASSWORD, remember: true,
success:{_ in
self.api.listCommentsForEntry(
siteID: self.SITE_ID,
entryID: self.ENTRY_ID,
options: options,
success: {(items:[JSON]!, total:Int!)-> Void in
self.messagesFromJSON(items)
},
failure: {(error: JSON!)-> Void in
}
)
},
failure: {(error: JSON!)-> Void in
}
)
再構築
どうせデータにアクセスするだけなので
テンプレートは空でもいいのでは
再構築のない世界へ(笑)
APIに「再構築しない」オプションが追加
されるといいなぁ……
MT≠CMS
Blogツールとして生まれたMT
CMSと進化し
そして、Webアプリのバックエンドへ
興味のある方は
https://github.com/cheebow/MTChatApp
プロジェクトがダウンロードできます
まとめ
DataAPI + iOS
Movable Typeをカスタマイズ自由なWeb
アプリケーションのバックエンドとして
DataAPIで簡単にアクセス
夢が広がりますね!
iOSアプリ開発
iOSアプリの開発は敷居が高いかも……
そんな時は、ぜひ、エムロジック株式会社
にお問い合わせください!
質疑応答
おしまい

More Related Content

What's hot

Starlingで何本かゲームを作ってみての感想[第3回 東京ひよこの会]
Starlingで何本かゲームを作ってみての感想[第3回 東京ひよこの会]Starlingで何本かゲームを作ってみての感想[第3回 東京ひよこの会]
Starlingで何本かゲームを作ってみての感想[第3回 東京ひよこの会]funyamora
 
楽しい!に敏感であること
楽しい!に敏感であること楽しい!に敏感であること
楽しい!に敏感であることssuser2dc1cb
 
キャラサミ「渚の妖精ぎばさちゃん」20141124
キャラサミ「渚の妖精ぎばさちゃん」20141124キャラサミ「渚の妖精ぎばさちゃん」20141124
キャラサミ「渚の妖精ぎばさちゃん」20141124Katsushiro Koizumi
 
彼女造ったへの道
彼女造ったへの道彼女造ったへの道
彼女造ったへの道haru2036
 
Swift Optional without Syntax Sugar
Swift Optional without Syntax SugarSwift Optional without Syntax Sugar
Swift Optional without Syntax SugarHisakuni Fujimoto
 
niconico_chokaigi20120427
niconico_chokaigi20120427niconico_chokaigi20120427
niconico_chokaigi20120427Shin Semiya
 
WP-D Fes03 Osaka Kitamura Tah
WP-D Fes03 Osaka Kitamura TahWP-D Fes03 Osaka Kitamura Tah
WP-D Fes03 Osaka Kitamura TahTakashi Kitamura
 
クラウドストレージを使って音声投稿サイトを作った話
クラウドストレージを使って音声投稿サイトを作った話クラウドストレージを使って音声投稿サイトを作った話
クラウドストレージを使って音声投稿サイトを作った話dokechin
 

What's hot (9)

Starlingで何本かゲームを作ってみての感想[第3回 東京ひよこの会]
Starlingで何本かゲームを作ってみての感想[第3回 東京ひよこの会]Starlingで何本かゲームを作ってみての感想[第3回 東京ひよこの会]
Starlingで何本かゲームを作ってみての感想[第3回 東京ひよこの会]
 
Kawazとは
KawazとはKawazとは
Kawazとは
 
楽しい!に敏感であること
楽しい!に敏感であること楽しい!に敏感であること
楽しい!に敏感であること
 
キャラサミ「渚の妖精ぎばさちゃん」20141124
キャラサミ「渚の妖精ぎばさちゃん」20141124キャラサミ「渚の妖精ぎばさちゃん」20141124
キャラサミ「渚の妖精ぎばさちゃん」20141124
 
彼女造ったへの道
彼女造ったへの道彼女造ったへの道
彼女造ったへの道
 
Swift Optional without Syntax Sugar
Swift Optional without Syntax SugarSwift Optional without Syntax Sugar
Swift Optional without Syntax Sugar
 
niconico_chokaigi20120427
niconico_chokaigi20120427niconico_chokaigi20120427
niconico_chokaigi20120427
 
WP-D Fes03 Osaka Kitamura Tah
WP-D Fes03 Osaka Kitamura TahWP-D Fes03 Osaka Kitamura Tah
WP-D Fes03 Osaka Kitamura Tah
 
クラウドストレージを使って音声投稿サイトを作った話
クラウドストレージを使って音声投稿サイトを作った話クラウドストレージを使って音声投稿サイトを作った話
クラウドストレージを使って音声投稿サイトを作った話
 

Data APIで作る スマホアプリ