Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Studyplusにおける Flutterアプリ Apple Watch対応事例
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Koichi Kishimoto
January 30, 2026
1
260
Studyplusにおける Flutterアプリ Apple Watch対応事例
第9回 FlutterGakkai スポンサーセッション
Koichi Kishimoto
January 30, 2026
Tweet
Share
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
300
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
63
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
370
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.8k
Practical Orchestrator
shlominoach
191
11k
Faster Mobile Websites
deanohume
310
31k
It's Worth the Effort
3n
188
29k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
100
Transcript
StudyplusにおけるFlutterアプリのApple Watch対応事例 第9回 FlutterGakkai スポンサーセッション
名前:こういち(X:@koichi_mobile) 所属:スタディプラス株式会社 25年新卒 自己紹介
目的
Flutter開発者が「Apple Watch開発できそう 」と思えること 目的
会社・サービス紹介
スタディプラス の紹介 当社は「学ぶ喜びを全ての人へ」 をミッションに「学習者を第一に」 を掲げ、学習管理プ ラットフォーム「Studyplus」と「Studyplus for School」を提供しています。 先生による生徒の学習支援をサポート 学習者の「学習の継続」を支援
学習記録機能 - 学習教材を選択 - ストップウォッチやタイマーで時間計測 - グラフで学習の可視化 - タイムラインで自分やフォロワーの記録確認 成績管理、カレンダーで予定管理、大学の検索
Studyplusの既存機能
当社がFlutterで開発しているサービス Studyplus モバイルアプリ - Flutter Studyplus Webアプリ - Flutter Web
開発者ブログ:https://tech.studyplus.co.jp/ ポッドキャスト:https://open.spotify.com/show/3dKmSxheHocHwRA87eOOIN 開発者向けX:https://x.com/studyplus_dev など、いろいろ発信しています! ご興味ある方は「スタディプラス エンジニア 」で検索。 当社エンジニア各種SNS・情報発信
1. 背景・対応内容 2. 得られた結果 3. 仕様・デザイン決定 4. 実装時のポイント 5. まとめ
目次
背景 ユーザーの声 「スマホだとYouTubeやInstagramなど他アプリに触れてしまう誘惑が大きい」 「通学中の電車の中でサッと記録したい」
背景 Studyplusアプリ - 2025年4月にiOS / AndroidアプリをFlutterにリプレイス - 2025年8月にFlutterアプリをApple Watchに対応完了
- 教材を選択 - 学習時間をストップウォッチ、タイマーで計測 - 学習記録をスマホと連携 対応内容・機能
得られた結果
- 総ユーザー:6,000程度 - お問い合わせやXでのフィードバック 得られた結果
得られた結果
仕様・デザイン決定
各画面でユーザーが最も行いたいアクション は何か? 仕様・デザイン決定
教材一覧画面( iOS版 ) - 教材の追加、並び替え、編集、削除 - 教材カテゴリの追加、編集 - 集計単位の編集 -
教材タップで学習記録画面へ 仕様・デザイン決定
教材一覧画面( watchOS版 ) - 教材の追加、並び替え、編集、削除 - 教材カテゴリの追加、編集 - 集計単位の編集 -
教材タップで学習記録画面へ 仕様・デザイン決定
各画面でユーザーが最も行いたいアクション は何か? 不要な部分は削る 仕様・デザイン決定
実装時のポイント
構成 Flutter ↔ iOS はMethod Channel ( Pigeon ) iOS
↔ watchOS はWCSession
開発の流れ 1. 既存アプリにwatchOSのターゲットを追加 2. Apple Watch側の実装(画面作成、iOSとの繋ぎ込み) 3. iOS側の実装(watchOS、Flutterとの繋ぎ込み) 4. Flutter側の実装(iOSとの繋ぎ込み、保存・反映処理)
実装時のはまりポイント
はまりポイント① Xcodeのビルドが通らない 既存アプリとの連携やwatchOSのターゲット追加等でエラー発生
WCSession counterpart app not installed 発生場面 既存アプリにwatchOSのターゲットを追加した時 原因 Apple Watchのアプリがアプリ本体に組み込まれておらず、認識されていない
対処 Runnerの「Frameworks, Libraries, and Embedded Content」に WatchApp を追加 WCSession counterpart
app not installed
発生場面 既存アプリにwatchOSのターゲットを追加した時 原因 Build Phaseに問題があり、循環エラーが発生している Cycle inside Runner; building could
produce unreliable results
Cycle inside Runner; building could produce unreliable results 対処 Runner
> Build Phase で「Run Script」を 「Compile Sources」の前に持ってくる
はまりポイント① Xcodeのビルドが通らない スライド末尾にエラー対処集をまとめました
はまりポイント① Xcodeのビルドが通らない その他既存アプリ起因のエラー - 他のメンバーに聞く … - 気合い…
はまりポイント② コンフリクト解消 開発期間が長くなると他の実装内容とのコンフリクトが増える - 初めて実装する場合はMVPにとどめる - SiriショートカットやWidget等のiOS実装と並行して作業しない - 設計・デザイン作成を予め行い、実装期間を短くする
はまりポイント③ iOS、watchOS両方のログが確認できない XcodeでiOS、watchOSアプリを実行すると片方のログしか確認できない - Macの場合は「コンソール」アプリで両OSのログを確認できる
iPhoneをケーブルでMacに繋ぐ 両OSのログが確認可能 はまりポイント③ iOS、watchOS両方のログが確認できない
watchOS、 iOS、 Flutterのそれぞれの接続部分の処理を実装 例)watchOSの実装 watchOSからiOSに送信する処理 watchOSがiOSからデータを受け取った際 の処理 はまりポイント④ どこを実装しているかごちゃごちゃになる
今どこの何の処理を書いてるんだっけ? はまりポイント④ どこを実装しているかごちゃごちゃになる
混乱の原因 「処理の流れ」と「実装の流れ」の違い はまりポイント④ どこを実装しているかごちゃごちゃになる
学習記録の保存処理 処理の流れ はまりポイント④ どこを実装しているかごちゃごちゃになる
学習記録の保存処理 実装の流れ はまりポイント④ どこを実装しているかごちゃごちゃになる
はまりポイント④ どこを実装しているかごちゃごちゃになる 対策 - 先述の「コンソール」アプリ等で処理の流れを確認しながら実装を進める - どの部分を実装しているか常に念頭に置いておく
まとめ
- 背景、対応内容、得られた結果 - 仕様・デザイン決定時にはユーザーが行いたいアクション に注目 - 実装時のはまりポイント - 今回できなかった技術面の話:Flutter ×
Apple Watch 開発入門 FlutterアプリのApple Watch対応の第一歩の参考になれば ... まとめ Flutter × Apple Watch 開発入門
最後にお知らせ Flutterイベント開催します QRコードからぜひご参加ください☝
エラー対処集
原因 Apple Watchのアプリがアプリ本体に組み込まれておらず、認識されていない WCSession counterpart app not installed
対処 Runnerの「Frameworks, Libraries, and Embedded Content」に WatchApp を追加 WCSession counterpart
app not installed
原因 Build Phaseに問題があり、循環エラーが発生している Cycle inside Runner; building could produce unreliable
results
Cycle inside Runner; building could produce unreliable results 対処 Runner
> Build Phase で「Run Script」を 「Compile Sources」の前に持ってくる
原因 Apple WatchのBundle IDが適切に設定されていない WatchKit App doesn't contain any WatchKit
Extensions whose WKAppBundleIdentifier matches.
対処 Apple Watch ターゲット > Info.plist > WKCompanionAppBundleldentifier の値をRunnerのBundle Identifierと合わせる
WatchKit App doesn't contain any WatchKit Extensions whose WKAppBundleIdentifier matches.
原因 Apple Watch側のInfo.plistが設定されていない Build input file cannot be found.
対処 ios > WatchApp > Info.plistを追加 Build input file cannot
be found.
原因 watchOSの対応バージョンが小さすぎる 'NavigationStack' is only available in watchOS 9.0 or
newer
対処 General > Minimum Deployments > watchOS の値を大きくする 'NavigationStack' is
only available in watchOS 9.0 or newer
現象 Simulatorでビルドした際にApple Watchで行った操作がiPhone側に反映されない 原因 iPhoneとApple WatchのSimulatorがペアリングされていない Simulatorで検証できない
対処 ペアリングした状態のSimulatorを登録 Apple Watch via iPhone で実行 Simulatorで検証できない