SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
できるだけUI系のライブラリを用いないアニメーション
を盛り込んだサンプル実装まとめ(追加版)
Roppongi.swift #2 @ VISITS Technology様
2018 / 04 / 03
Fumiya Sakai
自己紹介
・酒井 文也 (Fumiya Sakai)
・ever sense. inc App Engineer
・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)
下記2つの新規アプリの立ち上げ(iOS側)に携わっ
ています。現在も継続して運用中です。
このトピックスを選んだ理由
UI構築やアニメーション等の実装に携わる機会が多かった
こだわり1. 不自然にならない心地よいタイミングの動き
こだわり2. 動きの肝心なところはできる限りDIYする
こだわり3. 内部の構成も同様に気配りをする
参考資料とアプリ:
UIの中に随所に自然な形で散りばめられた心地の良いアニメーション
・AWA - 自然さを追求した本質体験のためのUX
https://www.slideshare.net/KokiTogashi/awa-coockpad-tech-kitchen-
20170913
今回はアプリ内の下記の2つの画面の動き
に近いものをDIYしてみました。
今回のサンプル概要
・Githubサンプル
https://github.com/fumiyasac/InteractiveUISample
・詳細解説Qiita
https://qiita.com/fumiyasac@github/items/d1b56ffc6d7d46c0a616
今回のサンプル概要
・Githubサンプル
https://github.com/fumiyasac/InteractiveUISample
・詳細解説Qiita
https://qiita.com/fumiyasac@github/items/b694f9859cbb61c95c1a
【Chapter1】2つのコンテンツが切り替わるタブメニュー
UIScrollViewを活用するタブ&コンテンツの動きに関する設計
1番目のコンテンツ
(ContainerView)
(1) まずはタブ用とコンテンツ用のScrollViewを配置する。
<コンテンツ用ScrollViewのレイアウトを当てる手順>
2番目のコンテンツ
(ContainerView)
タブ用のScrollView コンテンツ用
ScrollView
(2) [Simulated Metrics] でFreeformを選び、[Simulated ViewController]
でサイズを750pxにする。
(3) ScrollViewの内部に、Widthを375px・Height=コンテンツ用ScrollView
の大きさのContainerViewを隣り合わせに2つ配置する。
(4) 1番目は上・左・下方向に0の制約を、2番目は上・右・下方向に0の制約
をそれぞれつける。
(5) ContainerViewからコンテンツ用のScrollViewへ [Ctrl + ドラッグ] して
Equal WidthとEqual Heightの制約をそれぞれつける
(6) [Simulated ViewController]をFixedへ戻す。
※ iPhone8の見た目の場合
【Chapter1】補足資料:制約の図解
・コンテンツ用のScrollViewをスワイプすると、動くバーと一緒に切替
・タブ用のScrollViewにあるボタンを押下後、0.26秒間のスライドをして切替
2つのScrollViewの動きについて
【Chapter2】UIScrollView & UIStackViewの構成
部品として切り出したUIViewの配置とAutoLayoutの制約に関するもの
(1) ContainerViewの高さをContainerViewにつな
がれているViewControllerのプロパティにする
UIStackViewを内包した
UIScrollView
<高さが可変するViewへの制約>
2番目のコンテンツ
(ContainerView)
高さが可変するView
高さが可変するView
+
セル高さが可変する
UITableViewを設置
Notificationを送信
して高さを調節する
height ≧ 0
priority = 1000
height = ●●
priority = 250
<StackView内のContainerViewへの制約>
UIView
UIView
ContainerView
(2) ViewControllerにNotificationを設定しておく
(3) viewDidLayoutSubviewsでtableViewの内部
コンテンツ高さとtableViewの高さを合わせる
(4) viewDidAppearでNotificationを送信する
【Chapter3】視差効果とCoreAnimationを組み合わせる
一覧表示部分のスクロールに合わせたアニメーションの効果を演出する
(1) UITableViewのスクロールに合わせてサムネイル画像がパララックスする
scrollViewDidScroll(_ scrollView: UIScrollView) でスクロール検知時に
セル側で設定したサムネイル画像の上下につけた制約を変更する。
利用するDelegate : UIScrollViewDelegate
<2つの性質の異なるアニメーション共存させる>
(2) スクロールでセルが現れる/消える際にフェードイン/アウトが入る
利用するDelegate : UITableViewDelegate
tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell,
forRowAt indexPath: IndexPath) でセルが表示されるタイミングになったら
「CoreAnimation」で設定したフェード処理を実行する。
【Chapter4】記事詳細を表示する想定の画面設計
ヘッダー上部のNavigationとアイキャッチ画像がスクロールに伴って動く
このViewControllerのポイント
(2) このViewControllerのrootに
UINavigationControllerを設置する
コンテンツ用表示
UITableView
NavigationBar
GradientHeaderView
ArticleHeaderView
ArticleHeaderViewは、
配置されたtableViewの
.headerにセットする
UITableView
(3) MainViewControllerから
ArticleViewControllerの画面遷移は、
ArticleCustomTransition.swiftを利用
※ 上の制約のみSuperview.Topにつけること
(1) UITableViewの制約:上下左右0
・GradientHeaderView
・ArticleHeaderView
ダミーのヘッダーになるView
スクロールで伸縮する画像のView
スクロール量に応じてArticleHeaderViewに配置した画像とGradientHeaderがアニメーションが行われる。
【Chapter4】補足資料:挙動に関するイメージ
動きの概要
y < 0 y > 0 ScrollViewDidScrollで制約を更新する
コードでConstraintを加えて、引数を
UIScrollViewとする、
「setParallaxEffectToHeaderView」
で制約を更新して動きを出す。
全体の流れと解説
(1) NavigationBarに内包するヘッダー
クラス名: GradientHeaderView.swift
(2) 画像を表示するヘッダー
クラス名: ArticleHeaderView.swift
記事を表示するために下へスクロールすると画像が隠れる
タイミングに合わせてNavigationBarが出現する。
y = 0
背景のアルファとダミーヘッダーの上方向の
制約を、
「setHeaderNavigationTopConstraint」
で更新して動きを出す。
【Chapter6】iPhoneXの画面に関する考慮
ヘッダーViewの高さをデバイスのサイズによってうまく調節する
端末の縦横サイズで場合分けを行う
デフォルトのNavigationBarと高さが
揃うように調節を加えると綺麗になる。
高さ調整を加える
(1) ヘッダーの高さ
クラス名: GradientHeaderView.swift
iPhoneX: 88.5, それ以外: 64.0
(2) 画像を表示するヘッダーの高さ
クラス名: ArticleHeaderView.swift
iPhoneX: 244, それ以外: 200
【Chapter7】 数値が0から該当の数まで変化する表現部分
UILabelを拡張したクラスとTimerやCoreAnimationを活用した表現の実装
・実装例: AnimationCounterSample
https://github.com/fumiyasac/AnimationCounterSample
<この実装のサンプルリポジトリはこちら>
・実装例1: 該当の設定値に近づくと変化スピードが緩やかになる
・実装例2: 値の変化があった場合にドラムロールの様に変化する
マスクで動きを含む見える範囲を制限
拡張したUILabelのクラス内には、
CoreAnimationを利用して、
値が上またが下から出るようにする。
拡張したUILabel
マスク用UIView
拡張したUILabelのクラス内には、Timerが仕込んであり、
選択された値との差分を計算し、EaseIn / EaseOut表現をする。
【Chapter8】 UITableViewのアコーディオンの様なアニメーション実装
sectionごとに表示する値を配置しセクションヘッダーのTapGestureを通して開閉する
UITableViewはGroupedに設定する
(1)表示するデータの構造は[(extended: Bool, genre: [Genre])]の形
extendedは現在のセクションのセル開閉状態を指し示すためのもの。
<この実装のポイントになる部分>
(2) セクションヘッダーのViewにTapGestureRecognizerを付与する
TapGestureでのアクションをトリガーにしてextendedの値を変える。
(3) セクションごとに格納されているセルの更新を行う。
storyRelatedTableView.reloadSections(NSIndexSet(index: section) as
IndexSet, with: .automatic) で該当のセクションの状態を更新する
ヘッダーが引っ付かないようにする
extendedの状態でnumberOfRowsInSectionの値を変える形にする
【Chapter9】 カスタムトランジションと左端のスワイプで画面遷移をする
3D回転の動きをカスタムトランジションはCATransform3Dを利用して作成する
<このアニメーションの実装にあたり>
(2) 90° (π/2) 回転するように設定
var perspectiveTransform = CATransform3DIdentity
perspectiveTransform.m34 = -0.002
containerView.layer.sublayerTransform =
perspectiveTransform
(1) 適用するパースペクティブの設定をする
Present
Dismiss
SwipeでDismissする
Flip
Animation
snapshotView.layer.transform =
CATransform3DMakeRotation(CGFloat(Double.pi /
2), 0.0, 1.0, 0.0)
※ containerViewやsnapshotViewの位置関係と回転
� アニメーションをうまく利用して遷移を実行する。
UIPercentDrivenInteractiveTransitionを継承したクラスを、
Dismissのスワイプ時にだけ適用する。
【補足1】Storyboard設計(1)
【補足2】Storyboard設計(2)
【補足3】View - Model - PresenterパターンとUI
データとViewとの繋がりをできるだけパターン化して整理する
ViewController Presenter Model
データ構造の定義UI表示とデータ取得の仲介データを伴うUIの表示
API通信を伴う部分は、
SwiftyJSONを利用して初期化
→ データ構造の作成
※APIでの非同期通信
Alamofireをラッピングした
APIRequestManager.swiftを利用
(1) ViewController側で実行する
プロトコルの定義
(2) Modelの形に則ったデータの
作成やAPI通信のハンドリング
Presenter側で定義した
プロトコルの具体的な実装をする
データを取得 → UIの更新
の流れをつくる
Viewとデータの関係を密接にする
【補足4】UIに関するクラスが多くなる場合の整理ルール(1)
【補足5】UIに関するクラスが多くなる場合の整理ルール(2)
よく使うView関連のクラスはClassに切り出す or プロトコルを定義する工夫をする
@marty-suzukiさんよりご指摘頂いた例
※1: 初期化
func tableView(_ tableView: UITableView, cellForRowAt
indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCustomCell(with:
SampleTableViewCell.self)
����・・・(以下処理が続く)・・・
}
例. UITableViewCellの共通化
sampleRelatedTableView.registerCustomCell(SampleTab
leViewCell.self)
※2 セルをインスタンス化する
※ UICollectionViewもほぼ同様な方法で共通化ができます。
類似した処理や記載をパターン化できる礎を予め準備する
実務においても活かすことができること
ライブラリを使わないUIアニメーション実装は小さな処理の集合体の組み合わせ
1. あえてDIYをすることで見えてくるもの
2. UIの作り込みだけではなく設計や部品化する部分についてのテクニック
・Animationの組み合わせ(UIView.animateとCoreAnimation)で表現するワンポイント表現
・よくあるポピュラーそうなUIやライブラリの挙動をさらに深く知ることで得られた知識と知見
・データとの連携をするような局面ではできるだけ流れやパターンにしておくと後からの機能追加も楽になる
・最初にあらかたの設計や構成にあたりをつけておくと実際のUI構築が捗る (自分の場合は手書きで残す)
・共通で使用する値や頻出のViewクラスを上手に使い回す&簡素化してまとめるための工夫をする
・複雑なUI表現を作り込む場合の組み合わせ方やまとめ方に関する戦略と解法
エバーセンスよりメッセージ
弊社ではiOS / Androidエンジニア募集しております!
https://www.wantedly.com/projects/158484

