【イベントレポート】iOSDC Japan 2024 に参加しました

tags
iOS
author
category
event
ios
mainImage
サムネイル - タイトルメイン+写真.png
publishedAt
Sep 6, 2024
published
published
slug
iosdc-2024
authorDisplayName
Keisuke Yoshida
notion image
 
こんにちは。令和トラベルのエンジニアリングマネージャー兼モバイルエンジニアのyoshikeiとiOSエンジニアのRickです!
2024年8月22日~8月24日の3日間に渡り「iOSDC Japan 2024」が開催されました。参加されたみなさま、カンファレンス運営に携わったみなさまお疲れさまでした。
 
今回はiOSDC Japan 2024において印象に残った内容や、当日の様子を交えてイベント内容をお伝えしたいと思います。
▼ 昨年の参加レポートはこちら

iOSDC Japan 2024について

notion image

カンファレンス概要

📝
iOSDC Japan 2024はiOS関連技術をコアのテーマとしたソフトウェア技術者のためのカンファレンスです。今年もリアル会場とオンライン配信のハイブリッド開催を予定しています。
日本中、世界中から公募した知的好奇心を刺激するトークの他にも、パンフレットに掲載された技術記事、自分のペースでゆっくり参加できるポスターセッション、気持ちを盛り上げるネイルアートやフェイスペインティング、オープニングパーティ & 懇親会などなど、初心者から上級者まで楽しめるコンテンツがみなさんを待っています。
8月22日(木)〜 8月24日(土)はお祭りです!お楽しみに!! ※ iOSDC Japan 2024 (イベントサイト) より

タイムテーブル

イベントは合計3日間にわたって開催され、Day0は午後から、Day1, 2は午前から午後まで4つの会場で多くのセッションが行われました。
それと並行してスポンサーブースの出展がありました。
▼ タイムテーブルの詳細はこちら
 

スポンサーとしての参加

今回令和トラベルは、シルバースポンサーとして iOSDC Japan 2024 に協賛しました。今後も弊社としては、コミュニティ活動に積極的に貢献していきたいと考えています。
イベントサイトのシルバースポンサー一覧
イベントサイトのシルバースポンサー一覧
パンフレット掲載&ノベルティ
パンフレット掲載&ノベルティ
会場でのスポンサー紹介の一幕
会場でのスポンサー紹介の一幕
▼ イベントサイトのスポンサー一覧はこちら

イベント当日の様子

今年もパネルの前で記念撮影
今年もパネルの前で記念撮影
セッション会場
セッション会場
スポンサー企業ブース (一部)
スポンサー企業ブース (一部)
キッチンカー
キッチンカー
今年も入口には大きなパネルがあり、みなさん記念撮影をされていました。
当日は4つの会場でのセッション以外にも40社のスポンサーブースが展開され、各企業が嗜好を凝らした企画を実施されており、どのブースもたくさんの人で賑わっていました。
 
例年通り、ドリンクやフードの提供、お昼にはキッチンカーの営業などイベントを楽しむための配慮が多くなされており、1日中楽しみながらセッションやブースを回ることができました。
 
スポンサーブースビンゴ
スポンサーブースビンゴ
充実したフードの提供
充実したフードの提供
ブースビンゴ景品のクレープ
ブースビンゴ景品のクレープ
ブースビンゴ景品のたこ焼き
ブースビンゴ景品のたこ焼き
また、今回はブースを回るきっかけづくりとして、スポンサーブースビンゴ企画があり、ビンゴ達成でクレープやたこ焼き、ノベルティがもらえました。
我々も40社すべてのブースを回り、様々な企業の方々と交流することができました。
 
昨年に引き続き、オープニングパーティーや懇親会もあり、iOSエンジニアが交流し知見を深め合う場が多く用意されていました。
 

印象に残ったセッション

