Submit Search
Reactive cocoaをかじってみた。
Mar 5, 2014
5 likes
1,901 views
孝文 田村
iOS_LT
Read more
1 of 15
Download presentation
Your download has started
Download now
Downloaded 10 times
Recommended
位置情報のシミュレート(と偽造チェックイン)
位置情報のシミュレート(と偽造チェックイン)
孝文 田村
Xcodeを使った、位置情報のシミュレートと実機の位置情報操作について
Reactive android
Reactive android
shinnosuke kugimiya
Reactive Programming with Android
Reactive Systems と Back Pressure
Reactive Systems と Back Pressure
Akihiro Ikezoe
最先端情報吸収研究所(AIAL)勉強会
Reactive extensions
Reactive extensions
yone64
Room Metro #26 の発表資料です。
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Roy Kim
FPやHaskellのモナドをSwiftを使って説明してみたけど、過去のものなので今はあまり参考にならないかも。それと内容的にも少し修正が必要。
Uapcfb
Uapcfb
Sei Takayuki
Reactive
Reactive
Akihiro Ikezoe
Reactive vs Promise勉強会
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
オラクルエンジニア通信
Oracle Cloud Hangout Cafe (a.k.a. OCHa Cafe) #4 「Cloud Native時代のモダンJavaの世界」のセッション資料です。 https://ochacafe.connpass.com/event/155389/ マイクロサービスのためのEnterprise Javaの仕様 Eclipse MicroProfile と、Oracleが提供するMicroProfile準拠OSSである Helidon について解説しています。 (表示品質が悪かったので再掲しました) * P.49 "Oracle Integration Cloud Service" は ”Oracle Identity Cloud Service” の誤りです.
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
Tomoyuki Obi
2018/06/30 Interact 2018 で利用したスライド
WPF/Silverlight視点で視るMetroスタイルのXAML
WPF/Silverlight視点で視るMetroスタイルのXAML
Yuya Yamaki
わんくま同盟 東京勉強会 #66
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
Ken Morishita
iOS/Androidアプリ開発のGoodPracticeのようなものです。
オブジェクト指向最強
オブジェクト指向最強
haganemetal
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
設計ナイト2024にて発表した内容になります。
業務システムにおけるインタラクションとアニメーション
業務システムにおけるインタラクションとアニメーション
Fixel Inc.
【対象】 インタラクションデザインの概要を知りたいデザイナーやフロントエンドエンジニア アニメーションの効果と実装方法を知りたいデザイナーやフロントエンドエンジニア 【読んだらどうなる】 インタラクションの意味とメリットを知ることができる アニメーションの効果的な使い方と実装方法を知ることができる
EXE #3: AIを協力して作成するDapp
EXE #3: AIを協力して作成するDapp
blockchainexe
EXE #3
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング
Hideki Takase
第一回関数型プログラミング(仮)の会 https://opt.connpass.com/event/222709/ ロボット開発を加速するプラットフォームとしてROS(Robot Operating System)があります.Elixirでこのプログラミングを気持ちよく進められるRclexという取り組みについて紹介します. https://github.com/rclex/rclex
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
Tomoharu ASAMI
QCon Tokyo 2016の資料です。 http://www.qcontokyo.com/program.html SlideShare向けにスライドのフォントを変更しました。 画像のフォントは変更できなかったので、空白表示になっています。(対処方法が分かりしだい対応したいと思います。) PDFをDownloadすると文字化けしていないものを読むことができます。
More Related Content
Similar to Reactive cocoaをかじってみた。
(9)
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
Tomoyuki Obi
2018/06/30 Interact 2018 で利用したスライド
WPF/Silverlight視点で視るMetroスタイルのXAML
WPF/Silverlight視点で視るMetroスタイルのXAML
Yuya Yamaki
わんくま同盟 東京勉強会 #66
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
Ken Morishita
iOS/Androidアプリ開発のGoodPracticeのようなものです。
オブジェクト指向最強
オブジェクト指向最強
haganemetal
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
設計ナイト2024にて発表した内容になります。
業務システムにおけるインタラクションとアニメーション
業務システムにおけるインタラクションとアニメーション
Fixel Inc.
【対象】 インタラクションデザインの概要を知りたいデザイナーやフロントエンドエンジニア アニメーションの効果と実装方法を知りたいデザイナーやフロントエンドエンジニア 【読んだらどうなる】 インタラクションの意味とメリットを知ることができる アニメーションの効果的な使い方と実装方法を知ることができる
EXE #3: AIを協力して作成するDapp
EXE #3: AIを協力して作成するDapp
blockchainexe
EXE #3
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング
Hideki Takase
第一回関数型プログラミング(仮)の会 https://opt.connpass.com/event/222709/ ロボット開発を加速するプラットフォームとしてROS(Robot Operating System)があります.Elixirでこのプログラミングを気持ちよく進められるRclexという取り組みについて紹介します. https://github.com/rclex/rclex
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
Tomoharu ASAMI
QCon Tokyo 2016の資料です。 http://www.qcontokyo.com/program.html SlideShare向けにスライドのフォントを変更しました。 画像のフォントは変更できなかったので、空白表示になっています。(対処方法が分かりしだい対応したいと思います。) PDFをDownloadすると文字化けしていないものを読むことができます。
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
Tomoyuki Obi
WPF/Silverlight視点で視るMetroスタイルのXAML
WPF/Silverlight視点で視るMetroスタイルのXAML
Yuya Yamaki
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
Ken Morishita
オブジェクト指向最強
オブジェクト指向最強
haganemetal
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
業務システムにおけるインタラクションとアニメーション
業務システムにおけるインタラクションとアニメーション
Fixel Inc.
EXE #3: AIを協力して作成するDapp
EXE #3: AIを協力して作成するDapp
blockchainexe
関数型っぽくROSロボットプログラミング
関数型っぽくROSロボットプログラミング
Hideki Takase
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
オブジェクト・関数型プログラミングからオブジェクト・関数型分析設計へ クラウド時代のモデリングを考える
Tomoharu ASAMI
Reactive cocoaをかじってみた。
1.
ReactiveCocoaを かじってみた #iOS_LT ! 田村 孝文
2.
ReactiveCocoaって何? • 「リアクティブプログラミング」のObjective-C実装の一つ • • https://github.com/ReactiveCocoa/ReactiveCocoa リアクティブプログラミングって何? 「なぜリアクティブプログラミングは重要か。」http://d.hatena.ne.jp/pokarim/20101226 から引用: • 『 リアクティブプログラミングは、「時間とともに変化する値」 =「振る舞い」同士の関係性を記述することでプログラミングを 行うパラダイムです。 GUIなどのようにインタラクティブなシステムや、シミュレーションやアニメーションの ようにダイナミックに状態が変化するようなシステムを宣言的に記述することができます これらの「変化する状態」や「外部とのやりとり」が支配的なシステムは、純粋関数型言語が、その強みを 発揮しにくい部分でもあります。 うんたらかんたら∼∼∼ほにゃほにゃ∼∼∼』 ・・・うん、なるほど。よく分からん!
3.
というわけで • よく分かってないけどしゃべります。 • 今日話をする順番 • パラダイムとしての「リアクティブプログラミング」の話(超ざっ くり) • ライブラリとしての「ReactiveCocoa」を実際に使ってみた話 • Target/Action方式とReactiveCocoa方式を見比べる • ReactiveCocoaでしか出来ない(であろう)方式
4.
リアクティブプログラミングを 絵を見て分かった気になる 関数として定義 ↓ 「値と値の関係性」を関数として記述するプログ ラミングスタイル、っぽい、みたいな?感じ? 引用 http://d.hatena.ne.jp/pokarim/20101226
5.
リアクティブプログラミングを 仮想言語で分かった気になる a=1 b=a*3 a=2 print(b) ←ここで何が出てくる? • 命令型なら •
bは3のまま ← a*3が計算された時のまま • リアクティブプログラミングでは • bが6になってる ←「bはaの3倍」という関係性を定 義しているので、bの値はaの値が変更されたら自動 で再計算され、自動で再代入されている(?) • Excelのセルに書いたマクロのような感じ
6.
ReactiveCocoaを使ってみる: 作ってみるアプリ ユーザ作成画面を想定 createボタンは以下の条件を満たしたら有効 • になる(ルール1) ◦ username,emailが空でない ◦ passwordとpasswordVerificationが同 じ ◦
passwordは8文字以上 • passwordとpasswordVerificationが違う場 合とpasswordが8文字以下の場合は、 Labelに警告が表示される(ルール2) ! →TextFieldの状態が変わったら、メッ セージとボタンの状態が変わる。
7.
ReactiveCocoaを使ってみる: Target/Action方式(1) • 見慣れた構成 • ルールは、ViewControllerのメソッドとして持つ
8.
ReactiveCocoaを使ってみる: Target/Action方式(2) https://github.com/taktamur/RACSample/blob/master/RACSample/TargetActionViewController.m
9.
ReactiveCocoaを使ってみる: ReactiveCocoa方式(1) • • 構成としてはほぼ同じ ルールは、RACSignalオブジェクトが持つ • RAC =ReactiveCocoa
のprefix ルールはblockで記述 ルールの記述にUIヘの参照が無い • •
10.
ReactiveCocoaを使ってみる: ReactiveCocoa方式(2) UIのバインド ルールの実装 結果をバインド https://github.com/taktamur/RACSample/blob/master/RACSample/RACStyleViewController.m
11.
ReactiveCocoaを使ってみる: ここまでの実装で気になる点 • ルール1とルール2に、重複する部分がある • createボタンは以下の条件を満たしたら有効になる(ルール1) • • passwordとpasswordVerificationが同じ • • username,emailが空でない passwordは8文字以上 passwordとpasswordVerificationが違う場合とpasswordが8文字以下の場合 は、Labelに警告が表示される(ルール2) • このルールの分離はTarget/Action方式ではやりにく いけど、ReactiveCocoaなら可能! • →RACSignalの連鎖が可能
12.
ReactiveCocoaを使ってみる: RACSignalの連鎖(1) https://github.com/taktamur/RACSample/blob/master/RACSample/RACStyleViewController2.m
13.
ReactiveCocoaを使ってみる: RACSignalの連鎖(2) 別で作ったSignalを 元データとして バインドしている Signalが連鎖するような書き方は 標準では出来ない(ですよね?) https://github.com/taktamur/RACSample/blob/master/RACSample/RACStyleViewController2.m
14.
まとめ • パラダイムとしての「リアクティブプログライング」は魅力的 • • テンポラリ的な「変数(状態)」が不要なので、矛盾が発生しにくい。再計 算は言語やランタイム、ライブラリが自動で行う。関数型言語っぽい。 ライブラリとしての「ReactiveCocoa」は難物←今時点での田村評価 • • • 利点:ビジネスロジックをSignalとして分離出来る。またSignalの連鎖を 使って、ビジネスロジックを「単純なルールの組み合わせ」に分解出来る。 UIとロジックの分離が可能。 欠点:難解。Objective-Cと馴染んでいない。ライブラリが超ヘビー級。 同じアイデアを、もっとObjetive-Cに馴染んだ形で、ライトに実装さ れたものがあればそれが欲しい。←無ければつk(ry
15.
ご清聴 ありがとうございました。 • このLTの原稿 http://qiita.com/paming/items/9ac189ab0fe5b25fe722
Download presentation
Your download has started
Download