SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Twitter Profile
Header Animation
iOSすいすいもくもく会@Livesense
2015.07.29 Tokyo
@naoyashiga
自己紹介
• @naoyashiga
• iOS Dev, Web Markup
• https://github.com/naoyashiga
• 趣味でiOSアプリ個人開発
作ったアプリを
少しだけ紹介
100万個のアワビ
Thank you!!!!!!!!
今日のLTは
Twitter Profile
Header Animation
Twitterプロフィール画面
を引っ張るとズームするやつ
完璧に再現するのは難しいの
で何となく似たようなやつを
作ってみました
Demo
How to Blur
Layer
UIVisualEffect View
• UIVisualEffect View
• Available iOS7
• 透明度の変更は非推奨
• チラつく
• <UIVisualEffectView 0x7fd1d0440a20> is being
asked to animate its opacity. This will cause the
effect to appear broken until opacity returns to 1.
Blur Image Effect
• Swift UIImage Effect
• Apple公式のUIImageEffectをSwiftで書いたやつ
• Apple非公式
• https://github.com/globchastyy/SwiftUIImageEffects
• GPUImage
• 試していないけど処理が速そう
• https://github.com/BradLarson/GPUImage
Scroll Animation
UIScrollViewDelegate
• UITableViewDelegate
• UIScrollViewDelegate
• UITableViewDelegateに移譲済み
• scrollViewDidScroll
• スクロールしたら実行される
Get ScrollY
func scrollViewDidScroll(scrollView: UIScrollView) {
let scrollY = scrollView.contentOffset.y
}
scrollY < 0
if scrollY < 0 {
let pullDownOffsetY: CGFloat = 150
let scaleRatio = 1 - scrollY / pullDownOffsetY
headerImageView.transform =
CGAffineTransformMakeScale(scaleRatio, scaleRatio)
blurredImageView.transform =
CGAffineTransformMakeScale(scaleRatio, scaleRatio)
let blurRatio = -scrollY / pullDownOffsetY
blurredImageView.alpha = min(1.0, blurRatio)
}
scrollY > 0
if scrollY > 0 {
let headerHeightMovingSpeed = -scrollY / 2
let minHeight: CGFloat = view.frame.height *
headerImageViewHeightConstraint.multiplier / 2
let constant: CGFloat = view.frame.height *
headerImageViewHeightConstraint.multiplier -
minHeight
headerImageViewHeightConstraint.constant =
max(-constant, headerHeightMovingSpeed)
view.layoutIfNeeded()
}
Set Image
var headerBackgroundImage: UIImage? {
didSet {
let blurRadius: CGFloat = 20.0
headerImageView.image = headerBackgroundImage
blurredImageView.image =
headerImageView.image?.applyBlurWithRadius(blurRadi
us, tintColor: nil, saturationDeltaFactor: 1.0,
maskImage: nil)
}
}
Referrence
• Implementing the Twitter iOS App UI - Think &
Build
• http://www.thinkandbuild.it/implementing-the-
twitter-ios-app-ui/
• How to create an interactive blur effect in iOS8 •
Five
• http://five.agency/how-to-create-an-interactive-
blur-effect-in-ios8/
GitHub Repository
• https://github.com/naoyashiga/
TwitterProfileHeaderAnimation
Thank you!

Weitere ähnliche Inhalte

Was ist angesagt?

iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側Takehiro Shiozaki
 
Unity5.3をさわってみた
Unity5.3をさわってみたUnity5.3をさわってみた
Unity5.3をさわってみたKeizo Nagamine
 
やはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っているやはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っている今城 善矩
 
iOS 7 対応事例 FastCheckin
iOS 7 対応事例 FastCheckiniOS 7 対応事例 FastCheckin
iOS 7 対応事例 FastCheckinKosuke Ogawa
 
SteamVRさわってみた
SteamVRさわってみたSteamVRさわってみた
SteamVRさわってみたc-mitsuba
 
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについてネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについてKazuaki Hidaka
 
RoomAlive - HoloLensに向けていまできること
RoomAlive - HoloLensに向けていまできることRoomAlive - HoloLensに向けていまできること
RoomAlive - HoloLensに向けていまできることc-mitsuba
 
