SlideShare a Scribd company logo
Movable Type Data API連携!
店舗情報を地図に表⽰させよう!
【Swift&Movable Typeコラボ!】
Swiftビギナーズ勉強会
第20回 at ⽇本マイクロソフト株式会社
Self-Intoroduction
エンジニア(Rails/Swift/AWS/Linux)
アウトプットを主軸においた、勉強会を運営しています:)
Click
Engineer@Life is Tech !
全国書店販売中!
~Swiftではじめるプログラミングの第⼀歩~
これからつくるiPhoneアプリ開発⼊⾨
[ Swift3 &Xcode8対応 ]
Swiftビギナーズ倶楽部から⽣まれた!
https://swiftbg.github.io/swiftbook/
書籍公式サイト
執筆しました🤗
サンプルアプリ
Tips公開
1/21(⼟)・22(⽇)ハンズオンセミナー開催🔰
講師は「これからつくるiPhoneアプリ開発⼊⾨」の
著者陣と、iOSアプリ開発のエキスパートが担当します。
⼀緒にモノづくりの楽しさを体験しましょう😊
参加者にはブックレビュープレゼント🎁
執筆陣が、楽しみながらプログラミングを勉強したり
アプリ開発を継続して学ぶ⽅法をお話しします😊
APIの情報を検索📱
Sample App
TableViewに⼀覧表⽰
現在位置と店舗までの
距離を表⽰
👈
👈
画⾯遷移
地図を表⽰
地図にピンを⽴てる
店舗情報を表⽰
Sample App
👈
DEMO
1)MTのカスタムフィールドに位置情報を追加
2)現在位置からの距離を計算
3)位置情報から地図にピンを⽴てる!
Today's Agenda
1)MTのカスタムフィールドに位置情報を追加
カスタムフィールドとは⁉
Movable Typeで
⼊⼒項⺫を
追加できる機能
Movable Typeの記事作成画⾯の
デフォルト⼊⼒項⺫
タイトル
本⽂
概要
キーワード
タグ
1)MTのカスタムフィールドに位置情報を追加
位置情報を⼊⼒する欄を追加
1)MTのカスタムフィールドに位置情報を追加
Data APIにアクセス
// URLオブジェクトの⽣成
var URL = Foundation.URL(string: "http://(mtHost)/(mtPath)/mt-data-api.cgi/v3/search?search=
(keyword_encode!)")
・・・省略
// リンクオブジェクトの⽣成
let req = URLRequest(url: URL!)
// セッション情報を取り出し
let session = URLSession(configuration: configuration, delegate: nil, delegateQueue: OperationQueue.main)
// リクエストをタスクとして登録
let task = session.dataTask(with: req, completionHandler: {
(data , request , error) in
  ・・・・取得した店舗情報をセットする処理
})
// ダウンロード開始
task.resume()
エンドポイントを指定
2)現在位置からの距離を計算
// 現在位置情報
let now_point: CLLocation = CLLocation(latitude: now_latitude, longitude: now_longitude)
// ⾏き先位置情報
let go_point: CLLocation = CLLocation(latitude: go_latitude, longitude: go_longitude)
// 現在地から⾏き先までの距離
distance = go_point.distance(from: now_point)
CLLocationクラスを利⽤して
現在位置と⾏き先の距離を計算
🔰注意するポイント:緯度経度情報はDouble型で
          取り扱う必要があります。
マップを扱うには・・・
import MapKit
MapKitフレームワークを利⽤して
マップを表⽰
3)位置情報からマップにピンを⽴てる!
// 位置情報や電⼦コンパスの機能を使いたい場合は
  CLLocationManagerクラスを使⽤
