SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
RxSwiftでの実装練習の記録ノートと

はじめの一歩
potatotips	#37

2017/02/15	Fumiya	Sakai
自己紹介と簡単な経歴など
✦ 今までの仕事履歴(本業)
石川県金沢市生まれ
本業はサーバーサイドのプログラマ	※Rails&PHP使い
26歳〜32歳: Webプログラマ(PHP	&	Rubyがキャリア長い)
23歳〜25歳: Webデザイナー兼ディレクター
2017年3月よりiOSアプリ開発のエンジニアになります。
趣味:シルバーアクセサリー集め・スイーツ作り・アプリ開発
女子向け・グルメ・エンタメ関連のお仕事が多い
Qiita	:	http://qiita.com/fumiyasac@github
Github	:	https://github.com/fumiyasac
✦ 酒井文也(さかい	ふみや)
東京(大塚)住まいの32歳
こんな格好を普段からしているので

遊び人に見られますがエンジニアです。
文系卒に思われますが

実は数学科で理系卒です。
めっちゃお酒好きそうに見えますが

ビール苦手でお酒も超弱いです。
今でもたまにUIまわりとか触りたく

なることがあったりなかったり
今年の4月からフリーランスです。

(割とお堅い感じの会社にいます)
最近のはまっている食べ物は

カボチャと担々麺と甘栗です。
最近はSwift以外ではRailsやLaravel・CakePHP・Node.jsなんかも
これまでに作ったもの(ネイティブアプリ)
①	簡易家計簿アプリ「Coffre」
②	ゲームアプリ「10秒虫食い算」
・カレンダーを自作しています
・シンプルなお小遣い帳感覚で支出管理できます
・全問正解者ほとんどいません…
・不定期ですがコラムも書いています
・サーバーサイドはRuby	on	Railsを使用
http://www.coffre.me/
・デザインにもこだわってみました(特にグラフ)
・実はちょっとバグがあります。
・問題は今後追加予定(現在110問収録)
個人的にはなりますが、他にもアプリ・Webサービスなど開発中です(2016年も宜しくお願いします)
・サイト等は次回のアップデートで公開予定
http://blog.just1factory.net/services/284
・若干の中毒性を含みます
カレンダーが好きでライブラリを作りました
日本の祝祭日を計算で出してくれる
・カレンダーアプリ等での活用を想定
・シルバーウィーク・ゴールデンウィークも対応
・ハッピーマンデー法の施行も対応
・春分の日・秋分の日にも対応
・過去の祝祭日もおおむね考慮はしている
構想や基本実装は僕ですが、他に4名のContributorのお力添えがあり実運用できるレベルになりました!
CocoaPods	&	Carthage	&	手動で導入可能
・HTTP(HTTPS)通信は不要
★CalculateCalendarLogic	ver0.1.2
【2017年】Swift3系への正式対応をしていますので是非README等を参考に導入してみてください!
・Github:	https://github.com/fumiyasac/handMadeCalendarAdvance
・実装解説:	http://qiita.com/fumiyasac@github/items/33bfc07ad36dfffcdf8f
・Github:	https://github.com/fumiyasac/handMadeCalendarOfSwift
新機能や運用保守は継続しています
✦ サンプルを見ては見るけどどこから手をつけていいかわからない
RxSwiftに最初は苦手意識があった
思った以上に最初の「とっかかり」部分から一歩前へ出るまでに時間がかかってしまった。
今回は閑話休題にはなりますが、こんな感じでRxSwiftに取り組みましたという自分自身のお話しになります。
★基本のさらにさわりの部分は聞いたことがあるけど…のレベル
・MVVMの構成に関してはサーバーサイドでも同様のフレームワークを業務で使用した経験はあった
★知っているだけでは全然手がつけられない
【苦手意識があると想像以上に手が出せないスパイラル…】
・RxSwiftの勉強会には何度か参加をしたことはあった
しかしながら、実践がなかったので後回し×N回のような形になっていた。
・ちょうど良い分量のサンプル(最初に無理なく取り組む)を見つけるのがちょっと大変…
・Qiitaや技術ブログ等を調べてみるとObserverパターンやAPI通信に関する例が多かった
とりあえずは写経のような形でできるところはほんの少しだけアレンジする方針ですすめてみよう。
✦ まずはObserverパターンを試してみて次にDriverパターンをする
苦手意識の克服のためにやってみたこと
最初にポピュラーそうなものを動画と一緒に取り組んでみると苦手意識を薄めることができたように思う。
★この順番で取り組んだ理由
★前編と後編に分けてアプローチしてみる
・サンプルやQiitaを始め技術ブログで実装例や解説資料がこの2つのパターンが多かった
前編:ObserverパターンとUITableView関連
・UIまわりの実装に関連するような処理が比較的多そうな印象があった
UIに絡む処理やAPIを活用する処理であれば実際に近しいので挫折しにくいと思った。
後編:Driverパターン	+	MVVM	+	API通信系
・できるだけまずは日本語で作成するサンプル構成や要点になるものをまとめることにした。
【RxSwiftに少しでも歩み寄るために試してみたこと】
通信が起こらないものでまずは作ってみる
・ソースコードの中にもできるだけコメントや参考リンクを残す形でコードにしてみた。
・前編の2サンプルに関しては動画も併用して取り組んでみた。
APIクライアントを使用した入力値との同期検索
✦ 今回は前編と後編のドキュメントとQiitaを交えて解説していきます
今回のサンプルと詳細解説はこちら
Observerパターンで使用するメソッドや観測対象に登録した定数値に関する加工処理の扱いがポイントに。
	前編のサンプルに関して:	
