Open10

WWDC Coding Challengeの記録

とうようとうよう

この記事の注意点

  • Qiitaにもともと書いてたものをこっち側で継続します
  • あとでまとまった時にQiitaに転載するかも
  • スクリーンショットや動画など、WWDCには開発者としてのNDAがつきものですが、この記事はあくまで全員が見れる情報に関してのみの記述になります
  • また今回のWWDCのCoding & Designチャレンジには公式に#WWDC21Challengesというハッシュタグが用意されています。そのため、このハッシュタグにて公開されているキャプチャと同等レベルであればNDAには抵触しないとみなします。
  • WWDC2021にはたくさんのチャレンジが用意されていますが、今回は独断と偏見でそのうちの一部にだけ挑戦しています。その他のチャレンジが気になる方はぜひWWDC公式サイトなどから見てみてください。
  • かなりボリューミーになることが予想されるためWIPをつけている間は複数回に分けて更新していきます。
とうようとうよう

Build an app that recognizes custom audio through ShazamKit

  • ShazamKit ... Shazamのカタログやカスタムカタログで音楽聞き取りができる
  • Signatureというものを音から抽出してそのマッチングを行う
  • SHSession, SHSignatureGenerator
  • Delegateでマッチしたかどうかの結果を受け取る
  • SHMediaLibraryを使ってShazamライブラリに追加できる
  • AppleMusicとの連携をしたければMusicKitを使う
  • サンプルコード
  • SHSignatureGeneratorにバッファーを渡すと音声がsignatureになる
  • Part1からPart3まであるのに違いがない...これはなんだ...そしてiPadだけ対応のサンプルだった...
  • ビデオの特定の音声をsignature化しておくことで音声に合わせてクイズを出題するアプリが作れる
  • SwiftUI的なフォルダ構成はApp/Data/Extensions/Resources/Views
  • シミュレータでも実行可能
  • 任意の状態から音でアプリの状態を変えることができる、Shazamってそういう技術だけど応用例があるとすごい

実際に使えそうなシチュエーション

自分でやるのはデータを用意するのが必要だし時間かかるなと思ったのでアイデア出しだけ

  • サンプルのような教材動画の副教材アプリ
  • 脱出ゲームのギミック(部屋を進んでいくと流れている音声が変わる→制限時間の同期や音楽を使った謎など)
  • インタラクティブ広告(アプリを触っている最中、特定の場所にいくとそこの音で広告がポップアップする→自然とそのお店に入ってみようかなという動機付けに使えるのでは?)
とうようとうよう

Create your first 3D model with Object Capture

  • サンプルアプリ
  • こっちは全部ベタ書きだな
  • 3Dモデルを作るにはmacOSも必要らしい
  • iOS: PhotogrammetrySession(Image Depth Gravityほか)→Connect output stream
  • RealityKitで扱う
  • Model File(URL), ModelEntity, BoundingBox(RealityKit)
  • 椅子にGameSir T4Proを置いて撮ってみた、HEIC, TXT, TIFファイルで構成されるみたい、iPhoneのドキュメントから確認できる
  • 3Dモデル化はMonteleyが必要らしいので用意できたらやります
とうようとうよう

Animated artistry in SwiftUI

  • ignoresSafeArea(edges:)
  • .background(.regularMaterial), .thinMaterial
  • .foregroundStyle(.secondary)
  • .safeAreaInset(edge: .bottom)
  • GeometryReader, drawingGroup()
  • withAnimation
  • Canvas { context, size in }
  • Canvasのかきごこち、だいぶp5とかに近そう
  • context.fillとかある
  • CanvasをTimelineViewで囲ってあげるとアニメーションもできそう
  • .accessibilityLabelもつけてあげる大事さ

やってみたものはこちら
ezgif-3-88833e2b1433.gif
慣れは必要だけど感覚としてはProcessing的な書き方をSwiftでもできるようになったという感じ

とうようとうよう

Framework Freestyle

サンプルから100行以内のコードと新しいフレームワークを組み合わせて何かを作ってあげるチャレンジ

(こちらも参照セッションがないので時間ができた時に作って追記します)

とうようとうよう

Memgraph capture the flag

慣れない分野のせいでめっちゃ雑メモです。検索かかってしまったら申し訳ないです...

  • symbolication
  • atosツール
  • デバッグしたときに原因を特定しやすくする
  • dSYM
  • translate runtime addresses to file addresses
  • Linkerの挙動理解な
  • Headerと __TEXTと __DATA
  • otool -lとgrepを使う
  • ASLR slide, S=L-A
  • vmmapツール
  • -tVオプション
  • atosの-oと-lオプション
  • あんまりわかってないけど途中のまとめ
    • App binaries and frameworks are Mach-O files
    • Kernel adds ASLR slide to determine load address
    • ASLR slide equation
  • DWARFはいろんな情報を含められる
  • symbols -onlyFuncStartsData
  • nmコマンド
  • Stripビルドセッティング