-- Views
December 13, 25
スライド概要
2025/11/19にサイボウズが開催した、P2HACKS2025の事前勉強会「モバイル勉強会」の資料です。
サイボウズ株式会社の主に開発本部の資料を公開するアカウントです。
P2HACKS モバイル勉強会 2025.11.19 1
自己紹介 - こた[田島 鼓太郎] - 2019年入学、複雑系コース - すうぃふと2021 - Covid-19に罹り生活リズムが壊れ、留年のち就職 - 25新卒 一応フレッシュマンらしい - サイボウズのAndroidアプリエンジニア - 最近は札幌から東京への移住を検討している 2
自己紹介 - Atria(あとりあ)[畑 大地] - 2019年入学、情シスコース - すうぃふと2021 - 応用数学が取れなくて留年のち就職 - 24新卒! 社会人2年目 - サイボウズでAndroidアプリエンジニア! - メガネが壊れたのが最近のなやみ 3
サイボウズってどんな会社? 情報共有を通じてチームワークを促進させるグループウェア(情報共有プラットフォーム)を提供 業務システム構築プラットフォーム グループウェア ノーコード/ローコードで 業務システムを実装できるプラットフォーム 中小企業向けグループウェア 契約中 39,000社 導入延べ 82,000社 メール共有システム チームのメール対応を一元管理 導入延べ 16,000社 中堅・大規模組織向けグループウェア 導入延べ 8,200社 *上記は、国内契約社数 *2025/7月末時点の社数 *「kintone」はクラウドのみの販売 *「サイボウズ Office」、「Garoon」、「メールワイズ」は、パッケージ版とクラウド版を合算した延べ導入社数 4
サイボウズってどんな会社? • すべてのレイヤーで自社のエンジニアが開発・運用! • アプリケーションはもちろん、 ミドルウェア、クラウド基盤まで、 すべてのレイヤーで自社のエンジニアが 開発・運用しています。 • 自社で開発し、自社で使う • 社内のコミュニケーションなど、 あらゆる日常的な業務で自社製品が利用されています • リモートワークと出社を 自身とチームのスタイルに応じて決定できる • こたとAtriaは北海道から働いています 5
目次 1 モバイル概論 P05 1-1 Webとの違い P06 1-2 OSについて P14 2-1 開発するために必要なこと P24 2-2 Android P26 2-3 iOS P39 2-4 マルチプラットフォーム P49 2-5 サーバーサイド P54 3 モバイルハッカソン経験談Tips P60 6
モバイル概論
Webとの違い 8
Webとの違い 用語解説 : “ネイティブアプリ”とは “ネイティブアプリ”は、特定のプラットフォーム(iOSやAndroid、Windowsなど)専用に開発され、 端末にインストールして利用するアプリのこと モバイルに注目すると、アプリストアなどからインストールしたアプリケーションを指すことが多いです 9
Webとの違い ターゲット層 • 特定の機能やリッチな体験を重視する層 • カメラ、位置情報、加速度センサー、プッシュ通知など、 デバイスのハードウェア機能を利活用したい場合におすすめです • オフラインでの利用を想定する層 • 地下や飛行機、通信制限時など、 オフラインの環境でもアプリを利用したい場合に適しています • 継続的な利用が見込まれる層 • 一度インストールしてしまえばホーム画面からすぐアクセスできるため、 日常使いなサービスやコンテンツを提供したい場合におすすめです 10
Webとの違い ユースケースの例 11
Webとの違い ユースケースの例 • Web • 画面サイズの大きさを利用して大量の情報を表示し ている • モバイル • 1画面に多くの情報を載せられないため、 必要最小限の情報を集めて表示している • 外出先で利用することを前提としたデザインで ユーザー体験の向上を狙っている • プッシュ通知機能 12
Webとの違い リリースについて • Web • デプロイ→即公開 • 公開するためのサーバーを用意する必要がある • モバイル • 各プラットフォームごとに審査が必要 • iOS : AppStore • Android : Google Play • 審査に落ちた場合、公開することができない • 各プラットフォームごとにアカウント登録が必要 • iOS : Apple Developer Program(99米ドル / 年) • Android : Google Play Console デベロッパー アカウント(25米ドル / 一回限り) • 一部のサービスを用いると無料で配布できる(後述) 13
Webとの違い Webにできてモバイルネイティブにできないこと • インストール不要で動作 • URLによる簡単な共有・アクセス • 迅速なリリースアップデート • 低コストでの小規模開発 • 様々な言語/フレームワークでの開発 14
Webとの違い モバイルネイティブにできてWebにできないこと • 端末の性能を最大限引き出す • モバイルデバイスの使用感の追求 • アプリ内課金 • プッシュ通知の高度な制御 • オフラインでの動作 15
モバイルのOSについて 16
モバイルのOSについて(仮) 2大OSの対比表 iOS Android 開発元 Apple Google 端末 iPhone メーカーやモデルが多様 アプリ開発言語 Swift, Objective-C Kotlin, Java 世界のシェア率^1 27% 72% [^1]: Statcounter Global Stats(https://gs.statcounter.com/os-market-share) より 17
モバイルのOSについて(仮) 日本でのシェアは iOS: 59% Android: 40% Statcounter Global Stats(https://gs.statcounter.com/os-market-share) より 18
モバイルのOSについて(仮) 日本でのシェアは iOSが優勢 iOS: 59% Android: 40% Statcounter Global Stats(https://gs.statcounter.com/os-market-share) より 19
モバイルのOSについて(仮) 日本でのシェアは ただし… 20
モバイルのOSについて(仮) 年代別に見ると MMD研究所 (https://mmdlabo.jp/investigation/detail_2496.html) より 21
モバイルのOSについて(仮) 年代別に見ると MMD研究所 (https://mmdlabo.jp/investigation/detail_2496.html) より 22
モバイルのOSについて(仮) 年代別に見ると MMD研究所 (https://mmdlabo.jp/investigation/detail_2496.html) より 23
モバイルのOSについて(仮) 年代別に見ると 自分たちのプロダクトが “誰を”ターゲットにして いるのかを考える MMD研究所 (https://mmdlabo.jp/investigation/detail_2496.html) より 24
モバイルのOSについて(仮) 使用フォントについて 開発者としての注意点 • 開発環境が特殊 • SwiftやKotlinといったプログラミング言語は特定の環境に寄らず書くことが可能 ただし、アプリケーションにして(=ビルド)実行するには、iOSの場合Macを使用するなどの特殊な環境が必要 • 初学者や自分でエラーを解決する自信の無い方は、Xcode(iOS), Android Studio(Android)の使用がおすすめ • ビルドが特殊 • 実際に手元の端末へとアプリケーションをインストールしたい時は注意 Androidの場合はそこまで難しくないが iOSはApple Developer Program(年間$99, 約13,000円)の加入を検討する必要がある • 裏技を使用すればiOSも数台だけ無料でインストールができるが ハッカソンの期間でやるメリットがあるのかを検討する必要がある • 公開方法が特殊 • 普段App Store, Google Play Storeからダウンロードするように、モバイルのアプリ公開は少し特殊 開発者用にテスト版の公開を簡略化するシステムもあるので検討する必要がある 25
開発するために必要なこと
開発するために このセクションの目的 このセクションでは、モバイルアプリケーションを開発するために必要な情報を皆さんに提供します このスライド資料のみで全てがわかるわけではありませんが、 この資料を取っ掛かりとして開発を始められるような内容を盛り込んでいるつもりです 27
Android編 28
Androidの開発プロセス 開発環境 Android Studio Android向けのアプリを開発するために、Googleが提供するIDE(統合開発環境) 使用するには公式サイトからダウンロードする (Macの人はHomebrew, Winの人はWingetでもダウンロードできる) https://developer.android.com/studio?hl=ja 29
Androidの開発プロセス 開発環境 エミュレーター Androidアプリの開発をする時に、実際の端末が無くてもア プリの動作を確認できるツール 通信状態が悪いなどの状況を意図的に作り出すことが可能 30
Androidの開発プロセス UI表現と使用言語 Android-View 2010年ごろから主流となった、従来のUI構築方法 XMLレイアウトファイル + Activity/Fragmentを利用 Webで記事検索をした際に、 古いサイトだとこの形式での解説記事が出てくることがある 近年の開発では後述するJetpack Composeが主流なため、 今から学ぶ必要はないかも 31
Androidの開発プロセス UI表現と使用言語 Jetpack Compose 2021年リリースの新しいUI構築方法 XMLファイルは使わずに、コードのみでUIを記述する Kotlinベースの宣言的UI表現が可能 32
Androidの開発プロセス UI表現と使用言語 Java Androidアプリ開発の黎明期から使われている開発言語 (未来大では2年生の情報処理演習I/IIで学習します) Webで記事検索をした際に、 古いサイトだとこの言語での解説記事が出てくることがある 33
Androidの開発プロセス UI表現と使用言語 Kotlin 2017年に公式サポートされ始めた比較的新しい言語 2019年にはAndroidアプリ開発の推奨言語に 現在の開発はこの言語を使うのが主流となっている Jetpack Composeで開発する場合はKotlinの使用が必須 34
Androidの開発プロセス 権限 端末機能の悪用を防ぐため、ネイティブ開発では権限による機能制限が行われています。 カメラや位置情報、インターネット通信などを利用する場合、ユーザーに権限を要求する必要があります。 権限要求はAndroidManifest.xmlに記述したり、コードを書いたりして対応します。 権限が必要な例) カメラ、位置情報、インターネット通信、プッシュ通知、アラーム通知、Bluetooth 写真/ファイルへのアクセス、身体データへのアクセス、連絡先情報へのアクセス etc… 35
Androidの開発プロセス 公開方法 AppTester Firebaseが提供するAndroidアプリのテスト配布サービス APKファイル(Androidアプリの実行ファイル)を アップロードするだけで、テスターに簡単に配布できる 無料プランもあるのでおすすめ 36
Androidの開発プロセス 公開方法 DeployGate DeployGateが提供するモバイルアプリの配布・管理プラットフォーム APKファイルをアップロードし、URLで配布できる テスターはWebからインストールすることができる 無料プランでは3名までの制限がある 37
Androidの開発プロセス 公開方法 GoogleDriveにapk直置き 一番簡単でシンプルな方法 APKファイルをアップロードし、ダウンロードURLで配布できる ハッカソンで身内向けに配布するならこれが一番楽な気がします 38
Androidの開発プロセス おすすめの学習教材 コードラボ Googleが公式で提供している学習教材、無料。 Kotlin による初歩的なプログラミングのコンセプトから Android Studioのセットアップ、画面作成など アプリ開発に必要な情報を一通り学習できます。 Compose を用いた Android アプリ開発の基礎 https://developer.android.com/courses/android-basicscompose/course?hl=ja 39
iOS編 40
iOSの開発プロセス 開発環境 Xcode macOSやiOSのアプリを開発するために、Appleが提供するIDE(統合開発環境) ※macOSのみでリリースされているため、Windowsでは使用できない 使用するには公式サイトからダウンロードするか、App Storeからインストールする (弊社iOSアプリエンジニア曰く…)Xcodes.appを使うとXcodeの複数バージョンを管理できてオススメ https://developer.apple.com/xcode/ 41
iOSの開発プロセス 開発環境 シミュレーター iOSアプリの開発をする時に、 実際の端末が無くてもアプリの動作を確認できるツール Androidのエミュレーターとは違い、 通信状態が悪いなどの状況を意図的に作り出す場合には 追加で設定ができるプラグイン的なものをインストールする 必要がある https://developer.apple.com/xcode/ 42
iOSの開発プロセス 開発用プログラミング言語 Swift Appleが開発したプログラミング言語 iOS, Macアプリ開発用の言語と思われがちだけど、 最近はServer Side Swiftなる概念もあるらしいです Kotlinとも似ているため、JavaやProcessingを学習した未来大の 学生なら親和性あります ※Swiftが主流になる前は、Objective-Cというプログラミング言 語が主流であったが、現在はほとんど使用されていません https://www.swift.org/ 43
iOSの開発プロセス フレームワーク SwiftUI 画面のレイアウト、UIをSwiftで表現するためのフレームワーク https://developer.apple.com/swiftui/ 44
iOSの開発プロセス フレームワーク Storyboard ※Androidと同様に、XMLでレイアウトを構築するStoryboardというものが存在します ただし、現在はほとんど使用されておらず、新しくプロジェクトを作る時も出現しないので、 そういうものがあるのね〜とだけ頭の片隅に入れてください ちなみにAndroidと違ってほとんどXcodeが管理するもののため、人が読めたものではないです https://developer.apple.com/swiftui/ 45
iOSの開発プロセス つまづきポイント 権限 Android編でも出ましたが、iOSでもユーザーにどの権限を要求し、アプリ側がどの機能を使用できるのか を定める必要があります 権限の要求は Signing & Capabilitiesで行います。 権限が必要な機能かは場合によって異なるため、必要になったときに書き方を調べてください 特に変なプロダクトでなければ、サーバーと通信する権限などが必要になると思います 権限をアプリ内でユーザーに要求する際の文言は、 Info.plistに記載します 46
iOSの開発プロセス つまづきポイント 外部ライブラリ SwiftUIなど、プロジェクトを作成した段階で使用できる関数/クラス群を標準ライブラリと呼んだりします が、目的の実装をするためには自分で長いコードを書かなくてはいけないこともあります そこで、有志の団体や企業が開発した外部ライブラリを使用することも多いでしょう その際Swiftでは、Swift Package Manager(SwiftPM)を使用してライブラリを管理することが多いです Swiftと同じくAppleが公式にサポートしているツールのため、信頼性や親和性が高いです ※ライブラリ管理のツールはSwiftPMが主流になったのが最近のため、検索時にCocoaPodsなど別のツール が出てくると思います 昔のライブラリはCocoaPodsじゃないと使えないこともあるため使うなとまでは言えないですが、 基本的にはSwiftPMを使うと良いでしょう 47
iOSの開発プロセス 公開方法 TestFlight Appleが提供している開発したアプリを簡単にテスターに配布できるサービス 外部テスト、内部テストの二種類の方法があり、それぞれ台数や制限などが変わってきます App Store Connectに登録して〜といった手順が必要ですが、そもそもの前提として Apple Developer Program($99/年)への加入が必要です 他にも登録やAppleの審査が必要な箇所があるため 本気で公開を目指すのなら、今日から準備した方が良いです ※現状iOSでリリースとこれ以外に公開の方法はないので、ハッカソンでどう見せたいかなどはよく考えて 技術選定をしてもらえると良いと思います https://developer.apple.com/testflight/ 48
iOSの開発プロセス おすすめの学習教材 Develop in Swift Tutorials https://developer.apple.com/tutorials/develop-in-swift/ Appleが公式で提供している学習教材、無料。 全編英語のため少し躊躇するかもしれませんが、 Xcodeのセットアップからアプリ開発に必要なデータの扱い方、 SwiftUIの書き方まで一通り学ぶことが可能です 49
iOSの開発プロセス おすすめの学習教材 swiftui-view-coding-guidelines https://github.com/cybozu/swiftui-view-coding-guidelines Cybozuが無料で提供している SwiftUIを利用したView実装のためのガイドラインです。 このガイドラインはCybozuでの実践を反映しており、 SwiftUIの基礎的な知識やAPI設計の勘所についても言及しています。 50
マルチプラットフォーム 51
マルチプラットフォーム マルチプラットフォーム 一つのコードで複数のプラットフォームを開発できるフレームワーク/ツールを指す “クロスプラットフォーム”と呼ばれることもある 一つのコードで複数のプラットフォーム向けに同時開発ができるため、 ハッカソンのような短期間な開発でも成果物を作りやすく アピールしやすい ただし、ネイティブ開発と同じく iOS向けのビルドにはMacが必要であるため注意 52
マルチプラットフォーム Flutter Googleが開発したクロスプラットフォームUIフレームワーク 開発にはDart言語を使用する 一つのコードで Android/iOS/Web/デスクトップアプリを作成できる どのデバイスでも統一されたUIで表現できるのが特徴 様々なデバイスで動作させたく、 統一された見た目を保ちたい場合に強力なツールです。 53
マルチプラットフォーム Unity 世界的に有名なゲームエンジン 言語はいろいろ選べるが、C#がよく選ばれる 2D/3Dゲームやインタラクティブアプリの開発に最適 Android/iOS/PC/コンソール/VR/ARなど 多様なプラットフォームに対応 ゲームを作るのであればこれ一択な感じがしています (ゲームエンジンとしてはUnreal Engineなどもありますが、 C++での開発であることや動作させる端末側にスペックが必要 なので、あまりお勧めはできません) 54
マルチプラットフォーム React Native Meta(旧Facebook)製の マルチプラットフォームフレームワーク JavaScript/TypeScriptを使用 一つのコードでWeb/Android/iOSアプリを開発可能 OSによってUI表現が変化するのが特徴 Webだけでなくモバイルも開発したく、 すでにReactを使っていたり、 JavaScriptやTypeScriptをすでに知っている方におすすめです 55
サーバーサイド 56
サーバーサイド このセクションの目的 このセクションでは、モバイルアプリケーションを開発する際、必要なデータを外部から取得するための サーバーに関してお話しします サーバーサイドの開発をするというよりは、モバイル側から利用する時にどのような選択肢があるのかに 焦点を当てているため、サーバーサイドの開発が必要になった場合は調査してください 57
サーバーサイド 生成系AI 昨今、生成系AIを内部に組み込むアプリが多くなってきました (ex. NotebookLM, ChatGPT) 皆さんがもし組み込みたい場合、 • 端末内部で生成系AIを動かす(ローカルLLM) • サーバー等で生成系AIを動かし、端末にその結果を返す の二つのパターンが考えられます 前者は費用もかからず、場合によっては返答が早いためUXに繋がる反面、 精度の悪さや対応端末が限られるというデメリットも 後者は逆に、端末の制限が無い反面、使用量に比例して費用がかかり通信 にも時間がかかる恐れがあります 58
サーバーサイド 生成系AI • サーバー等で生成系AIを動かし、端末にその結果を返す OpenAIやMicrosoft、Googleなどの企業は、自社の生成系AIを動作させ、 APIとして公開しています 使用にはアカウントが必要であったり、費用がかかったり申請に時間がか かるものもあるため、各社のAPIの仕様をよく調べることをお勧めします ↑で半ば脅すような書き方をしましたが、昨今のAI戦国時代のおかげで一 定額までは無料で使える仕組みなどもあるため、ハッカソンの開発で有効 活用してみてください 59
サーバーサイド Firebase モバイルでは頻繁に見かける、 Googleが提供するサービス群 15以上のサービスがあり、一定額までは無料で使用可能 サーバーに近いサービスでは Realtime DatabaseやFirestore Databaseなどが存在する サーバーの詳しい知識が無くても、簡単なデータベースを構築 してユーザー参加型のサービスを開発することが可能 他にも • Crashlytics • Functions etc… 60
サーバーサイド AWS Amazon Web Service、Amazonが運営する サービス数は300個以上。 一定額までは無料で使用可能、学生特別優遇プログラムあり よく使われるのは - Amazon EC2 - S3 - I AM - DocumentDB, DynamoDB - API Gateway - AWS Lambda 61
サーバーサイド Azure Microsoft Azure(アジュール、アジュア) 一定額までは無料で使用可能、学生特別優遇プログラムあり よく使われるのは - Azure Functions - Azure AI Foundry Models - Azure Cosmos DB, Azure SQL - Microsoft Entra ID - Azure Logic Apps 62
モバイルハッカソン経験談的なTips
モバイルハッカソン経験談的なTips GitHub Education(GitHub Student Developer Pack) 学生なら絶対に加入した方が良い。 学生証さえあれば登録申請できる。 PCから学内の回線を使うと認証が早い(経験談) GitHub Educationに登録するとGitHub Proが付与され、強力な機能が使えるようになるほか GitHub 以外の便利ツールが無料で使えたりするようになる。 使えるおすすめツール - Microsoft Azure : $100無料枠 - JetBrainsIDE : 無料 - GitKraken : GUIでのGit操作 64
モバイルハッカソン経験談的なTips 開発環境を用意しておこう 事前に開発環境を用意しておきましょう。 ハッカソンは時間が限られているので開発環境の用意で大切な 開発時間を費やしてしまうのはもったいないです。 過去のP2HACKSで、Android Studioの環境を用意するだけで ハッカソン期間が終了した人がいます 65
モバイルハッカソン経験談的なTips ネイティブ開発中の検索のしかた Kotlin/Swiftや Android Studio /Xcodeを検索ワードに含めましょう 普通に “Android” や “iOS” と調べると、利用者側の情報がヒットします "Kotlin" や "Swift" といったプログラミング言語などの開発者側のキーワードを併記しましょう ChatGPTなどを利用して情報調査をする場合は自分が開発者であることを明示するプロンプトにしましょう 出典を精査してくれる Gemini の Deep Researchも有用です 66
モバイルハッカソン経験談的なTips 非同期処理は難しいので事前に勉強しておこう 非同期処理はHTTP通信や、データベースへのアクセスなど、 (比較的)時間がかかる処理を行う際に必須な技術です。 ちょっとクセが強い概念なので、事前学習をお勧めします 67
質問タイム
宣伝 Cybozu Future Talk 2025 を開催します! 69
宣伝 27新卒採用もオープンしています! 70
宣伝 サイボウズのリンク集 Cybozu Inside Out サイボウズエンジニアの技術ブログです。 エンジニアリングに関するあれこれなど、社員が記事を公開しています。 https://blog.cybozu.io/ Cybozu Summer Blog Fes’25 あらゆる垣根を超えて集結した18チームが120本以上の記事を投稿しています。 本企画は、その名の通りサイボウズによる夏のブログの祭典です。 https://cybozu.github.io/summer-blog-fes-2025/ サイボウズ・ラボユース https://labs.cybozu.co.jp/youth/ Cybozu Tech (エンジニアの発表スライドや動画、ブログがすべてチェックできます) https://tech.cybozu.io/ 71
©️ Cybozu, Inc. 72