HoloLens FirstImpression v2
HoloLens FirstImpression v2HoloLens FirstImpression v2
HoloLens FirstImpression v2c-mitsuba
 
HoloLens first impression & development
HoloLens first impression & developmentHoloLens first impression & development
HoloLens first impression & developmentc-mitsuba
 
Potatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwayaPotatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwayaAkira Iwaya
 
Flash Toolkit for CreateJSで作るスマートフォン用アニメーショ
Flash Toolkit for CreateJSで作るスマートフォン用アニメーショFlash Toolkit for CreateJSで作るスマートフォン用アニメーショ
Flash Toolkit for CreateJSで作るスマートフォン用アニメーショTomohiro Kosaka
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublishedYoichiro Sakurai
 
1画面から始めるStoryboard
1画面から始めるStoryboard1画面から始めるStoryboard
1画面から始めるStoryboardYuichi Fujishige
 
スマホ版ログレスにポストエフェクトシステムを導入した話
スマホ版ログレスにポストエフェクトシステムを導入した話スマホ版ログレスにポストエフェクトシステムを導入した話
スマホ版ログレスにポストエフェクトシステムを導入した話章暢 藤井
 
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集yuki0211s
 
nomad-cliの紹介
nomad-cliの紹介nomad-cliの紹介
nomad-cliの紹介Kohki Miki
 
Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①Tomokatsu Iguchi
 

Was ist angesagt? (20)

iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側
 
Unity5.3をさわってみた
Unity5.3をさわってみたUnity5.3をさわってみた
Unity5.3をさわってみた
 
やはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っているやはりお前らのiOS7対応は間違っている
やはりお前らのiOS7対応は間違っている
 
iOS 7 対応事例 FastCheckin
iOS 7 対応事例 FastCheckiniOS 7 対応事例 FastCheckin
iOS 7 対応事例 FastCheckin
 
SteamVRさわってみた
SteamVRさわってみたSteamVRさわってみた
SteamVRさわってみた
 
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについてネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
 
RoomAlive - HoloLensに向けていまできること
RoomAlive - HoloLensに向けていまできることRoomAlive - HoloLensに向けていまできること
RoomAlive - HoloLensに向けていまできること
 
HoloLens FirstImpression v2
HoloLens FirstImpression v2HoloLens FirstImpression v2
HoloLens FirstImpression v2
 
HoloLens first impression & development
HoloLens first impression & developmentHoloLens first impression & development
HoloLens first impression & development
 
Potatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwayaPotatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwaya
 
Core Animation と View
Core Animation と ViewCore Animation と View
Core Animation と View
 
WebsitesプチDeepDive
WebsitesプチDeepDiveWebsitesプチDeepDive
WebsitesプチDeepDive
 
Flash Toolkit for CreateJSで作るスマートフォン用アニメーショ
Flash Toolkit for CreateJSで作るスマートフォン用アニメーショFlash Toolkit for CreateJSで作るスマートフォン用アニメーショ
Flash Toolkit for CreateJSで作るスマートフォン用アニメーショ
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublished
 
Pokelabo android web
Pokelabo android webPokelabo android web
Pokelabo android web
 
1画面から始めるStoryboard
1画面から始めるStoryboard1画面から始めるStoryboard
1画面から始めるStoryboard
 
スマホ版ログレスにポストエフェクトシステムを導入した話
スマホ版ログレスにポストエフェクトシステムを導入した話スマホ版ログレスにポストエフェクトシステムを導入した話
スマホ版ログレスにポストエフェクトシステムを導入した話
 
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
 
nomad-cliの紹介
nomad-cliの紹介nomad-cliの紹介
nomad-cliの紹介
 
Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①Ionicでハイブリッドアプリ入門①
Ionicでハイブリッドアプリ入門①
 

Ähnlich wie Twitter Profile Header Animation by using Swift

Devとopsをつなぐchat ops
Devとopsをつなぐchat opsDevとopsをつなぐchat ops
Devとopsをつなぐchat opsikikko
 
WatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことWatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことShuichi Tsutsumi
 
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜Kosuke Ogawa
 
Mochrom - スマートフォンビジネスサミット
Mochrom - スマートフォンビジネスサミットMochrom - スマートフォンビジネスサミット
Mochrom - スマートフォンビジネスサミットKatsuaki Sato
 
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1Kaname Noto
 
