この記事はNikkei Advent Calendar 2022の 9 日目の記事です。
こんにちは、iOS チームの室谷です。本記事では、先日行った watchOS の対応についてご紹介させていただきます。
最初に
日経電子版では iOS/Android それぞれのプラットフォームでネイティブアプリを提供しています。 2022 年 10 月のアップデートで、watchOSおよびWear OSに対応しました。 今回は、iOS および watchOS について、対応の経緯やその方法についてご紹介させていただきます。
watchOSの開発周りの現状
watchOS とは Apple のスマートウォッチである Apple Watch 専用の OS です。 iOS と同様に毎年大きなアップデートが行われており、現在は watchOS 9 が最新の OS となっています。 毎年、ユーザー視点での色々な進化に注目が集まりますが、開発者視点でも着実に進化しています。 直近での大きな進化といえば、下記 2 点が挙げられます。
watchOS 6からSwiftUIに対応
- SwiftUI は Apple 純正の宣言的 UI フレームワークです。
- iOS 版の日経電子版アプリでも SwiftUI を一部導入しています。
- watchOS 6 から、SwiftUI のサポートが始まりました。
- 従来の UIKit に比べて、SwiftUI では迅速に View を組めるので、プロトタイピングに向いていると考えています。
watchOS 9からWidgetKitがComplicationに対応
- iOS16 からロック画面にウィジェットを置けるようになりました。
- このウィジェットの開発に使うのが WidgetKit という SDK です。
- ウィジェットを watchOS の文字盤のコンポーネントである、コンプリケーションとして使うことができるようになりました。
- コンプリケーションとは下記のような文字盤に設置できるオブジェクトのことです。
※出典: https://developer.apple.com/documentation/clockkit/creating_complications_for_your_watchos_app
- iOS のロック画面のウィジェットを開発すると、それは実質 watchOS のコンプリケーションも開発したことになり、一石二鳥となります。
仕様検討
watchOS 対応については、キャンペーンに合わせてリリースを行いたいという事情がありました。つまり、限られた時間で確実にリリースまで持っていく必要がありました。 そのため、仕様やデザインについても、極力チーム内で完結できるようにしたいと考えました。そこで、SwiftUI でプロトタイピングを行いながら、MVP(Minimum Viable Product)の形でリリースできるように準備を進めました。
ニュース系のアプリで watchOS に対応しているアプリの調査などを行い、初期仕様は下記のようなものとなりました。
- 最新の記事一覧が閲覧できる
- それぞれの記事の詳細が閲覧できる
- Handoff経由で、iPhone 側へアクション(記事詳細画面を開く)を委譲できる
- iOS のロック画面ウィジェットを watchOS のコンプリケーションとしても使うことができる
上記に沿ったプロトタイピングを SwiftUI を通して行い、最低限の価値は提供できることがわかったので、そのまま進めることになりました。
日経電子版 for watchOS
左から
- コンプリケーションを追加した文字盤
- 記事一覧画面
- 記事詳細画面
- iOS で Handoff 利用時の画面

今後やりたいこと
- 記事を保存できる機能の追加
- iOS 日経電子版では記事保存機能を提供していますが、認証が必要なので今回は省いてしまいました。
- watchOS アプリからボタンタップなどで iOS アプリを起動して、個別記事画面を表示できる機能の追加
- 今回調べた限りでは、WatchKit にそのような API は公開されていませんでした。
振り返って
watchOS 対応のアプリを開発するのは公私含めて初めての経験でした。やはり iOS に比べると文献が少ないので、何かと苦労する点は多かったです。 また、iOS16 および watchOS 9 のリリース直後のタイミングでウィジェットをコンプリケーションとしてコンバートする部分は、SDK 側のバグなどが混ざっていることもあり、ここでも少し苦労しました。
しかしながら、企画からリリースまでを一貫してチーム内で完結させ、1.5 ヶ月ほどで終わらせることができたのは非常に嬉しかったです。 加えて、今回はスクラッチで作ることができたので、画面遷移など含めてフル SwiftUI でひとつのアプリケーションを作れたことも良かったと思います。
引続き、Apple Watch というインターフェイスを活かした理想的な体験を目指して改善していきたいです。
明日は中川さんの「エンジニアから見た選挙コンテンツ制作の裏側」です。お楽しみに!