let locationManager = CLLocationManager()
// 位置情報は、CLLocationDegrees型で保持
// 緯度
var latitude: CLLocationDegrees = 0
// 経度
var longitude: CLLocationDegrees = 0
// 位置情報を設定
let coordinate = CLLocationCoordinate2DMake(latitude, longitude)
// 表⽰領域を設定
let span = MKCoordinateSpanMake(0.005, 0.005)
let region = MKCoordinateRegionMake(coordinate, span)
// ピンを利⽤するには、MKPointAnnotation
let annotation = MKPointAnnotation()
annotation.coordinate = CLLocationCoordinate2DMake(latitude, longitude)
// 店舗情報をセット
annotation.title = shop_info
// ピンを⽴てる
self.dispMap.setRegion(region, animated:true)
self.dispMap.addAnnotation(annotation)
CLLocationCoordinate2DMakeクラスを
利⽤してピンを⽴てる
3)位置情報からマップにピンを⽴てる!
📱iOS9以降は、⾃由に⾊を変更可能
// Cellが選択された際に呼び出されるdelegateメソッド
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// 地図に渡す値を取得
map_latitude = Double(recipeList[indexPath.row].shop_latitude)!
map_longitude = Double(recipeList[indexPath.row].shop_longtude)!
shop_info = recipeList[indexPath.row].name
// 地図に画⾯遷移
performSegue(withIdentifier: "goMap", sender: nil)
}
// 地図に渡す値をセットするメソッド
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let MapViewController:MapViewController = segue.destination as! MapViewController
MapViewController.latitude = map_latitude
MapViewController.longitude = map_longitude
MapViewController.shop_info = shop_info
}
検索画⾯から、地図に情報を引き渡す
3)位置情報からマップにピンを⽴てる!
全国書店販売中!
~Swiftではじめるプログラミングの第⼀歩~
これからつくるiPhoneアプリ開発⼊⾨
[ Swift3 &Xcode8対応 ]
この本の機能を組み合わせてます😆
https://swiftbg.github.io/swiftbook/
書籍公式サイト
サンプルアプリ
Tips公開
補 ⾜
SwiftyJSON
Alamofire-SwiftyJSON
json-swift
Argo
https://github.com/thoughtbot/Argo
https://github.com/owensd/json-swift
https://github.com/SwiftyJSON/Alamofire-SwiftyJSON
https://github.com/SwiftyJSON/SwiftyJSON
★13,053
★971
★743
★2,854
JSONを扱いやすくしてくれるライブラリ
https://github.com/mustacheyork/
MTSearchSwift
本⽇のサンプルコードはこちら
Let's study together!
Thank you :)

More Related Content

PDF
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
PDF
Swift 1.2からSwift 2への移行 #cocoa_kansai
PDF
Xcode and iTC submission topics
PDF
SwiftでAndroidアプリ書けるってよ
PDF
3日でスマホアプリリリースしたけど質問ある?
PDF
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
PDF
Swift歴2ヶ月でアプリを8本リリースしてみた話
PDF
SwiftとReactNativeで似たようなUIを作った際の記録
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
Swift 1.2からSwift 2への移行 #cocoa_kansai
Xcode and iTC submission topics
SwiftでAndroidアプリ書けるってよ
3日でスマホアプリリリースしたけど質問ある?
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
Swift歴2ヶ月でアプリを8本リリースしてみた話
SwiftとReactNativeで似たようなUIを作った際の記録

What's hot (20)

PDF
iOSでのFramework導入のおさらい #関モバ
PDF
Source kittenについて
PDF
Ninja framework使ってみた
PDF
Xcode で gulp を使うお話
PDF
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
PPTX
CodeIgniterのライセンスについて
ODP
Chibapm01 lt
PDF
RxSwiftとMVVMパターンと仲良くなる次のステップ
PDF
Approach of Prototyping for making Application User Interface about iOS
PDF
2022年の抱負とここ数年続けてきたインプット
PDF
Himotoki: A type-safe JSON decoding library #関モバ
PDF
Carthageについて知りたいn個のこと
PPTX
Master-Detail App を実装する
PDF
できることから始めるOss活動
KEY
App Inventor@夏サミOpenJam2012
PDF
少しずつキャッチアップしていくAndroidアプリ開発
KEY
iPhoneアプリ開発を楽に楽しくするサイトまとめ
PDF
開発中のiOSアプリ紹介 #okamoba
PPTX
OmegaTでドキュメント翻訳
iOSでのFramework導入のおさらい #関モバ
Source kittenについて
Ninja framework使ってみた
Xcode で gulp を使うお話
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
CodeIgniterのライセンスについて
Chibapm01 lt
RxSwiftとMVVMパターンと仲良くなる次のステップ
Approach of Prototyping for making Application User Interface about iOS
2022年の抱負とここ数年続けてきたインプット
Himotoki: A type-safe JSON decoding library #関モバ
Carthageについて知りたいn個のこと
Master-Detail App を実装する
できることから始めるOss活動
App Inventor@夏サミOpenJam2012
少しずつキャッチアップしていくAndroidアプリ開発
iPhoneアプリ開発を楽に楽しくするサイトまとめ
開発中のiOSアプリ紹介 #okamoba
OmegaTでドキュメント翻訳
Ad

