SlideShare a Scribd company logo
1 of 23
Download to read offline
自己紹介
• @mo_to_44
• 株式会社ネクストで

  HOME S(不動産検索アプリ)のiOSエンジニア
• 最近はアプリ向けのAPIをつくるためにRuby書いた
り
自己紹介
• 個人でもカメラアプリと
か作ってます
•   リボカメ
• ベスト新着 App に選出さ
れました
SwiftBond
https://github.com/SwiftBond/Bond
SwiftBond
• データや状態の変化とViewをバインディング
• データバインディングのSwift製ライブラリ
• 現在のバージョンは4.2.0
SwiftBond
• データバインディング(データバインド、あるいはData Bindingの
訳からデータ結合とも呼ばれる。)とは、XMLなどのデータソース
とアプリケーションやウェブページ(ウェブアプリケーション)の
ユーザインタフェースを静的または動的に結合する技術である。
• 分離されたデータソースとユーザインタフェースの間を橋渡しする
役割を果たし、データが変更されるとそれに応じてユーザインタ
フェースが変更される一方向なデータバインディングと、併せてユー
ザインタフェースの変更または操作に応じてデータが変更される双
方向のデータバインディングがある。
データバインディングとは
wikipediaより
概要
画面構成
• 画面を構成するパーツは3つ
1. UITextView
2. UILabel
3. UIButton
画面仕様
• UITextFieldに対してテキスト
を入力すると、入力した文字
列がUILabelに反映される
• UITextFieldsに入力された文字
が8文字以上になったら
UIButtonをenableにし、8文
字未満の場合はdisableにする
ViewModel
• 入力されたテキストをObservableで保持
• ObservableはSwiftBondで用意されている
ラッピングされた型を監視可能にするジェ
ネリッククラス
Binding
• ->> は単方向バインディングを行うための
SwiftBondで定義されている演算子
Binding
• プロパティにあるbnd_textはSwiftBondの中で
extension定義されている
Binding
• textFieldに入力されたテキストとViewModel
のtextをバインディング
Binding
• viewModelのtextとlabelのテキストをバイン
ディング
Binding
• この2つの処理でtextFieldに入力された文字列
がlabelにも反映されるように
Binding
• viewModelの文字数とbuttonのenableをバイ
ンディング
Binding
• viewModel.textの文字数が8文字以上でbuttonをenable
• viewModel.textの文字数が8文字未満でbuttonをdisable
Binding
• viewModelのtextをmap関数でカウント
Binding
• 文字数カウントの結果をbindTo関数で

buttonのenableとバインディング
Binding
• 簡単だけど意外と面倒な処理が簡単に書けた
• delegate処理を書かなくても良かった
• 初見だと分からないので、複数人で開発するプロジェ
クトに入れるの大変そう
まとめ
以上です

More Related Content

What's hot

Xcode以外の開発環境 AppCodeの紹介
Xcode以外の開発環境 AppCodeの紹介Xcode以外の開発環境 AppCodeの紹介
Xcode以外の開発環境 AppCodeの紹介Akira Hayashi
 
ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発Seunghun Lee
 
Bot frameworkでbot入門
Bot frameworkでbot入門Bot frameworkでbot入門
Bot frameworkでbot入門Tsubasa Yoshino
 
WS2012R2本とキティさんとわたし
WS2012R2本とキティさんとわたしWS2012R2本とキティさんとわたし
WS2012R2本とキティさんとわたしwintechq
 
Azure mobileserviceを使ってみた
Azure mobileserviceを使ってみたAzure mobileserviceを使ってみた
Azure mobileserviceを使ってみたbg1 333
 
WebAPIのこれまでとこれから
WebAPIのこれまでとこれからWebAPIのこれまでとこれから
WebAPIのこれまでとこれからYohei Yamamoto
 
Blazor Server テンプレート解説
Blazor Server テンプレート解説Blazor Server テンプレート解説
Blazor Server テンプレート解説Yuta Matsumura
 
Xcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosXcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosTomohiro Kumagai
 
JAWS DAYS 2017 / SORACOM UGで発表されたLTやブログを紹介しちゃうよ!!
JAWS DAYS 2017 / SORACOM UGで発表されたLTやブログを紹介しちゃうよ!!JAWS DAYS 2017 / SORACOM UGで発表されたLTやブログを紹介しちゃうよ!!
JAWS DAYS 2017 / SORACOM UGで発表されたLTやブログを紹介しちゃうよ!!Kohei MATSUSHITA
 
「移動中の仕事術とユーザーグループと私」
「移動中の仕事術とユーザーグループと私」「移動中の仕事術とユーザーグループと私」
「移動中の仕事術とユーザーグループと私」Kohei MATSUSHITA
 
スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門Kenyu Miura
 
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2pandeiro245
 
