Yappli Tech Blog

株式会社ヤプリの開発メンバーによるブログです。最新の技術情報からチーム・働き方に関するテーマまで、日々の熱い想いを持って発信していきます。

今年はさらにパワーアップ、try! Swift Tokyo 2025 の参加レポート


はじめに

iOS エンジニアの 菅(@Nao_RandD | ナオランドです。
先週、try! Swift Tokyo 2025に現地参加してきました。

現地での参加は2回目です。 去年からさらにパワーアップしていた魅力と、セッションの感想についてご紹介できればと思います。

Riko ちゃんがお出迎え


概要

まずは簡単に try! Swift Tokyo についてご紹介します。 try! Swift は、Swift を愛する開発者が世界中から集まる国際的なカンファレンスです。

今年は例年の渋谷から立川に開催場所が変更されていました。 tryswift.jp

開催概要

  • 開催場所: 立川ステージガーデン
  • 開催期間: 2025年4月9日(水) 〜 11(金)

try! Swiftの特徴

  • 世界中のSwift開発者が一堂に集まる国際的なイベント。
  • 最新の技術情報や実践的なノウハウを学べる機会。
  • iOSDC Japan とはまた違った雰囲気を味わえる場所。

多くの開発者が集まり、最新技術の共有から様々なディスカッションが各所で行われます。

カンファレンスの参加には、最初は抵抗があるかもしれませんが、「Swiftが好き!」という気持ちを持った人なら絶対に楽しむことができると思います!


新しい魅力3選

現地参加は今年で2回目です。前回の参加があるからこそわかる、新しい魅力をお伝えできればと思います。

Flittoによるリアルタイム翻訳

try! Swift Tokyo は国際色が強いカンファレンスで、ほとんどのセッションは英語で発表されます。 例年通り会場では翻訳レシーバーが提供されており、英語が苦手な方であってもセッションを楽しめるようになっています。

今年はそれに加えて、Flitto というサービスを導入しています。Flittoの導入によって、公式アプリから音声の文字起こしと翻訳をリアルタイムで確認することができます。

パッと見たら「あれ、日本語おかしい?」という文章も、翻訳のタイミングで校正されており、聞き取れなかった情報があっても遡ってキャッチアップすることができます。

flitto.jp

リアルタイムで自動翻訳される様子

(「ブログで紹介するなら、英語→日本語に翻訳されているものにしてよ」という感じかもですが...😅)

英語のセッションはもちろん、Flitto 開発者の方が韓国語でお話しをされている内容も翻訳され、言語の壁をテクノロジーで超えていく体験ができて非常に熱くなる想いでした。


新たな会場!立川ステージガーデン

例年、渋谷で開催されていましたが、今年は立川ステージガーデンが会場になっています。

立川駅には初めて訪れましたが、コンビニはもちろん、さまざまなお店を駅直結の施設で利用することができます。 会場まで信号待ちなく移動でき、周辺の雰囲気もよかったです。立川という街の魅力に気づくきっかけにもなりました。

会場の魅力としては以下の三つを感じました。

  1. 広大な会場
  2. 椅子が快適
  3. 周辺施設の充実

1. 広大な会場

立川ステージガーデンはアーティストのライブでも利用されるような会場です。

渋谷会場も決して小さくないのですが、1つのフロアの広さやキャパだと立川の新しい会場に軍配が上がるように思いました。

try! Swift Tokyo では利用されていませんが、3階席まであり圧巻の会場でした。(こんな大舞台でいつか登壇してみたい)

入り口から登壇場所が霞んで見えるほど

2. 椅子が快適

会場の椅子はとても座り心地が良く、リラックスしてセッションを楽しむことができました。

肘掛けがあり、少し後ろにリクライニングもできる椅子

3. 周辺施設の充実

会場周辺にはお店が多くあり、ランチタイムや終了後も参加者と気軽にご飯に行くことができます。

自然もあって心地よく過ごせるので、休憩時間で外に空気を吸いに気分転換ということも気軽に行えます。


爆速のアーカイブ公開

なんと今年はイベント終了当日から、アーカイブ動画がYouTubeに続々とアップロードされています。

カンファレンス参加後は、セッションから得られた情報や熱い想いをチームメンバーに共有するわけですが、参加メモだとどうしても伝えきれないことがあります。

アーカイブ動画があれば自身が振り返ることはもちろん、参加していないメンバーと一緒に視聴して、鮮度高く新しい取り組みにつなげていくことが見込めます。

最終日の夜からすぐに公開開始


セッション紹介

ここからは、私が特に印象に残ったセッションを紹介します。
参加時の感想や学びも交えてお届けしますので、ぜひ参考にしてください!


作って学ぶ正規表現 -やさしいSwift Regex入門-(kishikawa katsumi)

youtu.be

セッション概要

まずはヤプリの kishikawa katsumi のセッションからです。

主な学び

基本三演算に限定した小さな正規表現エンジンを、Swift で実装してみることで基本的な理解を得られました。

  • Concatenation(連結): 文字列を順番に一致させる

  • Alternation(選択): 複数のパターンのいずれかに一致させる

  • Repetition(繰り返し): パターンを0回以上繰り返して一致させる

紹介されたコード全体も公開されているので、気になる方は動画とともに確認して理解を深めてみてください。

github.com


Swift WTF: 奇妙な挙動、落とし穴、そして修正策(Sophie Hudson)

カンファレンス期間中に画像を SNS に投稿すると Paul からお小遣いが入るとのこと(すごい仕組み)

セッション概要

Sophie Hudson による、Swift における奇妙な挙動や落とし穴を集めたセッションです。 (Hacking with Swift でもお馴染みの Paul Hudson の娘さんで、親子で揃って登壇。すごい...)

開発中にハマりがちな問題を、ユーモアたっぷりに紹介してくれる楽しい内容でした。

主な学び

全く同じコードではありませんが、3つほど紹介しようと思います。

1. 0.1 + 0.2 == 0.3 の小数点の判定は気をつけよう

まずは丸め誤差ですね。 0.1 や 0.2、0.3 は2進数で正確に表せないため、内部的にはほんのわずかにズレた値になります。

// こちらは true になりそうな気がしますが、丸め誤差の影響で false になる
print((0.1 + 0.2) == 0.3) // false

// Decimal を使うと、期待する結果が得られる
print((Decimal(0.1) + Decimal(0.2)) == 0.3) // true

2. -10.squared は 100 じゃないかも

.(メンバアクセス)の方が -(プレフィックス演算子)より優先順位が高いため、10.squared() が先に評価され、その後に - が適用される動作になります。

以下のコードのように、`-10.squared は 100 になりそうですが、-100 になります。

// 100 になりそうだけど、10 に対して .squared が適用されるため -100 になる
print(-10.squared())

// () で -10 に対して .squared を適用すれば 期待する 100 になる
print((-10).squared())

3. 国旗の絵文字の不思議な replace

次は非常に面白い例です。

国旗の文字列を replacingOccurrences で置き換えることを考えます。

以下のように全く違う国旗を置き換え対象にしたのに、なぜか全く違う絵文字に置き換わります。

// 国旗文字列の扱い
let originalString = "🇨🇦🇺🇸" // 国旗の絵文字

// 文字列を分解して個々の国旗を取得
let replacedString = originalString.replacingOccurrences(
    of: "🇦🇺", // 文字列に含まれないオーストラリアをアルゼンチンに置き換え
    with: "🇦🇷"
)

// 期待する出力は置き換え前と同じ "🇨🇦🇺🇸" だけど。。。
print(replacedString) // 出力は "🇨🇦🇷🇸"!?

個人的に気になったので、こちらは少し詳細に解説してみます。

国旗の絵文字自体が文字列に見えますが、実際は2つのUnicodeスカラー値(Regional Indicator Symbols)で扱われています。

そのため、対象の"🇨🇦🇺🇸"は以下のようなスカラー列となります。

  1. 🇨(U+1F1E8)
  2. 🇦(U+1F1E6)
  3. 🇺(U+1F1FA)
  4. 🇸(U+1F1F8)

置き換える"🇦🇺" は🇦(U+1F1E6) + 🇺 (U+1F1FA)のため、2, 3の要素に一致しています。

以下のように、2, 3の要素が"🇦🇷"の🇦(U+1F1E6 ) + 🇷(U+1F1F7)に置き換わります。

  1. 🇨(U+1F1E8)
  2. 🇦(U+1F1E6)→ そのまま :🇦(U+1F1E6 ) → 🇦(U+1F1E6 )
  3. 🇷(U+1F1F7)→ 置き換わる:🇺(U+1F1FA) → 🇷(U+1F1F7)
  4. 🇸(U+1F1F8)

国旗の絵文字は2つのUnicode スカラー値で扱われます。そのため、置き換え後に「1と2」, 「3と4 」がペアになります。

それによって、🇷(U+1F1F7) +🇸(U+1F1F8)の組み合わせができて、🇺🇸と全く異なる国旗の🇷🇸(セルビア)ができていたということです。

絵文字が文字列に見えていても、内部的にどのように扱われるか理解しておくことが必要ですね。


まとめ

今年も参加して良かったと感じ、「どうやって呼んだんだ」と言うほど各セッションの顔ぶれも豪華でした。

紹介できなかったセッションも非常に勉強になるものばかりで、アーカイブ動画でアップロードされたものから、見直して日々の業務や開発に活かしていきたいと思います。

前年を上回る魅力が詰まった try! Swift Tokyo 2025 でした!来年も必ず参加したいと思います。


以上、try! Swift Tokyo 2025参加レポートでした!
何か質問やコメントがあればお気軽に!