・複数のテキストフィールドやボタンの入力値の変化のハンドリングをRxSwiftで行うようにする

・いつも書き慣れたUITableViewの記述をRxSwiftに置き換えてみるとどのような形になるか確認
ポイント:
★通信を伴わないObserverパターン
準備体操)入力を簡単に色々やってみよう!

テキストフィールドやボタンの状態や入力値を観
測対象としてそれぞれの値の変化をキャッチして
値を加工して表示する。
実装1)ラーメン写真を表示しよう!

UITableViewの実装におけるDataSourceの部分を

RxDataSourcesを利用して実装しデータの一覧を

表示する。

※	View	-	Presenter	-	Modelで役割分割を含む
✦ 今回は前編と後編のドキュメントとQiitaを交えて解説していきます
今回のサンプルと詳細解説はこちら
UIとの値のバインド(結合)を行うタイミングでDriverに変換をすることでUIと関連する処理をしやすくする。
	後編のサンプルに関して:	
・RxSwift	+	MVVMを利用してAPI通信のハンドリングを制御&データの流れの関係性を整理する

・UIの処理を行うタイミングの手前でDriverに変換をすることでUIまわりの処理をしやすくする
ポイント:
★API処理+MVVMを使ったDriverパターン
実装2)リポジトリ検索サンプル(RxExample引用)

Githubのユーザー名を検索してそのユーザーに紐
づくリポジトリ名の一覧を表示する。

※	RxAlamofireを活用したサンプル
実装3)FourSquare検索サンプル(@koogawaさん作)

FoursquareAPIClientを利用して場所名を検索して

キーワードに該当する施設や飲食店の情報を取得

して一覧を表示する。