#1 座談会 「Strict ConcurrencyとSwift 6が開く新時代: 私たちはどう生きるか?」

 
NEWTアプリでSwift Concurrencyの対応を進める過程でも、どの関数がどのContextに隔離されているのか分かりずらいと感じる場面が少なくありませんでした。こういった状況を軽減する手段の一つとして、Closureに対して明示的にnonisolatedキーワードを指定する方法が提案されているそうです。(参考)
また、基本的にはActorの利用が推奨されていますが、全ての状況下で使えるとは限らないので、Swift6・iOS18以上ではMutex・Atomicを利用する方法が良いと紹介されていました。それ以前の環境においては、自身でThread safetyを提供するラッパーを作ると良いと思います。
Swift Concurrencyの本質的な課題についても言及しており、StrictConcurrency対応の意義が感じられる内容でした。

Proposal

座談会 「Strict ConcurrencyとSwift 6が開く新時代: 私たちはどう生きるか?」
登壇者: kntk, koher, niw, omochimetaru, まつじ Swiftの次期バージョンであるSwift 6は、開発者にとって大きな変革をもたらします。特に注目すべきは、Swift ConcurrencyのStrict Concurrencyチェックによる完全なデータ競合の防止です。これにより、コードの安全性が大幅に向上し、開発効率も向上します。また、他にもコードの品質を高めるアップデートがいくつも存在します。 しかし、アップデートをするためには、コードの変更が必要となる可能性があり、「どう対応すればいいのか?」と思っている方も多いのではないでしょうか? このセッションでは、座談会形式で、以下のテーマについて登壇者ならびに参加者の皆さんと一緒に考えていきます: - Strict Concurrencyチェックのメリットと導入してみてわかったことや注意点 - 下位バージョンと互換性のない変更への対応策 - Swift 6への移行準備を始めるタイミングと進め方 Swift 6はオプトイン方式であり、正式リリース後すぐに対応する必要はありません。しかし、今後導入される新機能を活用するためにも、早めに対策を考えておくのはいかがでしょうか? このセッションが、Swift 6へのスムーズな移行に向けて、皆さんの疑問や不安を解消する一助となることを願っています。
座談会 「Strict ConcurrencyとSwift 6が開く新時代: 私たちはどう生きるか?」
 
 

#2 Swift 6のTyped throwsとSwiftにおけるエラーハンドリングの全体像を学ぶ

Typed throwsの使い所・エラーハンドリングの分類について紹介されていました。SE-0413でも言及されている通り、Typed throwsを使えば良いというわけではなく、Untyped throwsの方が優れている場面もあるので使い分けが重要となります。
NEWTアプリでもTyped throwsを導入していますが、エラー種別の変動性が低いかつそれぞれでハンドリングの仕方を分けたい箇所に対してのみに適応しています。

Proposal

 

#3 Mastering AsyncSequence - 使う・作る・他のデザインパターン(クロージャ、Delegate など)から移行する

 
AsyncSequenceについて紹介されていました。時系列上の複数時点で値を受けとる場合に、Closureを利用して実現していたものを、AsyncStream・AsyncThrowingStreamを使ったAsyncSequenceのパターンに置き換える方法は、NEWTアプリでもやってみようと思います。
AsyncSequenceから流れてくる値は、Task内で for awaitを使って受け取る場合が多いです。その際に起こり得る強参照の問題を、 @_ImplicitSelfCaptureのトレードオフも説明しつつ丁寧に解説されていました。

Proposal

Mastering AsyncSequence - 使う・作る・他のデザインパターン(クロージャ、Delegate など)から移行する
これまで、データが非同期かつ継続的に流れてくる処理や、いつ発生するか分からないイベントを受け取る処理には、クロージャや Delegate、オブザーバーなどが用いられてきました。また、Apple プラットフォームでは Combine、サードパーティの OSS では RxSwift などといった外部のフレームワークも使用されてきました。 これらのほとんどは、Swift 5.5 で追加された AsyncSequence を使用する方法へと移行できます。実際、Apple が提供するフレームワークでも、従来 Delegate が用いられてきたような非同期にイベントを伝える API について、最近新規に追加されたものは AsyncSequence を採用しています。他のデザインパターンから AsyncSequence に移行することで、Swift Concurrency が持つアクター分離などのさまざまなメリットを享受できます。一方で、非同期なシーケンスならではのメモリリークにも注意が必要です。 このトークでは AsyncSequence の基礎、他のデザインパターンからの移行方法、移行するメリット、注意点まで、UIKit・SwiftUI を用いたアプリの例を使いながら詳しく紹介します。 Delegate、今までありがとう。これからは AsyncSequence でやっていくよ。
Mastering AsyncSequence - 使う・作る・他のデザインパターン(クロージャ、Delegate など)から移行する
 

