SlideShare a Scribd company logo
JavaScriptで作る
iOS・Androidアプリハンズオン
本日の流れ
・自己紹介
・Monacaについての説明
・ハンズオン
自己紹介
・吉本和弘
・株式会社ビズリーチ所属
・サーバーサイドエンジニア
・仕事で使っている技術
Java、JavaScript(jQuery)、HTML、CSS
MySQL、AWS、Linux
zuknow – 友達とクイズで競える学習アプリ
https://www.zuknow.net/
キャリアトレック–レコメンド型転職サイト
https://www.careertrek.com/
Monacaとは
・クラウドベースの開発プラットフォーム
→環境構築不要、IDEの機能も充実
・HTML5とJavaScriptを用いることで、
iOSとAndroidの両OSに対応した
クロスプラットフォームなアプリ開発を実現
→WEB開発のスキルでアプリ開発ができる
サンプルアプリの仕様
・現在地周辺の飲食店の一覧を表示
・一覧に表示された飲食店を
お気に入りに追加できる
・お気に入り一覧を表示
・お気に入りをクリアできる
Onsen UIとAngularJS
[Onsen UI]
・AngularJSをベースにモバイルアプリ作成に
必要なUIを提供
・多彩なUIコンポーネント
・HTMLを拡張し、タグ形式で提供
[Angular JS]
・Googleによって開発されたJavaScriptの
MVCフレームワーク
・複雑化するWebアプリのフロント部分を効率的に
する機能が充実
ex. 双方向バインディングなど
プログラムの構成
[index.html]
・アプリのUI(Webと同じ)
・ons-templateを利用することで、複数ページの
UIを1ファイルに記述
[app.js]
・データ処理、UIの変更処理
Onsen UI(1)
・ons-template
htmlのテンプレートを定義する
呼び出すときに、テンプレートのIDを指定
<ons-template id="foobar.html">
...
</ons-template>
・ons-tabbar
子要素ons-tabのpage属性に
タブで表示するページを指定する
<ons-tabbar>
<ons-tab page=”tab1.html" active="true”></ons-tab>
<ons-tab page=”tab2.html" active="true”></ons-tab>
</ons-tab>
Onsen UI(2)
・ons-list、ons-list-item
リストを表現するためのコンポーネント
<ons-list>
<ons-list-header>Header Text</ons-list-header>
<ons-list-item>Item1</ons-list-item>
<ons-list-item>Item2</ons-list-item>
</ons-list>
AngularJSを利用するための処理
②AppControllerコントローラーを登録
module.controller('AppController', function($scope, $http) {
$scope.search = function() {
・・・
};
};
<body ng-controller="AppController">
・・・
</body>
③AppControllerとhtmlの要素を紐付け
<script>
var module = ons.bootstrap();
</script>
①AngularJSがOnsen UIモジュールを追加
index.html
app.js
index.html
AngularJSのサービス
無名関数の引数に指定した変数名を元に、
必要なサービスを変数に渡す。
上記の場合は、$scopeサービスと$httpサービス。
module.controller('AppController', function($scope, $http) {
$scope.search = function() {
・・・
};
};
サービスとは
・Webアプリケーション共通の特定のタスクを実行する関数群
・シングルトンオブジェクト
・組み込みサービスは、「$」から始まる
・独自のカスタムサービスを作ることもできる
$scopeサービスと$httpサービス
$scopeサービス
・アプリケーションのモデルを
参照するオブジェクト
・データバインディングの肝となる
→詳しくは、次のスライドで
$httpサービス
・XMLHttpRequestオブジェクト、JSONP
を通じて、http通信をする
データ(js)
データバインディング(1)(AngularJs)
画面(html)
{{ data }}
データを変更 表示が変更される
$scope.data
データ(app.js)
データバインディング(2)(AngularJs)
画面(html.index)
<ons-list-item
ng-repeat="shop in searchShops”>
{{ shop.name }}
{{ shop.address }}
</ons-list-item>
<ons-list-item
ng-repeat="shop in likeShops”>
{{ shop.name }}
{{ shop.address }}
</ons-list-item>
$scopeのデータを変更すると、
表示が変更される
$scope. searchShops
$scope. likeShops
ディレクティブ(1)
・ng-repeat
配列に繰り返し処理を実施し、
展開したデータを表示する
<ons-list>
<ons-list-item ng-repeat=“data in dataList”>
{{ data }}
</ons-list-item>
</ons-list>
・ng-show
条件がtrueの場合に表示する
<ons-list>
<ons-list-item ng-repeat=“data in dataList”>
<span ng-show=“dataList.length > 0”>{{ data}} </span>
</ons-list-item>
</ons-list>
ディレクティブ(2)
・ng-click
クリック時に指定したスコープに
定義された関数を呼び出す
<ons-button ng-click="search()">
検索する
</ons-button>
index.html
$scope.search = function() {
・・・
};
app.js
ローカルストレージ(HTML5)
・値を保存する
window.localStrage.setItem([キー名],[値])
・値を取得する
window.localStrage.getItem([キー名])
・保存するデータをキーバリューで管理
・すべてのiOSとAndroidで利用できる
[利用例]
Cordova(1)
HTMLレイヤー
(JavaScript)
・Monacaで開発した搭載されるフレームワーク
・デバイス機能にアクセスするための
仕組みを提供
ネイティブレイヤー
(Objective-C、Java)
呼び出し
Cordova(2)
・InAppBrowser
アプリ内でブラウザを開く
・Geolocation
位置情報の取得
・Device
加速度センサーへのアクセス
・Media
オーディオファイルの再生、録音
ぐるなびAPI
[リクエストパラメタ]
・keyid: アクセスキー
・format: 「json」(リクエストのデータ形式)
・latitude: 現在地の緯度
・longitude: 現在地の経度
・range: 「1」(検索範囲を番号で指定。「1」は、300m)
・検索結果を表示
・お気に入り一覧を表示
[リクエストパラメタ]
・keyid: アクセスキー
・format: 「json」(リクエストのデータ形式)
・id: 表示する店舗ID(形式は、「1,2,3」)
プロジェクトの作成
・テンプレート
「Onsen UI最小限のテンプレート」
・Cordovaプラグインの管理
下記の設定を有効にする
「Geolocation」
「InAppBrowser」
「StatusBar」
「Splashscreen」(デフォルト)
「ManacaPlugin」(デフォルト)
参考文献
・書籍
クラウドでできるHTML5ハイブリッド
アプリ開発 Cordova/Onsen UIで作る
iOS/Android両対応アプリ
(Monaca公式ガイドブック)
http://www.amazon.co.jp/dp/4798140287
・ウェブサイト
Monacaドキュメント
http://docs.monaca.mobi/3.5/ja/
js STUDIO
http://js.studio-kingdom.com/angularjs

More Related Content

What's hot (20)

PPTX
簡単AngularJS(関西AngularJS勉強会)
Takahiro Maki
 
PPTX
AngularJSを浅めに紹介します
nkazuki
 
PPTX
React.js + Reduxで作るSPA
Shohei Saeki
 
PDF
Flux react現状確認会
VOYAGE GROUP
 
PDF
3分でわかるangular js
Shin Adachi
 
PDF
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
Yutaro Miyazaki
 
PDF
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
 
PPTX
Reactつかってみた
Minori Tokuda
 
PPTX
ライオンでも分かるVuejs
lion-man
 
PPTX
Angular js はまりどころ
Ayumi Goto
 
PPTX
React を導入した フロントエンド開発
daisuke-a-matsui
 
PDF
SIROK技術勉強会 #1 「Reactってなんだ?」
Naoyuki Kataoka
 
PDF
そろそろ押さえておきたい AngularJSのセキュリティ
Muneaki Nishimura
 
PPTX
今からでも遅くない! React事始め
ynaruta
 
PDF
はじめてのVue.js
kamiyam .
 
PDF
AngularJSの高速化
Kon Yuichi
 
PDF
One Time Binding & Digest Loop
Kon Yuichi
 
PPTX
Vue.js 2.0を試してみた
Toshiro Shimizu
 
PPTX
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
Kondo Hitoshi
 
PDF
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
Kohei Asai
 
簡単AngularJS(関西AngularJS勉強会)
Takahiro Maki
 
AngularJSを浅めに紹介します
nkazuki
 
React.js + Reduxで作るSPA
Shohei Saeki
 
Flux react現状確認会
VOYAGE GROUP
 
3分でわかるangular js
Shin Adachi
 
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
Yutaro Miyazaki
 
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
 
Reactつかってみた
Minori Tokuda
 
ライオンでも分かるVuejs
lion-man
 
Angular js はまりどころ
Ayumi Goto
 
React を導入した フロントエンド開発
daisuke-a-matsui
 
SIROK技術勉強会 #1 「Reactってなんだ?」
Naoyuki Kataoka
 
そろそろ押さえておきたい AngularJSのセキュリティ
Muneaki Nishimura
 
今からでも遅くない! React事始め
ynaruta
 
はじめてのVue.js
kamiyam .
 
AngularJSの高速化
Kon Yuichi
 
One Time Binding & Digest Loop
Kon Yuichi
 
Vue.js 2.0を試してみた
Toshiro Shimizu
 
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
Kondo Hitoshi
 
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
Kohei Asai
 

Viewers also liked (9)

PDF
One-time Binding & $digest
Hayashi Yuichi
 
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
 
PPTX
React NativeでTwitterクライアントを作ってみよう
dcubeio
 
PDF
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
アシアル株式会社
 
PPTX
Onsen UIが目指すもの
アシアル株式会社
 
PDF
Angular1&2
Kenichi Kanai
 
PDF
LEANSTARTUPアンチパターン #devlove #leanstartup
Itsuki Kuroda
 
PDF
Webセキュリティと W3CとIETFの仕様
yuki-f
 
PDF
見やすいプレゼン資料の作り方 - リニューアル増量版
MOCKS | Yuta Morishige
 
One-time Binding & $digest
Hayashi Yuichi
 
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
 
React NativeでTwitterクライアントを作ってみよう
dcubeio
 
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
アシアル株式会社
 
Onsen UIが目指すもの
アシアル株式会社
 
Angular1&2
Kenichi Kanai
 
LEANSTARTUPアンチパターン #devlove #leanstartup
Itsuki Kuroda
 
Webセキュリティと W3CとIETFの仕様
yuki-f
 
見やすいプレゼン資料の作り方 - リニューアル増量版
MOCKS | Yuta Morishige
 
Ad

Similar to JavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオン (20)

PDF
簡単モバイルアプリ開発 クラウドベース開発環境Monacaを使う
Hiroki OKAZAKI
 
PPTX
HTML5 クロスプラットフォームアプリ開発の現実解
Monaca
 
PDF
2016/05/01 Visual Studio with Cordova
miso- soup3
 
PDF
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
Yoshito Tabuchi
 
PDF
アプリ開発も出来るイマドキのWeb技術入門(エンジニア適職フェアWeb技術入門セミナー)
友太 渡辺
 
PPTX
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
アシアル株式会社
 
KEY
Web App Framework at SwapSkills vol28
光一 原田
 
PDF
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Shumpei Shiraishi
 
PDF
Visual Studio と Microsoft Azure で変わる開発スタイル
Akira Inoue
 
KEY
スマートフォンアプリケーション開発の最新動向
Tsutomu Ogasawara
 
PPTX
Monacaでつくるハイブリッドアプリ
Monaca
 
PPTX
ionic - cross platform mobile app 開発
Seunghun Lee
 
PPTX
HTML5ハイブリッドアプリ開発のベストプラクティス
アシアル株式会社
 
PPTX
PhoneGapユーザー会@大阪 講演資料
Monaca
 
PDF
Mashup Ideathon 東北 in 青森
Sunao Tomita
 
PPTX
Phone gap+javascriptスマホアプリ開発(入門編)
Monaca
 
PPTX
Java script samary
ssuser78615b
 
PDF
なぜ Enterprise は Sencha を選ぶのか?
久司 中村
 
PPTX
Visual Studio 2017 事はじめ
Hideaki Aoyagi
 
PDF
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
Akira Inoue
 
簡単モバイルアプリ開発 クラウドベース開発環境Monacaを使う
Hiroki OKAZAKI
 
HTML5 クロスプラットフォームアプリ開発の現実解
Monaca
 
2016/05/01 Visual Studio with Cordova
miso- soup3
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
Yoshito Tabuchi
 
アプリ開発も出来るイマドキのWeb技術入門(エンジニア適職フェアWeb技術入門セミナー)
友太 渡辺
 
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
アシアル株式会社
 
Web App Framework at SwapSkills vol28
光一 原田
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Shumpei Shiraishi
 
Visual Studio と Microsoft Azure で変わる開発スタイル
Akira Inoue
 
スマートフォンアプリケーション開発の最新動向
Tsutomu Ogasawara
 
Monacaでつくるハイブリッドアプリ
Monaca
 
ionic - cross platform mobile app 開発
Seunghun Lee
 
HTML5ハイブリッドアプリ開発のベストプラクティス
アシアル株式会社
 
PhoneGapユーザー会@大阪 講演資料
Monaca
 
Mashup Ideathon 東北 in 青森
Sunao Tomita
 
Phone gap+javascriptスマホアプリ開発(入門編)
Monaca
 
Java script samary
ssuser78615b
 
なぜ Enterprise は Sencha を選ぶのか?
久司 中村
 
Visual Studio 2017 事はじめ
Hideaki Aoyagi
 
One ASP.NET ~ 今、ASP.NET に何が起こっているのか? ~
Akira Inoue
 
Ad

Recently uploaded (9)

PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
 
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
 
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
 
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
 
PPTX
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
 
PDF
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
 
PPTX
色について.pptx .
iPride Co., Ltd.
 
PPTX
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
 
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
 
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
 
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
 
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
 
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
 
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
 
色について.pptx .
iPride Co., Ltd.
 
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
 

JavaScript(AngularJS)で作る iOS・Androidアプリ開発ハンズオン