※FoursquareAPIClient	+	少し自分でアレンジ
✦ 今回の例で自分が感じたこういうケースの際に便利かなという所感
RxSwiftなしの場合だと処理やデータ取得までの流れの管理がアプリが大きくなるにつれて散漫になりがち。
★今回の作成したサンプルから感じたもの
もしもRxSwiftがなかったら…(想像)
・ObserverパターンでUIから受け取る値のハンドリングと加工処理
★今回の詳細解説資料
・UITableViewのRxSwift化
・MVVM構成でフローの整理とDriverへの変換
http://qiita.com/fumiyasac@github/items/90d1ebaa0cd8c4558d96
・RxSwiftでの実装練習の記録ノート(前編:Observerパターンの例とUITableViewの例)
http://qiita.com/fumiyasac@github/items/da762ea512484a8291a3
・RxSwiftでの実装練習の記録ノート(後編:DriverパターンとAPIへの通信を伴うMVVM構成のサンプル例)
https://github.com/fumiyasac/RxSwiftPracticeNote
・今回収録したサンプルのリポジトリ
Delegateメソッドだけで行うと値の加工処理等が複雑になりそうだけどこれなら関係性も掴み易い
使用用途は限定されそうな気もするがDatasource周りの記述がスッキリできる部分は良さそうかも
お互いの役割を明確にし受け取った値の変化を整理した上で処理をするので見通しが良くなりそう
✦ Observerパターンの基本的な構文と使い方を押さえておく
この書き方が良いのかは若干自信がないのですが、観測対象の定数に対して順繰りに値を加工・整形する。
挨拶文を作るプラクティスの実装ポイント
//セグメントコントロールにおいて、値変化のイベントを観測対象にする
let segmentedControlObservable: Observable<Int> = stateSegmentedControl.rx.value.asObservable()
//セグメントコントロールの値変化を検知して、その状態に対応するenumの値を返す
//(map)別の要素に変換する ※IntからStateへ変換
let stateObservable: Observable<State> = segmentedControlObservable.map {
(selectedIndex: Int) -> State in
return State(rawValue: selectedIndex)!
}
//enumの値変化を検知して、テキストフィールドが編集を受け付ける状態かを返す
//(map)別の要素に変換する ※StateからBoolへ変換
let greetingTextFieldEnabledObservable: Observable<Bool> = stateObservable.map {
(state: State) -> Bool in
return state == .useTextField
}
//(bindTo)イベントのプロパティ接続をする ※bindToの引数内に表示対象のUIパーツを設定
//(DisposeBag)観測状態からの解放を行う
greetingTextFieldEnabledObservable.bindTo(freeTextField.rx.isEnabled).addDisposableTo(disposeBag)
終端で観測状態の解除を行う
この中で観測対象の定数に対して処理を行なう(SegmentControlの状態)
★それぞれの定数を.asObservable()で観測対象とし、その値に対して加工を行う
この中で観測対象の定数に対して処理を行なう(入力モードの変換)
✦ RxSwiftを用いることで下記のように書くことも可能
RxDatasourcesを使用して最終的にbindToでデータと紐づける(PresenterからのデータはすでにObservable)
UITableViewのDataSource部分の実装ポイント
//データソースを元にしてセルの生成を行う
dataSource.configureCell = {_, tableView, indexPath, ramens in
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = ramens.name
cell.detailTextLabel?.text = ramens.taste
cell.imageView?.image = ramens.image
return cell
}
//作成したデータと表示するUITableViewをBindして表示する
ramensData.ramens.bindTo(ramenTableView.rx.items(dataSource: dataSource)).addDisposableTo(disposeBag)
//RxSwiftを利用してUITableViewDelegateを適用する
ramenTableView.rx.setDelegate(self).addDisposableTo(disposeBag)
//データソースの定義を元にセクションヘッダーを生成する ※動画サンプルと形式が違う部分
dataSource.titleForHeaderInSection = { (ds, section: Int) -> String in
return ds[section].model
}
//データソースの定義
let dataSource = RxTableViewSectionedReloadDataSource<SectionModel<String, Ramen>>()
//Presenter層から表示するラーメンデータの取得
let ramensData = RamenPresenter()
★DataSource部分はRxTableViewSectionedDataSource<SectionModelを活用して記述
✦ UIとデータのバインドをして入力値変更に伴って表示も変更する
APIとの通信が絡むようなUI関連の更新の際にはObservableだけだと面倒な考慮もDriver変換でし易くする。
★後編のサンプルでの役割の構成のまとめ
DriverパターンとMVVM構成の概要
View層 ViewModel層 Model層
①テキストフィールドの入力を検知 ②入力された値を条件にAPIへリクエスト
③受取ったレスポンスをマッピングや整形④UIとのバインドを行うタイミングでDriverに変換
・メインスレッドで観測状態にするのでUIの更新に関する考慮がすでにされている

・ObservableだけではErrorまたはCompletion時に処理の流れが途切れるのでそれを防止する
Driverパターンのポイントやメリットをざっくりまとめ:
各種階層の役割まとめ:
・(View層)	データとUIとのバインドしてデータの変化に応じた表示を行う