モバイルWebアプリケーションを複数端末で動かすために注意すること
モバイルWebアプリケーションを複数端末で動かすために注意することモバイルWebアプリケーションを複数端末で動かすために注意すること
モバイルWebアプリケーションを複数端末で動かすために注意することdsuke Takaoka
 
iOSのCI as a Service事情
iOSのCI as a Service事情iOSのCI as a Service事情
iOSのCI as a Service事情Hiroshi Maekawa
 
HoloLens Demo
HoloLens DemoHoloLens Demo
HoloLens Democ-mitsuba
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介Mori Shingo
 
iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携Masahiro Murakami
 
第38回載せられないapp
第38回載せられないapp第38回載せられないapp
第38回載せられないappcivic Sasaki
 
20131005 cocoa関西
20131005 cocoa関西20131005 cocoa関西
20131005 cocoa関西Yosuke Uno
 
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話Kentaro Matsumae
 
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回Kentaro Matsumae
 
Core Animation 使って見た
Core Animation 使って見たCore Animation 使って見た
Core Animation 使って見たOCHI Shuji
 
1画面1Storyboardのススメ
1画面1Storyboardのススメ1画面1Storyboardのススメ
1画面1StoryboardのススメTomo Ita
 
PythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEGPythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEGJun Okazaki
 
Cocos2d-xを用いた "LINE タワーライジング" の開発事例
Cocos2d-xを用いた "LINE タワーライジング" の開発事例Cocos2d-xを用いた "LINE タワーライジング" の開発事例
Cocos2d-xを用いた "LINE タワーライジング" の開発事例gree_tech
 

Ähnlich wie Twitter Profile Header Animation by using Swift (20)

Devとopsをつなぐchat ops
Devとopsをつなぐchat opsDevとopsをつなぐchat ops
Devとopsをつなぐchat ops
 
WatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことWatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったこと
 
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
 
Mochrom - スマートフォンビジネスサミット
Mochrom - スマートフォンビジネスサミットMochrom - スマートフォンビジネスサミット
Mochrom - スマートフォンビジネスサミット
 
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1
 
OpenCV 3.0 on iOS
OpenCV 3.0 on iOSOpenCV 3.0 on iOS
OpenCV 3.0 on iOS
 
モバイルWebアプリケーションを複数端末で動かすために注意すること
モバイルWebアプリケーションを複数端末で動かすために注意することモバイルWebアプリケーションを複数端末で動かすために注意すること
モバイルWebアプリケーションを複数端末で動かすために注意すること
 
iOSのCI as a Service事情
iOSのCI as a Service事情iOSのCI as a Service事情
iOSのCI as a Service事情
 
HoloLens Demo
HoloLens DemoHoloLens Demo
HoloLens Demo
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
 
iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携
 
第38回載せられないapp
第38回載せられないapp第38回載せられないapp
第38回載せられないapp
 
20131005 cocoa関西
20131005 cocoa関西20131005 cocoa関西
20131005 cocoa関西
 
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
 
20220716_jsfes.pdf
20220716_jsfes.pdf20220716_jsfes.pdf
20220716_jsfes.pdf
 
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
 
Core Animation 使って見た
Core Animation 使って見たCore Animation 使って見た
Core Animation 使って見た
 
1画面1Storyboardのススメ
1画面1Storyboardのススメ1画面1Storyboardのススメ
1画面1Storyboardのススメ
 
PythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEGPythonのGUI_2018 with NSEG
PythonのGUI_2018 with NSEG
 
Cocos2d-xを用いた "LINE タワーライジング" の開発事例
Cocos2d-xを用いた "LINE タワーライジング" の開発事例Cocos2d-xを用いた "LINE タワーライジング" の開発事例
Cocos2d-xを用いた "LINE タワーライジング" の開発事例
 

Kürzlich hochgeladen

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介: 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 Gamesatsushi061452
 
論文紹介: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 UnderstandingToru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: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...Toru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 

Kürzlich hochgeladen (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: 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
 
論文紹介: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
 
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 を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/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...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

Twitter Profile Header Animation by using Swift