見出し画像

iOSDC 2023見聞録

@dsxsxsxs です。今年もつぶやき感覚で書いていきます。
今年はトークを聞きながら記事作成するスタイルです。


開催前

ノベリティー確保できませんでした。😭😭😭😭😭😭😭😭
無念!来年こそ!!!

Day0

諸事情でほぼ視聴できず😭😭😭、日を改めて視聴する

Day1

TextKit 2 時代の iOS のキーボードとテキスト入力と表示のすべて by Yoshimasa Niwa

  • 3年前のTextKit1トーク

  • TextKit1

    • が1文字(char)のサイズがglyphという

    • 重ねまくりインド文字をTextKit1でろくに描画できず、ぶっ壊れる。

      • 面白かった。というとハングル文字はどうなんだろう?

  • TextKit2登場、色々以前よりより良くなった

    • インフィックスにTextのが入ってるclassがTextKit2

    • 抽象化、glyphが隠蔽され、取れない。

    • LayoutFragment, LineFragmentなど、行、段落単位とか、ある程度は取れる。

  • iOS16にバグあり、なんかのx方向がずれる、17で解決

    • OSバージョン分岐を作るしかない

  • AttributedStringを改変するのは大変。attachmentViewProviderを使おう

    • leakに気をつけないと。AttributedStringがViewを保持しているので。

  • UITextViewに自動フォールバックの仕組みがあり、TextKit1のAPI使っちゃうと、TextKit2のAPIが効かなくなる

  • SwiftUIの場合

    • ほぼ使えん、これはひどい

    • UIKitを元に実装。例の手で

  • 岸川さんQ:AttatchmentはViewだったら、tapなどのEventを取れるか

    • A:取れる!!!

  • 色々活かせそうねこれ。リッチコンテンツのインライン要素の実装に可能性を感じます。

6年間運用したiOSアプリのリアーキテクトについて具体的に解説 by 松元 大樹

  • RxSwiftやめたい。Rxが難解。

    • 確かにReactiveは好きですが、潮時ですね。Reactiveは退場の運命だ。

  • iOS, Android共通

    • Cordovaと聞いたら、「あっ」っと思った

    • 多分native pluginだらけ→nativeで作ればよくね?って流れかな?

  • リアーキテクトの失敗

    • 現状把握そもそもむずい

    • 理想のアーキテクチャ、意見がまとまらない。進まなくなり失敗

  • 成功

    • 細かい分割、モジュール

      • スクラムに向いている

      • ADRを残す。Arch Decision Record

        • すごく参考になりました。

    • はじめの一歩は大事!!!!

昼休憩

  • ぼっち飯

  • 雑談with @lovee さん & @akio0911 さん

    • 近況、みんな元気!

    • 旅行話

      • 福岡→東京、車で。強すぎ

      • 地図TSKR!今度のツーリング計画に活せていただきます。

Mastering SwiftSyntax by kishikawa katsumi

  • 途中より入場、ほぼ半分聞けなかった。後で見る

  • visitorでtraversal、rewriterはほぼvisitor、ただしreturnするので、それで、で書き換えなりなんなりする

  • SyntaxBuilderで直接文字列比較可能

  • SwiftSyntaxはText処理だけ、継承は型を知らない

  • Paserで補完してくれる。なのでSyntaxはparse失敗しない。fixedであるか拾える

  • 文法チェック、lintの役に立つ、精度の高い修正が可能

  • 岸川さん「みなさんもうできるよね?」ということ宿題が出されました

    • 圧w

    • 会場ざわざわ

    • やりまーす

macOSで自分のカメラを作ってみよう - Core Media IO Extension by 服部 智

  • カメラすげぇーーー

  • /Applicationか~/Application?に入れないと動かない

    • 上書きはだめ、削除してから入れ直す

    • 罠しかない😇

  • UserDefaultsをobserveする感じで、カメラアプリ↔ホストアプリインタラクション

  • ホストアプリで音声入力導入し、カメラへ文字を描画

  • 大成功。すげぇーー

UIのブラックボックスを探る by noppe

  • お作法を知る

  • HIGから少しわかる

  • Ruler機能、sketchあり

    • Figmaはあるかな?

  • DynamicTypeに注意

  • ColorMeterとかで色検出

  • View Hierarchy Debuggerは強い。Revealを駆使し、任意のappのVHが一目瞭然

    • frida、root権限必要。Jail breakってことか

      • 黒じゃんw

    • Qしてみた:SwiftUIで作られた部分は分かるか

      • SwiftUIのまんまのVHまで復元できないが、UIKitなりに変換されたSwiftUIなんなりの作りだなーっくらいは分かる。そこまでしかわからない。

  • 無駄なUIを作らない

