Tabelog Tech Blog

食べログの開発者による技術ブログです

iOSDC Japan 2024 参加レポート#2 セッション編

iOSDCJapan2023パネル

こんにちは! 食べログ開発本部アプリ開発部に所属している筒井です。
2023年に新卒入社してから、食べログiOSアプリの機能開発に日々携わっています。

昨年に引き続きアプリ部のメンバーで「iOSDC Japan 2024」に参加しましたので、それぞれのメンバーから気になったセッションをピックアップしてお伝えしていきます。

気になったセッション

筒井

どのセッションも魅力的でしたが、特に気になったものを2つ紹介させていただきます。

1つ目は @k2moons さんによる 「MPEG構造を把握し、 VideoToolBoxを使った 特殊再生の実装方法を理解する」です。

こちらのセッションではMPEGフォーマットの構造を解説するとともに、AVPlayerなどが属するAVFoundationよりも低位のフレームワークであるVideoToolBoxを用いることでAVPlayerが動画再生においてどのような処理を行なっているかを追っていくという発表でした。

圧縮方式の原理から順序を追ってタイミング制御の必要性や早送りなどの特殊再生の方法が解説されており、前提知識がない状態からでも動画再生までの流れの大枠を理解できました。
このセッションを通して、普段利用しているAPIを低レイヤーから見つめ直すことでユーザーに提供できる機能の幅が広がっていくのではないかと感じました。

2つ目は @koher さんによる「Swift 6のTyped throwsとSwiftにおけるエラーハンドリングの全体像を学ぶ」です。

こちらのセッションではSwift6から導入される Typed throw と、それを踏まえたSwiftにおけるエラーハンドリングについてお話しいただきました。
これまでは any Error としてしかthrowできなかったエラーが特定のエラー型を指定してthrowできるようになり、エラー型のキャストなどによって生じていた絶対に実行されないcatch文が削除可能になるなど様々なメリットを感じることができました。
一方で”使用する誘惑に抵抗する”(安易に使ってはいけない)ということを何度もおっしゃっていたのが非常に印象的でした。

Swift6の言語仕様に触れて未来の実装に備えることができたというだけではなく、目先の実装に囚われずそれによって生じる修正コストなども考慮してシステムを作っていく必要があると改めて感じた発表でした。
食べログでも今後新しい技術や言語仕様の変化に柔軟に対応しつつ、より良いサービスを届けていきたいと思います。

野口

こんにちは!食べログ iOS開発6年目の野口です!
iOSDCには今回で3回目の参加になりますが毎年新しい発見があり、今回も新鮮な気持ちで楽しんできました。

今年のセッションを見て特に感じたのは、Concurrencyに関する話題が多かったことです。
中でもshizさんの座談会は、事前アンケートに基づいた内容で進行され
実際のアプリ開発に即していてとても興味深い内容でした。

Concurrencyに関しては、移行時に複数の箇所でエラーが発生してしまいどのように解決するのが適切なのか悩むことがあるかと思います。

そのような中で、以下のような方針を話されてました。
・隔離境界を超えないようにする
・エラーが多発する場合、そもそもの設計を見直すこと
・外部のモジュールから移行を始めること

具体的なコーディングの話として
・ミュータブルなクラス
・グローバル変数(Sendable, non-Sendable)
をどのように置き換えるかといった点についても説明がありました。

さらに、Concurrency対応によって、個人アプリで以前から発生していたクラッシュが解消されたという実例も紹介され対応後のメリットについても知ることができました。

現在、食べログでもRxSwiftからConcurrencyへの移行を進めている最中なので今回学んだことを活かして、素晴らしいConcurrencyライフを送りたいと思います。

木村

食べログ開発本部アプリ開発部の木村です。食べログには2016年から参画しています。
今年初めてiOSDCに参加しました。

気になったセッションは2つあって、まずは @n3k0w3nさんによる「健康第一!MetricKitで始めるアプリの健康診断」です。

MetricKitはiOS13から導入されたフレームワークで、アプリのメトリクスや診断レポートを取得できるものです。
Firebase Crashlyticsでもある程度のクラッシュ検知はできますが、メモリリークによるクラッシュなど検知できないものもあります。
MetricKitではシステムによって強制終了された理由とその回数を受け取ることができ、Crashlyticsでは検知しづらいクラッシュのデータを収集し、分析する方法が紹介されていました。

もう1つは @giginet さんによる「Mergeable Libraryで高速なアプリ起動を実現しよう!」です。