Similar to Movable Type Data API連携!店舗情報を地図に表示させよう! (20)

PDF
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
PDF
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
PDF
Swiftビギナーズ勉強会 第1回 @Co-Edo
PDF
Swiftの魅力と可能性 2
PDF
Rubyを楽しくする第一歩!ブロックを理解する!
PDF
第7回 カジュアル Swift 勉強会 @ 青葉台 オープニング #cswift
PDF
React Nativeの話のその前に… サービスの作り方の話
PDF
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
PDF
Swiftビギナーズ倶楽部 vol.2
PDF
はじめてのiOSアプリ開発 ①
PPTX
iOS13 SDK による 全機能置き換え Part1
PPTX
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
PDF
SwiftによるiOS開発再入門
PDF
第1回 コデアルiOSアプリ勉強会
PPTX
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
PPT
Html5 js waffle
PPTX
Movable Type Data API Swiftアプリ作成事例
PDF
開発技術対決! Dots.カンファレンス エキシビジョン iOS代表
PDF
モバイル開発者から見た サーバーレスアーキテクチャ
PDF
OpenCV on mobile
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
Swiftビギナーズ勉強会 第1回 @Co-Edo
Swiftの魅力と可能性 2
Rubyを楽しくする第一歩!ブロックを理解する!
第7回 カジュアル Swift 勉強会 @ 青葉台 オープニング #cswift
React Nativeの話のその前に… サービスの作り方の話
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
Swiftビギナーズ倶楽部 vol.2
はじめてのiOSアプリ開発 ①
iOS13 SDK による 全機能置き換え Part1
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
SwiftによるiOS開発再入門
第1回 コデアルiOSアプリ勉強会
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Html5 js waffle
Movable Type Data API Swiftアプリ作成事例
開発技術対決! Dots.カンファレンス エキシビジョン iOS代表
モバイル開発者から見た サーバーレスアーキテクチャ
OpenCV on mobile
Ad

More from Kanako Kobayashi (18)

PDF
Xcodeのデバッグを極めよう!
PDF
Swiftオープンソース化ってなんですか?
PDF
Railsで非同期処理を実装しよう!!
PDF
Swiftで、Webサーバにデータを送信・登録しよう!
PDF
楽しいSwift!クラスと構造体を知る:)
PDF
WordPressの構造を理解しよう
PDF
Swiftで外部ライブラリを使ってみよう
PDF
Ruby on Railsではじめるrspecテスト
PDF
oEmbedで、色んなコンテンツをWordPressに組み込もう!
PDF
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
PDF
シェイクを検知して学ぼう、モーションイベント!
PDF
Railsから学ぶRESTfulなuri設計
PDF
Svgアニメーションを実装してみよう 20150207
PDF
railsはじめの一歩
PDF
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
PDF
20141220_iOS8マルチデバイス対応(Size Classes編)
PDF
Swiftビギナーズ勉強会 第一回@Co-Edo
PDF
Gulp De wordpress in WordBench
Xcodeのデバッグを極めよう!
Swiftオープンソース化ってなんですか?
Railsで非同期処理を実装しよう!!
Swiftで、Webサーバにデータを送信・登録しよう!
楽しいSwift!クラスと構造体を知る:)
WordPressの構造を理解しよう
Swiftで外部ライブラリを使ってみよう
Ruby on Railsではじめるrspecテスト
oEmbedで、色んなコンテンツをWordPressに組み込もう!
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
シェイクを検知して学ぼう、モーションイベント!
Railsから学ぶRESTfulなuri設計
Svgアニメーションを実装してみよう 20150207
railsはじめの一歩
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
20141220_iOS8マルチデバイス対応(Size Classes編)
Swiftビギナーズ勉強会 第一回@Co-Edo
Gulp De wordpress in WordBench

Movable Type Data API連携!店舗情報を地図に表示させよう!