#4 めざせ!WKWebViewマスター!

 
トークのタイトルにある通り、WKWebViewをマスターするためにWKWebViewの主要なコンポーネントの網羅的な解説がありました。
NEWT AppはUXにこだわり、基本的にネイティブで構成していますが、各コンテンツの寿命が短いLPやスポットでのグロース施策においては、WebViewを採用することが多いです。このときWeb内のコンテンツとAppのUIをシームレスに統合するような設計があるため、SFSafariViewControllerではなく、WKWebViewを利用しています。
特にグロース施策においては都度やりたいことが変化しやすいので、汎用的だが過剰すぎないWebViewクラスを設計する必要があり、日々試行錯誤をしています。
そんな我々の状況下において、リファレンスになるようなセッションでした。

Proposal

めざせ!WKWebViewマスター!
「ここはWebViewでいきましょう」 iOSエンジニアであれば、ネイティブで実装したい気持ちとビジネス要件との間で葛藤し、最終的にWebViewでの実装を選択した経験がある方も多いと思います。 このトークでは、iOSアプリ開発における強力なWeb表示コンポーネントであるWKWebViewのAPIについて徹底解説します。 WKWebViewには多くのAPIが存在し、その中にはあまり知られていないものもあります。 主要なAPIだけでなく、できるだけ普段あまり使われないAPIも含めて説明することで、参加者がWKWebViewで実現可能な機能を幅広く理解できるようになります。 具体的には、私が日々のWKWebViewを用いた開発の中で得られたノウハウを交えながら、各APIの役割や使用例、効果的な活用方法について解説します。 初心者から中級者まで、幅広いレベルの開発者にとって役立つ内容を提供しますので、ぜひご参加ください。 めざせ!WKWebViewマスター! 内容: - WKWebViewとは - WKWebViewの各APIの紹介 - 基本的なウェブページの表示 - HTTPリクエストのカスタマイズ - Cookie/キャッシュの管理 - JavaScriptからネイティブコードへのコールバック - ナビゲーションの管理 - etc...
めざせ!WKWebViewマスター!
 
他にも開催期間中にたくさんのセッションが企画されていました。詳しくはこちらをご覧ください!
 

おわりに

上記でピックアップさせていただいたものは一部ですが、どのセッションも勉強になる内容が非常に多く、今後のプロダクト開発に活用していきたい内容もありました。また、個人的にもモチベーションにつながる良い機会になりました。
登壇者のみなさま、たくさんの貴重なセッションありがとうございました!
 

GO・note・令和トラベル 3社合同で『Mobile LT Night』を開催します!

そして、今回の「iOSDC Japan 2024」と9/11~13に開催される「DroidKaigi 2024」のアフターイベントとして、GO株式会社とnote株式会社と株式会社令和トラベルの3社合同で『Mobile LT Night』を開催します!
当日は、各社よりiOS/Androidエンジニア1名ずつ、合計6名がLTに登壇します。今年の国内最大の2つのカンファレンスを振り返りつつ、モバイルアプリ開発に関する知見を共有しあえるコンテンツをご用意しています。オフライン・オンラインの同時開催なのでぜひご参加ください!
 

令和トラベルでは一緒に働く仲間を募集しています

この記事を読んで会社やプロダクトについて興味を持ってくれた方は、ぜひご連絡お待ちしています!お気軽にお問い合わせください!
フランクに話だけでも聞きたいという方は、カジュアル面談も実施できますので、お気軽にお声がけください。
 
さらに、定期的に令和トラベルの技術や組織に関する情報発信を開催予定です。connpass にてメンバー登録して最新情報をお見逃しなく!
 
それでは次回のブログもお楽しみに!Have a nice trip ✈️
 
 

# iOS