こんにちは。株式会社メルカリ iOSエンジニアのkntkです。
8月22日から8月24日にかけて開催された「iOSDC Japan 2024」にメルカリはプラチナスポンサーとして参加しました。
本記事では、その参加レポートをお届けします!
登壇
株式会社メルカリからは私を含め2名のエンジニアが登壇しました。
- SwiftのSIMDとその利用方法(レギュラートーク 20分): kntk
- 座談会 「Strict ConcurrencyとSwift 6が開く新時代: 私たちはどう生きるか?」(企画 40分): kntk (他4名)
- App Intentsの未来について研究しよう!(ポスターセッション): jollyjoester
SwiftのSIMDとその利用方法(レギュラートーク 20分): kntk
CPUにはSIMD命令と呼ばれる高速演算機能が存在し、それを扱う為の型 SIMDが標準ライブラリに存在します。この型の全体像や使い方についてのセッションです。
実はこのSIMD型はvisionOS開発で用いるRealityKitで必要になることがあり、Apple Vision Proが発表され少しずつvisionOS開発が始まっている今年が絶好の発表タイミングだと考えプロポーザルを提出しました。
visionOSで必要になるとはいえ、SIMD命令自体の説明という低レイヤ技術の話が含まれているセッションだったため、「あまり人は来てくれないのではないか」と考えていましたが、想像していたよりも多くの方々が聞きに来てくださり驚きました。visionOS開発をする際に、少しでも参考になれば良いなと思います。
座談会 「Strict ConcurrencyとSwift 6が開く新時代: 私たちはどう生きるか?」(企画 40分): kntk (他4名)
Swiftの次のメジャーバージョンであるSwift 6から導入される「Swift ConcurrencyのStrict Concurrencyチェックによる完全なデータ競合の防止」についての座談会企画です。座談会形式で私含め5名の登壇者がコメントし合う形でセッションが進行しました。
自分は個人アプリで経験した「Strict Concurrency対応をしたら、長らく原因が謎だったクラッシュが解消された」というエピソードを話しました。データ競合の最も厄介なポイントは再現やデバッグ(そもそもデータ競合の存在に気づくこと)が難しい点にあると考えているため、静的にデータ競合を防止するStrict Concurrencyチェックは大きな意味があると思っています。
また、もう一つ 「Swiftチームも全てのデータ保護をActorで実現することを目指していない」 という大事なメッセージを伝えました。
Strict Concurrencyの導入ハードルを高く感じる大きな要因の一つとして「Strict Concurrency以前から存在したLock(やQueue)の仕組みの全てを絶対にactorに置き換えなければいけない」という誤解が存在すると考えています。基本的にはActorが最適な選択肢ではありますが、Strict Concurrencyを段階的に対応する際やActorではカバーできないユースケースにおいては既存のLockの仕組みを使って良いとSwiftチームも考えており、このメッセージはStrict Concurrency導入のハードルを下げるのに大きく影響すると思い座談会の場で共有しました。
セッション時間が40分だったため、登壇者の事前打ち合わせで議論した内容の半分も話せていないのですが、その反面40分に最低限必要な内容を詰め込んだ密度の高いセッションになったと思います。僕以外の登壇者が全員著名な方だったため、自分が参加して良いものかと正直不安でしたが、上記のエピソードなどが聴講してくださった方々のお役に立てたなら、登壇して良かったなと思います。
僕自身も事前の打ち合わせで登壇者の方々から多くの事を学ばせていただきました。
App Intentsの未来について研究しよう!(ポスターセッション): jollyjoester
AppleプラットフォームにはApp Intentsと呼ばれるアプリの特定の機能をシステム(OS)に伝えることができる重要な機能があります。これにより、アプリ外(Siri・ショートカット・ウィジェット)からアプリの機能を利用することが可能になります。
また、iOS18からApple Intelligence (AI)が導入されることによってApp Intentsの重要性が高まることが予想されています。
App Intentsの概要から最小実装例の解説まで網羅したポスターセッションで、キャッチアップにピッタリな内容でした。また、「こんな体験ができるアプリが良い!作りたい!」と想像を膨らませてワクワクできるセッションでした。
Swift コードバトル
Swiftコードバトルはお題で指示された動作をするSwiftコードをより短く書けた方が勝ち、という競技です。 お題は決して難しいものではなく、少し練習すればSwiftプログラマであればどなたでも参加できる難易度を目指しています。
お題例1: 入力された文字列を逆順にして出力するプログラムを書いてください。
お題例2: 与えられた整数リストの要素の合計を計算するプログラムを書いてください。
Swiftコードバトル予選の説明文から引用
私kntkも参加し、準優勝しました!
iOSDC Japan 2024運営によるSwiftコードバトル解説記事
私は昔からSwiftが好きだったため、Swiftの標準ライブラリや”スマートな書き方”には多少自身がありました。競技プログラミングもSwiftで活動していたため、競プロ的な問題に対する経験値もありました。今回のコードバトルは自分のSwift力を試せる良い機会だったと思います。
コードバトル当日は「観客の前でライトに照らされ、顔と画面を配信されながら時間以内にプログラムを書く」という緊張感のある環境だったと同時に、回答を提出して観客の方々から歓声が上がった時はとても気持ちが良く、まるでスポーツでもやっている気分でした。
決勝では敗退してしまいましたが、対戦相手の方は予選の時からの強豪でしたし、決勝の問題が「競プロ的には簡単かつ文字数の工夫方法が多い」という決勝に相応しい・素晴らしい問題だったため、悔しいですが言い訳の余地のない結果だったかなと思っています。今回の学びを活かして今後も精進していきたいと思います。
また、このコードバトルの良い点は解答の速さよりコードの短さが評価される点です。実際に、当日の試合データを見ると、全7試合中5試合の勝者は、10分以上経過後に提出した回答で勝利しています。(Swiftに自信はあるが)速度に自信がない方でも十分に勝算があるということです。是非次回があれば、Swiftに自信がある皆さんに参戦していただきたいなと思います。
とても楽しい企画だったのでぜひ来年も開催してもらいたいです!そして次回はもっと多くの方に参戦してほしいです!
メルカリスポンサーブース
メルカリスポンサーブースでは「Engineering Office Hour」「チェキ撮影」「メルカリ iOSクイズ」の3つを出展しました。
また、ブースに来てくれた方にはノベルティとしてメルカリの公式キャラクターが印刷されたコースターをプレゼントしました。
( 亀の「ゼニー」猫の「ミケ」 うさぎの「ロップ」が印刷されたコースター)
Engineering Office Hour
Engineering Office Hourは、タイムテーブル形式でメルカリ社員と話せる企画です。簡単な自己紹介やトークテーマ、ブース滞在時間がまとまったポスターを掲載し、参加者が社員やトークテーマ狙いで遊びにいけるような設計を行いました。
実際に特定の社員に会いに来た方や、ある社員が専門とする技術領域の質問をしに来た方がいらっしゃり、とても良い企画だったなと思いました。
チェキ撮影
ブースでは参加者の方とメルカリ社員のチェキ撮影も行っていました!合計で90枚近くのチェキを撮影し、参加者の方にプレゼントしました。(「エモい」と好評でした!)
メルカリ iOSクイズ
iOS開発に関するクイズを3日分(合計18問)出題しました。3日合計で212件の挑戦をいただき、大変ありがとうございました!詳しい内容はぜひiOSDC Japan 2024 メルカリブース iOSクイズ解説をご覧ください!
まとめ
今年のiOSDCはSwiftコードバトルや座談会など新しい試みが多く刺激的でした。またスポンサーブースでもEngineering Office Hour・チェキ・クイズに多くの方が参加してくださり、本当にありがとうございました。
最後に、iOSDC Japan 2024 の運営の皆様お疲れ様でした&ありがとうございました!また来年も参加したいなと思います! #iosdc #iwillblog