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
スマホアプリのいろいろな作り方を整理してみた / Way of creating smartp...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
noboru ishikura
December 21, 2019
Programming
1
110
スマホアプリのいろいろな作り方を整理してみた / Way of creating smartphone app
noboru ishikura
December 21, 2019
Tweet
Share
More Decks by noboru ishikura
See All by noboru ishikura
2024年買ったもの
noboru
0
42
スマホアプリエンジニアが3Dプリンターを買って1ヶ月が経ちました
noboru
0
46
pigeonでネイティブ連携
noboru
0
140
スマホアプリ開発を支えるRuby / Ruby supports smartphone app development
noboru
2
2.7k
我が家のネットワーク構成紹介 / My house network
noboru
0
120
リモートワークAndroidエンジニアの作業場(2018夏)
noboru
1
420
How to use SlideViewer
noboru
0
120
jQueryを使った怖い話
noboru
0
410
Androidのコードを自動で解析し、GitHubのpull requestにコメントする
noboru
1
280
Other Decks in Programming
See All in Programming
AtCoder Conference 2025
shindannin
0
1k
Implementation Patterns
denyspoltorak
0
280
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
140
CSC307 Lecture 04
javiergs
PRO
0
650
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.5k
CSC307 Lecture 09
javiergs
PRO
1
810
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
120
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
180
Fragmented Architectures
denyspoltorak
0
140
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
2.4k
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
210
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
Featured
See All Featured
Writing Fast Ruby
sferik
630
62k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
47
Statistics for Hackers
jakevdp
799
230k
Faster Mobile Websites
deanohume
310
31k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
54
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
920
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Unsuck your backbone
ammeep
671
58k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
Transcript
スマホアプリの いろいろな作り方を 整理してみた kanazawa.rb meetup #88 @noboru_i
https://qiita.com/noboru_i/items/240ffcb2 036f3b5cbc3b に書いたことのまとめ直し
Android/iOSアプリの作り方1 (Native) 一番オーソドックスな作り方 • Android SDK / iOS SDKを利用 •
Kotlin or Java / Swift or Objective-Cで処理を記述 • XML / Storyboard or xibでUIを構築 ◦ Jetpack Compose / SwiftUIや、コードでの実装も可能 Android SDK iOS SDK アプリ (Kotlin) アプリ (Swift)
Android/iOSアプリの作り方1 (Native) メリット • 一番安定している(他の作り方も、基本的にここをベースにしている) • それぞれのOS独自のUIを利用できる • OSの最新機能をそのまま使える •
外部のSDKも、ほぼ漏れなく対応している デメリット • Android/iOSで別々に作成する必要がある ◦ コストが倍増 ◦ 仕様がそれぞれでズレる可能性がある
Android/iOSアプリの作り方2 (ハイブリッド) Cordovaや、Cordovaベースのフレームワークを利用 基本的には、HTMLやJavaScriptをアプリ内に格納し、 それによってUIを構築する。 IonicやMonacaもこの仲間。 Android SDK iOS SDK
Cordova Framework アプリ (HTML/JavaScript/CSS)
Android/iOSアプリの作り方2 (ハイブリッド) メリット • Web技術で、ワンソースで実装できる • Cordovaには豊富なプラグインがあり、利用することでネイティブ連携が比較的容 易 デメリット •
WebViewの制限に依存しやすい • プラグインが存在しないものは、自分で記述する必要がある • ネイティブに比べると、オーバーヘッドが大きい
サーバから配信されるWebページをWebViewで表示する 作り方2と同様に、Web技術でUIを構築 ただし、サーバサイドで動作を変更することができる。 (Cordovaでもできるはず?) サーバ Android/iOSアプリの作り方3 (ガワネイティブ) Android SDK iOS
SDK WebView アプリ (HTML/JavaScript/CSS) WebView 配信
Android/iOSアプリの作り方3 (ガワネイティブ) メリット • UI更新が容易 • 既存のWebをそのまま利用できる”場合がある” デメリット • WebViewの制限に依存しやすい
• ネイティブに比べると、オーバーヘッドが大きい • なんだかんだ、Webをそのまま利用できないことが多い
Webをそのまま利用できないことが多い? • 外部サイトのリンクは、外したり、ブラウザ起動にする必要がある ◦ 自由に遷移できると、セキュリティリスクになる • window.openなど、そのまま利用できないJavaScriptメソッドがある • 真っ白画面が表示されるタイミングがある ◦
SPAだと初期ロードが遅い、 MPAだと画面遷移ごとにロードが必要 • ネイティブとWebで機能差がある場合、条件分岐が増える ◦ 例:ネイティブではカメラ起動ボタンがあるなど
クロスプラットフォーム環境を利用する React Native / Xamarin / Flutterあたりがメジャー それぞれ、言語・スタック方法が異なる Android/iOSアプリの作り方4 (cross-platform)
Android SDK iOS SDK Flutter アプリ UI UI 例:Flutterの場合
Android/iOSアプリの作り方4 (cross-platform) メリット • ネイティブと遜色ない動作速度 • XamarinならC#、React NativeならWeb技術からコンバートしやすい デメリット •
比較的情報が少なく、比較的不安定 • 問題があった場合、問題箇所の調査が難しい • ネイティブ機能を利用する場合、結局ネイティブコードが必要となる場合が多い
そもそもアプリを作らない Webサイトをアプリ風に使う PWA技術を利用する Android/iOSアプリの作り方5 (Web) サーバ Android OS iOS Browser
アプリ (HTML/JavaScript/CSS) Browser 配信
メリット • Web技術で完結できる • BLEなど、いくつかのネイティブ機能はブラウザ実装が存在する • 随時アップデートが可能 デメリット • アプリストアに配信できない
◦ TWAなど、回避策は出始めている • iOSでPUSH通知が送れないなど、アプリと比較して出来ないことがある Android/iOSアプリの作り方5 (Web)
個人の見解 • Webだけで済むのであれば、Webだけが良い ◦ ホーム画面に追加することもできる(ユーザ操作は必要) • アプリストアへの配信、一部のネイティブ機能が必要なら、Flutterが良い ◦ iOSとAndroidで無意味な動作差異(実装ミス)が発生しない •
性能要件が厳しい、ネイティブ機能をフル活用する、OS毎のUIを利用したい場合 には、ネイティブでそれぞれ実装が良い と思っています。