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
Cordovaの概要とハイブリッドアプリのメリット
Search
asakahara
February 07, 2017
Programming
1
1.1k
Cordovaの概要とハイブリッドアプリのメリット
フロントエンド勉強会 in 山陰 #01の発表内容です。
Cordovaやその他のフレームワーク、ハイブリッドアプリのメリット&デメリットについて触れています。
asakahara
February 07, 2017
Tweet
Share
More Decks by asakahara
See All by asakahara
Alamofireの コードリーディングから Swift 3.0の知見を学ぶ
asakahara
0
450
Other Decks in Programming
See All in Programming
Navigating Dependency Injection with Metro
zacsweers
3
230
そのAPI、誰のため? Androidライブラリ設計における利用者目線の実践テクニック
mkeeda
2
260
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.6k
パッケージ設計の黒魔術/Kyoto.go#63
lufia
3
430
ソフトウェアテスト徹底指南書の紹介
goyoki
1
150
RDoc meets YARD
okuramasafumi
4
170
テストコードはもう書かない:JetBrains AI Assistantに委ねる非同期処理のテスト自動設計・生成
makun
0
250
プロポーザル駆動学習 / Proposal-Driven Learning
mackey0225
2
1.2k
Introducing ReActionView: A new ActionView-compatible ERB Engine @ Rails World 2025, Amsterdam
marcoroth
0
640
今だからこそ入門する Server-Sent Events (SSE)
nearme_tech
PRO
0
110
How Android Uses Data Structures Behind The Scenes
l2hyunwoo
0
400
「手軽で便利」に潜む罠。 Popover API を WCAG 2.2の視点で安全に使うには
taitotnk
0
840
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
330
21k
A Modern Web Designer's Workflow
chriscoyier
696
190k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Designing for Performance
lara
610
69k
A Tale of Four Properties
chriscoyier
160
23k
The Cult of Friendly URLs
andyhume
79
6.6k
Statistics for Hackers
jakevdp
799
220k
Code Review Best Practice
trishagee
70
19k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.9k
Transcript
$PSEPWBͷ֓ཁͱ ϋΠϒϦουΞϓϦͷϝϦοτ ϑϩϯτΤϯυษڧձJOࢁӄ גࣜձࣾιχοΫϜʔϒ ࡔݪ໌༟
ࡔݪ໌༟ 5XJUUFS*%!BTBLBIBSB ϒϩάIUUQTBLBIBSBIBUFOBCMPHKQ w લ৬ژͰJ04ΤϯδχΞ w ݄͔ΒιχοΫϜʔϒͷΤϯδχΞ w ౡ ݩ
ژౡࠜ
גࣜձࣾιχοΫϜʔϒ w ສਓҎ্͕༡ͿιʔγϟϧήʔϜͷاը։ ൃӡ༻ w )5.-ͰಈըΛ৴͢ΔHVJMF w 8FCαʔϏεʗεϚʔτϑΥϯΞϓϦ։ൃ w σβΠϯɾΠϥετ੍࡞
ιχοΫϜʔϒౡࠜࣄۀॴ w ݄͔Β։ઃ w দߐӺ͔ΒंͰఔͷࢁͷ্ʹ͋ΔΦ ϑΟε w ݱࡏΤϯδχΞ໊͕̐ಇ͍ͯΔ
None
None
None
ࠓ͢͜ͱ w $PSEPWBͱͦͷଞͷϑϨʔϜϫʔΫʹ͍ͭͯ w $PSEPWBͷ͍ํΛܰ͘հ w ϋΠϒϦουΞϓϦΛ࡞Δࡍʹߟྀ͢Δ͜ͱ
ϋΠϒϦουΞϓϦͱʁ w ωΠςΟϒΞϓϦͱ8FCΞϓϦΛֻ͚߹Θͤͨͷ w 8FCΞϓϦͰ༻Ͱ͖ͳ͍ͷػೳΛ͑Δ w ΞϓϦͱͯ͠4UPSFʹެ։Ͱ͖Δ
+4ΛϥϯλΠϜͰಈ͔͠ωΠςΟϒ ίʔυΛϒϦοδ͢ΔλΠϓ w 3FBDU/BUJWF w /BUJWF4DSJQU w 5JUBOJVN4%,
8FC7JFXΛ͏λΠϓ w $PSEPWB 1IPOF(BQ w *POJD w .POBDB 7JTVBM4UVEJP$PSEPWBΛαϙʔτ
$PSEPWBͱʁ w ϋΠϒϦουΞϓϦ͕։ൃͰ͖Δ 8FC7JFXΛ༻ w )5.-$44+BWB4DSJQUͰ։ൃ w ωΠςΟϒϒϦοδͷఏڙ 1MVHJOଟ͍
w J04ɺ"OESPJEɺ8JOEPXT1IPOFͳͲ༷ʑͳϓϥο τϑΥʔϜʹରԠ w ͔Β࢝·Γɺݱࡏ׆ൃʹ։ൃ͕ߦͳΘΕ͍ͯΔ
$PSEPWBͷϝϦοτ w )5.-$44+BWB4DSJQU͚ͩͰ͋Δఔ։ൃ Ͱ͖Δ w 8FC7JFXͷ࣮ͳͲϓϥοτϑΥʔϜຖͷࠩҟ Λٵऩ w ϓϥάΠϯΛ͏͜ͱͰωΠςΟϒͷϒϦοδ ͕༰қʹͰ͖Δ
w ΫϩεϓϥοτϑΥʔϜ
$PSEPWBͷσϝϦοτ w ͷੑೳΛϑϧʹར༻͠ʹ͍͘ 8FC7JFXͰ ࣮ߦ͞ΕΔͨΊ w ݱঢ়ͷ)5.-Ͱ࣮ݱ͢Δʹ͍͠ػೳ͕͋ Δ %ήʔϜͳͲ
w ωΠςΟϒΞϓϦΑ͏ͳඪ४ͷ6*ίϯϙʔωϯ τ͕ͳ͍ͷͰɺଞͷϥΠϒϥϦͰิ͏ඞཁ͋Γ
$PSEPWBͷಋೖ w ࣄલʹ"OESPJE4UVEJPɺ9DPEFΛΠϯετʔ ϧ͓ͯ͘͠ w $PSEPWBͷಋೖԼهίϚϯυͷΈͰྃ sudo npm install -g
cordova
ϓϩδΣΫτͷ࡞ cordova create hello com.sonicmoov.hello cordova platform add android cordova
platform add ios cordova platform list cordova build android cordova build ios
ϓϩδΣΫτͷ࣮ߦ cordova emulate android cordova emulate ios cordova run android
cordova run ios cordova serve
σΟϨΫτϦߏ ├── config.xml ├── hooks │ └── README.md ├── platforms
│ ├── android │ ├── ios │ └── platforms.json ├── plugins │ ├── android.json │ ├── cordova-plugin-whitelist │ ├── fetch.json │ └── ios.json └── www ├── css ├── img ├── index.html └── js
جຊͷϓϥάΠϯ w ͷϞʔγϣϯݕϓϥάΠϯ w όοςϦʔใͷऔಘϓϥάΠϯ w Χϝϥૢ࡞ϓϥάΠϯ w ͷΦϦΤϯςʔγϣϯݕϓϥά Πϯ
w ωοτϫʔΫใͷऔಘϓϥάΠϯ w ใͷऔಘϓϥάΠϯ w μΠΞϩάͷ੍ޚϓϥάΠϯ w ϑΝΠϧૢ࡞ϓϥάΠϯ w ϑΝΠϧసૹϓϥάΠϯ w ҐஔใͷऔಘϓϥάΠϯ w දهͷࠃࡍԽରԠϓϥάΠϯ w ϝσΟΞૢ࡞ϓϥάΠϯ w ϝσΟΞΩϟϓνϟʔϓϥάΠϯ w εςʔλεόʔͷ੍ޚϓϥάΠϯ w όΠϒϨʔγϣϯͷ੍ޚϓϥάΠ ϯ
ΧελϜϓϥάΠϯ "OESPJE <feature name="TestPlugin"> <param name="android-package" value="com.sonicmoov.hello.TestPlugin" /> </feature> SFTYNMDPOpHYNMΛฤू
5FTU1MVHJOΫϥεͷ࣮ public class TestPlugin extends CordovaPlugin { @Override public boolean
execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { callbackContext.success(); android.widget.Toast.makeText( this.cordova.getActivity(), args.getString(0), 2000).show(); return true; } }
ϓϥάΠϯͷݺͼग़͠ onDeviceReady: function() { cordova.exec(function() { console.log('ϓϥάΠϯݺͼग़͠ʹޭ͠·ͨ͠'); }, function() {
console.log('ϓϥάΠϯݺͼग़͠ʹࣦഊ͠·ͨ͠'); }, 'TestPlugin', 'actionName', [‘Test Cordova plugin']); }
$PSEPWBΛΘͳ͍ ωΠςΟϒͱͷϒϦοδ w BEE+BWBTDSJQU*OUFSGBDFํࣜ "OESPJE w ωΠςΟϒ͔Β+BWB4DSJQUΛ࣮ߦ͢Δ w ΧελϜ63-ํࣜ
w ϩʔΧϧ)551αʔόΛ্ཱͪ͛Δ
ωΠςΟϒ͔Β+4Λ࣮ߦ͢Δ J04ͷ߹ [webView evaluateJavaScript:@"createBook()"] completionHandler:^(id response, NSError *error) { if
(response) { NSLog(@"bookId: %@", response); } }];
ωΠςΟϒ͔Β+4Λ࣮ߦ͢Δ "OESPJEͷ߹ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { view.evaluateJavascript( “javascript:createBook()", null);
} else { view.loadUrl("javascript:createBook()"); }
ΧελϜ63-ํࣜ J04ͷ߹ - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^) (WKNavigationActionPolicy))decisionHandler
{ NSURL *url = navigationAction.request.URL; if ([url.scheme isEqualToString:@"sample"]) { // ωΠςΟϒͷॲཧ decisionHandler( WKNavigationActionPolicyCancel); return; } decisionHandler(WKNavigationActionPolicyAllow); }
ΧελϜ63-ํࣜ "OESPJEͷ߹ webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view,
String url) { Uri uri = Uri.parse(url); if (uri.getScheme().equals("sampleapp")) { // ωΠςΟϒͷॲཧΛݺͼग़͢ return true; } return false; }
ϋΠϒϦουΞϓϦΛ ։ൃ͢Δࡍͷҙ w BλάDMJDLΠϕϯτΛͦͷ··Θͳ͍ w λοϓ࣌ͷϋΠϥΠτΛফ͢ w ԡ͠Ͱදࣔ͞ΕΔϙοϓΞοϓϝχϡʔΛফ͢
ϋΠϒϦουΞϓϦΛ ։ൃ͢Δࡍͷҙ ଓ͖ w Ϣʔβʔ͕จࣈΛબͰ͖ͳ͍Α͏ʹ͢Δ w ίϯςϯπͷҰ෦ʹଦੑεΫϩʔϧΛೖΕΔ w %0.πϦʔʹՃ͑ΔมߋΛݮΒ͢ ࠶ඳࣸͷί
ετ
ͳͥBλάDMJDLΠϕϯτΛ ͦͷ··Θͳ͍ํ͕Α͍ͷ͔ʁ w λονΠϕϯτͷॲཧ͔ΒൃՐ·ͰʹϛϦඵͷ Ԇ͕ൃੜ w ϒϥβ͕μϒϧΫϦοΫ͔ผ͢ΔͨΊͷػ࣌ؒ w ରԠࡦͷҰͭͱͯ͠'BTU$MJDLΛ͏͜ͱͰҙࣝ͢Δ ͜ͱͳ͘ΠϕϯτͷൃՐΛૣΊΒΕΔ
·ͱΊ w ΞϓϦͷཁ݅ʹΑͬͯϋΠϒϦουΞϓϦͷํ͕ ͷݮɺΫϩεϓϥοτϑΥʔϜͰͷఏڙ ͍͢͠ w $PSEPWBΛཪͰ͍ͬͯΔ։ൃڥ͍͔ͭ͋͘ ΔͷͰɺ6*ͷίϯϙʔωϯτؚΊͨޮతՄೳ w ใൺֱతଟ͘8FCͷٕज़Λத৺ʹ։ൃͰ͖Δ
ͷͰɺॳ৺ऀʹ͓͢͢Ί
࠷ޙʹ
ౡࠜʹڵຯ͕͋Δ ΤϯδχΞͷํΛืूͯ͠·͢
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