他社からのアプリ譲受による実践的な学び by Mika Arai

  • 時期、開発要件決め、やること進行させる

    • 誠実にユーザーへ伝える

      • 通知手段も決めないと

  • 双方がApp Store Connect上での作業が山々なので、予定しっかり決め

  • アプリ以外の譲渡

    • サーバ側

    • Analytics

    • 通知インフラ

  • 渡す側はAccount Holder権限必要。これは最高権限

  • リリース待ち状態は譲渡不可

    • 要注意だ!つまり未リリースの何かしらを受け取る側に任せることはできないよ

    • AppIconを差し替えといて、譲渡直後にリリースする

      • Apple: ダメです!

  • 課金ステータスも制限あり

  • テストフライトが中止している

  • XCode Cloud削除

  • 受け取る側

    • 譲渡リクエストを承認する

    • 必要情報を埋める

    • Appのプライバシー項目は、リリースしてあるAppでは表示されない

    • 2営業日ほど

  • アイコンと会社名が不一致の期間が必ず起きる。Stake Holdersなどに理解してもらわないと。

  • 諸URLの遷移先が必要なので、先行でbackendやっておかないとだめ

  • Qしてみた:課金機能に影響あるか、受け取る側の承諾可能期限はあるか

    • 譲渡前サブスクリプションを止める必要がある。

      • サブスクリプションが失われる。

    • 承諾期間は60日、過ぎたら辞退同様、全てやり直し

小さなバグが生んだ悲劇、そこから学ぶ耐障害性の高いアプリ設計 by Yosuke Imairi

  • 特急申請出さんといかんほど障害はまずいよ

  • APIに依存した設計、クライアント側バグでほぼDDoS発生。サーバー落ちる。実質App利用不可。

  • Solutions

    • 静的APIを用意。

    • 強制アップデート

  • Deviceに依存する機能はシミュレーターではなくしっかり実機で確かめよう

LT

聞き入ったので大半メモを取り損ねた。

  • L10Nを切り出してVersion管理、チェックなど

  • Collection APIを適切に使う。なんでも.filterで作れるとはいえ、性能の違いはある

    • 大いに盛り上がりでした。

  • 実際の開発フローに近いTutorialを作る。やってもらう

  • 非接触操作すげぇぇぇーーー。

    • 大いに盛り上がりでした。

  • 90度スタンド、物理w。ナイス娘専用アプリ。和ごった。

Today's Update

  • ビール数はギリセーフ

  • ボトル水もギリ

Day2

Day1 Opening Party来場160名。大盛況

watchOSとMapKitを駆使した位置情報収集:バッテリー消費最小化と取得精度向上テクニック by Shoko Sato

  • bestForNavigationにMap Matching補正が入ってる

    • 逆に言うと、ナビでない用途の場合はbestForNavigationにしてはいけない

    • 道路にいないのに道路に修正される

  • 精度だいぶ違うな

  • バイク管理アプリすごい。今度のツーリングに使っていただけたらと思ったが、未リリースとのこと。

    • 期待

StoreKit2を使った課金システムのフルリニューアル by Yuhei Ito

  • StoreKit2のAPIすごく簡潔になった

  • restoreもアプリ側で完結

  • レシートなくなった。代わりにjwsなんちゃらが得られる

  • Server側にStoreKit2を先行対応してもらわないと結構バグる

    • 本来は、StoreKit1だった元通りのレシート処理に入るはず

      • タイムラグが著しい

      • 方々のQにより、症状みんなそれぞれ、でもバグるのは確実

メタバースプラットフォームを支えるiOS開発と運用 by TAAT

  • 特にVの話はなかった

  • Unity as a Library

  • OpenAPI Generator

  • trunk + feature flag

  • Monorepo

  • Vision Pro対応予定

  • Qしてみた:CマクロでないFeature分岐、未リリースの何かをリークした事例はありましたか。そレに対する対応

    • 未リリース機能をリークした事例はあったが、リリースサイクルが早いので早期発見&対応をし、大きなトラブルまで発展はしなかった。結果オーライとのこと。

