SlideShare a Scribd company logo
VIPER アーキテクチャ 
による iOS アプリの設計 
Copyright © Classmethod, Inc. 
Classmethod Inc 
安達勇一 
1
Copyright © Classmethod, Inc. 
自己紹介 
• iPhone アプリ・サービス事業部 
• iOS 開発歴 2.5 年 
• 最近は Swift で開発をしています 
2
Copyright © Classmethod, Inc. 
9月上旬… 
3 
F.T氏 
私 
北海道勉強会やるんだけど、なんか話さない? 
お題は未定ね 
そうすね…Swift かなんかで話しましょうか… 
F.T氏 
Swift勉強会…いいよね…
月日は流れ… 
Copyright © Classmethod, Inc. 4
Swift勉強会改め、スマホアプリの設計的な話にしようかと思う 
んだけど、どう? 
Copyright © Classmethod, Inc. 
9月下旬… 
5 
F.T氏 
私 
設計の話すかwwwwwwwwww 
_人人人人人人人人人_ 
> 突然の仕様変更 < 
‾Y^Y^Y^Y^Y^Y^Y^Y‾
Copyright © Classmethod, Inc. 
 
6 
 ios mobile archtecture
Copyright © Classmethod, Inc. 
 
7 
 ios mobile archtecture
 
Copyright © Classmethod, Inc. 8
VIPERアーキテクチャ 
• View Interactor Presenter Entity Routing 
Copyright © Classmethod, Inc. 
9
Copyright © Classmethod, Inc. 10
その前に… 
Copyright © Classmethod, Inc. 11
MVCアーキテクチャ 
• ModelとViewとControllerにコードを分割 
• Model: ロジック 
• View: 表示 
• Controller: Modelを制御 
Copyright © Classmethod, Inc. 
12 
Controller 
View 
Model 
Event
MVP on iOS Application 
• Model View Presenter 
• ViewはModelを直接操作しない 
• Model : ロジック 
• Presenter : UIViewController 
• View : UIView 
Copyright © Classmethod, Inc. 
13 
View 
Presenter 
Model
Massive ViewController 
• ModelとViewに置けなかったロジックは 
ViewController(Presenter)へ 
• 扱うViewの量に合わせて         
コード量が増える 
• Mediatorとしては正解だが… 
Copyright © Classmethod, Inc. 
14
Massive ViewController 
• ModelとViewに置けなかったロジックは 
ViewController(Presenter)へ 
• 扱うViewの量に合わせて         
コード量が増える 
• Mediatorとしては正解だが… 
Copyright © Classmethod, Inc. 
15
MVCで考えることの不満点 
• Modelに様々な役割があるのにひとまとめ 
にしてしまう 
• Massive ViewControllerになりやすい 
• テスト可能なModelへの移行に役割を与え 
たい 
Copyright © Classmethod, Inc. 
16
Copyright © Classmethod, Inc. 
Before VIPER 
View 
Controller 
Model 
17
Controller(Over 1000lines!!) 
Copyright © Classmethod, Inc. 
Before VIPER 
View 
Model 
18
VIPER 再び 
Copyright © Classmethod, Inc. 19
VIPERアーキテクチャ 
View Interactor Presenter Entity Routing 
• フレームワークに依存しない 
• DB, APIに依存しない 
• UIに依存しない 
• テストしやすい 
Copyright © Classmethod, Inc. 
20
VIPERアーキテクチャ 
DataStore 
Interactor 
Entity 
Copyright © Classmethod, Inc. 
• コアの静的モデル 
• 内部ビジネスロジック 
• 外界とビジネスロジッ 
クの仲介 
• 外界 
21 
DB 
API 
View 
OSS 
Presenter 
Routing
Copyright © Classmethod, Inc. 22 
View 
Presenter 
Routing 
Interactor 
Entity 
DataStore
Copyright © Classmethod, Inc. 23 
View 
Presenter 
Routing 
Interactor 
Entity 
DataStore 
Protocolによって疎結合に、互いに知らない状態にする
依存性を注入 
DB,WebAPIを 
仲介 
UIView, UIViewController 
Copyright © Classmethod, Inc. 24 
UIロジック 
Businessロジック 
静的データ
Copyright © Classmethod, Inc. 
Interactor 
• 単一のユースケースを動的なモデルで表現 
• ビジネスロジック部 
• UIに全く依存しない 
• テストしやすい 
25
Copyright © Classmethod, Inc. 
Entity 
• Presenter以降のレイヤに直接渡されない 
• 静的なモデル 
• VIPERでは動的でない 
26
Copyright © Classmethod, Inc. 
Presenter 
• InteractorからのデータをView向けに送る 
• Viewからのインプットを受ける 
• Viewを直接知らない 
• Viewロジックに対する          
テストを書ける 
27
Copyright © Classmethod, Inc. 
View 
• View, ViewController等 
• 主体的にPresenterにデータを要求しない 
• Presenterからの指示          
待ち 
28
Copyright © Classmethod, Inc. 
Routing 
• UIWindowのインスタンスを保有 
• WindowにViewController(VC)を注入 
• VCにPresenterを注入 
• VCの遷移表示も管理 
29
Copyright © Classmethod, Inc. 
Before VIPER 
View 
Controller 
Model 
30
After VIPER 
Copyright © Classmethod, Inc. 31 
View 
Presenter 
Routing 
Interactor 
Entity 
DataStore
After VIPER 
Copyright © Classmethod, Inc. 32 
View 
Presenter 
Routing 
Interactor 
Entity 
DataStore
Copyright © Classmethod, Inc. 33
参考資料 
objc-io 13 
http://www.objc.io/issue-13/viper.html 
Clean Architecture 
http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean- 
architecture.html 
Forked Sample Code 
https://github.com/UsrNameu1/VIPER-SWIFT 
Copyright © Classmethod, Inc. 34
VIPER アーキテクチャによる iOS アプリの設計