・(ViewModel層)	View層でのUI変化の受け取りやレスポンスに対する値の変換処理等の中継

・(Model層)	MappingされたEntity群やAPI通信に関連するビジネスロジックがある
✦ まずは解きやすいサンプルやパターンから紐解いてみる
今回のまとめ
ご清聴ありがとうございました!またこのような機会があった際には是非ともよろしくお願い致します!
★はじめのいっぽはObserverパターンとDriverパターンから始めると良いかも
適度にUIが絡むサンプルを自分で見たり写経して要点をまとめるようにすると理解が深まるかと
★RxSwiftなしでの実装も一緒に考えて見るとさらに理解が深まる
多くの入力要素が絡むケースの処理やMVVM等の大きなアプリケーションになった場合のことをイメージ
★動画を見ながらコードを書いて自分なりの解説や参考資料をまとめる
実装コードだけでなく「なぜその設計やライブラリを使うのか」という部分も垣間見ることができる
★自分ルール
【良いアウトプットのために】
発表・登壇時はこの中のいずれか2つを

絶対に準備するルールを設けています!

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

30代からのプライベートiOSデベロッパーのとしての軌跡
30代からのプライベートiOSデベロッパーのとしての軌跡30代からのプライベートiOSデベロッパーのとしての軌跡
30代からのプライベートiOSデベロッパーのとしての軌跡
 
NativeBaseをはじめとするUIに関する ライブラリを使ったサンプルを作ってみた
NativeBaseをはじめとするUIに関する ライブラリを使ったサンプルを作ってみたNativeBaseをはじめとするUIに関する ライブラリを使ったサンプルを作ってみた
NativeBaseをはじめとするUIに関する ライブラリを使ったサンプルを作ってみた
 
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
 
Ruby on railsでlinebotを試した記録
Ruby on railsでlinebotを試した記録Ruby on railsでlinebotを試した記録
Ruby on railsでlinebotを試した記録
 
Rails5とAPIモードについての解説
Rails5とAPIモードについての解説Rails5とAPIモードについての解説
Rails5とAPIモードについての解説
 
UIPageViewControllerとContainerViewでこんな見た目を実現するTips
UIPageViewControllerとContainerViewでこんな見た目を実現するTipsUIPageViewControllerとContainerViewでこんな見た目を実現するTips
UIPageViewControllerとContainerViewでこんな見た目を実現するTips
 
日本の祝祭日を計算してカレンダ-に表示するアプリサンプル
日本の祝祭日を計算してカレンダ-に表示するアプリサンプル日本の祝祭日を計算してカレンダ-に表示するアプリサンプル
日本の祝祭日を計算してカレンダ-に表示するアプリサンプル
 
自分のライブラリを1年運用をして見た振り返りと知見
自分のライブラリを1年運用をして見た振り返りと知見自分のライブラリを1年運用をして見た振り返りと知見
自分のライブラリを1年運用をして見た振り返りと知見
 
Container view活用術とポイントになる部分
Container view活用術とポイントになる部分Container view活用術とポイントになる部分
Container view活用術とポイントになる部分
 
Parse.comを使ってみた感想とまとめ
Parse.comを使ってみた感想とまとめParse.comを使ってみた感想とまとめ
Parse.comを使ってみた感想とまとめ
 
mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)
mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)
mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)
 
言語は違うけどもインスパイアされて作られたとあるライブラリ(PaperclipとLaravel-stapler)
言語は違うけどもインスパイアされて作られたとあるライブラリ(PaperclipとLaravel-stapler)言語は違うけどもインスパイアされて作られたとあるライブラリ(PaperclipとLaravel-stapler)
言語は違うけどもインスパイアされて作られたとあるライブラリ(PaperclipとLaravel-stapler)
 
LaravelでDBを使用しないbasic認証を簡単につくるtips
LaravelでDBを使用しないbasic認証を簡単につくるtipsLaravelでDBを使用しないbasic認証を簡単につくるtips
LaravelでDBを使用しないbasic認証を簡単につくるtips
 
時間制限付きクイズアプリをつくる
時間制限付きクイズアプリをつくる時間制限付きクイズアプリをつくる
時間制限付きクイズアプリをつくる
 
