117 Views
August 13, 26
スライド概要
2026年エンジニア新人研修の資料です。
サイボウズ株式会社の主に開発本部の資料を公開するアカウントです。
モバイルアプリ開発 開運研修
本⽇のアジェンダ 1. モバイルアプリを知る • モバイルアプリとは︖ / Web アプリとの違い / iOS と Android • アプリの通信の仕組み / プッシュ通知の仕組み / 宣⾔的UIによる実装コード 2. 開発アプローチ • 3つの開発アプローチ / 開発プロセス / モバイル特有の考慮事項 3. Cybozu のモバイル開発 • Cybozu のモバイルアプリ / 開発体制 4. 情報収集・最新動向 • 主要カンファレンス / 最新トレンド 2
1. モバイルアプリを知る 3
モバイルアプリとは︖ 定義 • スマートフォンやタブレットにインストールして使うソフトウェア • App Store(iOS)や Google Play(Android)からダウンロード モバイルアプリの強み • プッシュ通知でユーザーにリアルタイムに情報を届けられる • カメラ・GPS・⽣体認証などデバイス機能にアクセスできる • オフラインでも⼀部の機能が使える(データのローカル保存) • OS のネイティブ UI で⾼速・スムーズな操作体験 4
Web アプリとの違い 観点 モバイルアプリ Web アプリ アクセス⽅法 ストアからインストール ブラウザで URL にアクセス 配布・更新 ストア審査が必要 ユーザーが更新しないと古いバージョンが残る サーバー側で即時反映 ユーザーは常に最新版を利⽤ デバイス機能 カメラ・GPS・通知など フルアクセス可能 ⼀部制限あり (ブラウザ API 経由) パフォーマンス ネイティブ実⾏で⾼速 ブラウザ上で動作 (ネットワーク依存) 動作保証環境 最低 OS バージョン、タブレット可否を指定 (例︓iOS 16 / iPadOS 16 以上) 最低ブラウザバージョンを指定 (例︓Chrome 120 以上) 5
2⼤プラットフォーム︓iOS と Android iOS(Apple) Android(Google) 開発⾔語 Swift (以前はObjective-C) Kotlin (以前はJava) 開発環境 Xcode (Macのみ) Android Studio (Windowsも可) ストア App Store Google Play Human Interface Guidelines Material Design developer.apple.com/design m3.material.io 約 65% 約 35% デザイン指針 シェア(⽇本) (世界) 約 27% 約 72% 6
アプリの通信の仕組み クライアント側(端末) モバイルアプリ iOS / Android サーバー側 JSON API サーバー SQL リクエスト処理 データベース データ永続化 ローカル DB オフライン対応 アプリは API サーバーへ HTTP リクエストを送り JSON でデータをやりとりする。 オフライン⽤にローカル DB を併⽤する場合もある。 7
プッシュ通知の仕組み モバイル端末 APNs - Apple Push Notification service (Apple) FCM - Firebase Cloud Messaging (Google) ① トークン要求 App Server APNs / FCM iOS / Android ② トークン発⾏ プッシュ通知サービス 通知の受信・表⽰ ⑤ プッシュ配信 ④ 通知送信 (JSON) トークン保存 通知⽣成・送信 ③ トークン送信・保存 ▍トークン登録フェーズ ① → ② → ③ モバイル端末ごとに固有の⽂字列(デバイストークン)を発⾏し、サーバー側でユーザーと紐付けて保存する ▍通知配信フェーズ ④ → ⑤ 宛先となるデバイストークンを指定して、タイトル・本⽂・バッジ数などを含む JSON ペイロードを送信する 8
宣⾔的UIによる実装コード
iOS ̶ SwiftUI
struct ContentView: View {
@State var items = [
"kintone", "Garoon", "Office"
]
var body: some View {
NavigationStack {
List(items, id: ∖.self) { item in
Text(item)
}
.navigationTitle("Apps")
}
}
Android ̶ Jetpack Compose
Apps
kintone
>
Garoon
>
Office
>
@Composable fun AppList() {
val items = remember {
mutableStateListOf(
"kintone", "Garoon", "Office"
)
}
Scaffold(topBar = {
TopAppBar(title = { Text("Apps") })
}) { p ->
LazyColumn(contentPadding = p) {
items(items) { Text(it) }
}
}
}
}
State(状態)を変更すると、UIフレームワークが差分を検知し View を⾃動で再描画する
9
2. 開発アプローチ 10
3つの開発アプローチ ネイティブ クロスプラットフォーム WebViewベース 概要 OS 専⽤の⾔語で開発 1つのコードベースで iOS/Android 両対応 Web サイトの URL にアクセス アプリ内ブラウザで表⽰ 主な技術 ⾔語: Swift / Kotlin Flutter (⾔語: Dart) React Native (⾔語: JS) ⾔語: HTML / CSS / JS メリット 最⾼のパフォーマンス OS 機能をフル活⽤ 開発コスト削減 少⼈数で両OSをカバー Web の資産を再利⽤ モバイル側の開発⼯数が少ない デメリット iOS/Android 別々に開発 コスト・⼯数が増加 OS 固有機能に制限 フレームワークの更新に依存 パフォーマンスが低い ネイティブ UI と異なる操作感 適したケース ⾼品質 UI/UX が必要 デバイス機能を多⽤ 素早くリリースしたい 各OS専任チームを組めない 既存 Web サービスのアプリ化 11
開発プロセスの全体像 企画 設計 実装 テスト 審査 リリース 運⽤ 要件定義 UI/UX設計 コーディング テスト検証 +ベータ配信 ストア申請 段階的公開 バグ修正 TestFlight (iOS) や Firebase App Distribution (Android) でベータ版を社内配信し、品質を確認 ストア審査には各社のガイドライン(Apple Review Guidelines / Google Play ポリシー)への準拠が必須 リジェクトされるリスクがあるためスケジュールに余裕を持たせる リリース後も OS アップデートやユーザーフィードバック、クラッシュレポート等への継続対応が発⽣ 12
モバイル特有の考慮事項 毎年の OS メジャーアップデート • iOS: 6⽉の WWDC でベータ開始、9⽉の正式版リリースまでに対応を済ませる • Android: 1⽉頃にベータ開始、6⽉頃の正式版リリースまでに対応を済ませる バージョンの共存問題 • ユーザーが更新しない限り古いバージョンのアプリが残り続ける • API の後⽅互換性を維持する設計が重要(必要な場合は強制アップデートを実施) 端末の多様性 • 画⾯サイズ・解像度・ダークモード・OS バージョンなど組み合わせが膨⼤ • レスポンシブレイアウトと⼗分なテストが不可⽋ 13
3. Cybozu のモバイル開発 14
Cybozu のモバイルアプリ Cybozu は複数のグループウェア製品でモバイルアプリを提供しています。 kintone • 業務アプリプラットフォームのモバイル版 サイボウズ Office • 中⼩企業向けグループウェアのモバイル版 Garoon • ⼤企業向けグループウェアのモバイル版 15
Cybozu のモバイル開発体制 チーム構成 • プロダクト × OS ごとに専任チームを組織 • 各チームにエンジニア・QA・デザイナー職能が所属し、PMがいるチームもある モバイルチーム⼀覧 • 🦩 つるチーム ̶ kintone iOS 🐢 かめチーム ̶ kintone Android • 🐮 うしチーム ̶ Office iOS 🐤 とりチーム ̶ Office Android • 🦑 いかチーム ̶ Garoon iOS 🐙 たこチーム ̶ Garoon Android 16
4. 情報収集・最新動向 17
主要カンファレンス 情報収集の要となるカンファレンスを把握しておこう iOS / Swift 系 • WWDC(6⽉)̶ Apple 公式。新 OS・API の発表 • try! Swift Tokyo(3–4⽉)̶ 国際コミュニティ。東京開催あり • iOSDC Japan(8–9⽉)̶ 国内最⼤の iOS 開発者会議 Android / Kotlin 系 • Google I/O(5⽉)̶ Google 公式。Android 新機能の発表 • Kotlin Fest(10–11⽉)̶ 国内 Kotlin コミュニティ • DroidKaigi(9–10⽉)̶ 国内最⼤の Android 開発者会議 18
最新トレンド(⼀例) AI エージェントによるコーディング • Claude Code や Codex など AI エージェントが⾃律的にコーディング • Xcode や Android Studio にも AI ⽀援機能が統合されつつある オンデバイス AI の進化 • Apple Intelligence や Gemini Nano などローカル LLM が端末上で動作 iOS 26 ̶ Liquid Glass デザイン • WWDC25 発表の新デザイン⾔語 ̶ 既存アプリも対応が必要に 19
まとめ • モバイルアプリは Web とは異なる配布・更新・審査の仕組みを持つ • iOS と Android で UI ガイドライン・開発⾔語・ストアが異なる • 開発アプローチは ネイティブ / クロスプラットフォーム / WebViewベース の3種 • OS の年次アップデートとバージョン共存への継続的な対応が必要 • Cybozu はプロダクト × OS ごとに6つの専任チームで開発 • WWDC や Google I/O 等のカンファレンスで最新情報をキャッチアップ 20