TypeScript x Bot Framework
TypeScript x Bot FrameworkTypeScript x Bot Framework
TypeScript x Bot FrameworkKazumi IWANAGA
 
Microsoft learnご紹介vol2
Microsoft learnご紹介vol2Microsoft learnご紹介vol2
Microsoft learnご紹介vol2ru pic
 
Movable Type 6の新機能 Data APIの活用法
Movable Type 6の新機能 Data APIの活用法Movable Type 6の新機能 Data APIの活用法
Movable Type 6の新機能 Data APIの活用法Hajime Fujimoto
 
MSBプレ講座ノーコード開発
MSBプレ講座ノーコード開発MSBプレ講座ノーコード開発
MSBプレ講座ノーコード開発Kentaro Murata
 

What's hot (20)

Xcode以外の開発環境 AppCodeの紹介
Xcode以外の開発環境 AppCodeの紹介Xcode以外の開発環境 AppCodeの紹介
Xcode以外の開発環境 AppCodeの紹介
 
ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発
 
Bot frameworkでbot入門
Bot frameworkでbot入門Bot frameworkでbot入門
Bot frameworkでbot入門
 
WS2012R2本とキティさんとわたし
WS2012R2本とキティさんとわたしWS2012R2本とキティさんとわたし
WS2012R2本とキティさんとわたし
 
20200714 cogbot
20200714 cogbot20200714 cogbot
20200714 cogbot
 
Azure mobileserviceを使ってみた
Azure mobileserviceを使ってみたAzure mobileserviceを使ってみた
Azure mobileserviceを使ってみた
 
WebAPIのこれまでとこれから
WebAPIのこれまでとこれからWebAPIのこれまでとこれから
WebAPIのこれまでとこれから
 
Blazor Server テンプレート解説
Blazor Server テンプレート解説Blazor Server テンプレート解説
Blazor Server テンプレート解説
 
Xcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhiosXcode グループとフォルダー参照 #yhios
Xcode グループとフォルダー参照 #yhios
 
JAWS DAYS 2017 / SORACOM UGで発表されたLTやブログを紹介しちゃうよ!!
JAWS DAYS 2017 / SORACOM UGで発表されたLTやブログを紹介しちゃうよ!!JAWS DAYS 2017 / SORACOM UGで発表されたLTやブログを紹介しちゃうよ!!
JAWS DAYS 2017 / SORACOM UGで発表されたLTやブログを紹介しちゃうよ!!
 
「移動中の仕事術とユーザーグループと私」
「移動中の仕事術とユーザーグループと私」「移動中の仕事術とユーザーグループと私」
「移動中の仕事術とユーザーグループと私」
 
Bot framework概要
Bot framework概要Bot framework概要
Bot framework概要
 
スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門
 
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2
 
Bot Framework で会話のログを取る
Bot Framework で会話のログを取るBot Framework で会話のログを取る
Bot Framework で会話のログを取る
 
TypeScript x Bot Framework
TypeScript x Bot FrameworkTypeScript x Bot Framework
TypeScript x Bot Framework
 
Microsoft learnご紹介vol2
Microsoft learnご紹介vol2Microsoft learnご紹介vol2
Microsoft learnご紹介vol2
 
Movable Type 6の新機能 Data APIの活用法
Movable Type 6の新機能 Data APIの活用法Movable Type 6の新機能 Data APIの活用法
Movable Type 6の新機能 Data APIの活用法
 
Data API 2.0
Data API 2.0Data API 2.0
Data API 2.0
 
MSBプレ講座ノーコード開発
MSBプレ講座ノーコード開発MSBプレ講座ノーコード開発
MSBプレ講座ノーコード開発
 

Similar to Swift bondさわってみた

Data API + AWS = (CMS どうでしょう 札幌編)
Data API + AWS =  (CMS どうでしょう 札幌編)Data API + AWS =  (CMS どうでしょう 札幌編)
Data API + AWS = (CMS どうでしょう 札幌編)Yuji Takayama
 
Swiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒すSwiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒すTomoki Hasegawa
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインShumpei Shiraishi
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向Tsutomu Ogasawara
 
HTML5ハイブリッドアプリ開発のベストプラクティス
HTML5ハイブリッドアプリ開発のベストプラクティスHTML5ハイブリッドアプリ開発のベストプラクティス
HTML5ハイブリッドアプリ開発のベストプラクティスアシアル株式会社
 
Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)Monaca
 
2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordovamiso- soup3
 
モバイルOSとWeb標準とそれらへのアプローチ
モバイルOSとWeb標準とそれらへのアプローチモバイルOSとWeb標準とそれらへのアプローチ
モバイルOSとWeb標準とそれらへのアプローチKisato
 
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetupS Akai
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介NilOne Ltd.
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in TokyoKyosuke Inoue
 
