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
noboru ishikura
December 21, 2019
Programming
130
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スマホアプリのいろいろな作り方を整理してみた / Way of creating smartphone app
noboru ishikura
December 21, 2019
More Decks by noboru ishikura
See All by noboru ishikura
2024年買ったもの
noboru
0
58
スマホアプリエンジニアが3Dプリンターを買って1ヶ月が経ちました
noboru
0
76
pigeonでネイティブ連携
noboru
0
180
スマホアプリ開発を支えるRuby / Ruby supports smartphone app development
noboru
2
3k
我が家のネットワーク構成紹介 / My house network
noboru
0
130
リモートワークAndroidエンジニアの作業場(2018夏)
noboru
1
430
How to use SlideViewer
noboru
0
150
jQueryを使った怖い話
noboru
0
440
Androidのコードを自動で解析し、GitHubのpull requestにコメントする
noboru
1
300
Other Decks in Programming
See All in Programming
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
0
150
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.5k
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
0
310
MySQLとPostgreSQLって何が違うの?
akagami
PRO
0
160
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.3k
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
550
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
110
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.3k
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
620
自分的「カンファレンスの楽しみ方」
syumai
0
180
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
4.7M
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Statistics for Hackers
jakevdp
799
230k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.6k
BBQ
matthewcrist
89
10k
WCS-LA-2024
lcolladotor
0
820
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.7k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
430
New Earth Scene 8
popppiees
3
2.5k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
Site-Speed That Sticks
csswizardry
13
1.5k
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を利用したい場合 には、ネイティブでそれぞれ実装が良い と思っています。