複雑さに立ち向かうためのコードリーディング入門 by shiz

  • 知識不足→複雑。情報不足→複雑。脳の処理不足→複雑

  • 長期記憶に持っていく

    • 覚えたいことを繰り返す、継続的に触る

  • 自分以外の、他の視点が長期記憶の修正に大いな役に立つ

    • すごい納得!自力だけでは気付けられなかったり、思いつけられなかったりすることが他人の指摘よりできた経験が自分には多かった。

    • 誤認識ももしかして他人の指摘よりより修正しやすくなるかな

  • ざっとコード全体を眺める→感覚記憶を活かす

    • すごい納得!よくやることなので、なぜか数回ざっとみたらなんとなくわかったっという体験の正体はこれかーーー

  • 読書のコツも適応可能

  • 割り込みのコストは高い、1回で15分ほど

    • 割り込みから復帰しやすくようにリンクやヒントを残しておく

  • 読みやすいコードを書く

    • 手法、デザインパターン

    • アンチパターンの注意

    • coding規約

  • Qしてみた:共通認識を取るのに、意識表明しない人の思うことを引き出す方法

    • 活発的な現場にすればそういう課題が自然解決。

    • 積極的発信して活発的な現場に変えてみるか

CoreHaptics入門

  • Game Controllerにもhapticを送信可能

  • 目立たせたい演出に活かそう

  • ほどほどに

  • 必要機能ではない

  • メイン UXを妨げてはいけない

  • 自前Hapticsパターンの設計、責務分担

    • Hapticsパターンの適応箇所は企画側

    • Hapticsパターンの設計Designerにお願いしてある

    • Designerにhaptic editorらしきdebugger機能を提供した

LT

  • Auth Serviceのweb uiを活かすの発想はなかった。強すぎ

    • 毎年ネタが強烈で、会場大いに盛り上がり、今年もそう

  • QRCode眩しっ、ほんそれ

    • EDRで画面を部分的に明るくするのはできる

    • かなりの開発

    • 公式サンプルあり

  • サー終のリリースはReject食らう。最小限の機能を提供しないと通してくれない

    • メンテナンスモードで補う

  • 肉の話 by @lestrrat さん

    • じゃなかった。パンの話。

    • 焼きそばパンは違う

    • 作る!!!

    • サワードウ!サワードウ!!時代はサワードウだ!!!

    • 酵母の世話は大変

    • ブログ記事あり

  • MIDIデバイスになりすましてMFi貫通

    • その発想はなかった。すげぇ

    • マイコン制御大成功。大盛況

  • Network、zero protocol

    • byte列でDataとして転送

    • SwiftMacroで危ない実装を自動生成

  • LiDARおもろ

  • エレギかっこいい

    • C++だった

  • 今回の会場WiFi調子良かった

    • ありがとうございました。

    • メール設定を見直す推奨の参加者がいました。

Closing

  • 消費量

    • ビール960本

    • ボトル水1760本

  • 無限コーヒー1942杯

    • ちな俺は10数杯消費したはず

  • かさばる And/ Or重い

  • 総トーク時間2000+

  • 参加者増えた。過去最高

    • スポンサー、スタッフも増加。過去最高

    • iOS界隈はまだまだインフレか

懇親会

賑わいでした。肉美味しいしフルーツ助かる。メロンうめぇぇ
プリンと思ったが違った。野菜ムースだった。ごめん、、これは不味かったです。(どおりで大量に残ってたか。肉は秒殺だったね
眠すぎてほぼ記憶が飛んでたが、確かAndroidエンジニアでマネージャーのおじが声掛けてくれました。多分、アーキテクチャの話をした気がする。ごめんなさいその後声かけ直したかったけと見失った。
@megabits さんと諸々経験シェアとかしました。
帰宅。

感想など

腹いっぱい知識吸収して、色々いただけました。
LINEブースのコードレビューチャレンジが面白すぎで無限に凸ってました。そもそも出題がうまい、ツッコミやすいように書いてるのが伝わるので感動しました。(なんかネタが生々しいっていうか、実経験とか入れてるのかな?
他にもクイズ諸々受けさせていただきました。なんか今回みんな出題のレベルが高くてすんげぇぇ勉強になった。
Day2にでついに@iXerolさんの正体が判明。ずっと気になってたわい。

それでは、またiOSDC 2024で会おう!


この記事が気に入ったらサポートをしてみませんか?