API活用で更に広がるDynamicsエコシステム
API活用で更に広がるDynamicsエコシステムAPI活用で更に広がるDynamicsエコシステム
API活用で更に広がるDynamicsエコシステムCData Software Japan
 
Server side swift: Vapor
Server side swift: VaporServer side swift: Vapor
Server side swift: VaporIko Nakari
 
OWIN って何?
OWIN って何?OWIN って何?
OWIN って何?miso- soup3
 
次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説kumo2010
 
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーImamura Masayuki
 

Similar to Swift bondさわってみた (20)

Data API + AWS = (CMS どうでしょう 札幌編)
Data API + AWS =  (CMS どうでしょう 札幌編)Data API + AWS =  (CMS どうでしょう 札幌編)
Data API + AWS = (CMS どうでしょう 札幌編)
 
Swiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒すSwiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒す
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
 
HTML5ハイブリッドアプリ開発のベストプラクティス
HTML5ハイブリッドアプリ開発のベストプラクティスHTML5ハイブリッドアプリ開発のベストプラクティス
HTML5ハイブリッドアプリ開発のベストプラクティス
 
Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)
 
2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova2016/05/01 Visual Studio with Cordova
2016/05/01 Visual Studio with Cordova
 
モバイルOSとWeb標準とそれらへのアプローチ
モバイルOSとWeb標準とそれらへのアプローチモバイルOSとWeb標準とそれらへのアプローチ
モバイルOSとWeb標準とそれらへのアプローチ
 
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
 
Linked Data in Japan/Semantic Conference In Japan 2010
Linked Data in Japan/Semantic Conference In Japan 2010Linked Data in Japan/Semantic Conference In Japan 2010
Linked Data in Japan/Semantic Conference In Japan 2010
 
DevLOVE iPhoneアプリ勉強会
DevLOVE iPhoneアプリ勉強会DevLOVE iPhoneアプリ勉強会
DevLOVE iPhoneアプリ勉強会
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
 
API活用で更に広がるDynamicsエコシステム
API活用で更に広がるDynamicsエコシステムAPI活用で更に広がるDynamicsエコシステム
API活用で更に広がるDynamicsエコシステム
 
Server side swift: Vapor
Server side swift: VaporServer side swift: Vapor
Server side swift: Vapor
 
OWIN って何?
OWIN って何?OWIN って何?
OWIN って何?
 
次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説
 
概説 Data API v3
概説 Data API v3概説 Data API v3
概説 Data API v3
 
JDBCでつながるSaasの世界
JDBCでつながるSaasの世界JDBCでつながるSaasの世界
JDBCでつながるSaasの世界
 
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
 

More from Motoki Narita

Type safety WCSession
Type safety WCSessionType safety WCSession
Type safety WCSessionMotoki Narita
 
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくするNullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくするMotoki Narita
 
できることから始めるOss活動
できることから始めるOss活動できることから始めるOss活動
できることから始めるOss活動Motoki Narita
 
Swift3.0に向けて enumerateを使い始めよう
Swift3.0に向けて enumerateを使い始めようSwift3.0に向けて enumerateを使い始めよう
Swift3.0に向けて enumerateを使い始めようMotoki Narita
 
個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話Motoki Narita
 
watchOS1 to watchOS2
watchOS1 to watchOS2watchOS1 to watchOS2
watchOS1 to watchOS2Motoki Narita
 
Optionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクストOptionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクストMotoki Narita
 

More from Motoki Narita (13)

Type safety WCSession
Type safety WCSessionType safety WCSession
Type safety WCSession
 
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくするNullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
NullabilityとジェネリクスでswiftからObjective-Cのコードを使いやすくする
 
できることから始めるOss活動
できることから始めるOss活動できることから始めるOss活動
できることから始めるOss活動
 
Enumerate
EnumerateEnumerate
Enumerate
 
Swift3.0に向けて enumerateを使い始めよう
Swift3.0に向けて enumerateを使い始めようSwift3.0に向けて enumerateを使い始めよう
Swift3.0に向けて enumerateを使い始めよう
 
About Swift-Clean
About Swift-CleanAbout Swift-Clean
About Swift-Clean
 
watchOS2 tips
watchOS2 tipswatchOS2 tips
watchOS2 tips
 
個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話個人で開発したアプリがベスト新着に選ばれた話
個人で開発したアプリがベスト新着に選ばれた話
 
Xcode tips
Xcode tipsXcode tips
Xcode tips
 
watchOS1 to watchOS2
watchOS1 to watchOS2watchOS1 to watchOS2
watchOS1 to watchOS2
 
Complication
ComplicationComplication
Complication
 
Watch connectivity
Watch connectivityWatch connectivity
Watch connectivity
 
Optionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクストOptionalの使い方 第1回 Swift勉強会@ネクスト
Optionalの使い方 第1回 Swift勉強会@ネクスト
 

Swift bondさわってみた