Cordovaのチュートリアルをやってみる 第三回

# 使用したもの(環境)
 1. cordova
 1. visualStudioCode
 1. windows10
 1. Android
 

---

# チュートリアルを訳しながらやってみる
チュートリアルのページは下記。

[Module 4: Choosing a Data Storage Strategy](http://ccoenraets.github.io/cordova-tutorial/data-storage.html)

前回のチュートリアル。

[Cordovaのチュートリアルをやってみる 第二回](https://qiita.com/tokky_se/items/ec5d5e004ca5016a71ec)

環境構築については別途まとめてあるので下記参照。

[cordova&VSCodeで環境を構築するまでの右往左往メモ。](https://qiita.com/tokky_se/items/346429d234c91bece11d)

---


# Module 4: Choosing a Data Storage Strategy

Step 1: Explore different persistence mechanisms

ステップ1:異なる永続性のメカニズムの探索
persistence mechanismsで再起動したりした後にもアプリケーションが動作し続けることをこう呼ぶらしい。
訳の参考：[Common Malware Persistence Mechanisms - InfoSec Resources](http://resources.infosecinstitute.com/common-malware-persistence-mechanisms/)

次のファイルを開いてpersistence services(永続性サービス)を見てみましょう。

1. www/js/services/memory/EmployeeService.js
1. www/js/services/json/EmployeeService.js
1. www/js/services/localstorage/EmployeeService.js
1. www/js/services/websql/EmployeeService.js

ざっと見た感じ、すべてのjsファイルでEmployeeServiceという変数に即時関数として処理が内蔵されているようだ。
詳しい解説はここにはないので眺めるだけにして次へ進む。

Step 2: Test the application with different persistence mechanisms

ステップ2:異なる永続性を持つアプリケーションをテストする

アプリケーションは最初はインメモリデータストアで動くようになっています。
アプリケーションのローカル永続性メカニズムを変更するには…

1. index.htmlについて、js/services/memory/EmployeeService.jsの代わりに適当なサービスのjsファイルをインポートします。
例えば、js/services/websql/EmployeeService.jsなどです。
2. アプリケーションをテストしてみましょう。

JSONサービスをテストするには、マテリアルの一部として提供されているNode.jsサーバーが実行されていることを確認します。

1. ターミナルを開き、cordova-tutorialの下にあるserverディレクトリに移動します。
2. サーバーの依存関係をインストールします。

```console  
npm install
```

3\. サーバーをスタートさせます。

```console  
node server
```

ここまで訳しててよくわからなかったので試してみました。
1. 下記のようにwwwフォルダ以下のindex.htmlを変更。  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/196422/46a415eb-c008-1e33-f2d4-a49701a413bd.png)

2. そのままindex.htmlをブラウザで開いてみる。
特に前と動作が変わった様子はなし。

3. サーバーをスタートさせてみる。  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/196422/f556deea-5a4d-48c1-7c29-1363efc56174.png)

4. 再度index.htmlをブラウザで開いてみる。
特に前と動作が変わった様子はなし。

うーん…？
おそらくデータストアってのはデータのstore(保存)のことを指していると思われる。
保存先がインメモリデータストアってことは、保存先がRAM上にあるってこと？
サーバー起動前にindex.htmlをブラウザで開いたときにエラーか何かが表示されればそれっぽい予感。

jsを読み下すと、コンソールでinsertの成否を吐き出すようなので、ブラウザのコンソールを確認。
下記SSはサーバー稼働時のコンソール。  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/196422/7f181e94-d64e-ba5a-8a10-dfa5b1d26801.png)

下記SSはサーバー非稼働時のコンソール。  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/196422/1593be5e-c4b6-40af-4379-366fe7c22f96.png)

変わらない…。どうして…。

下記ページを参照。
[HTML 5のローカルデータベース機能: まずDatabaseオブジェクトを取得する](https://builder.japan.zdnet.com/html-css/sp_firefox-3-for-developer-2008/20385468/)
EmployeeService.jsには下記のような記述があった。  
```js  
window.openDatabase("EmployeeDemoDB", "1.0", "Employee Demo DB", 200000);
```

つまりローカルのDBらしい。なので、サーバーが立ってなくてもOK。  
じゃあなんでサーバーを立てる指示がチュートリアルにあったんだろう…？

よく読み返すと…  
To test the JSON service, make sure the Node.js server provided as part of the materials is running:
JSON serviceをテストするときは、Node.jsサーバを動かしてからテストしてね。(意訳)

JSON service以外は別にサーバ機能を利用しないらしい。ﾅﾙﾎﾄﾞ…
~~英語が読めてないですね~~

---

# 参考URL

[Module 2: Building a Cordova Project](http://ccoenraets.github.io/cordova-tutorial/build-cordova-project.html)

[Module 3: Setting Up the Workshop Files](http://ccoenraets.github.io/cordova-tutorial/setup-files.html)

[Cordovaのチュートリアルをやってみる 第二回](https://qiita.com/tokky_se/items/ec5d5e004ca5016a71ec)

[cordova&VSCodeで環境を構築するまでの右往左往メモ。](https://qiita.com/tokky_se/items/346429d234c91bece11d)