koogawa blog

iOS、Android、foursquareに関する話題

iOSDC Japan 2021 前夜祭に参加した #iosdc

今年も iOSDC が始まりましたね!

iosdc.jp

ここ数年はオンライン開催ということもあり、子供の世話をしながらリアルタイムで参加するのはなかなか厳しいものがあります。しかし、せっかくの大イベントですので、タイムシフト視聴機能を駆使しつつ、なるべくキャッチアップしていきたいと思います💪

聴いたトーク

今日は2つのトークを後追いで聴いたので、内容をメモしておきます。

agoraを使ってライブ配信機能を1ヶ月半でリリースした話 by @asa08

  • Agora
    • ビデオ・音声通話やライブ配信をかんたんに実装できるsdk
    • 9つの機能がある!今日話すのは Interactive Live Streaming と Real-Time message
    • Agoraを選んだ理由
      • 早くリリースして、ユーザの反応を見たかった
      • 人手不足
    • Interactive Live Streaming 仕組み
      • 配信者がChannelを作り、閲覧者がJoinする
      • appId, channelName, uid, token が必要
  • Design
    • コメントを送る仕組み
      • Real-Time message 機能を使う(先述の9つのひとつ)
    • Block機能
      • 配信者が不適切なユーザーを排除できる
      • PeerToPeer Message を利用して実装する
    • ギフト機能
      • Agora RTM を利用して実装できる
      • ただ、実際はフローを少し変えて実装した(自社サーバとAgoraのやりとりをなるべくなくしたかった+すでにギフトという概念がサービスにあり、そちらと合わせたかった)
  • 課題や問題
    • 画面のレイアウトが複雑になりすぎ
    • リアルタイムで配信一覧を更新したい(最新の状態にするためにリロードする必要がある)
      • クライアントでポーリングする
      • Push通知を利用して一覧を更新
      • Pusher (WebSocketを介したリアルタイム双方向通信を実現)を使うことにした
  • おまけ
    • 美顔フィルタの評判が良かった
    • Agoraにも簡易的な美顔フィルタが用意されている

感想:これだけの内容を1ヶ月半で把握してリリースまで持っていったのはすごい!説明が丁寧でわかりやすいトークでした👏

iOSアプリ開発者がテスラを買って色々調べたりアプリを作ったりしつつまだ見ぬApple Carを想像する by @kenmaz

  • テスラの概要
    • 電気自動車。現在は4車種ある。
    • 補助金を入れれば300万円〜購入可能
  • 気に入っている点
    • シンプルなデザイン
    • 余計なボタンがない
    • スマホを持って近づくと自動でロック解除&電源オン
    • 座ってブレーキ踏むだけでハンドルとシートを調整してくれる
    • 駐車してシートベルト外してハンドルとシートのいちが元にもドエル
    • スマホから離れると鍵がロックされる
    • 駐車中も怪しい人物が近づくと勝手に録画開始
    • 自動運転
    • OTAソフトウェアアップデート
  • テスラを構成する技術
  • Tesla API
    • 公式アプリで鍵を開けたり、エアコンを操作したりできる
    • どんなAPiが存在するか有志がドキュメントにまとめている(公式情報ではない)ので、アプリも自作できる
    • Wake API でテスラを起動できる
    • 充電、空調、走行情報、車両の向きなどを取得できる
  • サードパーティ製アプリの開発事例
    • S3XY KEY fob :kenmaz さん作のApple Watchアプリ。テスラのドアを開けたりホーンを鳴らしたりできる。SwiftUI製
    • TeslaFi : テスラ用のデータロガー Webアプリ。位置情報や充電情報などの履歴を見たり
  • Apple Car について想像してみる
    • 謎が多い
    • iPhone/ Apple Watch/ siri との高度な連携
    • CarPlay の拡張
    • 車両情報へのアクセす・遠隔操作

感想:非常に夢のあるトークでした。私も普段からクルマを運転するのでテスラ欲しくなりました。Apple Car も気になります

個人アプリ開発日誌:AppTrackingTransparency対応した

重い腰を上げて AppTrackingTransparency 対応しました。

developer.apple.com

私のアプリは未だにフル 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 の許可リクエストもほとんど許可してくれないと思うので、「よくわからない場合は許可しなくて大丈夫です」の文言を追加しておきました。

これで完了です。

f:id:koogawa:20210615214532p:plain

Swift と違って、行末に ; が必要なのでご注意ください。

計測について

仕事としてアプリ開発する場合は、IDFAの許諾率等を計測するべきだと思いますが、個人開発のアプリぐらいはあまり数値を気にせずやりたいので、今回の許諾率も計測してません。

ちなみに、普段見ているのはダウンロード数ぐらいで、アクティブユーザ数も把握していません。使いたいときに使って頂いて、不要なときまで無理して使ってほしくない、ぐらいのポリシーでやってます。

申請結果

日曜日の昼に申請して、日付が変わる頃に審査が通りました。最近だと土日も普通にレビューやってるみたいですね。

#WWDC21 What's new in watchOS 8 メモ

ツイートをまとめただけです。

developer.apple.com


#WWDC21 What's new in SwiftUI メモ

ツイートをまとめただけです。

developer.apple.com


#WWDC21 Meet the Location Button メモ

ツイートをまとめただけです。

developer.apple.com

#WWDC21 Meet Xcode Cloud メモ

読みやすさは考慮していません。ご了承ください。

developer.apple.com

6/9現在、Xcode Cloud はベータ版の利用申請を受付中。利用できるようになると連絡が来るとのこと。

「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 のアップデートを知りたい