ライブラリのリンクにはアプリ起動時にリンクするdynamic linkと、ビルド時にリンクするstatic linkの方法があります。
dynamic linkはビルド時にリンクが不要なためビルド時間が短い反面、起動時間が遅くなる傾向にあります。一方static linkはビルドに時間がかかる反面、起動時間には影響を及ぼしません。
開発者にとってはdynamic linkのほうがメリットを享受できますが、ユーザー体験としてはstatic linkのほうが望ましいと言えます。
Mergeable Libraryは、Build Configuration(debug/release)に応じてリンク方式を切り替えることで両者のメリットを両立できる仕組みで、その導入方法が紹介されていました。

食べログアプリでも検知できないクラッシュに頭を悩ませていたり、アプリの起動時間短縮を別のアプローチで試みていましたが、今回のセッションで得た知見を活かして、プロダクトの改善に取り組みたいと思いました。

小嶋

飲食店様向けのオンライン予約台帳サービス「食べログノート」を開発している小嶋です。
iOSDCは入社1年目の2017年以来7年ぶりの参加となりました。7年前に比べると会場全体がフレッシュでエネルギッシュな印象を受けました。

今回気になったセッションはまず、auramagiさんの「新OSの機能を古いOSにバックポートする」です。

AppleのFoundationやUIKit、SwiftUIなどのフレームワークの新機能が古いOSで利用できないことは、開発者にとって大きな悩みです。古いOSを使うユーザーを無視できない場合、新機能を提供できず、自前実装が必要となりコードが複雑化します。
こちらのセッションでは、新機能が古いOSで利用できない理由(アプリ実行時の動的リンクの説明)や、Appleが行ったバックポートの例(古いOSから存在する非公開APIの公開など)が説明されていました。
この悩みに対する解決策としてOSSの利用や自前実装が提案されていましたが、やはり銀の弾丸は存在しないということです。個人的にはどこまでカバーしたいかにもよりますが、新機能を新OSユーザーに限定的に公開する選択肢もありかと思います。

次に気になったのはkndoshnさんによるスポンサーセッション「Ditto SDK 紹介: インターネットなしで快適なデータ同期」です。

アプリ開発者なら誰しもサーバークライアント方式に対する反抗としてP2P方式を用いたデータ通信を試みて遊んだ経験があるかと思いますが(自分だけ?)、こちらのセッションはその遊び心を刺激する内容でした。
Dittoはインターネット接続不要でモバイル端末間のデータ同期を可能にするSDKで、データ同期と通信の説明、活用事例が紹介されていました。データ通信はLAN、AWDL、BLEなどの技術を用いて実現されており、P2P方式での実装経験がある身としては共感できるポイントが多い内容でした。

モチベーションを上げてくれるようなセッションが多く、ここで得た活力をプロダクトに活かしていきたいです。

食べログ開発本部アプリ開発部でマネージャーをしているです。
昨年に引き続きiOSDCに参加しました。
今年はオフライン参加が増えており、その熱量を肌で感じることができました。

イベント全般や食べログブースについても記事を書いているので、ぜひご覧ください。
iOSDC Japan 2024 参加レポート#1 今年もスポンサーとしてブース出展しました!

多くのセッションを拝聴しましたが、その中で特に興味深かった2つを紹介します。
まずは、stzn3さんによるこちらのトークです。

ソフトウェア開発は年々複雑化していると感じていますが、その複雑さに切り込んだ内容でした。
マネージメント職として複雑さを取り除いたり軽減したりということは常に考えていますが、認知の仕組みやそれに立ち向かう術について語られていたのが興味深かったです。
これはiOSエンジニアに限らず役立つ内容だと思いますので、自身の学びとしてだけでなく、メンバーにも共有して広げていきたいです。

もう1つはavocadonekoさんによるスポンサーセッションです。

iOSアプリのデザインをしている方で、「iOSアプリらしさ」について自身で調べ、たどり着いたというお話です。
結論としては、iOSアプリらしさとは「直感的に使えるデザイン」だろうということでした。
これには大いに納得で、本質的にAppleが考えているところはまさにそこだと思います。
日々の開発ではガイドラインに頭を悩まされがちですが、これを軸に考えることが大事だと改めて感じました。

iOSDCはお祭りとしても楽しいイベントですが、技術カンファレンスとしても非常に学びの多いものでした!
運営の皆さま、ありがとうございます!

おわりに

いかがでしたでしょうか。どのセッションも非常に興味深く、学びの多い3日間となりました。
ぜひ来年も参加できればと思います!
運営の皆さん、登壇者の皆さん、ありがとうございました!

最後に、食べログではエンジニアを募集しています!
もし、食べログにご興味を持っていただけた方は是非下記の採用情報ページをチェックしてみて下さい!
カジュアル面談も大歓迎ですので、ご希望の方はフリーテキストに、「カジュアル面談希望」と記載ください。
それでは、最後まで読んでいただきありがとうございました!