こんにちは。iOS チームの伊藤です。iOS チームでは日経電子版、紙面ビューアーの開発に取り組んでいます。 本記事では 9 月 1 日(金) 〜 9 月 3 日(日) に開催された iOSDC Japan 2023 について報告します。
イベント概要
iOSDC とは
iOSDC とは iOS 関連技術をコアのテーマとしたソフトウェア技術者のためのカンファレンスです。
開催期間は 9 月 1 日(金) 〜 9 月 3 日(日) の三日間で、今年はリアル会場(早稲田大学理工学部西早稲田キャンパス)とオンライン配信のハイブリッド開催でした。リアル会場にはスポンサーブースや展示ブースなどが展開されており、多くの参加者で賑わっていました。弊社からは iOS チームのエンジニア 5 人が参加し、その内髙木は day 0 に「UIKit ベースの Custom UIContentConfiguration API を用いた複雑なカスタムセルの作り方」というタイトルで登壇を行いました。

発表が多かったトピックなどのまとめ
様々なトピックに関するセッションが行われる中、全体通してアーキテクチャ関連のセッションが多かった印象を受けました。昨今 iOS アプリ開発の分野では Swift Conccurency の導入や UIKit から SwiftUI への移行など、過渡期に位置しています。また、ある程度成熟したプロダクトにおいて、いつの間にか技術負債が蓄積してしまうことは避けては通れない問題であり、多くの参加者・企業の方がこの課題解決に取り組んでいることがわかりました。具体的には Swift packages を中心としたマルチモジュール化や SwiftUI 導入を進めやすい新アーキテクチャの紹介などがありました。現在、日経電子版でもリアーキテクチャに取り組んでおり、このような最新動向や知見を得ることができたのは非常に有意義であったと思います。
日経にとって価値のあるポイント
課金周りの各社の最新動向、ログ運用、チームでの意思決定のプロセスからコードリーディングに関するヒントまで即座に実践できるアイディアが数多く得られました。 また、日経電子版の開発に現在使用していないフレームワークや技術に関するトピックを日頃からキャッチアップすることは難しいので、このようなカンファレンスへの参加は、普段触れることができない知識に出会うことができ、私たちの視野を広げるきっかけとなりました。
また、今年はオフライン会場にも多くの参加者が来場されており、オフライン参加をしたメンバーは、現地の参加者の方と直接会話することができました。日経の認知度を再確認することができ、iOS 分野でのネットワーク作りにも貢献できたのではないでしょうか。iOSDC 参加は、日経電子版の成長と業界での存在感を高める重要なステップとなったと思います。
いくつか発表をご紹介
watchOS開発最前線 by 蔀 さん
watchOS アプリ開発の概要からハマりやすい問題まで網羅的に紹介がされていました。 watchOS アプリの開発において難しい点として、SwiftUI での開発がデファクトスタンダードになっており、watchOS に対して最適化された挙動が予想外なことが多いということが挙げられていました。実現したい動作がある場合に、どの View を使用すればいいのかがわかりにくいからです。また、1 画面で表示できる情報が極端に少なく、情報の選定、現在何を表示しているのかを表す端的なタイトル付けなども簡単な問題ではありません。
他にも watchOS で Xcode Cloud を使う際の詰まりやすいポイントや実機デバッグが大変なことにも言及されており、共感ができるお話が多くありました。
SwiftUIの進化についていくためにやったこと by motoshima1150 さん
スタディサプリの開発にあたって、リリース直後から導入した SwiftUI の技術的な課題、また SwiftUI のような進化の早いフレームワークと向き合うためにどのような運用をしてきたのかをまとめたセッションでした。 前半は Alert や NavigationLink といった初期にリリースされていたが非推奨となった API 群を、新しい API でどのように置き換えたか、という技術的な話が中心に取り上げられていました。 後半は運用に関してのお話でした。SwiftUI で何かアップデートが必要になった場合には、
- Issue の作成
- 動作の担保および書き換え方針の決定
- 定期的に設けられている、品質改善を行うタイミングで実装
という運用を行った話が紹介されていました。また、プロジェクト全体で、
- サポートバージョンの見直しタイミングが年に 1 度設けられていること
- モジュール分割をしているので、画面毎に新しいコードを試しやすいこと
- 2 週間に 1 度、メインタスクとは別に、品質改善を行う日が定期的に設けられていること
といった環境が、SwiftUI と向き合う上でうまく機能しているとも述べられていました。
UIのブラックボックスを探る by noppe さん
iOS アプリにおいて、ブラックボックス(暗黙の仕様)とカスタム UI をどのように扱っていくかについて説明がされていました。Apple 製の UI には暗黙の仕様があり、意識せずにカスタム UI を作ってしまうと違和感のある UI が出来上がってしまいます。そこで、Apple 製の UI がどのように構成されているのかを分析する方法が紹介されていました。詳細に構造などを確認できるのはとても便利で、カスタム UI を作成する際にも大いに参考にできそうだと感じました。カスタム UI を作成する際に留意すべき点として、OS のアップデートによって Apple 製の UI が変わる点が挙げられていました。カスタム UI を作成するとそのデザインに追従していく必要があるためです。それにはコストもかかるため、トレードオフを意識して、無駄にカスタム UI を作らないのが大切というのが強調されていました。
全人類iOSアプリエンジニア化計画〜ピクシブ編〜 by ああうえ さん
アプリエンジニア不足という課題に対処するため、学生向けに教育プログラムを開発した事例を紹介されていました。課題の選定やチュートリアル課題の作成方法、課題を出す上での留意点などにも言及されていました。 iOS アプリエンジニアとして必要なスキルを洗い出した上で選定された課題は以下の三つです。
- Apple のチュートリアル
- 独自のチュートリアル
- 実際のプロダクトチームでアプリ開発(OJT)
特に、チュートリアルを進める際に答えを見ずに自力で調査し進めることを強調しており、自己学習能力の育成に注力している印象を受けました。 pixiv 独自のチュートリアルは DocC Tutorial を用いて作成されており、公式のチュートリアルに近い形で提供しています。ステップごとに説明を追加することができるので、コードの変更や修正の理由を説明しやすいというメリットがあります。iOS アプリエンジニア育成に重点を置いているからこそ得られた知見が多くあり、オンボーディングを受ける側にも行う側にも、双方の立場にとって有益なセッションでした。
Xcode Previewを気軽に利用するためのDI戦略 by まつじ さん
SwiftUI + Xcode Preview に焦点を当てた DI 戦略についてです。WWDC 23 では、マクロを活用した Xcode Preview の利用法が発表され、UIKit でも Xcode Preview が利用できるようになりました。そのため、かなりホットなトピックです。一般的な DI 戦略として、Initializer Injection と @Environment
が最初に説明され、それぞれのメリット・デメリットについて丁寧に解説されていました。DI 戦略に詳しくない方が聞いても、スッと内容が入ってくる説明でした!SwiftUI を中心とした開発においては、単純に Initializer Injection を用いると、依存のバケツリレーが多く発生してしまい、対象の画面に必要な依存が見えづらくなってしまいます。@Environment
においても、対象の画面に必要な依存を注入していない状態でコンパイルが通ってしまったり、init()
内で @Environement
をつけたプロパティにアクセスできなかったりと、課題があります。これらの課題を軽減するために、特定の画面で実際に利用する依存には Initializer Injection を利用し、遷移先の依存など、その画面で利用しない依存は @Environment
により取得する、という手法を提案されていました。これにより、Xcode Preview を実装する際にも、その画面のプレビューを表示するために必要な依存が自明となり、非常に嬉しいです。さらに、@Environment
を活用した本提案手法ですが、iOS 17 からは UITraitCollection
で @Environment
と同様のことができるようになるため、UIKit にも応用できる可能性があります。実装の詳細は割愛させていただきますが、非常に発表の流れが美しく、明日から試してみたい!と思える素晴らしい発表でした。
StoreKit2を使った課金システムのフルリニューアル by Yuhei Ito さん
課金システムを StoreKit2 へ移行する際の具体的な移行方法について紹介されています。StoreKit2 のメリットとして、コードがシンプルになる・レシートが不要になることなどが挙げられていました。例えばプロダクト情報をたった 1 行のコードで取得できるようになるため、とても簡潔なコードになります。その結果、コードの可読性が上がり、課金コードを理解するハードルが下がったとのことです。 また、お試しオファーやプロモーションオファー対応時の注意点にも触れられており、とても参考になりました。更にリリース後に明らかになった問題として、StoreKit1 と StoreKit2 を混在させてしまったことが挙げられていました。弊社アプリでも課金機能があるため、StoreKit2 へ移行する際にもう一度見返したい内容でした。
こういうのは標準APIいいよね by Keisuke Shoji さん
多くの OSS ライブラリに依存していたアプリをリファクタリングした話でした。アプリの規模に対して、ライブラリの数が多いという点に違和感を覚え、調査をした結果、
- 使われていないもの
- やりたいことに対して、規模が大きすぎるもの
- 用途が重複しているもの
- 参照箇所が少ないもの
- Apple の標準 API で置き換えられるもの
などが見つかったとのこと。各タイプに対して、どのような観点で取捨選択をしたのかという具体的な話の紹介がありました。 また、ライブラリが多いと、それぞれに何かしらのアップデートが追加されたり、あるいはメンテナンスがされないまま新しい OS で問題が発生したりと、必要以上に関心事が増えてしまってよくない、という話はとても納得感がありました。 最後に、アプリの寿命はエンジニアがそのアプリに関わる時間よりも長いので、不要なライブラリへの依存が技術的な負債となり、アプリの寿命を縮めてしまわないよう、バランスを取る事の重要性について言及されていました。
まとめ
本記事では iOSDC Japan 2023 のレポートを行いました。
iOS チームでは、WWDC や過去の iOSDC のセッションを見たり、HIG を読んで自社でどのように活かすことができるのかを議論する勉強会を毎週設けており、最新の技術のキャッチアップを積極的に行っています。 日頃の勉強会のおかげで、最新技術についての話題にも付いていくことができ、勉強会の存在意義を改めて感じた三日間でした。
自社のプロダクトに適用可能なアイディアも多数散見されたので、今回得られた知見をぜひ今後の開発に積極的に活用していきたいです。同時に、自社プロダクトの技術スタックに偏らない幅広い技術に触れることができ、モチベーションの向上に繋がる貴重な機会ともなりました。
また、今年はオフラインでの参加者が多く、発表後にスピーカーに直接質問をしたり、懇親会で感想を伝え合ったりと参加者同士の交流が多く見られました。 LT ではスピーカーの熱気溢れるトークに多くの刺激をもらいました。LT 中にペンライトを振るという大変貴重な経験もさせて頂き、とても楽しかったです。

筆者自身オフラインカンファレンスの参加は初めてでしたが、ノベルティやケータリング、配信・ネットワーク環境すべてが入念に準備されているのを感じ、そのホスピタリティに感動してしまいました。
最後になりますが、このような素晴らしいイベントを準備・開催してくださった運営の方々に心から感謝を申し上げます。来年もぜひ参加していきたいです。
テクノロジーメディアを目指す日本経済新聞社ではデジタルサービスにおける技術力向上を重視しており、最新の技術に興味のあるエンジニアを随時募集しております。一緒にメディアの未来を作る仕事に興味のある方は、ぜひお気軽にご連絡ください。
https://hack.nikkei.com/jobs/ios/
学生向けインターンの募集ページはこちら。