タイミーでiOSアプリエンジニアをしている前田 (@naoya)と申します。 2024年4月9日〜11日に開催された「try! Swift Tokyo」に参加してきました。
try! Swift Tokyoとは
Swiftに関わる開発者が世界中から集まる年に一度の国際カンファレンスです。最新技術や開発の知見をシェアするトークセッションが開催される他に、エンジニア同士が交流する場としても毎年大きな盛り上がりを見せています。
今年のアップデート
ロケーション
昨年は渋谷の「ベルサール渋谷ファースト」での開催でしたが、今年は立川の「立川ステージガーデン」に場所を移しての開催でした。
会場のすぐ近くには昭和記念公園があり、落ち着いた空気感の中で、カンファレンス参加者同士でリラックスして交流できました。また、今回の会場はライブ会場としても使用される場所で、椅子の座り心地がすごく良かったのが印象的でした。
try! Tokyo 2025アプリ
公式アプリも進化していて、今年はリアルタイム翻訳機能が搭載されました。これまで通りの翻訳レシーバーも用意されていましたが、アプリ上でもスピーカーの話が即座に日本語表示されるようになっており、翻訳精度も非常に高くて驚きました。多言語の壁を超えて楽しめる、素晴らしい体験でした。
アーカイブ動画が即日公開
なんと、イベント終了当日にYouTubeにトークセッションのアーカイブ動画がアップロードされました。会場では理解しきれなかったトークも、すぐに振り返ることができるのは本当にありがたかったです。
try! Swift Tokyo 2025 - YouTube
印象に残ったセッション紹介
三日間に渡り、さまざまなトークを聴くことができました。その中でも、僕が気になったトークをいくつかご紹介します。
iOS 17, 16, 15などの新機能
www.youtube.com iOS 15〜17で追加されたAPIを改めて紹介するトークです。毎年のWWDCで膨大なAPIが発表されますが、実際のプロダクト開発で使われずに、APIの存在を忘れてしまうことはよくあります。本トークでは、そういった開発者に向けて、iOS 15〜17で追加されたいくつかのAPIを紹介するトークです。僕が全く知らなかったAPIを各OSバージョンごとに一つずつご紹介します。
privacySensitive(_:)
(iOS 15.0+)
developer.apple.com
privacySensitive(_:)
は、プライバシー保護のための修飾子です。個人情報や機密データを含むViewにこのモデイフィアを付加することで、アプリがバックグラウンドに移行した時、該当のViewをマスクすることができます。
UIHostingConfiguration
(iOS 16.0+)
developer.apple.com
UIHostingConfiguration
は、UITableViewCell
や UICollectionViewCell
など、UIKitのセル内でSwiftUIのViewを直接使えるようにできる構造体です。セル内のUIのコードを、モダンで簡潔に記述することができます。
ContentUnavailableView
(iOS 17.0+)
developer.apple.com
ContentUnavailableView
は、「表示する内容がない」状態を、ユーザーにわかりやすく伝えるためのViewです。
40万以上DLされた個人開発アプリをサービス終了するためにしたこと
www.youtube.com 40万DLを達成した個人開発iOSアプリ「WebCollector」のサービスを終了するにあたり、実施した対応や、その際に考慮したことについてのトークです。WebCollectorは、フルサイズでWebページのスクリーンショットを撮影できるアプリです。スクリーンショット画像は、クラウド上に保存できます。 たくさんのユーザーにDLされていたアプリですが、Safariの標準機能でページ全体のスクリーンショット画像を記録する機能が追加されたり、AdMobの広告が掲載されなくなったことで、サービスの運営が難しくなってしまい、サービスのクロージングをご決断されたとのことでした。 Firebase Remote Configで、サービス終了ページの表示をコントロールしたり、Firebase Cloud Messagingで、Push通知を受け取れるようにすることで、サービスの終了を丁寧に周知した事例をご紹介されていました。 僕も長く個人アプリを開発しているので、思い入れがあるアプリをクロージングすることはかなり辛いことだろうなと思いました。そのような中でも、丁寧にサービスをクロージングをされたことは本当に素晴らしいと感じました。 以下の記事で内容の詳細が語られているので、ぜひご覧ください。 note.com
Swift × Android: Skipが切り拓くクロスプラットフォーム開発の未来
www.youtube.com Skipは、Swift / SwiftUIだけでiOSとAndroidの両方に対応したアプリを開発できる、クロスプラットフォーム開発を行うためのツールです。SwiftUIをJetpack Composeに変換したり、SwiftコードをKotlinに変換したりできます (Transpiled Mode)。さらに、SwiftコードをAndroid上でそのまま動かすこともできます (Native Mode)。 iOSのネイティブアプリ開発には、開発ツールはXcodeを使い、Swift / SwiftUIコードを記述します。一方、Androidでは、開発ツールはAndroid Studioを使い、KotlinまたはJavaコードを記述します。iOS・Android両プラットフォームでアプリをリリースする場合、それぞれの開発ツール・プログラム言語を習得する必要があり、学習コストが膨大でした。 しかし、Skipを使用することで、単一のソースコードで両プラットフォームのアプリを開発できます。こちらのトークでは、スピーカーの方が実際にSkipを使用してアプリ開発を行なった実体験についてのトークです。主なトークポイントは以下の三つです。
- Androidアプリ側は期待通りのUIになるか。
- Transpiled ModeとNative Modeどちらを選択すべきか。
- 既存のアプリをSkipに移行することが可能かどうか。
「1」については、期待通りのUIを生成できているとのことでした。ただし、ナビゲーションバーのように、SwiftUIとJetpack Compose間で表示仕様が異なる箇所があるので、それらの仕様差異を理解しておいたほうが良いとのことでした。
「2」については、Native Modeがおすすめとのことでした。Transpiled Modeでは、Swiftで書かれたコードをターゲットプラットフォーム向けに変換 (トランスパイル)してビルドします。現在は、変換に対応していないAPIが多くあり、Android用のコードを書いたり、別APIの使用を検討する必要があるようです。ただ、Native Modeにもデメリットがあり、アプリサイズが大きくなったり、ビルド時間が長くなったりするので、それぞれのメリット・デメリットを考えた上で、アプリの特性に合わせて選択したほうが良さそうとのことでした。
「3」については、不可能ではないが、かなりチャレンジングになるとのことでした。理由としては以下の二つです。
・iOS側で使用しているライブラリがAndroidに対応していないものがある。
・AndroidのAPIに変換できないiOSのAPIがまだたくさんあり、場合によっては膨大なAndroid用のコードを記述する必要がある。
まだ実用面で課題はたくさんあるものの、最近では、SwiftUIで記述したコードをAndroid用にもコンパイルすることが可能になったり、 APIのサポート範囲が拡大していることもあり、今後かなり期待できるツールとのことでした。
本記事では一部のトークについて書きましたが、その他にもさまざまな分野のトークがありました。今回はvisionOSについてのトークが多かった印象を受けました。このように、普段の業務では耳にしない内容のトークを聞くことができ、非常に有意義な三日間でした。
最後に
try! Swift Tokyoでは、久しぶりに再会できた友人との時間や、普段関わることのない社外エンジニアの方々との出会いがあり、本当に充実した三日間を過ごせました。
今回紹介できなかったトークの他にも、面白いトークがたくさんありました。
記事にある内容や、その他の内容についても、もしタイミーのエンジニアと話したいという方がいらっしゃればぜひお気軽にお話ししましょう!