Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
FRPを使いはじめて3年が過ぎました。
Search
Ryoichi Izumita
October 03, 2016
Programming
4
1.4k
FRPを使いはじめて3年が過ぎました。
「第一回スタートアップiOS/Android勉強会」での発表資料
Ryoichi Izumita
October 03, 2016
Tweet
Share
More Decks by Ryoichi Izumita
See All by Ryoichi Izumita
モバイル開発における共通性・可変性分析入門
rizumita
0
70
Flutterアプリを生成AIで生成する勘所
rizumita
0
1.2k
FlutterアプリのテストでBuilderパターンを活用しよう
rizumita
0
640
SwiftUIの大地を駆け巡るための仕組みを作る
rizumita
0
260
VIPERアーキテクチャ
rizumita
1
800
とあるプログラマのリモートワーク
rizumita
0
360
JavaScript for Automation
rizumita
1
260
Other Decks in Programming
See All in Programming
エラーって何種類あるの?
kajitack
5
140
eBPFを用いたAIネットワーク監視システム論文の実装 / eBPF Japan Meetup #4
yuukit
3
750
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
350
[初登壇@jAZUG]アプリ開発者が気になるGoogleCloud/Azure+wasm/wasi
asaringo
0
130
レガシーシステムの機能調査・開発におけるAI利活用
takuya_ohtonari
0
590
Effect の双対、Coeffect
yukikurage
5
1.4k
Perlで痩せる
yuukis
1
680
Create a website using Spatial Web
akkeylab
0
280
Perplexity Slack Botを作ってAI活用を進めた話 / AI Engineering Summit プレイベント
n3xem
0
640
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
110
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
470
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
2
140
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
GraphQLとの向き合い方2022年版
quramy
46
14k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
4
140
Building an army of robots
kneath
306
45k
Faster Mobile Websites
deanohume
307
31k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.8k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
It's Worth the Effort
3n
184
28k
How to train your dragon (web standard)
notwaldorf
92
6.1k
Transcript
FRPΛ͍͡Ίͯ3͕ ա͗·ͨ͠ɻ Lang-8 ઘా ྖҰ / @rizumita 2016/10/01
͜ͷൃදݸਓͷײΛݩʹ࡞͍ͯ͠·͢ɻޮՌɾޮೳΛҎԼུ ࣗݾհ ▸ Lang-8ࣾͷiOSΞϓϦ։ൃ୲ ▸ ݴޠܥQ&AαʔϏεHiNative ▸ Objective-Cྺ: 20 ▸
Swiftྺ: 2 ▸ iPhone3GS͔ΒiOSΞϓϦ։ൃ ▸ ݝ҆ಶࢢͰϦϞʔτϫʔΫ
ͯ͜͜͞Ͱ ຊͷԠԉϝοηʔδΛ ͝հ͠·͢ʂ
None
͝ଘͰ͢ΑͶɻ FRP / MVVMΛ͝ଘͰ͔͢ʁ ▸ Functional Reactive Programming ▸ ؔܕϦΞΫςΟϒϓϩάϥϛϯά
▸ RxSwift / ReactiveCocoa ͳͲ ▸ FRPΛར༻ͨ͠Model View ViewModel - MVVM ▸ ࢲ2013͔Β͍͡Ί·ͨ͠ɻ
2013/03/12
͍͡ΊΔ ͱ…
None
Ͱ…
ͲΜͳϥΠϒϥϦͰকདྷͷෆ҆ແ͘ͳΒͳ͍Ͱ͢ΑͶ REACTIVECOCOA… ▸ ৽ݴޠɾ৽όʔδϣϯରԠʹ͕͔͔࣌ؒͬͨ ▸ ϝΠϯίϛολʔͷ׆ಈԼͷ৺͕͋ͬͨ ▸ RxSwift͕ਓؾʹ
ࣗͰϝ ϯςͰ͖ͳ ͍نͷϥ ΠϒϥϦʹ શͯΛͤ ͯେৎʁ
3ͬͯΔͷʹ͍·ͩʹ͍͜ͳ͍ͤͯΔײ͕͡͠·ͤΜɻ FRP… ▸ Functional Reactive ProgrammingͱReactive Programmingͷҧ ͍ɺ͔Γ·͔͢ʁࢲ͔Γ·ͤΜɻ ▸ Functionalʹ࣮Ͱ͖·͔͢ʁࢲͰ͖·ͤΜɻ
▸ iOS SDKΒ͍͠هड़ͱ͔͚Ε͍ͯΔɻ ▸ FRPΛͬͨઃܭϨΠϠʔؒΛFRPͰଓ͢Δํ͕·͍͠ɻ ▸ શͯͷϨΠϠʔͱϨΠϠʔؒͰFRPΛར༻͢Δͷґଘ͗͢͠Ͱ ʁ
ࣗͰ ेཧղ Ͱ͖ͳ͍ ֓೦ʹશͯ Λͤͯ େৎʁ
FRPͷར༻ ࠷খݶʹ͠Α͏… ݸਓͷײͰ͢
MVVMΛOOPͰߏͯ͠FRPͰܨ͙ͷͬͯFUNCTIONALͬͯݴ͑Δͷʁ MVVM͔ΒVIPER… ▸ FRPͷར༻Λ߇͑ΔͷͰಉ࣌ʹMVVMར༻தࢭ ▸ ΘΓʹVIPERΞʔΩςΫνϟΛ࠾༻ ▸ ΫϦʔϯΞʔΩςΫνϟͷҰछ ▸ PlainΦϒδΣΫτΛར༻͢Δ
▸ View / Interactor / Presenter / Entity / Router
DIίϯςφͬͯ·͢ VIPERͷར ▸ ϥΠϒϥϦʹґଘ͠ͳ͍ ▸ DIΛར༻͢ΔͷͰςετ͕͍͢͠ ▸ ϨΠϠʔΛదʹׂ͍͢͠ ▸ FRPͷελοΫτϨʔεΘ͚͕Θ͔Βͳ͍Α
SegueͲͷΞʔΩςΫνϟͰ૬ੑ͕ѱ͍ؾ͕͠·͕͢… VIPERͷܽ ▸ Ϋϥεϓϩτίϧ͕ଟ͘ͳΔ ▸ Segueͱͷ૬ੑ͕ѱ͍
ͦΕͰFRPΛ ར༻͠·͔͢…ʁ
·ͩͬͯ·͢… ▸ طଘͷFRP+MVVMͳίʔυ ▸ APIΞΫηεͳͲͷෳࡶͳඇಉظॲཧ ▸ ͦΕ͚ͩͷͨΊʹFRPϥΠϒϥϦେ͛͞ͳͷͰ PromiseKitΛݕ౼த
ݸਓͷײ(ry ઃܭͷํͷ༏ઌॱҐ ▸ ୈҰʹiOS SDKΒ͍͠ઃܭ ▸ ࣍ʹSwiftΒ͍͠ઃܭ ▸ ʢFRPΛ͏߹ʣFRPΒ͍͠ઃܭ
Ͱɺ ͦΕͰ͕ͬͭΓFRPΛ ͏Αʂͱ͍͏ํʂ
ݸਓͷײͰ͢ɻ ▸ FRPΛ͏ͳΒେMVVMͰͳ͘MVCͰेͰʁ ▸ DIΛΈ߹ΘͤΔͱςετ͘͢͠ͳΔɻ ▸ ؔܕϓϩάϥϛϯάత(ࢀরಁաੑɾΧϦʔԽɾؔ߹) ͳ࣮Λߦ͍ɺΫϩʔδϟΛͨ͘͠ͳͬͨΒؔԽΛݕ౼ ͢Δͱྑ͍͜ͱ͕ଟ͍ɻSwiftz(Swiftx)ΛҰॹʹ͏ͱศརɻ ▸
RxSwiftͰॻ͍ͯΈͨˠ https://github.com/rizumita/Tasks ▸ ͰHot / ColdΤϥʔλΠϓΛ໌ࣔͰ͖ΔReactiveCocoa ͕Φεεϝɻಛʹن͕େ͖͘ෳਓͰ։ൃ͢Δ߹ɻ
ཁ͢Δʹ…
FRP ͍͍ΑͶʂ ָ͍͠ΑͶʂ
None
͝੩ௌ͋Γ͕ ͱ͏͟͝
͋ɺͪΐͬͱ͓ ͍࣌ؒͩ͘͞…
iOSアプリプログラマーを募 集してます。一緒に働きま せんか? גࣜձࣾLang-8 ςΩετ
͝੩ௌ͋Γ͕ͱ ͏͍͟͝·ͨ͠ɻ