UI実装に関するセッションを

簡単ながら振り返ってみる(仮)
Mobile	Act	ONLINE	#5	~WWDC21を振り返る~
2021/06/30
Fumiya	Sakai
自己紹介
・Fumiya	Sakai
・Freelance	App	Engineer
アカウント:
・Twitter:	https://twitter.com/fumiyasac

・Facebook:	https://www.facebook.com/fumiya.sakai.37

・Github:	https://github.com/fumiyasac	

・Qiita:	https://qiita.com/fumiyasac@github
発表者:
・Born	on	September	21,	1984
これまでの歩み:
Web	Designer
2008	~	2010
Web	Engineer
2012	~	2016
App	Engineer
2017	~	Now
iOS	/	Android	/	sometimes	Flutter
iOSのUI実装本を執筆しています!
少しの工夫で実現できるTIPS集 ライブラリ表現の活用集
書籍に掲載したサンプルのバージョンアップや続編等に現在着手中です。
過去に技術書典8で電子版だけ頒布した書籍紹介
Vol.1及びVol.2に頒布したものの中で書籍に載せきれなかったものを紹介
第1章:	メディアアプリ型のUI	
第2章:	構造が複雑な写真表示UI
記事一覧を無限スクロールする様な形のアプリ
UIを一覧/詳細表示を簡素化した実装を紹介。
現在はBoothにて販売中です! https://booth.pm/ja/items/1835468
¥1,000	-	
iOSアプリ開発「UI実装であると嬉しいレシピブック	まかない編」
サンプルコード:	https://github.com/fumiyasac/meals_ios_ui_recipe_showcase
第3章:	Combine	+	UICollectionViewCompositionalLayout
タイル状のフォトギャラリーや一覧表示型のア
プリUIでライブラリを活用した実装を紹介。
実務でも利用&考察したもの
特に第1章と第2章の内容に関し
ては、実際に相談されたり、実
装アイデアとして活用する機会
があったものになります。
	全てUIKitを利用
新たに技術書典9で電子版だけ頒布した書籍紹介
表現や動きが特徴的でユーザーにもほんの少し遊び心を与える様なUI実装を紹介
現在はBoothにて販売中です! https://booth.pm/ja/items/2360379
¥1,000	-	
iOSアプリ開発「UI実装であると嬉しいレシピブック	おもしろ編」
サンプルコード:	https://github.com/fumiyasac/meals_2nd_ios_ui_recipe_showcase
実務導入前の検証段階
若干一癖がありそう、ぱっと見
だと実装の方針が立ちにくい感
じに見受けられそうなUI実装や
構造に関して考察しました。
	UIKit	&	SwiftUIを利用
第1章:	面白い表現のフォトギャラリーUI	
第2章:	画面ロック機能を利用したUI
UICollectionViewを活用したユニークなレイア
ウト表現と画面遷移カスタマイズ実装を紹介。
第3章:	SwiftUI	+	OSS	Libraryの活用
SceneDelegateの機能や端末認証を利用した画
面ロック機能を盛り込んだ実装を紹介。
今回の発表でお話すること
WWDC21のセッション内で個人的に気になったトピックスを簡単にまとめてみた
今回はほんのさわりだけのご紹介となってしまいますが、個人的に気になったセッションをご紹介できればと思います。
1.	UIKit	/	SwiftUIに関する変更点に関するセッション:
UIKitやSwiftUI関連で新規に追加された部分を簡単ではありますが、いくつかご紹介ができればと思います。

(今回はおおまかではありますが大きな変更点について気になった部分をみていく感じを予定しています)
2.	UIKit	/	SwiftUIに付随する個人的に気になったセッション:
UI実装にも関わってきうる部分や大きな変更点ではないけれども、既存実装から大幅に少し変わって来そうな気がする部分や機
能改善を感じた部分についてご紹介できればと思います。
3.	UIデザインやインタラクションに対する考え方に関するセッション:
アプリのUI実装やデザインに関する考え方やインタラクション等に関する部分をご紹介している「Discoverable	design」という
セッションに関するご紹介を簡単にできればと思います。
個人的に試してみたいという観点で独断と偏見で選びました😓
(1)	UIKit	/	SwiftUIに関する変更点に関するセッション
SwiftUIに関する変更点に関するセッション
便利なModifierの追加やこれまでに欲しかった機能が追加されている
refs:	https://developer.apple.com/videos/play/wwdc2021/10126/
参考:	https://koogawa.hateblo.jp/entry/2021/06/10/131424
URLから画像を読み込むAsyncImage(url:	photo.url)
refreshable	(Pull	To	Refresh)等のListに関する便
利なModifierの追加

