本資料は、クリエイティブ・コモンズ・ライセンス 表示-改変禁止 (CC BY-ND 4.0)に基づいて公開しております。https://creativecommons.jp/licenses/
営利・非営利を問わず、勉強会やトレーニング等で自由にご活用頂けます。
Copyright © Asial Corporation. All Rights Reserved. │ 1HTML5モバイルアプリ開発講座Monaca入門編アシアル株式会社
View Slide
Copyright © Asial Corporation. All Rights Reserved. │ 2ハイブリッドアプリとは
Copyright © Asial Corporation. All Rights Reserved. │ 3モバイルアプリ開発に関する課題1. 開発工数がかかる2. ソースコード管理の複雑化3. エンジニアの確保が困難××従来のネイティブアプリ(OS上で直接動作するアプリ)開発では、開発言語がOS毎に異なるために以下のような問題を抱えていました。
Copyright © Asial Corporation. All Rights Reserved. │ 4ハイブリッドアプリの登場ハイブリッドアプリはWebの技術を使って開発しますが、生成されるアプリはネイティブアプリとほぼ同等のものになります。×ネイティブアプリ WebアプリネイティブアプリとWebアプリ、2つのアプリの特徴を兼ね備えたアプリを「ハイブリッドアプリ」と呼びます。
Copyright © Asial Corporation. All Rights Reserved. │ 5従来の開発手法とハイブリッドアプリの比較特徴・性能ネイティブアプリWebアプリハイブリッドアプリクロスプラットフォーム対応 × ○ ○ストアへの公開 ○ × ○端末へのインストール ○ △ ○オフラインでの利用 ○ △ ○端末固有の機能の利用 ○ △ ○アプリ実行速度 ○ △ △
Copyright © Asial Corporation. All Rights Reserved. │ 6ハイブリッドアプリの仕組みハイブリッドアプリ開発には、Apache Cordova (PhoneGap)というライブラリを利用します。OSに依存する処理はCordovaから提供されるため、開発者はOSの違いを意識せずにWeb技術だけで開発することができます。ネイティブコードHTMLCSSJavaScriptアプリ本体はWeb技術で実装WebView(ブラウザ)で表示CordovaがOSに合わせたネイティブコードを提供
Copyright © Asial Corporation. All Rights Reserved. │ 7Monacaのご紹介
Copyright © Asial Corporation. All Rights Reserved. │ 8Monacaとは• 20万人以上が利用するCordova開発環境• iOS、Android、Windows対応• 日本語サポート・ドキュメント• コアの機能はクラウドサービスとして提供• WindowsマシンでもiOSアプリの開発OK
Copyright © Asial Corporation. All Rights Reserved. │ 9Monacaの仕組みIDE デバッガービルドシステムクラウドターゲットOSに合わせた環境でアプリをビルド開発環境として提供Monacaでは各ターゲットOSごとのビルドシステムがクラウド上に用意されており、リモートでビルドを行うため開発環境を問わずに利用することができます。ソースコードはクラウド上に
Copyright © Asial Corporation. All Rights Reserved. │ 10Monaca Proプラン以上で利用可能選べるIDEMonaca CLIコマンドラインからの実行Monaca Cloud IDEブラウザーベースのフル機能IDE開発スタイルに合わせて様々なIDEを選択することが可能です。Monaca Localkit既存の開発環境がそのまま利用可能
Copyright © Asial Corporation. All Rights Reserved. │ 11Monacaデバッガーによる実機デバッグ①ファイルを編集 ②実機ですぐに動作確認コンパイル処理やUSB経由での実機転送などは不要。デバッグ専用アプリがネットワーク経由で変更箇所を取得するため、リアルタイムに動作検証できます。推奨環境Google Chrome
Copyright © Asial Corporation. All Rights Reserved. │ 12開発環境のセットアップ
Copyright © Asial Corporation. All Rights Reserved. │ 13Monacaのアカウント登録Chromeブラウザで下記URLを開き、「無料トライアル」ボタンをクリックしてアカウント登録を行って下さい。https://ja.monaca.io
Copyright © Asial Corporation. All Rights Reserved. │ 14Monacaのアカウント登録• 受信可能なメールアドレスとパスワードを入力してアカウント新規作成を行って下さい。
Copyright © Asial Corporation. All Rights Reserved. │ 15アカウント仮登録完了登録したメールアドレスに確認のメールが届きます。メールに記載されたURLにアクセスして、無料トライアルを開始して下さい。
Copyright © Asial Corporation. All Rights Reserved. │ 16IDEを起動するプロジェクトを選択し、右側に表示される「クラウドIDEで開く」ボタンをクリックすると、IDEが起動します。IDEを開く
Copyright © Asial Corporation. All Rights Reserved. │ 17IDEの起動IDEの各部の役割は以下の通りです。ファイルの管理を行いますファイルの編集を行いますプレビューを表示しますデバッグ情報を表示しますダッシュボードを開きます
Copyright © Asial Corporation. All Rights Reserved. │ 18開発の流れコードエディタで編集し、保存するコードエディタで編集したファイルを、プレビューとデバッガーで確認しながら開発を進めていきます。簡単な確認はプレビューで実際の表示確認はデバッガーで
Copyright © Asial Corporation. All Rights Reserved. │ 19MonacaデバッガーのインストールApp Store、またはGoogle Playにて「monaca」で検索し、スマートフォンにインストールして下さい。アイコンはこちらです。
Copyright © Asial Corporation. All Rights Reserved. │ 20Monacaデバッガーの起動• Monacaデバッガーを起動すると、左のログイン画面が表示されます。• Monacaに登録したアカウントでログインを行ってください。
Copyright © Asial Corporation. All Rights Reserved. │ 21Monacaデバッガーでアプリを実行する• デバッガーを起動すると自動的にクラウドへ接続し、プロジェクトが一覧表示されます。• プロジェクトをタップするとアプリがシミュレートされます。
Copyright © Asial Corporation. All Rights Reserved. │ 22「はじめてのMonacaアプリ」を動かしてみる• カメラ、コンパス、バイブレーションなどのネイティブ機能を動かすことができます。
Copyright © Asial Corporation. All Rights Reserved. │ 23Monacaデバッガーのメニュー更新プロジェクト一覧に戻るスクリーンショットを撮るアプリログの確認
Copyright © Asial Corporation. All Rights Reserved. │ 24端末固有の機能(ネイティブ機能)を使う
Copyright © Asial Corporation. All Rights Reserved. │ 25ネイティブコードネイティブ機能呼び出しの仕組み• カメラなどの各機能はネイティブの言語で実装され、プラグイン形式で提供されています。利用する際にはアプリのネイティブ層に組み込んで利用します。• JavaScriptでAPIをコールすることで、プラグインが実行され端末固有の機能にアクセスすることができます。HTML・CSS・JavaScriptOS必要なプラグインを組み込む
Copyright © Asial Corporation. All Rights Reserved. │ 26Cordovaプラグインの種類◼ 標準プラグイン• カメラ等の基本的な機能を提供• Monacaデバッガーにあらかじめ組み込まれている• 無料プランで利用可能◼ 第三者提供のプラグイン• 2,000個以上のプラグイン(https://cordova.apache.org/plugins/)• ネイティブ言語を用いた自作プラグインの作成も可能• Monaca Proプラン以上で利用可能
Copyright © Asial Corporation. All Rights Reserved. │ 27標準Cordovaプラグイン一覧プラグインの種類 概要Battery バッテリー残量を取得するCamera カメラアプリの起動、またはデバイスに保存された画像の読み込みを行うCapture 音声や動画の録音・録画機能を提供するConsole 開発環境にデバッグ情報を出力するContacts デバイスに保存されている連絡先情報にアクセスするDevice デバイスに関する情報(モデル名、OS、UUIDなど)を取得するDevice Motion デバイス内蔵の加速度センサーを参照し、デバイスの傾きを検知するDevice Orientation デバイス内蔵のコンパスを参照し、デバイスが指し示す方位を取得するDialogs ネイティブのダイアログを表示するFile デバイスのファイルシステムにアクセスするFile Transfer ファイルのアップロードとダウンロードを行うGeolocation デバイスの位置情報(緯度、経度)を取得するGlobalization 設定されたロケールとタイムゾーンに基づいた日付文字列を取得するInAppBrowser アプリ内でブラウザを開き、Webページを表示するMedia オーディオファイルを再生するNetwork Information ネットワークへの接続状態(WifiやLTEなど)を取得するSplashscreen スプラッシュスクリーンを表示するVibration デバイスを振動させるバイブレーション機能を実行するStatusBar OSのステータスバーの表示切替やカスタマイズを行うWhitelist アプリからのアクセスを許可するURLを設定する
Copyright © Asial Corporation. All Rights Reserved. │ 28Cordova固有のイベント• Cordovaには独自のJavaScriptイベントが用意されています。• Cordovaプラグインを呼び出すAPIは、端末の機能を呼び出す準備ができたときに発生する「deviceready」イベント以降で実行することができます。Cordova固有のイベントイベント 発生タイミングdeviceready Cordovaのライブラリのロードがすべて完了し、端末の機能を呼び出す準備ができたとき(アプリ起動後、数百ミリ秒経過後に発生)pause アプリがバックグラウンドに移行したときresume アプリがフォアグラウンドに復帰したとき※ バックグラウンドでは、JavaScriptのコードは実行されません。
Copyright © Asial Corporation. All Rights Reserved. │ 29カメラ機能の利用• 端末のカメラを起動したり、写真を読み込んだりするには、Cordovaのcamera APIを利用します。navigator.camera.getPicture( 成功時処理, 失敗時処理, オプション );カメラAPI引数 説明成功時処理 カメラによる撮影や写真の読み込みが完了したときに実行する関数を指定失敗時処理 カメラの呼び出しに失敗したとき、またはユーザーにより途中でキャンセルされたときに実行する関数を指定オプション カメラ起動か写真読み込みか、といったAPIの挙動や、写真の画質や取得方法などを指定
Copyright © Asial Corporation. All Rights Reserved. │ 30カメラAPIのオプション(抜粋)オプション 説明 設定値sourceType カメラAPIの挙動 ・Camera.PictureType.CAMERA(規定値)カメラを起動・Camera.PictureSourceType.SAVEDPHOTOALBUM端末に保存された写真を読み込むdestinationType 画像の取得形式 ・Camera.DestinationType.FILE_URI(規定値)写真が保存されているパスを取得・Camera.DestinationType.DATA_URLbase64形式で写真を取得quality 画質 0~100(規定値:50)※ iOSの場合、MAX50が推奨saveToPhotoAlbum 撮影後、端末に画像を保存するかどうかtruefalse(規定値)cameraDirection 前面/背面のどちらのカメラを利用するか・Camera.Direction.FRONTインカメラ(前面)を利用・Camera.Direction.BACK(規定値)アウトカメラ(背面)を利用
Copyright © Asial Corporation. All Rights Reserved. │ 31実習
Copyright © Asial Corporation. All Rights Reserved. │ 32新しいプロジェクトを作成するダッシュボードに戻り、「新しいプロジェクトを作る」ボタンを選択します。
Copyright © Asial Corporation. All Rights Reserved. │ 33新しいプロジェクトを作成する1. テンプレートの種類は「最小限のテンプレート」を選択します2. プロジェクト名と説明(任意入力)を設定して作成しますカメラアプリに変更
Copyright © Asial Corporation. All Rights Reserved. │ 34HTMLの実装index.htmlのタグ内に以下のコードを記述します。写真を撮る
Copyright © Asial Corporation. All Rights Reserved. │ 35スクリプトの実装index.htmlのタグ内にカメラAPIを実行する処理を記述します。<br/><script><br/>function shoot() {<br/>var option = {<br/>saveToPhotoAlbum: true // 撮影後端末に保存<br/>};<br/>// カメラを起動<br/>navigator.camera.getPicture(onSuccess, onError, option);<br/>// 成功時に呼び出されるコールバック関数<br/>function onSuccess(imageURI){<br/>document.querySelector("#photo").src = imageURI;<br/>}<br/>// 失敗時に呼び出されるコールバック関数<br/>function onError(message){<br/>alert("Error:" + message);<br/>}<br/>}<br/>完成したら、Monacaデバッガーで実行して写真を撮ってみましょう。撮影した写真が端末に保存されていることを確認してください。
Copyright © Asial Corporation. All Rights Reserved. │ 36Cordovaプラグインの有効化• Monacaデバッガーにはすべての標準Cordovaプラグインがあらかじめ組み込まれていますが、ビルドしたアプリには開発者が有効化したCordovaプラグインのみが組み込まれます。• プラグインの追加は、メニューバーの「設定」>「Cordovaプラグインの管理」から行うことができます。今回は「Camera」プラグインを有効化します
Copyright © Asial Corporation. All Rights Reserved. │ 37Cordovaバージョンと第三者提供プラグイン• 「Cordovaプラグインの管理」画面では、Cordovaのバージョンが確認できます。Proプラン以下では、最新2バージョンのみ利用できます。Businessプラン以上では、旧バージョンを使い続けることが可能です。• 第三者提供プラグインは、[Cordovaプラグインのインポート]ボタンでインポートします。プロジェクトのCordovaバージョンに対応していない場合、動作しない可能性があります。
Copyright © Asial Corporation. All Rights Reserved. │ 38アプリのビルド
Copyright © Asial Corporation. All Rights Reserved. │ 39アプリ設定• メニューバー「設定」 >「Android/iOSアプリ設定」画面で、アプリ名やパッケージ名、アイコン画像等を設定します。
Copyright © Asial Corporation. All Rights Reserved. │ 40ビルドの種類Android版 iOS版デバッグビルド主にテスト用途で利用します。アプリを社内限定で配布する場合などにも利用可能です。ダミーの署名をつけてビルドします。テスト用途で開発者向けにアプリを配布する場合に利用します。Developer証明書が必要です。アドホックビルド-特定の端末にアプリを限定配布する場合に利用します。ディストリビューション証明書とAdHoc用のProvisioningプロファイルが必要です。In-Houseビルド-組織内にアプリを配布する場合に利用します。ディストリビューション証明書とIn-Houseビルド用のProvisioningプロファイルが必要です。Monaca Businessプラン以上が必要です。リリースビルドGoogle Playで公開することができます。自分で作成した署名をつけてビルドを行います。App Storeで公開することができます。ディストリビューション証明書とAppStore用のProvisioningプロファイルが必要です。カスタムビルドデバッガー第三者提供のCordovaプラグインを含むカスタムデバッガーを作成します。
Copyright © Asial Corporation. All Rights Reserved. │ 41【Android】デバッグビルド(1/2)• メニューバーの「ビルド」>「Androidアプリのビルド」を開くと [デバッグビルド] が選択されているので、そのまま [ビルドを開始する] ボタンをクリックします。
Copyright © Asial Corporation. All Rights Reserved. │ 42【Android】デバッグビルド(2/2)• ビルドが開始されます。ビルドが完了するまでには数分の時間がかかります。
Copyright © Asial Corporation. All Rights Reserved. │ 43スマートフォンにインストールする• QRコードから直接端末にインストールできます。• リリースビルドの場合、ローカルPCにダウンロードしたapkファイル(iOSの場合はipaファイル)はそのままストアに公開可能です。
Copyright © Asial Corporation. All Rights Reserved. │ 44【Android】リリースビルド(1/2)• メニューバー「設定」>「Androidキーストア設定」を開き、[クリアして新規作成][OK]の順に選択し、任意のエイリアス名、エイリアスパスワード、KeyStoreパスワードを入力して下さい。
Copyright © Asial Corporation. All Rights Reserved. │ 45【Android】リリースビルド(2/2)• メニューバーの「ビルド」>「Androidアプリのビルド」 画面で [リリースビルド] を選択し、エイリアスのパスワードを入力してビルドを開始して下さい。
Copyright © Asial Corporation. All Rights Reserved. │ 46【iOS】ビルド設定とリリース向けビルド• iOSアプリのビルドには、有償のApple Developer Programへの参加と、証明書の発行が必要になります。• 以下のドキュメントを参考に作業を行ってして下さい。https://docs.monaca.io/ja/monaca_ide/manual/build/ios/
Copyright © Asial Corporation. All Rights Reserved. │ 47開発したアプリの配布• App Storeにアプリを登録するためにはMacが必要です。Proプラン以上では、iOSアプリをMonacaから直接アップロードする機能が利用できます。• 組織内にiOSアプリを限定配布する場合、Apple Enterprise Programへの参加が必須となります。Android版 iOS版マーケットでの公開方法Google PlayなどのAndroidアプリストアApp Storeマーケットを経由しない配布(社内限定)○△ (Enterprise Program参加企業のみ)テストを目的とした限定配布○ (制限なし) ○ (100名まで)• Androidアプリは自由に配布することが可能ですが、iOSアプリは配布に関して様々な制約があります。
Copyright © Asial Corporation. All Rights Reserved. │ 48Monaca提供Enterpriseプラグインの紹介
Copyright © Asial Corporation. All Rights Reserved. │ 49復号化ソースコード暗号化プラグイン• 通常のハイブリッドアプリの場合、HTMLファイルはコンパイルされないため平文のままアプリ内に保存されます。• ソースコード暗号化プラグインによって、端末には暗号化されたHTMLファイルが保存され、アプリ実行時にデータを複合化します。複合化データは一時的にメモリ上に展開されるだけなので、外部から読み取られる心配はありません。
Copyright © Asial Corporation. All Rights Reserved. │ 50セキュアストレージ プラグイン• アプリ内に保存されるデータを暗号化するストレージ機能を提供します。端末の盗難や紛失などの万が一の際の情報漏洩を未然に防ぎます。• セキュアストレージは HTML5標準の localStorage とよく似た仕様となっています。ただし、セキュアストレージはCordovaプラグインとして提供されているため、非同期で実行されます。let data = localStorage.getItem('item');secureStorage.getItem('item', (result) => {let data = result;});⚫ LocalStoregeの場合⚫ セキュアストレージの場合
Copyright © Asial Corporation. All Rights Reserved. │ 51In-App アップデーター プラグイン• ストア等から再ダウンロードすることなく、アプリの自動更新を行う機能を提供します。アプリの再配布、端末への再インストールを行うことなく、常にユーザーが最新のアプリを利用している状態を保てます。プログラム修正ビルドしたアプリをデプロイ アプリ本体のダウンロードが必要ビルド 配布システム従来プログラム修正&アップロード配信サーバHTML5部分のみをアプリに配信In-Appアップデーターサーバーに更新ファイルを配置します。
Copyright © Asial Corporation. All Rights Reserved. │ 52サービス連携
Copyright © Asial Corporation. All Rights Reserved. │ 53外部サービスとの連携方法◼ Monacaプロダクトパートナーhttps://ja.monaca.io/product-partner/index.html• バックエンドサービス、広告、分析、セキュリティ診断、テスト支援など、Monacaと連携可能な各種ツールが提供されています。◼ プロダクトパートナーに掲載がないサービスであっても、以下のうちいずれかが提供されていればMonacaからの利用が可能です。• Cordovaプラグイン• クライアントサイド用のJavaScript SDK• Web API
Copyright © Asial Corporation. All Rights Reserved. │ 54参考ドキュメント
Copyright © Asial Corporation. All Rights Reserved. │ 55参考ドキュメント• 標準Cordovaプラグインリファレンスhttps://docs.monaca.io/ja/reference/cordova_6.5/• クラウドIDEマニュアル(ビルドやアプリの配布について)https://docs.monaca.io/ja/monaca_ide/manual/• teratail(質問フォーラム)https://teratail.com/tags/monaca• モナカプレス(サンプルアプリの紹介やリリース情報など)https://press.monaca.io/
Copyright © Asial Corporation. All Rights Reserved. │ 56