iOSDC 2023見聞録
@dsxsxsxs です。今年もつぶやき感覚で書いていきます。
今年はトークを聞きながら記事作成するスタイルです。
開催前
ノベリティー確保できませんでした。😭😭😭😭😭😭😭😭
無念!来年こそ!!!
Day0
諸事情でほぼ視聴できず😭😭😭、日を改めて視聴する
Day1
TextKit 2 時代の iOS のキーボードとテキスト入力と表示のすべて by Yoshimasa Niwa
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
すごく参考になりました。
はじめの一歩は大事!!!!
昼休憩
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で会おう!