-.refreshable	(Pull	To	Refresh)

-.task	

- Separatorの変更

- swipeAction

- listStyleの設定
Table	/	Symbols	/	Canvas	/	TimelineView	…
デベロッパーに嬉しいUpdateが沢山ある
新しくできる事や従来欲しかった機能が追加された印象
POINT
UIKitに関する変更点に関するセッション
UIButtonやUIMenuに関する変更をはじめその他細かな部分でも改善が多かった
refs:	https://developer.apple.com/videos/play/wwdc2021/10059/
UIButton	/	UIMenu	に関する大幅なアップデート

- UIButtonConfiguration

- Submenu

- Location	Button
こちらもSwiftUI同様に変更が沢山あった
こちらも思った以上にアップデートは多かった印象
POINT
UIColor	enhancement

SFSymbols	enhancement

UIBarAppearance

Improvement	DiffableDatasource

Image	Display	Preperation	…
(2)	UIKit	/	SwiftUIに付随する個人的に気になったセッション
InterfaceBuilderの改善	(UIButton	/	Accessibility)
Build	interfaces	with	style
refs:	https://developer.apple.com/videos/play/wwdc2021/10196/
Xcodeに関するUpdate解説
iOS15からのButtonStyleは、IB上で設定可能。
PICKUP Accessibilityに関する設定
PICKUP
DynamicTypeに関する設定の例をデモしていました。
InterfaceBuilderやXcodeも機能改善がなされている
Keyboard関連処理に関するトピック
Your	guide	to	keyboard	layout
refs:	https://developer.apple.com/videos/play/wwdc2021/10259/
これまでのキーボード処理が下記の1行になったのは地味に嬉しい部分
PICKUP
iPadに関連するキーボード処理が充実している印象
従来はNotificationの内容からframe値や
animation秒数等を取得した上でAnimation
処理やOffset値の調整が必要だった部分
view.keyboardLayoutGuide.topAnchor.constraint(equalTo: textView.bottomAnchor).isActive = true
Apple純正のハーフモーダルが実装できる
Customize	and	resize	sheets	in	UIKit
refs:	https://developer.apple.com/videos/play/wwdc2021/10063/
これまではライブラリを利用する等少し骨が折れる所
UISheetPresentationController
PICKUP
スクロール変化量に合わせた処理やLandscape時の見た目、角丸やグラバー部分等のカスタマイズ等も可能。
ライブラリを利用した実装をする場合の選択肢
(補足)iOS14以前で類似したハーフモーダルを実現する場合の参考ライブラリ
UIKitで実装する場合に利用するライブラリの例
PanModal:	https://github.com/slackhq/PanModal FloatingPanel:	https://github.com/scenee/FloatingPanel
PICKUP より詳細な調節が必要な場合はこちらかな…
async/awaitとAPI非同期通信処理
Use	async/await	with	URLSession
refs:	https://developer.apple.com/videos/play/wwdc2021/10095/
async/await	&	Combineを使った形になっていく?
func data(from url: URL) async throws -> (Data, URLResponse)


func data(for request: URLRequest) async throws -> (Data, URLResponse)
Data
func download(from url: URL) async throws -> (URL, URLResponse)


func download(for request: URLRequest) async throws -> (URL, URLResponse)


func download(resumeFrom resumeData: Data) async throws -> (URL, URLResponse)
Download
func upload(for request: URLRequest, from data: Data) async throws -> (Data, URLResponse)


