聴講メモ:extension DC 2025 Day3 @ LINEヤフー

extension DC 3日目、初日登壇、残り2日は聴講者として全日参加することができた。三日間参加したくさん知見を得て、話せて充実した時間となり運営の方々には心から感謝。また、昨日お話しし損ねた Foundation Models の発表をされた Fujimon さんとも、ほぼ時間いっぱい独り占めさせていただき、昨日のプレゼン内容であったりプロンプトの工夫など色々と意見いただけた。

イベントページ:https://lycorptech-jp.connpass.com/event/362636/


マルチウィンドウ実践ガイド

tatsubee さん

  • フルスクリーン or ウィンドウ分割が選択可能
  • 柔軟なサイズ変更、複数開くことが可能、枚数上限が増えた
    • 前2つはすべてのアプリが対応するべき
    • 複数枚ウィンドウは、アプリにとっての強みポイント
  • 考慮したい点
    • ウィンドウコントロール
      • Toolbar 領域の先端に表示(信号機)
      • コンテンツ領域と重ならないように。toolbar 使えばOK
      • 使わない場合は手動調整が必要
        • GeometryReader で取得 containerCornerInsets
        • Safe Area の考慮も必要
        • アニメーション追加するとさらにいい感じに
      • UIKit の場合
        • layoutGuide
  • ウィンドウサイズ
  • 新しい Window を開く
    • OpenWindowAction
    • Drag & Drop
      • userActivity, handlesExternalEvents
    • 無数の Window が開ける
      • 何がどの Window か特定しやすくする必要がある:Window に名前をつける
      • navigationTitle が反映

実装で解き明かす並行処理の歴史:Swift ConcurrencyからNSThreadまで遡ろう

laprasDrum さん

  • Swift Concurrency
    • 低レベル競合まで含めたメモリ安全性をねらい
    • 並行かもしれないではなく、逐次実行を明示することでデータ競合のないことを証明するアプローチ
    • TaskGroup、エラーは throw で伝播、明示的ロック不要
    • このシナリオを以前はどう書いていた?歴史を遡る
  • Grand Central Dispatch
    • マルチコア CPU の浸透を背景に登場(1コア1スレッド野性能限界)
    • DispatchQueue / DispatchGroup / エラーキャプチャ変数の定義
    • ロックやエラー処理の意識が必要
  • NSOperation / Operation
  • NSThread / Thread
  • Pthreads: C言語のAPI
  • 振り返ると Swift Concurrency の記述は非常にシンプル

AppleのContainerization Frameworkから学ぶコンテナ技術の仕組みとその裏側

inductor さん

  • Swift ではないコンテナ技術 e.g. Docker
  • なぜ Apple がこの技術を世に出したのか
  • (ナントカ framework はいっぱいあるが、手続きを経て名前がオープンソースとして世に公開されたのはこれが初めて)
  • Container プロジェクト
    • apple/container
    • Container CLI : 開発者が叩く
    • API Server : サーバー環境
    • Runtime & Linux Helper : Linux と Mac 環境を繋ぐ
  • インストール簡単、とりあえず nginx 動かすのも簡単
    • Linux 環境用意しなくても動かせる
  • デモ:Web servier 動かしたり、コマンドで負荷かけたり
  • Virtual Machine Service とは?
    • ある仮想マシンが膨大なリソースを使ってしまうと困る:制限が必要だが、再起動が必要だったり面倒
    • Contener によって提供されたコンテナは独立してVMが立ち上がる
      • コンテナごとに別々にリソースを割り当てられて便利
  • apple/contenerization
    • コンテナの作成削除などライフサイクル管理、Virtualization framework のラッパー
    • VM では不要だがコンテナに必要なインターフェイスの実装
  • macOS独自の機能
    • launchd: プロセス管理の仕組み
      • macOS のサービス管理機構: スタートアップapp、長時間起動するデーモンプロセス、定時実行
    • XPC: プロセス間通信のプロトコル
      • あるプロセスから別のプロセスに処理を依頼、情報を受けわたし
      • XPCクライアント/サーバー
      • e.g. APIサーバー → Linux helper
    • Virtualization framework: VMインターフェイス
      • 仮想マシンの設定 CPUいくつとか
      • 仮想マシンの作成、削除、ライフサイクル管理
      • コンテナ用VMで必要な要素
        • gRPCサーバー(REST/GraphQLと並ぶAPI規約)
  • Next Step: CLI触ろう、Containerizaion APIを眺めて活用方法を知ろう

overlayPreferenceValue で実現するピュア SwiftUI な AdMob ネイティブ広告

たいやき さん

  • AdMob は SwiftUI に非対応
    • UIViewRepresentable が案内されている
  • ライブラリ作った
  • SwiftUI は子 View インスタンスにアクセスできない
    • UIKit はインスタンスにアクセスできるが、、
    • 広告 UIView を SwiftUI にかさねる→ ovrlayPreferenceValue
      • .overlay + onPrefernceChange 的な APIPreferenceKey の仕組みで、子ビューのサイズや座標を親で読み取る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です