SlideShare a Scribd company logo
1 of 21
Download to read offline
Fundamentals of Swift & Redux
(ReduxとSwiftの組み合わせ)
Roppongi.swift #5 @ Visits Technology
2018 / 08 / 24
Fumiya Sakai
自己紹介
・酒井 文也 (Fumiya Sakai)
・ever sense. inc エンジニア
・Designer → ServerSide Engineer → AppDeveloper
Accounts
・Facebook: https://www.facebook.com/fumiya.sakai.37
・Twitter: https://twitter.com/fumiyasac
・Github: https://github.com/fumiyasac
・Qiita: https://qiita.com/fumiyasac@github
Who are you?
Library (Personal)
Products (ever sense. inc)
New!
現在はVer0.2.0
上記新規アプリの開発や他アプリの運用全般など
Defense !
9/20: iOSDCリジェクトコンDay2で登壇 & 10/8: 技術書典5でUI実装本を出展します。お知らせ
このトピックスを選んだ理由
ReactNativeやその他Reduxを採用した事例を聞いた際に利用してみたいと感じた
動機1. 状態を一括管理ゆえに現在状態が把握しやすい?
動機2. ライフサイクル内処理の単純化ができるのでは?
動機3. 親子関係を持つViewController間の調整に便利?
参考) ReactNativeの実装と大きく異なる部分
・ReactNativeにはController相当のレイヤーがない。
アプリ内の機能が増えていくことで、UI実装
においても状態管理が煩雑になりがち。
特に状態と紐づくUIの考慮漏れはテスト
コードだけでは検知しにくい部分でもある。
UI実装の中で起こり得る問題点:
・iOSネイティブアプリは基本的にはMVCが前提になる。
・ライフサイクルの考え方も異なるのでView実装も違ってくる。
ネイティブアプリの開発で活用している概
念とは全く違うアーキテクチャではあるが、
Viewと状態管理の紐付けという点で解決
したいものは同じである。
Reduxを実現するためのライブラリ
SwiftでReduxを実現するライブラリの中でも今回はReSwiftを使用しました
ライブラリ名: ReSwift
https://github.com/ReSwift/ReSwift
ポイント:
1. 一方通行の状態管理を実現
2. 状態更新依頼はAction経由
(参考: ReSwift + RxSwift)
・Redux+Rxを活用したiOSアプリアーキテクチャ
https://qiita.com/susieyy/items/23d44f28c6a6915c58e2
・ReSwiftのステートをRxSwiftを使って監視する
http://glassonion.hatenablog.com/entry/2017/04/20/
195728
状態の
一括管理
状態更新
受け取り
状態の
更新処理
1.Single source of truth.
2.State is read-only.
3.Mutations are written as pure function.
常にこの原則に則っていること前提で処理が行われる
Reduxにおいて守る3つ原則:
Swift + Reduxを実現するサンプル実装
データと紐づく状態(State)を一括管理してUIの状態と対応させる実装を行う
このサンプルにおける実装ポイント:
取得データと画面UI状態の歩調を合わせるためのReduxでの状態管理
こちらのサンプルのリポジトリ:
https://github.com/fumiyasac/ReduxSampleSwift
Redux処理部分の構成とデバッグログによるイメージ
XCode内でのRedux処理部分の構成とデバッグログでの状態把握
XCode内のRedux部分 デバッグログの出力
Action / ActionCreator / Reducer / State が1セット Actionの発行によって状態(State)が更新されるかを確認する
Redux処理における登場人物と役割のまとめ
各々の処理に関する名称と役割に関しての概要一覧
ActionCreators
Action
Reducer
Middleware
Store
アプリケーション全体の状態(n個のState: 状態)を一枚岩のような形で保持する
State更新用のappStore.dispatch(action)や更新検知用appStore.subscribe(listener)を提供
Storeが保持している状態(State)を更新するための唯一の手段で内容を記載
State更新用のappStore.dispatch(action)や更新検知用appStore.subscribe(listener)を提供
Actionを実行するためのメソッド群。Actionの引数として渡すものを取得する等
PromiseKitを利用したAPI通信やModel相当の処理をした後にappStore.dispatch(action)を実行
現在の状態(State)とActionの内容から新しい状態(State)を作成する部分
Actionで受け取ったものやAction名からStateを更新。AppReducerにて複数Reducerの統合をする
Reducerの実行前後で処理を差し込むための部分 ※場合により無くても良い
ログを差し込んだり、実行された処理を元にさらに処理を割り込ませたい場合に用いる部分
ReSwiftで実現するRedux処理の概要図と処理フロー
各々の処理の役割と概要及びViewControllerを起点とした処理の流れを整理する
ViewController ActionCreators Action Reducer
Middleware
1. 最低限のLifecycle処理
2. 受け取ったStateを元にしたViewの更新
3. 処理に応じてActionCreatorの発行
Step1.
ボタン押下等のView側のイベントを
実行する際、ActionCreatorを実行
Step2.
ActionCreatorに非同期処理やRealmの処
理を挟み込み、取得した値をReducerへ送る
Step3.
ActionCreatorから送られた
値を元にStateを更新する
Step5.
Stateの変更検知をViewController側に仕込んだ
StoreSubscriberのfunc(newState: AppState)
で行い、状態を元にView要素の更新を実行する
Actionを実行する前に行って置きたい処理を
するメソッドの集合
例. Actionの引数になるものを作成する
AlamofireやRealmを介する処理はここで!
途中に処理を差し込む
例. ログの出力
Model
処理
例外時の
場合のみ
基本的に
はこちら!
ViewControllerの
用途と役割まとめ
各View
更新
Step4.
変更されたStateは一枚岩の
Storeに保持して管理される
Store
※ 例外でViewControllerで直接Actionを発行する場合もあります。
Stateを管理するStoreとReducerの関連図と集約部分
Stateが更新されると反映したものがStoreへ
// 全てのStateを一元管理で管理するStoreを定義 in AppDelegate.swift
let appStore = Store(reducer: appReduce, state: AppState(),
middleware: [ActionLoggingMiddleware])
// アプリの現在状態をに関するState
struct AppState: ReSwift.StateType {
// ユーザーの回答に関するstate
var userSettingState = UserSettingState()
// 英語ニュース一覧に関するstate
var englishNewsState = EnglishNewsState()
��� ・・・(以下管理したいStateが続く)・・・
}
// Stateの更新が行われた際にappReduceを実行してStore内のStateを更新する ※Store内では全てのStateを一元
管理している
func appReduce(action: Action, state: AppState?) -> AppState {
var state = state ?? AppState()
// それぞれの変更されたReducerを反映する
state.userSettingState = UserSettingReducer.reducer(action: action, state: state.userSettingState)
state.englishNewsState = EnglishNewsReducer.reducer(action: action, state: state.englishNewsState)
��� ・・・(以下管理したいStateに関する処理が続く)・・・
return state
}
全てのReducer集約全てのState集約
StoreをAppDelegateのグローバルに置き、Reduxで管理したいものを利用する
Stateの更新と集約を担う
Stateの変化を利用したいViewControllerに対して、Stateが更新された際に
通知を検知できるようリスナーを登録することで実現する。
Redux処理とプロトコルの使い分けについて
データを伴う画面変更の処理と別のViewControllerの調節の用途を分けて管理する
Protocol
Redux
UIViewControllerで取り扱うデータの取得を伴う状態管理に関する部分
UIViewController1画面単位での状態管理についてはReduxで管理し、分量によっては分割する
ViewControllerのRedux処理の他に関連するViewControllerのView調整
Stateの更新で任意のViewControllerのViewを処理し、さらに関連する他の画面にも処理を伝える
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Stateが更新された際に通知を検知できるようリスナーを登録する
appStore.subscribe(self)
}
extension GourmetShopViewController: StoreSubscriber {
func newState(state: AppState) {
// TODO: 各種State(状態)を元にしたUIの構築処理を行う
}
}
weak var delegate: ChildContainerViewDelegate?
func sendParamsToChildViewController(_ params: T) {
// 受け取ったデータを元に更新する処理に加えてContainer配置も処理する
self.delegate?.updateChildContainerView(params)
}
extension MainViewController: ChildContainerViewDelegate {
func updateChildContainerView(_ params: T) {
// TODO: 子ViewControllerと連動した処理を実行する
}
}
class APIManagerForSomeData {
// MARK: - Singleton Instance
・・・(略)・・・
// API経由で情報一覧を取得する
func getSomeList(target: …) -> Promise<JSON> {
let parameters: [String : Any] = […]
return Promise { seal in
Alamofire.request(baseUrl, method: .get, parameters: parameters)
.validate().responseJSON { response in
switch response.result {
case .success(let response):
// 成功時の処理(必要なレスポンスを返す)
seal.fulfill(json)
case .failure(let error):
// 失敗時の処理(エラー結果を返す)
seal.reject(error)
}
・・・
非同期処理やModel相当の処理を行うタイミング
非同期処理をActionを発行をするための処理(ActionCreator)と組み合わせる例
ActionCreators ApiManager
struct SoneActionCreator {}
extension SomeActionCreator {
static func fetchSomeList(target: …) {
// TODO: データ読み込み中の状態を反映するアクションの実行
// APIManagerの処理を実行する
APIManagerForSomeData.shared.getSomeList(target: target)
.done { newsJSON in
// TODO: 成功時の状態を反映するアクションの実行
}.catch { error in
// TODO: 失敗時の状態を反映するアクションの実行
}
}
}
非同期処理を内包したオブジェク
トに対して処理を追加する形式
処理部分のポイント:
Alamofire (API通信)
SwiftyJSON (JSON解析)
PromiseKit (処理部分)
の組み合わせで実現
処理部分のポイント:
読み込み中 / 成功�/ 失敗の3通りの状態を実現
API処理結果の
ハンドリング
必要なデータを取得して、
次にActionの引数へ渡す
データ取得と反映 Promise<JSON>型を返す
ReduxとUI表現に関する処理を組み合わせたケーススタディ
Reduxを用いてUIに関連する処理を実現する上で下記3つのポイントを解説します
Case1:項目の多い
入力フォーム作成
Case2:次のn件を
一覧へ表示する
Case3: 複数個の
ContainerView
各ケースでポイントとなる部分:
1. 項目の多い入力フォームとState管理について
入力された内容とStateの変化を連動させるこ
とで、現在の入力状態を管理する。
2. 次のn件の表示とAutoLayoutの処理の連携
ContainerViewで表示するセルの個数変化に
伴ってContainerView自身の高さも更新する。
3. 複数のContainerViewに処理を伝える
ScrollView上部を引っ張ってのリフレッシュのよ
うに各Containerへの伝播をReduxを用いる。
Case1. 項目の多い入力フォームの作成と状態管理をする
それぞれの状態定義において何を管理対象とするかをまずは決める
struct UserSettingState: ReSwift.StateType {
// キーボードの表示状態(初期値: false)
var keyboardIsShown: Bool = false
// 入力された郵便番号(初期値: "")
var postalCode: String = ""
// 選択された住んでいる年数(初期値: 0)
var selectedResidentPeriod: Int = 0
// 入力された自由入力項目(初期値: "")
var freeWord: String = ""
// 入力されたニックネーム(初期値: "")
var nickName: String = ""
// 選択された性別(初期値: 0)
var gender: Int = 0
// 選択された年齢(初期値: 0)
var selectedAge: Int = 0
}
userSettingState: ReduxSampleSwift.UserSettingState(keyboardIsShown: false, postalCode: "1700005",
selectedResidentPeriod: 3, freeWord: "色々便利で暮らしやすいです。", nickName: "fumiya", gender: 0, selectedAge: 3)
1. 状態管理の対象とするものは何か?
2. 遷移やキーボード等のUI表示状態を含めるか?
Stateの中身はUITextFieldDelegateやUITableViewDataSourceの処理と連動して更新
UITextField / UITextViewのテキスト入力から得られた値
やUISegmentedControl / UITableViewで選択した際に
得られた値はReduxで管理しておく。
補足. 取得した表示用データについても同様に扱う
画面遷移に関しては、連続した関連性がある場合や経路を
が関係する処理が必要な場合は管理する、特に必要がない
場合は別々に管理しなくても良い。
※ なるべく1ViewController = 1Stateにするのが理想?State
Case1. 項目の多い入力フォームの作成と状態管理をする
各種Delegate等View側の処理と連動してActionCreatorを実行する
// ニックネームの値が更新された際に実行されるアクション
@objc private func nickNameValueChanged(sender: UITextField)
{
// ニックネームの変更を反映するActionCreatorを実行する
if let nickName = sender.text {
UserSettingActionCreator.changeNickNameInput(nickName:
nickName)
}
}
1. ViewController側の処理内でActionCreatorを実行
2. Actionを発行しReducerへAction名と引数を送信
Reduxで管理したいAPIやModel相当
のデータがある場合には、Action発行
前やMiddlewareにはさみ込む。
// ニックネームの入力変更を反映する
static func changeNickNameInput(nickName: String) {
let setNickNameAction =
UserSettingState.userSettingAction.setNickName(nickName:
nickName)
appStore.dispatch(setNickNameAction)
}
extension UserSettingState {
// ユーザーの回答に関するstateを変更させる
アクションをEnumで定義する
enum userSettingAction: ReSwift.Action {
・・・(必要部分のみ抜粋)・・・
// ニックネームが入力された際に実行される
アクション
case setNickName(nickName: String)
・・・(以下略)・・・
}
}
Action
ActionCreator
ViewController
Case1. 項目の多い入力フォームの作成と状態管理をする
Reducer層でActionで受け取った値とAction名を元にStateを更新し、Viewへ反映
extension UserSettingReducer {
static func reducer(action: ReSwift.Action, state: UserSettingState?) -> UserSettingState {
// ユーザーの回答状態のstateを取得する(ない場合は初期状態とする)
var state = state ?? UserSettingState(
// ユーザーの回答状態のstateを変更させるアクションでない場合はステートの変更は許容しない
guard let action = action as? UserSettingState.userSettingAction else { return state }
switch action {
// それぞれのアクションに応じたStateの更新処理を行う
・・・(case let Action名: それぞれの処理)・・・
// Debug.
AppLogger.printMessageForDebug("UserSettingStateが更新されました。")
return state
}
}
Actionを経由して、Reducerは受け取った値から新しくStateを作る
ViewControllerのStoreSubscriber func newState(state: AppState) { … } へ新しいStateが渡る
Reducer
各々のReducer
State更新後の
処理の順番
AppState
AppReducer
Case2. 次のn件を一覧で表示する
一覧表示の部分については別のContainerViewに分割して管理している
一覧表示コンテンツの
ContainerView
高さのConstraint
を変化させる
タイトル
コンテンツ
ボタン
データ取得した
分のセルを表示
1. 子のViewController側
ボタンを押下したら、API通信を
行って、コンテンツに表示するも
のの一覧を取得してUITableView
内に表示させる。
(データの取得から反映までの処
理はReduxで管理する)
1. 子ViewControllerのセ
ル個数に合わせて親に配置
したContainerの高さ更新
2. コンテンツのセルタップ
時のSFSafariController
2. 親のViewController側
ContainerViewの高さを変更す
るための処理とセルタップ時の処
理をProtocolで定義して、伴う
Viewの変化に対応させる
Case2. 次のn件を一覧で表示する
次の10件を表示するボタンを押下した際に実行されるReduxとProtocolの連動処理
extension MainViewController: EnglishNewsViewDelegate {
// 英語ニュースの取得成功時にこのViewController側で行う処理
func fetchEnglishNewsListSuccess(_ newsCount: Int) {
// 英語ニュースを表示しているContainerViewの高さを調節する
let englishNewListContentHeight = CGFloat(newsCount) * EnglishNewsTableViewCell.CELL_HEIGHT
englishNewListHeight.constant = englishNewListContentHeight + MainContentsTitleView.VIEW_HEIGHT +
MainContentsFetchButtonView.VIEW_HEIGHT
}
・・・(省略)・・・
}
extension EnglishNewsViewController: StoreSubscriber {
// ステートの更新が検知された際に実行される処理
func newState(state: AppState) {
・・・(Stateに格納されたデータを反映させる処理を行っている)
// 現在取得されている英語ニュースの個数に合わせてContainerView自身の高さを更新する
let englishNewsListCount = englishNewsList.count
self.delegate?.fetchEnglishNewsListSuccess(englishNewsListCount)
}
}
配置したContainerViewにおけ
る親子間の処理をする部分
子のViewController側について
はReduxのStateによる管理でな
るべく済むような形にする。
Case3. 複数個のContainerView
親のUIScrollViewの一番上を引っ張って全体をRefreshしたいケースを考えてみる
UIScrollViewの中にContainerViewが複数個配置している
月別カレンダー
今月のPickup
1. 子のViewController側
Stateでそれぞれ状態を管理し
ているので、Containerに紐づく
ViewControllerはそれぞれ分割
されて管理されている。
2. 親のViewController側
親のViewControllerから子の
ViewControllerの表示状態を変
更する場合はActionを発行する
飲食店チョイス
英語ニュース
親ViewControllerで行うこと
UIScrollViewDelegate + RefreshControlの処理
Action発行 子ViewControllerはRedux処理
State変化に伴うView更新が実行
今回のView実装を行うにあたってのおまけ的なもの
ContainerViewを含んだ画面におけるカスタムトランジションとの組み合わせ
写真コンテンツを入れている部分:
・画面全体はUIScrollViewで構成している
・中にはContainerViewで機能ごとに配置
ContainerViewに分割することで、ViewControllerとその
ViewController内で管理したいStateやReduxに絡む処理の粒度
を小さくすることができる。反面、子のView要素の配置位置を親側
で使う場合などでは、その点の注意が必要。
例. カスタムトランジションで写真がふわっと重なる動きを作る
// カスタムトランジションに引き渡す遷移元画像の位置をメンバ変数へ格納する
let statusBarHeight = UIApplication.shared.statusBarFrame.height
let navigationBarHeight = self.navigationController?.navigationBar.frame.height ?? 0
selectedFrame = CGRect(
x: 0.0,
y: 175.0 + navigationBarHeight + statusBarHeight - mainScrollView.contentOffset.y,
width: pickupContentsContainer.frame.width,
height: pickupContentsContainer.frame.height
)
UIScrollViewの中で更にContainerViewに分けた構成にしているので、画像のカ
スタムトランジションをする場合は親からの位置に換算する必要が出てくる。
まとめ
Reduxの活用とUI実装を組み合わせる際には状態管理の設計が重要になる
参考資料:�Redux(ReSwift)を用いた実装を考える上で参考にした資料集
・�アプリケーションの状態をReduxで管理することで「状態の更新」と「UI要素の更新」を結びつけることが可能になる
・ Reduxのルールや原則はiOSのアーキテクチャとは少し異なる部分なのでその部分の理解が若干しんどさがあるかも
・Unindirectional Data Flow in Swift
http://ianterrell.com/talks/unidirectional-data-flow-in-swift/#/title-page
・ ReSwiftのStateで管理したい状態を「どの部分までをRedux対象とするか」を決めること
・ReduxのSwift実装「ReSwift」を触ってみる
http://developabout0309.blogspot.com/2018/03/reduxswiftreswift.html
・RxSwiftを投げ出したあなたに贈る、ReduxライクなReSwiftのご提案
https://qiita.com/Hakota/items/bb94e891961b70b64b44
・ データに関わる処理とUIレイアウト変更処理の連携をReduxとProtocolの併用や使い分けと設計が綺麗な連動のポイント
エバーセンスよりメッセージ
ninaruシリーズ・michiru等のサービスは絶賛開発・運用中!
https://eversense.co.jp/
やっていき!

More Related Content

What's hot

iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方Fumiya Sakai
 
RxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップRxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップFumiya Sakai
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめできるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめFumiya Sakai
 
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-EdoiOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-EdoMegumi Otani(Czenhe)
 
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).Fumiya Sakai
 
まずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装についてまずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装についてFumiya Sakai
 
メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察Fumiya Sakai
 
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞくReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞくFumiya Sakai
 
少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐためにFumiya Sakai
 
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒントiOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒントFumiya Sakai
 
Swift playgroundsでアプリを作る
Swift playgroundsでアプリを作るSwift playgroundsでアプリを作る
Swift playgroundsでアプリを作るFromF
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)Fumiya Sakai
 
デザイナーとエンジニアが話す、iOSアプリケーション開発
デザイナーとエンジニアが話す、iOSアプリケーション開発デザイナーとエンジニアが話す、iOSアプリケーション開発
デザイナーとエンジニアが話す、iOSアプリケーション開発Kenta Ohsugi
 
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介Fumiya Sakai
 
国内初事例に学ぶSAPUI5
国内初事例に学ぶSAPUI5国内初事例に学ぶSAPUI5
国内初事例に学ぶSAPUI5Mitsuru Ogawa
 
Swift 1.2からSwift 2への移行 #cocoa_kansai
Swift 1.2からSwift 2への移行 #cocoa_kansaiSwift 1.2からSwift 2への移行 #cocoa_kansai
Swift 1.2からSwift 2への移行 #cocoa_kansaiSyo Ikeda
 
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetupAndroid Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetupYukiya Nakagawa
 
Xcode and iTC submission topics
Xcode and iTC submission topicsXcode and iTC submission topics
Xcode and iTC submission topicsSyo Ikeda
 

What's hot (20)

iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
 
RxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップRxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップ
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめできるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
 
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-EdoiOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
 
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
 
まずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装についてまずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装について
 
メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察
 
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞくReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
 
少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために
 
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒントiOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
 
Swift playgroundsでアプリを作る
Swift playgroundsでアプリを作るSwift playgroundsでアプリを作る
Swift playgroundsでアプリを作る
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
 
デザイナーとエンジニアが話す、iOSアプリケーション開発
デザイナーとエンジニアが話す、iOSアプリケーション開発デザイナーとエンジニアが話す、iOSアプリケーション開発
デザイナーとエンジニアが話す、iOSアプリケーション開発
 
Dive into Origami Studio
Dive into Origami StudioDive into Origami Studio
Dive into Origami Studio
 
iOS豆知識ver0.0.5
iOS豆知識ver0.0.5iOS豆知識ver0.0.5
iOS豆知識ver0.0.5
 
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
 
国内初事例に学ぶSAPUI5
国内初事例に学ぶSAPUI5国内初事例に学ぶSAPUI5
国内初事例に学ぶSAPUI5
 
Swift 1.2からSwift 2への移行 #cocoa_kansai
Swift 1.2からSwift 2への移行 #cocoa_kansaiSwift 1.2からSwift 2への移行 #cocoa_kansai
Swift 1.2からSwift 2への移行 #cocoa_kansai
 
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetupAndroid Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
 
Xcode and iTC submission topics
Xcode and iTC submission topicsXcode and iTC submission topics
Xcode and iTC submission topics
 

Similar to Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)

ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版Fumiya Sakai
 
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介Fumiya Sakai
 
Flux with RxSwift
Flux with RxSwiftFlux with RxSwift
Flux with RxSwiftYuji Hato
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみたTakeo Noda
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7Hiroshi Oyamada
 
Spring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へSpring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へMasatoshi Fujino
 
Tech talk salesforce mobile sdk
Tech talk   salesforce mobile sdkTech talk   salesforce mobile sdk
Tech talk salesforce mobile sdkKazuki Nakajima
 
フレームワーク品評会 Ruby on Rails #crossjp
フレームワーク品評会 Ruby on Rails #crossjpフレームワーク品評会 Ruby on Rails #crossjp
フレームワーク品評会 Ruby on Rails #crossjpShiro Fukuda
 
SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録Fumiya Sakai
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03Daiki Maekawa
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Yoshifumi Kawai
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用de:code 2017
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 
NET MAUI for .NET 7 for iOS, Android app development
 NET MAUI for .NET 7 for iOS, Android app development  NET MAUI for .NET 7 for iOS, Android app development
NET MAUI for .NET 7 for iOS, Android app development Shotaro Suzuki
 

Similar to Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ) (20)

ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版
 
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
 
Flux with RxSwift
Flux with RxSwiftFlux with RxSwift
Flux with RxSwift
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみた
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7
 
Spring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へSpring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へ
 
Tech talk salesforce mobile sdk
Tech talk   salesforce mobile sdkTech talk   salesforce mobile sdk
Tech talk salesforce mobile sdk
 
フレームワーク品評会 Ruby on Rails #crossjp
フレームワーク品評会 Ruby on Rails #crossjpフレームワーク品評会 Ruby on Rails #crossjp
フレームワーク品評会 Ruby on Rails #crossjp
 
Flex's DI Container
Flex's DI ContainerFlex's DI Container
Flex's DI Container
 
SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録
 
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimuraAPIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
 
SwiftGarden.pdf
SwiftGarden.pdfSwiftGarden.pdf
SwiftGarden.pdf
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
AndroidでDIxAOP
AndroidでDIxAOPAndroidでDIxAOP
AndroidでDIxAOP
 
NET MAUI for .NET 7 for iOS, Android app development
 NET MAUI for .NET 7 for iOS, Android app development  NET MAUI for .NET 7 for iOS, Android app development
NET MAUI for .NET 7 for iOS, Android app development
 

More from Fumiya Sakai

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 RxSwiftFumiya Sakai
 
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになったFumiya Sakai
 
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説Fumiya Sakai
 
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)Fumiya Sakai
 
最近の業務やAndroid関連のインプットと振り返り
最近の業務やAndroid関連のインプットと振り返り最近の業務やAndroid関連のインプットと振り返り
最近の業務やAndroid関連のインプットと振り返りFumiya Sakai
 
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返りFumiya Sakai
 
少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発Fumiya Sakai
 
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察するUIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察するFumiya Sakai
 
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞくレイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞくFumiya Sakai
 
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分についてiOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分についてFumiya Sakai
 
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
試して感覚を掴んでみるUICollectionViewCompositionalLayout & CombineFumiya Sakai
 
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考えるFumiya Sakai
 
Hint of a little ingenuity about UI.
Hint of a little ingenuity about UI.Hint of a little ingenuity about UI.
Hint of a little ingenuity about UI.Fumiya Sakai
 
書籍執筆からの今後に向けてのロードマップ
書籍執筆からの今後に向けてのロードマップ書籍執筆からの今後に向けてのロードマップ
書籍執筆からの今後に向けてのロードマップFumiya Sakai
 

More from Fumiya Sakai (14)

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
 
既存プロジェクトで使っていた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表現に魅了されるのか? そして共存と向き合いを考える
 
Hint of a little ingenuity about UI.
Hint of a little ingenuity about UI.Hint of a little ingenuity about UI.
Hint of a little ingenuity about UI.
 
書籍執筆からの今後に向けてのロードマップ
書籍執筆からの今後に向けてのロードマップ書籍執筆からの今後に向けてのロードマップ
書籍執筆からの今後に向けてのロードマップ
 

Recently uploaded

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Recently uploaded (9)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)