LoginSignup
6
7

More than 5 years have passed since last update.

Cordova の CLI をインストールして使ってみる

Last updated at Posted at 2015-08-14

Cordova の CLI をインストールして使ってみる.md

僕はネイティヴアプリというものを作ったことがない。フロントエンドアプリ開発についても趣味レベル止まり。前から作りたいと思っていた。
主な仕事はサーバ運用、バックエンドプログラム開発(それも Hadoop を用いた集計基盤開発。最もフロントエンド開発から遠い。)であった。

ネイティヴアプリを作るきっかけが欲しい。と思っていた。
どうせなら、今後流行りそうなハイブリッドアプリ開発フレームワークを利用して作ってみようと思い立った。

そこで出会ったのが Cordova。
早速やってみることにした。

日本語の書籍もいくつかあるらしいが、僕はまずは本家を参考にするという鉄則があるので、以下のドキュメントを実践し、Cordova の世界に足を踏み入れようと思う。
http://cordova.apache.org/docs/en/5.0.0/guide_cli_index.md.html#The%20Command-Line%20Interface

上記のガイドは、Cordova を用いたアプリケーションの作成方法とデプロイ方法を説明したもの。
これを実践してみる。 cordova command-line interface(CLI) を用いる。

5.0.0 が最新っぽかった(2015/08/14現在)ので、Cordova 5.0.0 を対象とする。

このドキュメントは、フロントエンド、アプリ開発の知識がない僕が Cordova を使ってアプリを作っていく日記のようなもの。

間違っている点があればご指摘お願いいたします。

Cordova とは

オープンソースなハイブリッドモバイルアプリフレームワーク。
Apache Software Foundation のトップレベルプロジェクトである。

開発者は HTML5、CSS3、JS を用いてアプリを開発し、Cordova を用いてそのアプリを様々なプラットフォーム(iphone、android、windows phone、etc...)向けのアプリへビルドする。