More Related Content

What's hot

Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてUnity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてTatsuhiko Yamamura
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!Genya Murakami
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
Hideki Takase
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
 
Web API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろいWeb API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろい
API Meetup
 
『ゲームAI技術入門』講義用素材
『ゲームAI技術入門』講義用素材『ゲームAI技術入門』講義用素材
『ゲームAI技術入門』講義用素材
Youichiro Miyake
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
torisoup
 
WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホンYou_Kinjoh
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
Rui Watanabe
 
今日こそ理解するHot / Cold @社内RxSwift勉強会
今日こそ理解するHot / Cold @社内RxSwift勉強会今日こそ理解するHot / Cold @社内RxSwift勉強会
今日こそ理解するHot / Cold @社内RxSwift勉強会
Yuki Takahashi
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
 

What's hot (20)

Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてUnity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成について
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
Web API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろいWeb API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろい
 
『ゲームAI技術入門』講義用素材
『ゲームAI技術入門』講義用素材『ゲームAI技術入門』講義用素材
『ゲームAI技術入門』講義用素材
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホン
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
今日こそ理解するHot / Cold @社内RxSwift勉強会
今日こそ理解するHot / Cold @社内RxSwift勉強会今日こそ理解するHot / Cold @社内RxSwift勉強会
今日こそ理解するHot / Cold @社内RxSwift勉強会
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 

Similar to VIPER アーキテクチャによる iOS アプリの設計

技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
 
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
 
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Yoshiki Takeoka
 
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
Atsushi Nakamura
 
ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurbActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurb
Koichiro Sumi
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
Michitaka Terada
 
20180130 設計イベント
20180130 設計イベント20180130 設計イベント
20180130 設計イベント
Atsushi Takayasu
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
Yahoo!デベロッパーネットワーク
 
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
Tsutomu Ogasawara
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
Shinichiro Takezaki
 
継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考える継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考える
Atsushi Nakamura
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
Tokuhiro Eto
 
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
Tomoki Hasegawa
 
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & Robot
Nobuyuki Matsui
 

Similar to VIPER アーキテクチャによる iOS アプリの設計 (20)

技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
 
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
 
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
 
最近のiOS開発の現状と実状
最近のiOS開発の現状と実状 最近のiOS開発の現状と実状
最近のiOS開発の現状と実状
 
20110824 android apps_endo
20110824 android apps_endo20110824 android apps_endo
20110824 android apps_endo
 
ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurbActiveResourceモデルによるAPIの隠蔽の怖い話~レスポンスタイムへの致命的影響~ at #shinjukurb
ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurb
 
20110824 android apps_endo
20110824 android apps_endo20110824 android apps_endo
20110824 android apps_endo
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
 
20180130 設計イベント
20180130 設計イベント20180130 設計イベント
20180130 設計イベント
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
 
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考える継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考える
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
 
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
 
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & Robot
 

More from Yuichi Adachi