Core dataと比較してrealmを使ったまとめ
Core dataと比較してrealmを使ったまとめCore dataと比較してrealmを使ったまとめ
Core dataと比較してrealmを使ったまとめ
 
ハンドメイドカレンダー(プレゼン用)
ハンドメイドカレンダー(プレゼン用)ハンドメイドカレンダー(プレゼン用)
ハンドメイドカレンダー(プレゼン用)
 
Railsの現場に入る前のお話(勉強法)
Railsの現場に入る前のお話(勉強法)Railsの現場に入る前のお話(勉強法)
Railsの現場に入る前のお話(勉強法)
 
Apple watch対応アプリのポイントや基本実装・連携tips
Apple watch対応アプリのポイントや基本実装・連携tipsApple watch対応アプリのポイントや基本実装・連携tips
Apple watch対応アプリのポイントや基本実装・連携tips
 
SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録
 
Paperclip&amazon s3で画像アップロード
Paperclip&amazon s3で画像アップロードPaperclip&amazon s3で画像アップロード
Paperclip&amazon s3で画像アップロード
 

Andere mochten auch

Andere mochten auch (20)

Activity Transition Animation #potatotips 33
Activity Transition Animation #potatotips 33Activity Transition Animation #potatotips 33
Activity Transition Animation #potatotips 33
 
Android Studio 2.3 New Features
Android Studio 2.3 New FeaturesAndroid Studio 2.3 New Features
Android Studio 2.3 New Features
 
App shortcuts
App shortcutsApp shortcuts
App shortcuts
 
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみたAndroidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
 
WWDC初参加の方に送る6つのおすすめな巡り方
WWDC初参加の方に送る6つのおすすめな巡り方WWDC初参加の方に送る6つのおすすめな巡り方
WWDC初参加の方に送る6つのおすすめな巡り方
 
Android + JSON-RPC
Android + JSON-RPCAndroid + JSON-RPC
Android + JSON-RPC
 
ElasticBeanstalk で新規事業を爆速ローンチする
ElasticBeanstalk で新規事業を爆速ローンチするElasticBeanstalk で新規事業を爆速ローンチする
ElasticBeanstalk で新規事業を爆速ローンチする
 
【Potatotips #30】RxJavaを活用する3つのユースケース
【Potatotips #30】RxJavaを活用する3つのユースケース【Potatotips #30】RxJavaを活用する3つのユースケース
【Potatotips #30】RxJavaを活用する3つのユースケース
 
Android thingsやってみた
Android thingsやってみたAndroid thingsやってみた
Android thingsやってみた
 
Goodbye progress dialog mess on Android
Goodbye progress dialog mess on AndroidGoodbye progress dialog mess on Android
Goodbye progress dialog mess on Android
 
[Growth hack]RakutenTravel App Development
[Growth hack]RakutenTravel App Development[Growth hack]RakutenTravel App Development
[Growth hack]RakutenTravel App Development
 
なぜ私はソニックガーデンのプログラマに転身できたのか?
なぜ私はソニックガーデンのプログラマに転身できたのか? なぜ私はソニックガーデンのプログラマに転身できたのか?
なぜ私はソニックガーデンのプログラマに転身できたのか?
 
AdapterToolboxでRecyclerViewを楽にする
AdapterToolboxでRecyclerViewを楽にするAdapterToolboxでRecyclerViewを楽にする
AdapterToolboxでRecyclerViewを楽にする
 
Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化
 
自分たちでつくった"UXガイドライン"を片手に、クラウドワークスを作り変える。
自分たちでつくった"UXガイドライン"を片手に、クラウドワークスを作り変える。自分たちでつくった"UXガイドライン"を片手に、クラウドワークスを作り変える。
自分たちでつくった"UXガイドライン"を片手に、クラウドワークスを作り変える。
 
Client-Side Deep Learning
Client-Side Deep LearningClient-Side Deep Learning
Client-Side Deep Learning
 
Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化Bluepillを使ったiOS自動テストの並列化
Bluepillを使ったiOS自動テストの並列化
 
グロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのかグロースハック なぜ我々は無意味な施策を打ってしまうのか
グロースハック なぜ我々は無意味な施策を打ってしまうのか
 