メリット

  • プラットフォーム固有の開発言語(iOS なら C#, Android なら java?)に縛られることなく、モバイルアプリの開発ができる。
  • プラットフォームがインストールされているデバイスへのアクセスが可能。

Basic Components

config.xml

アプリ、アプリで利用するパラメタを記述するファイル。
このファイルは W3C の Packaged Web App specification を参考に作られている。

Packaged Web App specification
http://www.w3.org/TR/widgets/

アプリケーション

Cordova において、アプリは web page である。
つまり、アプリは HTML、CSS、JS により作成される。
各プラットフォームにおいて、アプリは WebView として実行される。

プラグイン

Cordova に対するプラグインの作成が可能である。
プラグインは、アプリの JS から、ネイティブコードの実行を可能とするプログラムである。

プラグインレジストリから、サードパーティ製のプラグインを探すことが可能。

プラグインレジストリ
http://plugins.cordova.io/#/

早速使ってみる

まずはじめに、nodejs をインストールする必要がある。
というのも Cordova は nodejs 製のソフトウェアである。
この点はラッキーだ。
僕は以前から nodejs を用いたアプリ開発を趣味レベルで実践していたし、javascript は好きな言語だ(この辺りは、仕事で Perl を使っている影響が大きい気がする。Perl と javascript は「自由」という点で何か似ている。)

僕の環境は OS X 10.10.4 Yosemite x86_64 である。
https://nodejs.org/download/
より Mac 向けの pkg をダウンロードし、インストールする。

Cordova のインストール

次に、git client をインストールする。
https://git-scm.com/book/ja/v1/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
を参考にした。

Cordova 自体は nodejs 製のソフトウェアである。
ゆえに、nodejs の package management system である npm を通してインストールする。

npm install -g cordova

ここまでは詰まることなくできた。

SDK のインストール

次に、対象となるプラットフォームの SDK をインストールする必要がある。
これが面倒臭そうだ。。。。
僕はネイティヴアプリを作ったことがない。
ゆえに、SDK もインストールしたことがない。

iOS

どんな SDK をインストールすれば良いか?はこちら。
http://cordova.apache.org/docs/en/5.0.0/guide_platforms_index.md.html#Platform%20Guides

今回試すプラットフォームは iOS とする。
以下のドキュメントに SDK のセットアップ方法が書かれている。
http://cordova.apache.org/docs/en/5.0.0/guide_platforms_ios_index.md.html#iOS%20Platform%20Guide

Create the App

アプリを作成する。

cordova create hello com.example.hello HelloWorld

create はサブコマンド名
hello はディレクトリ
com.example.hello はアプリ識別子(逆ドメイン表現)
HelloWorld はアプリのディスプレイのタイトル

コマンド実行後、hello ディレクトリができている。

% ls -r hello/*
hello/config.xml

hello/www:
js      index.html  img     css

hello/plugins:

hello/platforms:

hello/hooks:
README.md

Add Platforms

コマンドは hello ディレクトリ上にて実行する必要があるので、ディレクトリを移動する。

cd hello

プラットフォーム ios を追加する。

cordova platform add ios

追加できたらしい

% cordova platform add ios
Adding ios project...
iOS project created with cordova-ios@3.9.1
Discovered plugin "cordova-plugin-whitelist" in config.xml. Installing to the project
Fetching plugin "cordova-plugin-whitelist@1" via npm
Installing "cordova-plugin-whitelist" for ios

追加できたことを確認してみる。

% cordova platforms ls
Installed platforms: ios 3.9.1
Available platforms: amazon-fireos, android, blackberry10, browser, firefoxos, webos

できた。

同時に、platforms ディレクトリが作成されていた。

% ls www
css     img     index.html  js
% ls platforms/ios/www
cordova-js-src      css         js
cordova.js      img         plugins
cordova_plugins.js  index.html

www ディレクトリ上のファイルをソースとして、platforms/ios/www 上に対して、プラットフォーム向けのファイルが再作成されるという仕組みである。

当然、www ディレクトリ上のファイルだけを修正すべきである。platforms 上のファイルは編集すべきではない。

バージョン管理システムにおいても、www ディレクトリ上のファイルと merges ディレクトリ上のファイルだけを管理すべきである。

platforms 上のファイルは編集もすべきではない。と書かれている。
はい。絶対に編集しません!触らぬ神に祟りなしである。

Build the App

cordova build

あっさりビルドできた。

% cordova build
Running command: ....
...

** BUILD SUCCEEDED **

** BUILD SUCCEEDED **

これで、platforms ディレクトリ上に、プラットフォーム向けのコードが生成された。
ios だけを対象としてビルドしたい場合、以下のコマンドを叩く。

cordova build ios

Test the App on an Emulator or Device

SDK と一緒に配布されるエミュレータを用いてプラットフォーム向けのコードを実行する。
これを以下のコマンドを用いて実行する。

cordova emulate ios

ここでエラー。

% cordova emulate ios
Running command: /Users/***/git/git/hello/platforms/ios/cordova/run --emulator
ios-sim was not found. Please download, build and install version 3.0.0 or greater from https://github.com/phonegap/ios-sim into your path, or do 'npm install -g ios-sim'
Error: /Users/***/git/git/hello/platforms/ios/cordova/run: Command failed with exit code 2
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:139:23)
    at ChildProcess.emit (events.js:110:17)
    at maybeClose (child_process.js:1015:16)
    at Process.ChildProcess._handle.onexit (child_process.js:1087:5)

ios にてコマンドラインからエミュレータを実行する場合、ios-sim という npm のパッケージが必要となるらしい。これをインストールする。

sudo npm install ios-sim -g

インストールできた。
再度、エミュレータを起動する。

% cordova emulate ios                    
Running command: ...
...
** BUILD SUCCEEDED **

No target specified for emulator. Deploying to iPhone-6 simulator
com.example.hello: 1811
** RUN SUCCEEDED **

できた。すんなり。感動した。
すんなりできる。
開発者にとってこれ以上の感動はない。

感想

所感としては、何だかんだ言って、プラットフォームの SDK に対する勉強はする必要がありそう。
故に、プラットフォーム向けアプリ開発の知識は不可欠であると思われる。
Cordova を使えばプラットフォーム向けのアプリを作れる。
が、その主目的は開発工数を減らすためであると思う。
Web の知識だけでアプリを作れるというのは幻想である気がする。
(Chef とかもそうだよね。開発者は横着して良いけど、勉強するという姿勢は忘れてはダメ。)

次は、アプリをデバイスへデプロイするまでをやってみよう。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7