FURYU Tech Blog - フリュー株式会社

フリュー株式会社の開発者が技術情報を発信するブログです。

iOSDC Japan 2025参加レポート ~ Day1 ~

ピクトリンク開発部でiOSアプリの開発を担当している牛尾です。今回はiOSDC Japan 2025に参加してきたので、聴講したセッションや当日の雰囲気などを中心に記事を書かせていただきました!

弊社からは私を含めて4名が参加したので、各日のレポートをリレー形式で繋げていきます。

私はDay1を担当させていただきます。

弊社から参加した4名のiOSエンジニア(私は右から2番目のメガネです)

※フリュー株式会社はゴールドスポンサーとして協賛させていただきました。 iosdc.jp

弊社エンジニアが書いたDay0のレポートもぜひご覧ください。

tech.furyu.jp

Day1

Day1からは朝に会場でドーナツを振る舞っていただき、ドーナツを求める参加者の列ができていました。早朝から大量のドーナツの提供準備をしてくださった運営の皆様には大変感謝しております。

ドーナツ提供会場

セッション紹介


ユーザー数10万人規模のアプリで挑んだトップ画面のUI刷新

speakerdeck.com

トップ画面からの導線が、ネイティブで実装された機能・Webで実装された機能というように、各機能への導線が分散しており把握が困難になっていたという課題から、WebViewで実装されていたトップ画面のUIを刷新するまでの過程を勉強させていただきました。

ここで面白かったのが、いきなり新トップ画面をリリースするのではなく段階的に移行を進めていったことでした。下記のような3段階の移行フェーズを設ける方法を取り、かつそれぞれのフェーズや新画面の利用状況、新→旧に切り替えたユーザなど、属性ごとにアンケートを設けてフィードバックを得られる体制を整えられていたのが印象的でした。

  • 新/旧切り替え可能、デフォルトは旧画面
  • 新/旧切り替え可能、デフォルトは新画面
  • 新画面のみ

新画面をリリースする際の検証として、今後ピクトリンクで画面を刷新する機会があったときに非常に参考になるセッションだなと感じました。


そろそろ FormatStyle

speakerdeck.com

Data型などの値をStringとして扱うために必要なFormatterはよく実装でも用いられていると思います。これはSwiftの前身のObjective-C時代のAPIで、ピクトリンクでも日付を表示させる場面で使用しています。しかし、従来のFormatterでいくつか挙げられた課題のなかで個人的に非常に共感したのが下記です。社内ハッカソンでスケジュール登録アプリの実装に携わった際、日付フォーマットの指定と意図しない日付の出力に頭を悩ませたことを思い出しました。

  • 文字列によるフォーマットの指定が可能だが、コンパイル時に検証されない
  • Formatterのインスタンスの生成・プロパティの変更のコストが高い

iOS 15から利用できるFormatStyleはこういった課題を解決してくれます。例えば現在の日付をy年M月のように表示させたい場合、下記のように書くことで実現できます。SwiftUIのModifierのように直感的に指定できるので個人的にはかなり使いやすいなと思いました。

struct ContentView: View {
    var date: Date = .now

    var body: some View {
        Text(
            date.formatted(
                .dateTime
                    .year().month()
                        .locale(Locale(identifier: "ja_JP"))
            )
        )
    }
}

これでも従来の方法よりもずっと簡単なのですが、さらに感動したのはSwiftUIでは引数にFormatStyleでのフォーマット指定ができるTextがあり、下記のように書くことができます(知らなかった)。

struct ContentView: View {
    var date: Date = .now

    var body: some View {
        Text(date, format: .dateTime)
        // または
        Text("\(date, format: .dateTime)")
    }
}

これがiOS15以降から利用できるのであれば、従来のFormatterよりもFormatStyleを利用する方がかなり楽に実装できそうですね!


テストコードすら書けなかったレガシーアプリがAIと上手に協働できるようになるまでの軌跡

speakerdeck.com

テストコードが書けない状態になっていたアプリが、リアーキテクトやユニットテストの導入などを経てアプリ内部を改善していく軌跡を勉強させていただきました。発表の中でテストコードを読むだけで理解がかなり深まるため、ユニットテストは仕様を表現する情報資産だという話に非常に納得させられました。また、ユニットテストを実装することを習慣とするために、厳しいルールを設けずに実装のハードルを下げる工夫が印象的でした。

実は、我々のチームもテストピラミッドの改善のためにユニットテストの実装を進めています。そのため、今回聴講させていただいたこちらのセッションを参考に取り組みを続けていこうと考えています!


ルーキーズLT大会

ルーキーズLT大会はiOSDC Japanで初めてトークするルーキーたちによるLT大会です。5分という短い時間で発表しなければならないため、発表される方の緊張感が伝わってきました(中には非常に早口になっている発表者の方も)。発表終了が迫ってくるとペンライトを振るように促されるため、LTを聴講する会場がまるでライブのような景色になっていました。ルーキーズLTの発表を聞いた印象として、個人としてやりたいことをやってその成果を発表しているように感じました。もし話すネタが何かあればチャレンジしてみてもいいなと思いました。

ペンライト

まとめ

今回はiOSDC Japan 2025 Day1について書かせていただきました!

iOSDCへの参加が初めてだったので新人目線でのブログとなりましたが、皆様の参考になれば幸いです。

来年も参加できる機会があればぜひ参加したいと思えるカンファレンスでした!

いつかルーキーズLT大会で登壇できるチャンスがあれば挑戦してみたいですね!

Day2のレポート記事に続く...