SwiftUI習得ジャーナル
事前準備
5/26頃
- Xcodeアプデ
- 教材を見繕う
学習者のプロフィール
- インフラ・バックエンドエンジニア
- iOS はユーザとしての知識しかない
- Xcode は一応触ったことがある程度。他のIDEは数種類経験あり、触りながら習得できると判断
- Swift と Storyboard でトイアプリを作ったことがある(2年前)
- SwiftUI は今回初めて
- 英語は苦にならない
進め方
Apple Developer の動画視聴
WWDC2019,2020を中心に必要なものをピックアップする。
主なテーマ…
- Xcode
- SwiftUI
- その他 iOS のお約束で優先度の高そうなものから
Apple Developer の SwiftUI のチュートリアル
"Introducing SwiftUI" を写経しながら実施。
ただ動かすだけにならないよう注意。
以下のポイントについて留意しながらすすめる。
- SwiftUIのUI構築方法
- データの取り扱い方
- その他iOSのお約束
- Xcodeの使い方
- 問題解決(デバッグ手法、テスト手法など)の具体的オペレーション
Apple Developer 動画ピックアップ
SwiftUIでのアプリ開発の全体像を把握するために必要そうな動画をピックアップし、優先順位をつけた。
まず見る
- Introducing SwiftUI: Building Your First App - WWDC 2019 - Videos - Apple Developer
- SwiftUI Essentials - WWDC 2019 - Videos - Apple Developer
- Getting Started with Xcode - WWDC 2019 - Videos - Apple Developer
- What's new in Swift - WWDC 2020 - Videos - Apple Developer
次に見る
- Data Flow Through SwiftUI - WWDC 2019 - Videos - Apple Developer
- Mastering Xcode Previews - WWDC 2019 - Videos - Apple Developer
- Explore logging in Swift - WWDC 2020 - Videos - Apple Developer
- App essentials in SwiftUI - WWDC 2020 - Videos - Apple Developer
- Testing in Xcode - WWDC 2019 - Videos - Apple Developer
必要になったら見る
- Explore logging in Swift - WWDC 2020 - Videos - Apple Developer
- SwiftUI on watchOS - WWDC 2019 - Videos - Apple Developer
- SwiftUI On All Devices - WWDC 2019 - Videos - Apple Developer
- Modern Swift API Design - WWDC 2019 - Videos - Apple Developer
- Create complications for Apple Watch - WWDC 2020 - Videos - Apple Developer
- Design great App Clips - WWDC 2020 - Videos - Apple Developer
Apple Developer チュートリアル
動画を見て、なんとなく把握できてきたなと思ったらチュートリアルに着手する。飽き性なので、手を動かしつつ動画も見たりして進める予定。
- SwiftUI Tutorials | Apple Developer Documentation
- iOS App Dev Tutorials | Apple Developer Documentation
上記を理解するための基礎知識
動画やチュートリアルに登場するSwiftの言語仕様がわからなくなったらここで調べる。
Apple Developer 動画視聴記録と概要メモ(予定)
あとで書く
まず見る
- Introducing SwiftUI: Building Your First App - WWDC 2019 - Videos - Apple Developer 見た
- SwiftUI Essentials - WWDC 2019 - Videos - Apple Developer 見た
- Getting Started with Xcode - WWDC 2019 - Videos - Apple Developer 見た
- What's new in Swift - WWDC 2020 - Videos - Apple Developer 見た
次に見る
- Data Flow Through SwiftUI - WWDC 2019 - Videos - Apple Developer 見た
- Mastering Xcode Previews - WWDC 2019 - Videos - Apple Developer 見た
- App essentials in SwiftUI - WWDC 2020 - Videos - Apple Developer 見た
- Testing in Xcode - WWDC 2019 - Videos - Apple Developer
必要になったら見る
- Explore logging in Swift - WWDC 2020 - Videos - Apple Developer
- SwiftUI on watchOS - WWDC 2019 - Videos - Apple Developer
- SwiftUI On All Devices - WWDC 2019 - Videos - Apple Developer
- Modern Swift API Design - WWDC 2019 - Videos - Apple Developer
- Create complications for Apple Watch - WWDC 2020 - Videos - Apple Developer 見た
- Design great App Clips - WWDC 2020 - Videos - Apple Developer
【✍🏻 記録中】SwiftUI Tutorials ハンズオン記録と概要メモ
SwiftUI Tutorials | Apple Developer Documentation
Landmarks
というアプリを作りながら学習を進めていく。
SwiftUI Essentials
Creating and Combining Views
SwiftUIの宣言的なUI記述に慣れる。スムーズに完了。
Building Lists and Navigation
LandmarkRow
のPreviewが表示されず苦労した。プレビューでは不具合の原因を突き止めることは難しい。通常実行でデバッグしたところ、プレビュー用のJSONデータ読み込みのモジュールのtypoが原因と判明。無事表示できた。
Previewには
- 通常プレビュー
- ライブプレビュー
- デバッグプレビュー
の3種類がある。
print呼び出しで原因究明を試みたが、いずれのモードでも出力されなかった。プレビューだとビュー表示に関係ないことは実行をスキップするのだろうか? デバッグプレビューでブレークポイントを置いてStepOverしたが、printをStepOverしてもコンソールには何も出力されなかった。Xcodeのデバッガの使い方をマスターすればデバッグプレビューで原因究明できたのかもしれない。
もちろん、通常実行では出力された。その方法ですぐに原因が判明したため、今回はひとまずそれでおいて、次へ進む。
Handling User Input
- Mark the User’s Favorite Landmarks…Favをつける(見た目のみ。
if
の使い方) - Filter the List View…
@State
アトリビュート - Add a Control to Toggle the State…
$
接頭辞での@State
変数とのバインディング - Use an Observable Object for Storage…
ObservableObject
プロトコル準拠のクラスを作り、@Published
アトリビュートでビューに紐付いた変数を示す - Adopt the Model Object in Your Views…上記で定義したモデルをビューに紐付ける。
@EnvironmentObject
アトリビュートでの受け渡し。 - Create a Favorite Button for Each Landmark…
@Binding
変数の使い方。このアトリビュートのついた変数はこのビュー内のボタンの状態とバインドされる。
WWDCのため中断
6/8 22:00 - WWDC2021が始まってしまったので、セッションを見て回るので忙しいかもしれない。
Drawing and Animation
Drawing Paths and Shapes
6/12 22:00-
- Create Drawing Data for a Badge View…
HexagonParameters.swift
作成、写しただけ - Draw the Badge Background…
Path
で絵を描く。ピンと来ないまま写している状況。パラメータの値の必然性がわからないが、これはデザインツールなどで作るものなのだろうなと推測してとりあえず次。 - Draw the Badge Symbol…で、このチャプターはそもそも「バッジ」を描くわけだが、バッジが何なのかわかっていないままここまできている。このセクションでは
- アプリアイコンのインポート
-
Path
でシンボルを描く
を実施。描くための唐突な定数に戸惑ったまま終わった感。次。
- Combine the Badge Foreground and Background…図形操作がピンと来なすぎて変な笑いが出ながら完了。この図形(バッジ)の使途も了解できないまま次。
Animating Views and Transitions
アニメーションをやってみるセクション。
- Add Hiking Data to the App
動かすためには動かすブツを作らねばならぬので作る。Hike
モデルをつくり、中身のJSONを読み込むコードを書く。Landmark
の読み込みを作ったときと同じ。Hike
を表示するViewをいくつかインポートさせられる。ちょいズル。 - Add Animations to Individual Views
HikeView
でCloseシンボルをOpenへ遷移するアニメーションを書く。動体視力が悪くてアニメーションの違いがいまひとつ区別がつかないが、気にしない。 - Animate the Effects of State Changes
Button
のaction
引数のtoggle()
をwithAnimation
で囲むと、ボタンだけでなくtoggle()
動作もアニメーションつきになる。アニメーションの途中で何回もボタン押すようなことをしても破綻することなく動作する。 - Customize View Transitions…Transitionの定義の仕方、
extension
で書く - Compose Animations for Complex Effects…写しただけでわかっていないので明日もう一度やる。
6/13 01:00
もう一回 Animating Views and Transitions (6/13 11:30)
- Add Hiking Data to the App
ここでHike
を表示するViewをいくつかインポートさせられるが、これを手でタイプする。小さいパーツから順に作る。
a. GraphCapsule.swift…Capsule
はShape
プロトコルなのでforeground
ではなくfill
で色をつける。
b. HikeGraph.swift…GraphCapsule
を並べるView。KeyPathを勉強したほうが良い。
c. HikeDetail.swift…HikeGraph
の下にボタンを並べたやつ
d. HikeVIew.swift…HikeDetail
の上にタイトルと距離と表示トグルボタンのあるやつ
の順。
手でタイプして、わかった度がすこし上がった。
6/14 0:45
App Design and Layout
Composing Complex Interfaces
楽しかった。カテゴリ別の写真付き目次を作ったり、先頭にFeaturedの写真をつけたりした。NavigationView
や TabVIew
など。
Working with UI Controls
ProfileEditor
を作る
Framework Integration
Interfacing with UIKit
イマココ 6/18 16:00
UIKit
をSwiftUI
に統合するときの作り方。当面は必要ないと思うので一通り流す。
- Create a View to Represent a UIPageViewController
- Create the View Controller’s Data Source
- Track the Page in a SwiftUI View’s State
- Add a Custom Page Control
done.
Creating a watchOS App
一通りうつした。Extension
てついてるのを編集していったけど、ついてないやつはじゃあ何なのか不明。Section5のところをうまく再現できなかったが、Watch用のアプリを作りたくなったときにまたやってみることにして、次。
Creating a macOS App
- Add a macOS Target to the Project
- Create a macOS Detail View
- Update the Row View
- Update the List View
- Add a Built-in Menu Command
- Add a Custom Menu Command
- Add Preferences with a Settings Scene
途中でビルドエラーが発生するようになり、エラーメッセージを見ても原因がつきとめられなくなってしまった。
ダウンロードしたプロジェクトの StartingPoint
フォルダから再開しようとしたが、うまくいかない。
Complete
フォルダでXcode13(beta)のプレビュー、ライブプレビュー、デバッグプレビュー、実機プレビュー、実機実行を整頓したいのでここでとまっている
どうもエラー多発でうまくプレビューできない。あとで単純な構成のものを自分で作ってやってみることにして、このチュートリアルは終わりにする。
6/21 15:00