📱

今年もiOSDC Japanに参加してきました🎉

2024/09/13に公開

はじめに

WED株式会社でお買い物アプリONEの開発をしているiOSエンジニアの成田です。
今年も今年とてiOSDC Japanに参加してきました!
iOSDCには2019年から毎年参加していて、当日スタッフとして運営に携わらせていただいたこともあります。
昨年はWED株式会社としてスポンサーブースを出展させていただきブースの運営がメインになりましたが、今年はスポンサーブースの出展がなかったため、昨年よりも多くのトークやセッションなどのコンテンツをリアルタイムで楽しむことができました✨
今回は、今年のiOSDCに参加してみて個人的に気になったコンテンツなどをいくつか紹介できればと思います!

Swiftコードバトル

https://fortee.jp/iosdc-japan-2024/proposal/c1b14761-d763-4e70-99b1-9e4ad6dde1b3

今年はSwiftコードバトルというiOSDC初のライブコンテンツがありました。与えられたお題をSwiftで書いてコードが短い方が勝ちというシンプルなルールで、予選を勝ち進んだ人同士の戦いを会場で観戦することができます。
お題の内容としては競技プログラミングで出題されるようなものです。以下は準々決勝の問題の一つです。

標準入力の各行に、英単語が一つずつ書かれています。
奇数番目の文字だけ、偶数番目の文字だけをそれぞれ繋げて、空白区切りで出力してください。
「abcdef」なら「ace bdf」、「xyz」なら「xz y」を出力します。
すべての行についてこの手順を繰り返してください。

私も競技プログラミングの経験が多少あるため、観戦しながら自分でも挑戦してみました。問題自体は簡単だったので、動作するコードを書くのは容易でしたが、短く書くとなると一筋縄ではいかないです。普段のSwiftによるアプリ開発ではあまり使わない表現やメソッドを駆使しなければならず、コードを短縮するのは想像以上に難しいと感じました。

参加者の皆さんはやはり流石で、コードがどんどん短くなっていく様子には驚きでした。制限時間内にコードを洗練させる過程や、わずかな差での接戦を見ることができ、とても刺激的でした。何よりも、ライブコーディングを目の当たりにするのはとても楽しい経験になりました。

来年も開催されるのであれば、今度は自分も練習を積んで参加してみたいと思います💪

トークセッション

やっぱりiOSDCのメインコンテンツといえばトークセッションですよね。
今年のトークセッションの中でいくつか気になったものを紹介したいと思います!

Kotlin MultiplatformでSaaS大規模アプリの生産性を向上させる技術的意思決定と導入効果を最大化するための取り組み

https://fortee.jp/iosdc-japan-2024/proposal/0d719c21-ef27-4b45-acdc-dc8b2f1642bd

Jiro Nagasakiさんによるこのセッションは、今年個人的に最も注目していたセッションの一つでした👀。現在、WEDではONEのプロダクトにKotlin Multiplatform(KMP)の導入を検討しているため、実際に導入経験のある方から直接話を聞けたことは大きな収穫でした。特に、KMPの運用面についての経験談は、弊社のモバイルチームが今後の方向性を検討する上でとても参考になりました。

Kotlin Multiplatform (KMP): Kotlin Multiplatformは、Kotlinを用いて複数のプラットフォームで共通のビジネスロジックを共有できる仕組みです

KMPの導入に関して、課題となるKMPライブラリの取り込み方についてKMMBridgeやGit Submoduleの使用、その他のプラグインの組み合わせについて、Xcodeのビルド時間や運用のしやすさなどの観点から複数のソリューションを比較した際のメリット・デメリットが非常にわかりやすく整理されており、理解が深まりました。また、iOSエンジニアにとってKMPは少しハードルが高いと感じられることが多いですが、それに対してチームとしてどのようにキャッチアップしていったのかという部分もとても興味深く、今後のプロジェクト運用の参考になりました。

さらに、Nagasakiさんが具体的な実践例をもとにKMP導入の効果や課題を共有してくださったことで、導入後の運用や問題解決のプロセスについても具体的なイメージを持つことができました。特に、KMPの特徴を活かしながら生産性を向上させていくという課題に対するアプローチは、弊社でも取り入れていきたいと感じました。

GPSでどのようにして現在地が分かるのか

https://fortee.jp/iosdc-japan-2024/proposal/d9070852-4d5c-4af3-a8de-ee7050fe36ea

ta.inoueさんによるこちらのセッションは、タイトルの通りGPSで現在位置がわかる仕組みを実験を踏まえながらわかりやすく解説したものです。
GPSの仕組みとして、衛星が宇宙を飛んでいてそこから電波を受信していることはなんとなく知ってはいましたが、具体的に複数の衛星の電波を受信して端末とそれぞれの衛星の距離を求めることで現在位置がわかるというのはなるほどなぁと思いました。
衛星が発信する電波もコードになっていてその波形からどの電波がどの衛星から発信されたものかが識別可能になっているというのもとても興味深かったです!

新卒のiOSエンジニアが"クックパッドの今"を紹介!

https://fortee.jp/iosdc-japan-2024/proposal/4e501f95-ea97-4299-97f8-3195597a638c

Harutaさんによるこちらのセッションは、グローバル展開しているクックパッドのサービスのUIやユーザー体験を統一させるというお話しでした。個人的には多言語対応の部分で、日本語や英語のように左から右に記述される言語がある一方でアラビアなどのように右から左に記述される言語があって、その場合にどういった対応をしているのかがとても興味深かったです。

スポンサーブース

今年も非常に多くのスポンサーブースが出展されており、可能な限り回ってみました。
エンジニア向けのコンテンツとしてはiOSのアプリ開発に関するアンケートやSwiftに関する知識を問うクイズなどのコンテンツが多かったですね。
個人的にはメルカリさんの日替わりSwiftクイズがとても面白かったです。
一番印象に残っているのはこちらの問題。

次のプログラムの出力はSwift6未満で「a」Swift6以上で「b」である。
A) a: backward b: backward
B) a: forward b: backward
C) a: backward b: forward
D) a: forward b: forward

func f(
    _ a: (() -> Void)? = nil,
    _ b: (() -> Void)? = nil
) {
    if a != nil { print("forward") }
    if b != nil { print("backward") }
}

f { }

答えはCなのですが、
関数にクロージャを渡す時は基本的に後ろの引数から当てはめるという認識だったので今年のXcode16から使用されるSwift6では逆になっているということに驚きでした、、。
Appleの破壊的変更には常々気をつけなければならないですね😇

さいごに

今年のiOSDCもとても楽しかったです!たくさんのトークを楽しめただけでなく、他社のiOSエンジニアとの情報交換も貴重な経験でした。運営の皆さんやスピーカーの方々、素晴らしいイベントを開催していただき、ありがとうございました!
来年も楽しみにしています😊

WED Engineering Blog

Discussion