func upload(for request: URLRequest, fromFile url: URL) async throws -> (Data, URLResponse)
Upload
URLSessionに関する部分もasync/awaitで大きく変わりそうな予感
PICKUP
データの取得・アップロード・ダウンロードに関する処理でasync/awaitが前提としているものが加わった
ライブラリを利用した実装をする場合の選択肢
(補足)iOS14以前でasync/await風味の処理をする場合の参考ライブラリ
JavaScriptやNode.jsでよく見かけるPromiseに近い書き方
PromiseKit:	https://github.com/mxcl/PromiseKit Hydra:	https://github.com/malcommac/Hydra
PICKUP
AttributedStringのMarkdownサポート
iOS15ではMarkdownが標準でサポートがされる様になった(SwiftUIでも同様)
これまでの開発を通してMarkdownが使えたらな〜と感じる局面も何度か出くわしてきた。
SwiftyMarkdown:	

https://github.com/SimonFairbairn/SwiftyMarkdown
PICKUP
これまではMarkdownの取り扱いについてもライブ
ラリを利用する選択肢が多かった様に思います。
どこまで調節できるかは要調査!
(3)	UIデザインやインタラクションに対する考え方に関するセッション
iOSのアプリUI実装を改めて復習できる良い機会
Discoverable	design
使いやすいアプリを考えていくためのポイントや事例がとても盛り込まれているセッション:
新機能紹介という観点からは少し外れてしまいますが、改めてUI実装に関する考え方を学べる様なセッションでした。

Human	Interface	Guidelineとも合わせながら見ていくと更に効果がありそう。
refs:	https://developer.apple.com/videos/play/wwdc2021/10126/
見つけやすいという観点からの望ましい例・望ましくない例の解説
PICKUP
Discoverable	designに関する5つのポイント
特別ではないけれども大切にしたい視点
1.	Prioritize	important	features		(大事な部分に優先順位をつける):
2.	Provide	visual	cues	(ビジュアル面での手がかりを与えてあげる):
3.	Hint	as	gestures	(ジェスチャーでヒントを与える):
4.	Organize	by	behavior	(行動に合わせた整理):
5.	Convay	a	sense	of	control(コントロール感を伝える):
refs:	https://developer.apple.com/videos/play/wwdc2021/10126/
Toastyというサンプルアプリの
事例を元に解説していました。
Gesture	Recogniizer	/	Transition	/	Interaction	の上手な活用
このアプリは何をするためのものなのか?をしっかり考える
ビジュアルだけでは伝わりにくい部分に情報を補う
見つけやすい画面設計を形にする
明示的または暗黙的なフィードバックを与える
UI実装を考えていく上での基本的な部分の復習に近い
まとめ(感想)
今年は特に手を動かして試してみたくなるトピックが多かった!
1.	UIKit/SwiftUIに関するアップデートは想像以上に充実している印象:
複雑なものだと自前での実装難易度が上がるハーフモーダルの標準実装やUIButton/UIMenuといった頻繁にUI実装で利用する部分
に嬉しい改善が加えられている。SwiftUIについてもPullToRefreshやSwipeMenuの様な部分が追加されていました。
2.	新しく登場したasync/awaitに関する部分や既存のAtrributedTextやSFSymbols等も個人的に注目している部分:
async/awaitをはじめとする便利になる&結構大きな変更の他にも嬉しくなる改善が多く、特にAttributedTextのMarkdownのサ
ポートやSFSymbolsに関するアップデート、細かい所ではKeyboardに関する改善等も個人的には気になる部分でした。
他にもデベロッパーが望んでいた?機能が結構反映されている印象	&	現時点で触り切れていないのが個人的に悔しい。
3.	UI実装をしていく中でのAnimationやInteraction部分には引き続き拘っていきたいという思い:
デザイナーと一緒にUI実装を考えたりコラボレーションをしながら考えていく際には「Discoverable	design」で紹介されている
内容や注意点に配慮しながら進めていくと、とても良さそうに思いました。
Thank	you	for	listening	!
本来であればiOS15からの新機能を用いたサンプル実装とご一緒に紹介できれ
ば尚良かったのですが、今回は間に合わず申し訳ありません😢
後からの追っかけにはなってしまいますが、近いうちに色々UI実装にまつわる
部分もさらに試してご提供できればと考えております💦

More Related Content