Swift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdotsSwift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdots
 
ホットペッパービューティーアプリリプレイスとMVCP
ホットペッパービューティーアプリリプレイスとMVCPホットペッパービューティーアプリリプレイスとMVCP
ホットペッパービューティーアプリリプレイスとMVCP
 

Ähnlich wie RxSwiftでの実装練習の記録ノートとはじめの一歩

Ähnlich wie RxSwiftでの実装練習の記録ノートとはじめの一歩 (15)

デザインにもこだわったUiの事始め3
デザインにもこだわったUiの事始め3デザインにもこだわったUiの事始め3
デザインにもこだわったUiの事始め3
 
Ruby with My Life
Ruby with My LifeRuby with My Life
Ruby with My Life
 
デザインにもこだわったUIの事始め (Episode1)
デザインにもこだわったUIの事始め (Episode1)デザインにもこだわったUIの事始め (Episode1)
デザインにもこだわったUIの事始め (Episode1)
 
20150215勉強会
20150215勉強会20150215勉強会
20150215勉強会
 
ハンドメイドカレンダー第15回potatotips用
ハンドメイドカレンダー第15回potatotips用ハンドメイドカレンダー第15回potatotips用
ハンドメイドカレンダー第15回potatotips用
 
田舎暮らし流エンジニアスキルアップ術
田舎暮らし流エンジニアスキルアップ術田舎暮らし流エンジニアスキルアップ術
田舎暮らし流エンジニアスキルアップ術
 
ものづくりにかける時間 工数の見積もりと計画づくり
ものづくりにかける時間 工数の見積もりと計画づくりものづくりにかける時間 工数の見積もりと計画づくり
ものづくりにかける時間 工数の見積もりと計画づくり
 
デザイナさんにGithubでpr投げてもらうまで
デザイナさんにGithubでpr投げてもらうまでデザイナさんにGithubでpr投げてもらうまで
デザイナさんにGithubでpr投げてもらうまで
 
Ruby and I at 神奈川Ruby会議01
Ruby and I at 神奈川Ruby会議01Ruby and I at 神奈川Ruby会議01
Ruby and I at 神奈川Ruby会議01
 
在宅フリーランスで 失敗した話3選
在宅フリーランスで 失敗した話3選在宅フリーランスで 失敗した話3選
在宅フリーランスで 失敗した話3選
 
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
 
Rails寺子屋に行かせて頂いた話
Rails寺子屋に行かせて頂いた話Rails寺子屋に行かせて頂いた話
Rails寺子屋に行かせて頂いた話
 
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
 
レビューの自動化事業について
レビューの自動化事業についてレビューの自動化事業について
レビューの自動化事業について
 
レビューの自動化事業について
レビューの自動化事業についてレビューの自動化事業について
レビューの自動化事業について
 

Mehr von Fumiya Sakai

既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
Fumiya Sakai
 
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
Fumiya Sakai
 

Mehr von Fumiya Sakai (20)

RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
 
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒントiOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
 
少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために
 
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwiftMeasures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
 
2022年の抱負とここ数年続けてきたインプット
2022年の抱負とここ数年続けてきたインプット2022年の抱負とここ数年続けてきたインプット
2022年の抱負とここ数年続けてきたインプット
 
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
 
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
 
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
 
最近の業務やAndroid関連のインプットと振り返り
最近の業務やAndroid関連のインプットと振り返り最近の業務やAndroid関連のインプットと振り返り
最近の業務やAndroid関連のインプットと振り返り
 
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
 
少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発
 
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察するUIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
 
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞくレイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
 
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分についてiOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
 
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
 
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
 
アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集
 
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
 
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
 
UI表現ライブラリを有効活用して iOSアプリのUIをオシャレにするワザ紹介
UI表現ライブラリを有効活用して iOSアプリのUIをオシャレにするワザ紹介UI表現ライブラリを有効活用して iOSアプリのUIをオシャレにするワザ紹介
UI表現ライブラリを有効活用して iOSアプリのUIをオシャレにするワザ紹介
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

RxSwiftでの実装練習の記録ノートとはじめの一歩