Mais conteúdo relacionado

Mais procurados

動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
Fumiya Sakai
 

Mais procurados (20)

少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発
 
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分についてiOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
 
最近の業務やAndroid関連のインプットと振り返り
最近の業務やAndroid関連のインプットと振り返り最近の業務やAndroid関連のインプットと振り返り
最近の業務やAndroid関連のインプットと振り返り
 
Approach of Prototyping for making Application User Interface about iOS
Approach of Prototyping for making Application User Interface about iOSApproach of Prototyping for making Application User Interface about iOS
Approach of Prototyping for making Application User Interface about iOS
 
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
 
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
 
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
 
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみるiOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
 
アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集
 
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
 
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
 
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
 
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリAngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
 
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒントiOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
 
第38回載せられないapp
第38回載せられないapp第38回載せられないapp
第38回載せられないapp
 
UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)
UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)
UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)
 
Lt 20150711
Lt 20150711Lt 20150711
Lt 20150711
 
まずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装についてまずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装について
 
アプリの不具合を少なくするために
アプリの不具合を少なくするためにアプリの不具合を少なくするために
アプリの不具合を少なくするために
 
Master-Detail App を実装する
Master-Detail App を実装するMaster-Detail App を実装する
Master-Detail App を実装する
 

Semelhante a できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)

モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
Satoru Yamaguchi
 

Semelhante a できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版) (19)

メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察
 
SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録
 
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
 
RxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップRxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップ
 
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).
 
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞくReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
 
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
 
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
モバイル対応Ui部品を利用したレスポンシブwebアプリ開発
 
Visual Studio App CenterでGitHubのIssue発行を自動化しよう
Visual Studio App CenterでGitHubのIssue発行を自動化しようVisual Studio App CenterでGitHubのIssue発行を自動化しよう
Visual Studio App CenterでGitHubのIssue発行を自動化しよう
 
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付きデザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
 
Clean Architecture用の開発ツールを作ったお話
Clean Architecture用の開発ツールを作ったお話Clean Architecture用の開発ツールを作ったお話
Clean Architecture用の開発ツールを作ったお話
 
Potatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwayaPotatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwaya
 
あのアプリの動きをUIKitのみでDIYしてみる(part2)
あのアプリの動きをUIKitのみでDIYしてみる(part2)あのアプリの動きをUIKitのみでDIYしてみる(part2)
あのアプリの動きをUIKitのみでDIYしてみる(part2)
 
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-EdoiOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
 
SIerは如何にしてGitHub Enterpriseを導入するにようになったか
SIerは如何にしてGitHub Enterpriseを導入するにようになったかSIerは如何にしてGitHub Enterpriseを導入するにようになったか
SIerは如何にしてGitHub Enterpriseを導入するにようになったか
 
Enterprise mobility のご紹介 ~Infragisticsが提供する SharePoint モバイルプラットフォーム~
Enterprise mobility のご紹介 ~Infragisticsが提供する SharePoint モバイルプラットフォーム~Enterprise mobility のご紹介 ~Infragisticsが提供する SharePoint モバイルプラットフォーム~
Enterprise mobility のご紹介 ~Infragisticsが提供する SharePoint モバイルプラットフォーム~
 
何を自動化するのか
何を自動化するのか何を自動化するのか
何を自動化するのか
 
会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話会社にGitHub Enterpriseを導入してみた話
会社にGitHub Enterpriseを導入してみた話
 

Mais de Fumiya Sakai

既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
Fumiya Sakai
 

Mais de Fumiya Sakai (8)

RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
 
少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために
 
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実装に関するセッションを 簡単ながら振り返ってみる(仮)
 
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察するUIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
UIKitやSwiftUIで表現や動きが特徴的な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.
 
書籍執筆からの今後に向けてのロードマップ
書籍執筆からの今後に向けてのロードマップ書籍執筆からの今後に向けてのロードマップ
書籍執筆からの今後に向けてのロードマップ
 

Último

Último (12)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: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...
 
論文紹介: 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
 
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の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: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
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)