PDF
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
PDF
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
PDF
Hint of a little ingenuity about UI.
PDF
Press Button, Drink Coffee : An Overview of UE4 build pipeline and maintenance
PDF
Unreal Engine と XR でつくる「働く」の未来 | UNREAL FEST EXTREME 2020 WINTER
PDF
RubyMotionでiOS開発
PDF
如何變成iOS App開發魔法師
PDF
Building real-life applications with Spec and GTK
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
Hint of a little ingenuity about UI.
Press Button, Drink Coffee : An Overview of UE4 build pipeline and maintenance
Unreal Engine と XR でつくる「働く」の未来 | UNREAL FEST EXTREME 2020 WINTER
RubyMotionでiOS開発
如何變成iOS App開發魔法師
Building real-life applications with Spec and GTK

Similar to UI実装に関するセッションを 簡単ながら振り返ってみる(仮) (20)

PPT
Doran-C4L2010
PPTX
DevOps + MongoDB Serverless = 
PDF
Ikazuchi introduction for Europython 2011 LT
PDF
Casestudy
PPT
A Glimpse On MeeGo
PDF
#idcon vol.29 - #fidcon WebAuthn, Next Stage
PDF
Build your first Monster APP
PDF
RPA summer school session 2.2: Run your first UI automation
PDF
IRJET- IOT Dune Buggy –Control it from Anywhere
PDF
IRJET- IOT Dune Buggy –Control it from Anywhere
PDF
An intro to Eleventy
PPTX
Build your first flutter app
PDF
I phone apps developments interview
PDF
書籍執筆からの今後に向けてのロードマップ
PPTX
Building android and i os apps with visual studio
PDF
RPA Summer School Session 2.1: Run your first UI automation
PDF
Cucumber meets iPhone
PPTX
flutter project bored API .... ppt.pptx
KEY
Life cycle of iPhone application
PDF
DSC IIITL Flutter Workshop
Doran-C4L2010
DevOps + MongoDB Serverless = 
Ikazuchi introduction for Europython 2011 LT
Casestudy
A Glimpse On MeeGo
#idcon vol.29 - #fidcon WebAuthn, Next Stage
Build your first Monster APP
RPA summer school session 2.2: Run your first UI automation
IRJET- IOT Dune Buggy –Control it from Anywhere
IRJET- IOT Dune Buggy –Control it from Anywhere
An intro to Eleventy
Build your first flutter app
I phone apps developments interview
書籍執筆からの今後に向けてのロードマップ
Building android and i os apps with visual studio
RPA Summer School Session 2.1: Run your first UI automation
Cucumber meets iPhone
flutter project bored API .... ppt.pptx
Life cycle of iPhone application
DSC IIITL Flutter Workshop
Ad

More from Fumiya Sakai (20)

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

Recently uploaded (20)

PPTX
Benefits of Physical activity for teenagers.pptx
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
Flame analysis and combustion estimation using large language and vision assi...
PPTX
2018-HIPAA-Renewal-Training for executives
PDF
CloudStack 4.21: First Look Webinar slides
PPT
What is a Computer? Input Devices /output devices
PDF
A proposed approach for plagiarism detection in Myanmar Unicode text
PDF
Credit Without Borders: AI and Financial Inclusion in Bangladesh
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PPTX
Microsoft Excel 365/2024 Beginner's training
PDF
OpenACC and Open Hackathons Monthly Highlights July 2025
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
Convolutional neural network based encoder-decoder for efficient real-time ob...
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
Benefits of Physical activity for teenagers.pptx
Developing a website for English-speaking practice to English as a foreign la...
1 - Historical Antecedents, Social Consideration.pdf
Taming the Chaos: How to Turn Unstructured Data into Decisions
Hindi spoken digit analysis for native and non-native speakers
Flame analysis and combustion estimation using large language and vision assi...
2018-HIPAA-Renewal-Training for executives
CloudStack 4.21: First Look Webinar slides
What is a Computer? Input Devices /output devices
A proposed approach for plagiarism detection in Myanmar Unicode text
Credit Without Borders: AI and Financial Inclusion in Bangladesh
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
Getting started with AI Agents and Multi-Agent Systems
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
Microsoft Excel 365/2024 Beginner's training
OpenACC and Open Hackathons Monthly Highlights July 2025
Module 1.ppt Iot fundamentals and Architecture
Convolutional neural network based encoder-decoder for efficient real-time ob...
Zenith AI: Advanced Artificial Intelligence
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...

UI実装に関するセッションを 簡単ながら振り返ってみる(仮)