iOSDC Japan 2021 前夜祭に参加した #iosdc
今年も iOSDC が始まりましたね!
ここ数年はオンライン開催ということもあり、子供の世話をしながらリアルタイムで参加するのはなかなか厳しいものがあります。しかし、せっかくの大イベントですので、タイムシフト視聴機能を駆使しつつ、なるべくキャッチアップしていきたいと思います💪
聴いたトーク
今日は2つのトークを後追いで聴いたので、内容をメモしておきます。
agoraを使ってライブ配信機能を1ヶ月半でリリースした話 by @asa08
- Agora
- Design
- コメントを送る仕組み
- Real-Time message 機能を使う(先述の9つのひとつ)
- Block機能
- 配信者が不適切なユーザーを排除できる
- PeerToPeer Message を利用して実装する
- ギフト機能
- Agora RTM を利用して実装できる
- ただ、実際はフローを少し変えて実装した(自社サーバとAgoraのやりとりをなるべくなくしたかった+すでにギフトという概念がサービスにあり、そちらと合わせたかった)
- コメントを送る仕組み
- 課題や問題
- 画面のレイアウトが複雑になりすぎ
- リアルタイムで配信一覧を更新したい(最新の状態にするためにリロードする必要がある)
- クライアントでポーリングする
- Push通知を利用して一覧を更新
- Pusher (WebSocketを介したリアルタイム双方向通信を実現)を使うことにした
- おまけ
- 美顔フィルタの評判が良かった
- Agoraにも簡易的な美顔フィルタが用意されている
感想:これだけの内容を1ヶ月半で把握してリリースまで持っていったのはすごい!説明が丁寧でわかりやすいトークでした👏
iOSアプリ開発者がテスラを買って色々調べたりアプリを作ったりしつつまだ見ぬApple Carを想像する by @kenmaz
- テスラの概要
- 電気自動車。現在は4車種ある。
- 補助金を入れれば300万円〜購入可能
- 気に入っている点
- テスラを構成する技術
- Tesla API
- サードパーティ製アプリの開発事例
- S3XY KEY fob :kenmaz さん作のApple Watchアプリ。テスラのドアを開けたりホーンを鳴らしたりできる。SwiftUI製
- TeslaFi : テスラ用のデータロガー Webアプリ。位置情報や充電情報などの履歴を見たり
- Apple Car について想像してみる
- 謎が多い
- iPhone/ Apple Watch/ siri との高度な連携
- CarPlay の拡張
- 車両情報へのアクセす・遠隔操作
感想:非常に夢のあるトークでした。私も普段からクルマを運転するのでテスラ欲しくなりました。Apple Car も気になります
個人アプリ開発日誌:AppTrackingTransparency対応した
重い腰を上げて AppTrackingTransparency 対応しました。
私のアプリは未だにフル Objective-C で書かれています。あんまりいないと思いますが、ATT対応を Objective-C でやる場合のメモを残しておきます。
まず、
- AdSupport.framework
- AppTrackingTransparency.framework
を追加して、ソースコードに
#import <AppTrackingTransparency/AppTrackingTransparency.h> #import <AdSupport/AdSupport.h>
を追記します。
次に、IDFA許可ダイアログを表示したいタイミングで次のコードを実行します。
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// 許可してくれたかどうかが返ってくる;
}];
ダイアログに表示したい文言は Info.plist の NSUserTrackingUsageDescription
に記載します。AppTracking はユーザー側にあまりメリットはないですし、IDFA の許可リクエストもほとんど許可してくれないと思うので、「よくわからない場合は許可しなくて大丈夫です」の文言を追加しておきました。
これで完了です。
Swift と違って、行末に ;
が必要なのでご注意ください。
計測について
仕事としてアプリ開発する場合は、IDFAの許諾率等を計測するべきだと思いますが、個人開発のアプリぐらいはあまり数値を気にせずやりたいので、今回の許諾率も計測してません。
ちなみに、普段見ているのはダウンロード数ぐらいで、アクティブユーザ数も把握していません。使いたいときに使って頂いて、不要なときまで無理して使ってほしくない、ぐらいのポリシーでやってます。
申請結果
日曜日の昼に申請して、日付が変わる頃に審査が通りました。最近だと土日も普通にレビューやってるみたいですね。
#WWDC21 What's new in watchOS 8 メモ
ツイートをまとめただけです。
#WWDC21 さーて、What's new in watchOS 8 をみていきますよ! https://t.co/ysDHel8eyA
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
#WWDC21 watchOS 7 までは、常時オン状態だとアプリのUIがぼやけて表示されていた。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
watchOS 8 では代わりにUIが暗く表示されるようになる。 pic.twitter.com/NJFYk2VIaF
#WWDC21 アプリをこの明るさの低下に対応させるために isLuminanceReduced という SwiftUI 環境プロパティが導入された。開発者はこのプロパティを使って、特に重要な情報を強調表示し、非公開にすべき情報を非表示にできる pic.twitter.com/zJDE1Yn3j2
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
#WWDC21 シミュレーター右上の🔒アイコンでユーザが手首を上げ下げするイベントをシミュレートできる。これは、アプリの UI が常時オンの状態にどのように応答するかを確認する場合に非常に役に立つ pic.twitter.com/UADYZa9065
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
#WWDC21 Meet the location button でも紹介されていた Location button はもちろん watchOS 8 でも使えるぞ!https://t.co/Bo0bOVOXcf pic.twitter.com/mdaDMmfYoC
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
#WWDC21 watchOS 8 ではテキスト入力が改良され、検索がしやすくなったり、リストでのスワイプアクションがサポートされたりと、他にもいろいろと強化されているとのこと 💪
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
関係ないけど、このセッションの jake さんは本当に楽しそうにお話される方だった☺️ pic.twitter.com/6PeOVTQpaA
#WWDC21 What's new in SwiftUI メモ
ツイートをまとめただけです。
#WWDC21 さて、What's new in SwiftUI のセッションもみていくわよ https://t.co/FZEk3wOxJm
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
#wwdc21 まったく新しい Apple Pay のフローや、天気アプリは SwiftUI によってリデザインされたんですって pic.twitter.com/QVLh2Okr9G
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
#WWDC21 SwiftUI に AsyncImage の登場。文字通り画像を非同期で読み込んでくれる。プレースホルダも利用可能で、例えば画像が読み込まれるまではランダムな背景色を表示しておく、みたいなことも可能 pic.twitter.com/gm4H3QEiXE
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
#WWDC21 SwiftUI に「引っ張って更新」が標準機能として登場🎉 .refreshable モディファイアに更新時のアクションを書ける。await も利用可能。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
.task モディファイアを利用することで、新しいアイテムが追加されたら自動的にリストに反映、みたいなこともできる pic.twitter.com/TjckezJ6SO
#WWDC21 List に .listRowSeparator() モディファイアが追加されてる。これでリストの区切り線の色を変えたり、消したりできるっぽい。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
今までは UIAppearance とかいじらないといけなかったので、これは地味に嬉しいアップデート😄 pic.twitter.com/C2zmCB8BuY
#WWDC21 iOS 15 から List に .swipeActions() が追加され、セルをスワイプしたときのアイコンやアクションを設定できるようになってる!
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
SwiftUI のリストがだいぶ使いやすくなってるなぁ pic.twitter.com/d0NLQrLjRR
#WWDC21 macOS 12 から Table が SwiftUI に追加されているhttps://t.co/UvdheLB1uF
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
カラムごとのソートもできるし、CoreData もサポートしているらしい pic.twitter.com/9Kf7K4lrSb
#WWDC21 iOS 15 から searchable モディファイアが追加。検索テキストへのバインドを受け取り、現在の値に基づいてデータをフィルター処理できるようになる。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
今まで TextField と組み合わせて頑張って作っていた作業が不要になりそう😄 pic.twitter.com/tbErdMmJcm
#WWDC21 iOS 15, macOS 12, watchOS 8 から追加された .privacySensitive モディファイアを使えば、デバイスがロックされているときや Apple Watch が常時オンのとき、周りから見えないようにぼかしを入れてくれる pic.twitter.com/nPuh6O1PIt
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
#WWDC21 SwiftUI がマークダウンサポートだと!! 🎉 pic.twitter.com/KY87ddPkiW
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
#WWDC21 SwiftUI でテキストの一部をリンクにするのとかめっちゃ捗るやん🎉 pic.twitter.com/6HuaQzG93u
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
#WWDC21 新しい SwiftUI は Async/Await と組み合わせることにより、強力に使えそうな印象を受けた
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月10日
#WWDC21 Meet the Location Button メモ
ツイートをまとめただけです。
#WWDC21 今年も位置情報に関するセッションがあることを教えていただいたので見ていくぞ!
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月9日
Meet the Location Button https://t.co/q4Kk3YWj9z
#WWDC21 iOS 15 から Location Button が追加された。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月9日
これは「必要なときに一度だけ位置情報の利用を許可する」を簡単に実現できるボタン pic.twitter.com/YEMGGiOmK4
#WWDC21 この Location Button は様々な形状にカスタマイズ可能 pic.twitter.com/racokKdc5y
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月9日
#wwdc21 今までは左図のように「Current Location」みたいな UIButton を自分で生成して、LocationManager.requestWhenInUseAuthorization() を呼んでいたよね。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月9日
今後は右図のように書けるようになる。ラベルの設定と位置情報仕様の許可を自動でとってくれるようになる pic.twitter.com/ShJzv4VWI7
#WWDC21 LocationButton はもちろん SwiftUI にも対応。これはだいぶ楽になりそう。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月9日
ちなみに、symbolVariant(_:) は iOS 15 で追加された Modifier pic.twitter.com/iJNICJOaVQ
#WWDC21 LocationButton は自由にカスタマイズできるが、たとえばアイコンと背景色を同じにしてしまうとユーザが何のボタンなのか認識できなくなってしまうため、警告が表示されるとのこと。これは親切だ☺️ pic.twitter.com/xyjqrYlmtP
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月9日
#wwdc21 仮に位置情報の提供をオフにしているユーザーが LocationButton を押すとどうなるか?
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月9日
その際には許可ダイアログが再び表示され、位置情報を提供するかどうか選択できるとのこと pic.twitter.com/ETxw4yAzdk
#WWDC21 Meet Xcode Cloud メモ
読みやすさは考慮していません。ご了承ください。
6/9現在、Xcode Cloud はベータ版の利用申請を受付中。利用できるようになると連絡が来るとのこと。
#wwdc21 のMeet Xcode Cloudを見るぞ https://t.co/SkwOD2TC7h pic.twitter.com/RzLHLqdRdN
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月8日
#WWDC21 Xcode 左ペインから Xcode Cloud を表示できる。一覧にはすべてのブランチのビルド結果が表示される。タブから "チーム全体/自分だけ" の表示切り替えが可能 pic.twitter.com/8CuY66NpJT
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月9日
#WWDC21 Xcode Cloud は Xcode だけでなく、Web の App Store Connect からも利用可能。ビルド結果をチームメンバーにシェアすることもできる pic.twitter.com/vBJQzOZjnw
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月9日
#WWDC21 Xcode Cloud セットアップ方法
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月9日
1. Xcode > Product > Xcode Cloud > Create workflow
2. アプリを選択
3. GitHub の権限付与(Private repository も可能っぽい)
4. App Store Connect にアプリを登録
これだけで自動的に初期Workflowを生成してくれる pic.twitter.com/tD4nE5Shmm
#WWDC21 Xcode Cloud、ポチポチクリックしていくだけで簡単にWorkflow が作れるのは魅力的だなー。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2021年6月9日
ただ、気になるのは料金。GitHub Actions の macOS がお高めなので、それより安ければぜひ乗り換えたい😁
「1人でアプリを作る人を支えるSwiftUI開発レシピ」を読んだ
tl;dr
良い本でした。迷ったらポチることをオススメします
読者(ワシ)のスペック
購入したきっかけ
なんとなく雰囲気で SwiftUI 使ってるけど、基礎的なこととか抜け落ちてる知識があるのではないか?という不安があった。実際、次のような知識が抜け落ちていた。
- layoutPriority
- Mid座標
- Text の fixedSize, kerning 等
- iOS 14 から登場したもの
- LazyVStack, LazyHStack
- LazyVGrid, LazyHGrid
- TextEditor
- ProgressView
- Link
- Label
- Map
(各項目の内容まで書いてしまうとネタバレになるので、詳しくは買って読んでみることをおすすめする)
完全な初心者向けの書籍ではなさそう
例えば「プロトコル」「クロージャ」等は知っている前提で話が進むので、Swiftの基本的な知識を学んでから読んだほうが良さそう。余裕があれば Apple の公式チュートリアルも軽く流しておくと理解が深まる。
最新の iOS 14 Widget にも対応
iOS 14 で新登場した「ウィジェット」の作り方についても解説されている。タイムラインの概念など、公式ドキュメントを読んだだけでは理解しにくい概念についても丁寧に解説されている。
まとめ
まとめると、本書籍は次の方におすすめである。
- Swift 言語はある程度わかる
- SwiftUI を体系的に学びたい・学び直したい
- SwiftUI における iOS 13 -> 14 のアップデートを知りたい