Seminar on Quantum Computation & Quantum Information part28
Seminar on Quantum Computation & Quantum Information part28Seminar on Quantum Computation & Quantum Information part28
Seminar on Quantum Computation & Quantum Information part28
Yuichi Adachi
 
Swift2.x を Scala からみる
Swift2.x を Scala からみるSwift2.x を Scala からみる
Swift2.x を Scala からみる
Yuichi Adachi
 
Swift2 の新機能 Protocol Extension
Swift2 の新機能 Protocol ExtensionSwift2 の新機能 Protocol Extension
Swift2 の新機能 Protocol Extension
Yuichi Adachi
 
Seminar on Quantum Computation & Quantum Information part19
Seminar on Quantum Computation & Quantum Information part19Seminar on Quantum Computation & Quantum Information part19
Seminar on Quantum Computation & Quantum Information part19
Yuichi Adachi
 
続・ゲンバのSwift
続・ゲンバのSwift続・ゲンバのSwift
続・ゲンバのSwift
Yuichi Adachi
 
Seminar on Quantum Computation & Quantum Information part15
Seminar on Quantum Computation & Quantum Information part15Seminar on Quantum Computation & Quantum Information part15
Seminar on Quantum Computation & Quantum Information part15
Yuichi Adachi
 
ゲンバのSwift
ゲンバのSwiftゲンバのSwift
ゲンバのSwift
Yuichi Adachi
 
Seminar on Quantum Computation & Quantum Information part14
Seminar on Quantum Computation & Quantum Information part14Seminar on Quantum Computation & Quantum Information part14
Seminar on Quantum Computation & Quantum Information part14
Yuichi Adachi
 
[iOS8] 新たな線形代数ライブラリ Linear Algebra
[iOS8] 新たな線形代数ライブラリ Linear Algebra[iOS8] 新たな線形代数ライブラリ Linear Algebra
[iOS8] 新たな線形代数ライブラリ Linear Algebra
Yuichi Adachi
 
Swiftの新機能 Optional
Swiftの新機能 OptionalSwiftの新機能 Optional
Swiftの新機能 Optional
Yuichi Adachi
 
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
ユニットテスト初学者がKiwiFramework非同期テストで失敗したユニットテスト初学者がKiwiFramework非同期テストで失敗した
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
Yuichi Adachi
 
Applicative functor
Applicative functorApplicative functor
Applicative functor
Yuichi Adachi
 

More from Yuichi Adachi (12)

Seminar on Quantum Computation & Quantum Information part28
Seminar on Quantum Computation & Quantum Information part28Seminar on Quantum Computation & Quantum Information part28
Seminar on Quantum Computation & Quantum Information part28
 
Swift2.x を Scala からみる
Swift2.x を Scala からみるSwift2.x を Scala からみる
Swift2.x を Scala からみる
 
Swift2 の新機能 Protocol Extension
Swift2 の新機能 Protocol ExtensionSwift2 の新機能 Protocol Extension
Swift2 の新機能 Protocol Extension
 
Seminar on Quantum Computation & Quantum Information part19
Seminar on Quantum Computation & Quantum Information part19Seminar on Quantum Computation & Quantum Information part19
Seminar on Quantum Computation & Quantum Information part19
 
続・ゲンバのSwift
続・ゲンバのSwift続・ゲンバのSwift
続・ゲンバのSwift
 
Seminar on Quantum Computation & Quantum Information part15
Seminar on Quantum Computation & Quantum Information part15Seminar on Quantum Computation & Quantum Information part15
Seminar on Quantum Computation & Quantum Information part15
 
ゲンバのSwift
ゲンバのSwiftゲンバのSwift
ゲンバのSwift
 
Seminar on Quantum Computation & Quantum Information part14
Seminar on Quantum Computation & Quantum Information part14Seminar on Quantum Computation & Quantum Information part14
Seminar on Quantum Computation & Quantum Information part14
 
[iOS8] 新たな線形代数ライブラリ Linear Algebra
[iOS8] 新たな線形代数ライブラリ Linear Algebra[iOS8] 新たな線形代数ライブラリ Linear Algebra
[iOS8] 新たな線形代数ライブラリ Linear Algebra
 
Swiftの新機能 Optional
Swiftの新機能 OptionalSwiftの新機能 Optional
Swiftの新機能 Optional
 
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
ユニットテスト初学者がKiwiFramework非同期テストで失敗したユニットテスト初学者がKiwiFramework非同期テストで失敗した
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
 
Applicative functor
Applicative functorApplicative functor
Applicative functor
 

VIPER アーキテクチャによる iOS アプリの設計