SlideShare a Scribd company logo
1 of 47
EWD 3
トレーニング・コース #19
JavaScript から Global ストレージ
をアクセスする: NodeM API
M/Gateway Developments Ltd.
Rob Tweed
訳: 日本ダイナシステム株式会社 嶋 芳成
GT.M版編集: 澤田 潔
※ 本稿オリジナルはCache’向けとして編纂
NodeM
• NodeM インターフェース・モジュールを用いることで、
JavaScript から GT.M データベースにアクセスするこ
とができます
2016/9/30 EWD 3 トレーニング・コース #19 2
NodeM
• NodeM モジュールは、cache.nodeと等価であり
オープン・ソースのエミュレーションとして、JavaScript
から同じ方法で GT.M データベースにアクセスすること
ができます
• https://github.com/dlwicksell/nodem
2016/9/30 EWD 3 トレーニング・コース #19 3
cache.node と NodeM の API
• ewd-xpress アプリケーションの中で、次のようにアク
セスすることができます
this.db.someFunctionName()
2016/9/30 EWD 3 トレーニング・コース #19 4
インターフェース・モジュールの読込みと初期化
• このステップは、ewd-xpress によって自動的に実行
されます
• ここでは、手動でどのようにするかを説明します...
2016/9/30 EWD 3 トレーニング・コース #19 5
NodeM API
• NodeM の読み込み
require(‘./setEnvironment’); // GT.M環境変数をセット
var interface = require(‘nodem’); // NodeM I/F
var db = new interface.Gtm(); // GT.M DB インスタンス
2016/9/30 EWD 3 トレーニング・コース #19 6
NodeM API
• GT.M への接続を開く
db.open();
2016/9/30 EWD 3 トレーニング・コース #19 7
NodeM API
• Caché への接続を開く
db.open({
path: '/opt/cache/mgr',
username: '_SYSTEM',
password: 'SYS',
namespace: 'USER',
charset: 'UTF-8',
lock: 0
});
2016/9/30 EWD 3 トレーニング・コース #19 8
NodeM API
• GT.M への接続を閉じる
var ok = db.close();
2016/9/30 EWD 3 トレーニング・コース #19 9
NodeM API
• NodeM を読み込む
require(‘./setEnvironment’);
var interface = require('nodem');
var db = new interface.Gtm();
2016/9/30 EWD 3 トレーニング・コース #19 10
NodeM API
• GT.M への接続を開く
db.open();
2016/9/30 EWD 3 トレーニング・コース #19 11
NodeM API
• GT.M への接続を開く
db.open();
これ以降、API はすべて cache.node で用いられる
ものと同一です
2016/9/30 EWD 3 トレーニング・コース #19 12
NodeM API
• GT.M への接続を閉じる
var ok = db.close();
即ち、cache.node と同じです
2016/9/30 EWD 3 トレーニング・コース #19 13
テスト・アプリを設定します
• ewd-xpress には例題も用意してあります
• ~/ewd3/node_modules/ewd-xpress/example.test.js
• あなたの GT.M の構成に合わせて編集してください
2016/9/30 EWD 3 トレーニング・コース #19 14
GT.M環境変数定義ファイルを編集
2016/9/30 EWD 3 トレーニング・コース #19 15
cd ~/ewd3
vi ./setEnvironment
export gtmdir="$HOME/.fis-gtm"
export gtmver="V6.2-002A_x86_64“
export gtm_icu_version=5.0
export gtm_chset="utf-8“
export gtm_dist="/usr/lib/fis-gtm/$gtmver2/utf8“
export gtmgbldir=$gtmdir/$gtmver/g/gtm.gld
export gtmgbldir="/home/mta/.fis-gtm/V6.2-002A_x86_64/g/gtm.gld“
export gtmroutines="$gtm_dist” $HOME/ewdjs/node_modules/nodem/src"
export PATH=$PATH:$gtm_dist
# Define aliases
alias gtm="$gtm_dist/gtm"
test.js を編集する
require('./setEnvironment'); // GT.M環境変数をセット
var interface = require('nodem');
var db = new interface.Gtm();
console.log('db: ' + JSON.stringify(db));
// 以下のパラメータは、あなたのGlobalDB または Caché システムに合わせて変更します
var ok = db.open();
console.log('ok: ' + JSON.stringify(ok));
console.log(db.version());
var node = {
global: 'rob',
subscripts: [1],
data: 'hello'
};
db.set(node);
var result = db.get(node);
console.log(JSON.stringify(result));
db.close();
2016/9/30 EWD 3 トレーニング・コース #19 16
test.js を編集する
require('./setEnvironment'); // GT.M環境変数をセット
var interface = require('nodem');
var db = new interface.Gtm();
console.log('db: ' + JSON.stringify(db));
// 以下のパラメータは、あなたのGlobalDB または Caché システムに合わせて変更します
var ok = db.open();
console.log('ok: ' + JSON.stringify(ok));
console.log(db.version());
var node = {
global: 'rob',
subscripts: [1],
data: 'hello'
};
db.set(node);
var result = db.get(node);
console.log(JSON.stringify(result));
db.close();
2016/9/30 EWD 3 トレーニング・コース #19 17
~/ewd3/test.js として保存する
require('./setEnvironment'); // GT.M環境変数をセット
var interface = require('nodem');
var db = new interface.Gtm();
console.log('db: ' + JSON.stringify(db));
// 以下のパラメータは、あなたのGlobalDB または Caché システムに合わせて変更します
var ok = db.open();
console.log('ok: ' + JSON.stringify(ok));
console.log(db.version());
var node = {
global: 'rob',
subscripts: [1],
data: 'hello'
};
db.set(node);
var result = db.get(node);
console.log(JSON.stringify(result));
db.close();
2016/9/30 EWD 3 トレーニング・コース #19 18
実行します
cd ~/ewd3
node test
2016/9/30 EWD 3 トレーニング・コース #19 19
実行します
cd ~/ewd3
node test
db: {}
ok: {"ok":1,"result":"1"}
Node.js Adaptor for GT.M: Version: 0.6.2 (FWSLC); GT.M V6.2-002A Linux
x86_64
{"ok":1,"global":"rob","data":"hello","defined":1,"subscripts":[1]}
2016/9/30 EWD 3 トレーニング・コース #19 20
testプログラムとewd-xpress間の1つの違い
• test プログラム: NodeM API を次のように呼び出し
ます
• db.xxx()
• ewd-xpress ワーカー・モジュールでは
• this.db.xxx()
2016/9/30 EWD 3 トレーニング・コース #19 21
testプログラムとewd-xpress間の1つの違い
• test プログラム: NodeM API を次のように呼び出し
ます
• db.xxx()
2016/9/30 EWD 3 トレーニング・コース #19 22
db.set(node)
var result = db.get(node);
console.log(JSON.stringify(result));
db.close();
testプログラムとewd-xpress間の1つの違い
• ewd-xpress ワーカー・モジュールで
• this.db.xxx()
• 注意: ewd-xpress は、ワーカーが停止するとデータベースを
自動的に閉じます
2016/9/30 EWD 3 トレーニング・コース #19 23
this.db.set(node)
var result = db.get(node);
console.log(JSON.stringify(result));
基本的なグローバル API
2016/9/30 EWD 3 トレーニング・コース #19 24
Global ストレージ操作 API
• グローバル節にアクセスする
• set
• get
• delete (kill)
2016/9/30 EWD 3 トレーニング・コース #19 25
Global ストレージ操作 API
• グローバル節を定義します
var node = {
global: 'employee',
subscripts: [123456, 'name']
};
2016/9/30 EWD 3 トレーニング・コース #19 26
Global ストレージ操作 API
• グローバル節を定義します
var node = {
global: 'employee',
subscripts: [123456, 'name']
};
employee(123456,"name")
2016/9/30 EWD 3 トレーニング・コース #19 27
Global ストレージ操作 API
• グローバル節にアクセスする
• set
node.data = 'Rob Tweed';
this.db.set(node);
2016/9/30 EWD 3 トレーニング・コース #19 28
Global ストレージ操作 API
• グローバル節にアクセスする
• get
var value = this.db.get(node).data;
2016/9/30 EWD 3 トレーニング・コース #19 29
Global ストレージ操作 API
• グローバル節にアクセスする
• kill
this.db.kill(node)
2016/9/30 EWD 3 トレーニング・コース #19 30
Global 添字を横断する
2016/9/30 EWD 3 トレーニング・コース #19 31
Global ストレージ操作 API
• グローバル節を横断する
• 添字を横切って操作する
2016/9/30 EWD 3 トレーニング・コース #19 32
Global ストレージ操作 API
• グローバル節を横断する
• 階層構造のあるレベルの添字を横切って操作する
2016/9/30 EWD 3 トレーニング・コース #19 33
myGlobal("a")=123
myGlobal("b","c1")="foo"
myGlobal("b","c2")="foo2"
myGlobal("d","e1","f1")="bar1"
myGlobal("d","e1","f2")="bar2"
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
myGlobal
"a" 123
"b"
"c1" "foo"
"c2" "foo2"
"d"
"e1"
"e2"
"f1" "bar1"
"f2" "bar2"
"f1" "bar1"
"f2" "bar2"
"f3" "bar3"
"a", "b", "d"
Global ストレージ操作 API
• グローバル節を横断する
• 階層構造のあるレベルの添字を横切って操作する
2016/9/30 EWD 3 トレーニング・コース #19 34
myGlobal("a")=123
myGlobal("b","c1")="foo"
myGlobal("b","c2")="foo2"
myGlobal("d","e1","f1")="bar1"
myGlobal("d","e1","f2")="bar2"
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
myGlobal
"a" 123
"b"
"c1" "foo"
"c2" "foo2"
"d"
"e1"
"e2"
"f1" "bar1"
"f2" "bar2"
"f1" "bar1"
"f2" "bar2"
"f3" "bar3"
"e1", "e2"
Global ストレージ操作 API
• グローバル節を横断する
• 階層構造のあるレベルの添字を横切って操作する
2016/9/30 EWD 3 トレーニング・コース #19 35
myGlobal("a")=123
myGlobal("b","c1")="foo"
myGlobal("b","c2")="foo2"
myGlobal("d","e1","f1")="bar1"
myGlobal("d","e1","f2")="bar2"
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
myGlobal
"a" 123
"b"
"c1" "foo"
"c2" "foo2"
"d"
"e1"
"e2"
"f1" "bar1"
"f2" "bar2"
"f1" "bar1"
"f2" "bar2"
"f3" "bar3"
"f1", "f2", "f3"
Global ストレージ操作 API
2016/9/30 EWD 3 トレーニング・コース #19 36
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
"f1", "f2", "f3"
Global ストレージ操作 API
• Global節を横断する
var node = {
global: 'myGlobal',
subscripts: ['d', 'e2', '']
};
2016/9/30 EWD 3 トレーニング・コース #19 37
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
"f1", "f2", "f3"
Global ストレージ操作 API
• Global節を横断する
var node = {
global: 'myGlobal',
subscripts: ['d', 'e2', '']
};
2016/9/30 EWD 3 トレーニング・コース #19 38
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
"f1", "f2", "f3"
繰り返し処理の初期値
空文字列
Global ストレージ操作 API
• Global節を横断する
var node = {
global: 'myGlobal',
subscripts: ['d', 'e2', '']
};
var subscript = this.db.order(node).result;
// f1
2016/9/30 EWD 3 トレーニング・コース #19 39
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
"f1", "f2", "f3"
Global ストレージ操作 API
• Global節を横断する
var node = {
global: 'myGlobal',
subscripts: ['d', 'e2', '']
};
var subscript = this.db.order(node).result;
// f1
subscript = this.db.order(node).result;
// f2
2016/9/30 EWD 3 トレーニング・コース #19 40
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
"f1", "f2", "f3"
Global ストレージ操作 API
• Global節を横断する
var node = {
global: 'myGlobal',
subscripts: ['d', 'e2', '']
};
var subscript = this.db.order(node).result;
// f1
subscript = this.db.order(node).result;
// f2
subscript = this.db.order(node).result;
// f3
2016/9/30 EWD 3 トレーニング・コース #19 41
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
"f1", "f2", "f3"
Global ストレージ操作 API
• Global節を横断する
var node = {
global: 'myGlobal',
subscripts: ['d', 'e2', '']
};
var subscript = this.db.order(node).result;
// f1
subscript = this.db.order(node).result;
// f2
subscript = this.db.order(node).result;
// f3
subscript = this.db.order(node).result;
// ''
2016/9/30 EWD 3 トレーニング・コース #19 42
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
"f1", "f2", "f3"
Global ストレージ操作 API
• Global節を横断する
var node = {
global: 'myGlobal',
subscripts: ['d', 'e2', 'f2']
};
var subscript = this.db.order(node).result;
// f3
2016/9/30 EWD 3 トレーニング・コース #19 43
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
"f1", "f2", "f3"
繰り返し処理の初期値
空文字列
Global ストレージ操作 API
• Global節を横断する
var subscript = this.db.order(node).result;
// f3
Global節の現状:
{
global: 'myGlobal',
subscripts: ['d', 'e2', 'f3']
};
2016/9/30 EWD 3 トレーニング・コース #19 44
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
"f1", "f2", "f3"
Global ストレージ操作 API
• Global節を横断する
var node = {
global: 'myGlobal',
subscripts: ['d', 'e2', 'f2']
};
var subscript = this.db.order(node).result;
// f3
var subscript = this.db.order(node).result;
// ''
空文字列は、これ以上添字がないことを示します
2016/9/30 EWD 3 トレーニング・コース #19 45
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
"f1", "f2", "f3"
Global ストレージ操作 API
• Global節を横断する
var node = {
global: 'myGlobal',
subscripts: ['d', 'e2', 'f2']
};
var subscript;
do {
subscript = this.db.order(node).result;
if (subscript !== '') console.log(subscript);
}
while (subscript !== '');
2016/9/30 EWD 3 トレーニング・コース #19 46
myGlobal("d","e2","f1")="bar1"
myGlobal("d","e2","f2")="bar2"
myGlobal("d","e2","f3")="bar3"
"f1", "f2", "f3"
この API は低水準です
• Globalストレージにアクセスする基本機能を提供する
ために慎重に設計されています
• アプリケーション開発者がGlobalストレージの機構につ
いて理解していることを前提としています
• JavaScriptによる開発のためには低水準過ぎます
• 特に、添え字を縦断する機能は多くのコードを必要とします
• しかし、もっとJavaScript中心の見方からすると、抽
象化は可能です
• この問題について、このコースの次のパートで扱います
2016/9/30 EWD 3 トレーニング・コース #19 47

More Related Content

What's hot

C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールMITSUNARI Shigeo
 
GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)なおき きしだ
 
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題にmagoroku Yamamoto
 
CasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用TipsCasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用TipsNaoki Sega
 
AutoDock_Raccoon_japanese_ver.1.0
AutoDock_Raccoon_japanese_ver.1.0AutoDock_Raccoon_japanese_ver.1.0
AutoDock_Raccoon_japanese_ver.1.0Satoshi Kume
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用MITSUNARI Shigeo
 
カジュアルにソースコードリーディング
カジュアルにソースコードリーディングカジュアルにソースコードリーディング
カジュアルにソースコードリーディングAkihiro Okuno
 
Spectre/Meltdownとその派生
Spectre/Meltdownとその派生Spectre/Meltdownとその派生
Spectre/Meltdownとその派生MITSUNARI Shigeo
 
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたMITSUNARI Shigeo
 
Casual Compression on MongoDB
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDBmoai kids
 
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]David Buck
 
JVM-Reading-ConcurrentMarkSweep
JVM-Reading-ConcurrentMarkSweepJVM-Reading-ConcurrentMarkSweep
JVM-Reading-ConcurrentMarkSweepMinoru Nakamura
 

What's hot (20)

C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
 
V6 unix vol.2 in okinawa
V6 unix vol.2 in okinawaV6 unix vol.2 in okinawa
V6 unix vol.2 in okinawa
 
V6 unix in okinawa
V6 unix in okinawaV6 unix in okinawa
V6 unix in okinawa
 
Kernel fcache-bug
Kernel fcache-bugKernel fcache-bug
Kernel fcache-bug
 
GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)
 
仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に仮想記憶入門 BSD-4.3を例題に
仮想記憶入門 BSD-4.3を例題に
 
CasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用TipsCasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用Tips
 
20130819 jjugnslt
20130819 jjugnslt20130819 jjugnslt
20130819 jjugnslt
 
Memory sanitizer
Memory sanitizerMemory sanitizer
Memory sanitizer
 
AutoDock_Raccoon_japanese_ver.1.0
AutoDock_Raccoon_japanese_ver.1.0AutoDock_Raccoon_japanese_ver.1.0
AutoDock_Raccoon_japanese_ver.1.0
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
 
カジュアルにソースコードリーディング
カジュアルにソースコードリーディングカジュアルにソースコードリーディング
カジュアルにソースコードリーディング
 
WDD2012_SC-004
WDD2012_SC-004WDD2012_SC-004
WDD2012_SC-004
 
Spectre/Meltdownとその派生
Spectre/Meltdownとその派生Spectre/Meltdownとその派生
Spectre/Meltdownとその派生
 
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
 
Casual Compression on MongoDB
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDB
 
ゆるバグ
ゆるバグゆるバグ
ゆるバグ
 
about dakota6.7 gui
about dakota6.7 guiabout dakota6.7 gui
about dakota6.7 gui
 
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
 
JVM-Reading-ConcurrentMarkSweep
JVM-Reading-ConcurrentMarkSweepJVM-Reading-ConcurrentMarkSweep
JVM-Reading-ConcurrentMarkSweep
 

Viewers also liked

Indeedなう A日程 解説
Indeedなう A日程 解説Indeedなう A日程 解説
Indeedなう A日程 解説AtCoder Inc.
 
ハーバード社会起業大会スタディプログラム報告会&説明会 20141116
ハーバード社会起業大会スタディプログラム報告会&説明会 20141116ハーバード社会起業大会スタディプログラム報告会&説明会 20141116
ハーバード社会起業大会スタディプログラム報告会&説明会 20141116YutakaTanabe
 
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答Kiyoshi Sawada
 
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成Kiyoshi Sawada
 
EWD 3トレーニングコース#3 EWD 3 モジュールの概要
EWD 3トレーニングコース#3 EWD 3 モジュールの概要EWD 3トレーニングコース#3 EWD 3 モジュールの概要
EWD 3トレーニングコース#3 EWD 3 モジュールの概要Kiyoshi Sawada
 
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理Kiyoshi Sawada
 
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させるEWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させるKiyoshi Sawada
 
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクトEWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクトKiyoshi Sawada
 
EWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩く
EWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩くEWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩く
EWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩くKiyoshi Sawada
 
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) Documentデータベースのできること
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) DocumentデータベースのできることEWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) Documentデータベースのできること
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) DocumentデータベースのできることKiyoshi Sawada
 
EWD 3トレーニング・コース #3 EWD 3 モジュールの概要
EWD 3トレーニング・コース #3 EWD 3 モジュールの概要EWD 3トレーニング・コース #3 EWD 3 モジュールの概要
EWD 3トレーニング・コース #3 EWD 3 モジュールの概要Kiyoshi Sawada
 
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみるEWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみるKiyoshi Sawada
 
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理Kiyoshi Sawada
 
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理Kiyoshi Sawada
 
EWD.js アーキテクチャー
EWD.js アーキテクチャーEWD.js アーキテクチャー
EWD.js アーキテクチャーKiyoshi Sawada
 
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化するEWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化するKiyoshi Sawada
 
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトEWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトKiyoshi Sawada
 
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作る
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作るEWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作る
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作るKiyoshi Sawada
 
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化するEWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化するKiyoshi Sawada
 
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合するEWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合するKiyoshi Sawada
 

Viewers also liked (20)

Indeedなう A日程 解説
Indeedなう A日程 解説Indeedなう A日程 解説
Indeedなう A日程 解説
 
ハーバード社会起業大会スタディプログラム報告会&説明会 20141116
ハーバード社会起業大会スタディプログラム報告会&説明会 20141116ハーバード社会起業大会スタディプログラム報告会&説明会 20141116
ハーバード社会起業大会スタディプログラム報告会&説明会 20141116
 
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
 
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
EWD 3トレーニング・コース #4 ewd-xpressのインストールと構成
 
EWD 3トレーニングコース#3 EWD 3 モジュールの概要
EWD 3トレーニングコース#3 EWD 3 モジュールの概要EWD 3トレーニングコース#3 EWD 3 モジュールの概要
EWD 3トレーニングコース#3 EWD 3 モジュールの概要
 
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化 - (g) イベント駆動の索引管理
 
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させるEWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
EWD 3トレーニングコース#29 ewd-xpressをWindows上のサービスとして稼働させる
 
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクトEWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
 
EWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩く
EWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩くEWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩く
EWD 3トレーニングコース#24 GlobalストレージのJavaScript用抽象化-(e) ドキュメントの末端ノードを渡り歩く
 
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) Documentデータベースのできること
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) DocumentデータベースのできることEWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) Documentデータベースのできること
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化-(f) Documentデータベースのできること
 
EWD 3トレーニング・コース #3 EWD 3 モジュールの概要
EWD 3トレーニング・コース #3 EWD 3 モジュールの概要EWD 3トレーニング・コース #3 EWD 3 モジュールの概要
EWD 3トレーニング・コース #3 EWD 3 モジュールの概要
 
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみるEWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
 
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
 
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理
EWD 3トレーニングコース#26 GlobalストレージのJavaScript用抽象化-(g) イベント駆動の索引管理
 
EWD.js アーキテクチャー
EWD.js アーキテクチャーEWD.js アーキテクチャー
EWD.js アーキテクチャー
 
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化するEWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
 
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトEWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
 
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作る
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作るEWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作る
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作る
 
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化するEWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
EWD 3トレーニングコース#18 GlobalストレジでNoSQLデータベースをモデル化する
 
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合するEWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
EWD 3トレーニングコース#28 従来のMUMPSコードをewd-xpressと統合する
 

Similar to EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする

EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩くEWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩くKiyoshi Sawada
 
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトEWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトKiyoshi Sawada
 
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩くEWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩くKiyoshi Sawada
 
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化 - (f) Documentデータベースのできること
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化 - (f) DocumentデータベースのできることEWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化 - (f) Documentデータベースのできること
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化 - (f) DocumentデータベースのできることKiyoshi Sawada
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようAkira Shimosako
 
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクトEWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクトKiyoshi Sawada
 
EWD 3トレーニングコース#17 Globalストレジ・データベース入門
EWD 3トレーニングコース#17 Globalストレジ・データベース入門EWD 3トレーニングコース#17 Globalストレジ・データベース入門
EWD 3トレーニングコース#17 Globalストレジ・データベース入門Kiyoshi Sawada
 
Maxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミングMaxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミングNVIDIA Japan
 
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)Iwana Chan
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefsguest172cfb
 
cocos2d-xにおけるBox2Dの利用方法および便利なツール
cocos2d-xにおけるBox2Dの利用方法および便利なツールcocos2d-xにおけるBox2Dの利用方法および便利なツール
cocos2d-xにおけるBox2Dの利用方法および便利なツールTomoaki Shimizu
 
EWD 3トレーニングコース#17 Globalストレジ・データベース入門
EWD 3トレーニングコース#17 Globalストレジ・データベース入門EWD 3トレーニングコース#17 Globalストレジ・データベース入門
EWD 3トレーニングコース#17 Globalストレジ・データベース入門Kiyoshi Sawada
 
Gws 20130315 gradle_handson
Gws 20130315 gradle_handsonGws 20130315 gradle_handson
Gws 20130315 gradle_handsonNobuhiro Sue
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8Kohei KaiGai
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めようAdvancedTechNight
 
PF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGPF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGdaye001
 
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -Akio Katayama
 
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -Akio Katayama
 

Similar to EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする (20)

EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩くEWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
 
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトEWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
 
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩くEWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
EWD 3トレーニングコース#22 GlobalストレージのJavaScript用抽象化-(c) ドキュメントを渡り歩く
 
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化 - (f) Documentデータベースのできること
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化 - (f) DocumentデータベースのできることEWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化 - (f) Documentデータベースのできること
EWD 3トレーニングコース#25 GlobalストレージのJavaScript用抽象化 - (f) Documentデータベースのできること
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクトEWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
EWD 3トレーニングコース#21 GlobalストレージのJavaScript用抽象化-(b) JavaScriptの永続オブジェクト
 
EWD 3トレーニングコース#17 Globalストレジ・データベース入門
EWD 3トレーニングコース#17 Globalストレジ・データベース入門EWD 3トレーニングコース#17 Globalストレジ・データベース入門
EWD 3トレーニングコース#17 Globalストレジ・データベース入門
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
 
Maxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミングMaxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミング
 
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefs
 
cocos2d-xにおけるBox2Dの利用方法および便利なツール
cocos2d-xにおけるBox2Dの利用方法および便利なツールcocos2d-xにおけるBox2Dの利用方法および便利なツール
cocos2d-xにおけるBox2Dの利用方法および便利なツール
 
EWD 3トレーニングコース#17 Globalストレジ・データベース入門
EWD 3トレーニングコース#17 Globalストレジ・データベース入門EWD 3トレーニングコース#17 Globalストレジ・データベース入門
EWD 3トレーニングコース#17 Globalストレジ・データベース入門
 
about DakotagUI
about DakotagUIabout DakotagUI
about DakotagUI
 
Gws 20130315 gradle_handson
Gws 20130315 gradle_handsonGws 20130315 gradle_handson
Gws 20130315 gradle_handson
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
 
PF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAGPF部第19回資料 poor man's JTAG
PF部第19回資料 poor man's JTAG
 
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -
 
FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -FxUG in Toyama - ASphalt2 container -
FxUG in Toyama - ASphalt2 container -
 

More from Kiyoshi Sawada

EWD 3トレーニングコース#33 ewd-xpressアプリケーションからREST/Webサービスにアクセスする
EWD 3トレーニングコース#33 ewd-xpressアプリケーションからREST/WebサービスにアクセスするEWD 3トレーニングコース#33 ewd-xpressアプリケーションからREST/Webサービスにアクセスする
EWD 3トレーニングコース#33 ewd-xpressアプリケーションからREST/WebサービスにアクセスするKiyoshi Sawada
 
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化するEWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化するKiyoshi Sawada
 
EWD 3トレーニングコース#27 GlobalストレージのJavaScript用抽象化-(h) EWD 3 セッション
EWD 3トレーニングコース#27 GlobalストレージのJavaScript用抽象化-(h) EWD 3 セッションEWD 3トレーニングコース#27 GlobalストレージのJavaScript用抽象化-(h) EWD 3 セッション
EWD 3トレーニングコース#27 GlobalストレージのJavaScript用抽象化-(h) EWD 3 セッションKiyoshi Sawada
 
EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く
EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩くEWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く
EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩くKiyoshi Sawada
 
EWD 3トレーニングコース#16 ewd-xpressサービス
EWD 3トレーニングコース#16 ewd-xpressサービスEWD 3トレーニングコース#16 ewd-xpressサービス
EWD 3トレーニングコース#16 ewd-xpressサービスKiyoshi Sawada
 
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するEWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するKiyoshi Sawada
 
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いるEWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いるKiyoshi Sawada
 
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみるEWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみるKiyoshi Sawada
 
EWD 3トレーニングコース#12 ewd-xpressのセッション・タイムアウトの制御
EWD 3トレーニングコース#12 ewd-xpressのセッション・タイムアウトの制御EWD 3トレーニングコース#12 ewd-xpressのセッション・タイムアウトの制御
EWD 3トレーニングコース#12 ewd-xpressのセッション・タイムアウトの制御Kiyoshi Sawada
 
EWD 3トレーニングコース#10 ewd-xpressのSessionとユーザー認証
EWD 3トレーニングコース#10 ewd-xpressのSessionとユーザー認証EWD 3トレーニングコース#10 ewd-xpressのSessionとユーザー認証
EWD 3トレーニングコース#10 ewd-xpressのSessionとユーザー認証Kiyoshi Sawada
 
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答Kiyoshi Sawada
 
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖Kiyoshi Sawada
 
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用するEWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用するKiyoshi Sawada
 
EWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるか
EWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるかEWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるか
EWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるかKiyoshi Sawada
 
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップEWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップKiyoshi Sawada
 
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成Kiyoshi Sawada
 

More from Kiyoshi Sawada (16)

EWD 3トレーニングコース#33 ewd-xpressアプリケーションからREST/Webサービスにアクセスする
EWD 3トレーニングコース#33 ewd-xpressアプリケーションからREST/WebサービスにアクセスするEWD 3トレーニングコース#33 ewd-xpressアプリケーションからREST/Webサービスにアクセスする
EWD 3トレーニングコース#33 ewd-xpressアプリケーションからREST/Webサービスにアクセスする
 
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化するEWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
 
EWD 3トレーニングコース#27 GlobalストレージのJavaScript用抽象化-(h) EWD 3 セッション
EWD 3トレーニングコース#27 GlobalストレージのJavaScript用抽象化-(h) EWD 3 セッションEWD 3トレーニングコース#27 GlobalストレージのJavaScript用抽象化-(h) EWD 3 セッション
EWD 3トレーニングコース#27 GlobalストレージのJavaScript用抽象化-(h) EWD 3 セッション
 
EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く
EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩くEWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く
EWD 3トレーニングコース#23 GlobalストレージのJavaScript用抽象化-(d) ノードの範囲を渡り歩く
 
EWD 3トレーニングコース#16 ewd-xpressサービス
EWD 3トレーニングコース#16 ewd-xpressサービスEWD 3トレーニングコース#16 ewd-xpressサービス
EWD 3トレーニングコース#16 ewd-xpressサービス
 
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するEWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
 
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いるEWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
 
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみるEWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
 
EWD 3トレーニングコース#12 ewd-xpressのセッション・タイムアウトの制御
EWD 3トレーニングコース#12 ewd-xpressのセッション・タイムアウトの制御EWD 3トレーニングコース#12 ewd-xpressのセッション・タイムアウトの制御
EWD 3トレーニングコース#12 ewd-xpressのセッション・タイムアウトの制御
 
EWD 3トレーニングコース#10 ewd-xpressのSessionとユーザー認証
EWD 3トレーニングコース#10 ewd-xpressのSessionとユーザー認証EWD 3トレーニングコース#10 ewd-xpressのSessionとユーザー認証
EWD 3トレーニングコース#10 ewd-xpressのSessionとユーザー認証
 
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
 
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
EWD 3トレーニングコース#8 ewd-xpressメッセージ・サイクルの解剖
 
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用するEWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
 
EWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるか
EWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるかEWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるか
EWD 3トレーニングコース#6 ewd-xpressアプリ開始時に何が起こるか
 
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップEWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
 
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
EWD 3トレーニングコース#4 ewd-xpressのインストールと構成
 

EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする

  • 1. EWD 3 トレーニング・コース #19 JavaScript から Global ストレージ をアクセスする: NodeM API M/Gateway Developments Ltd. Rob Tweed 訳: 日本ダイナシステム株式会社 嶋 芳成 GT.M版編集: 澤田 潔 ※ 本稿オリジナルはCache’向けとして編纂
  • 2. NodeM • NodeM インターフェース・モジュールを用いることで、 JavaScript から GT.M データベースにアクセスするこ とができます 2016/9/30 EWD 3 トレーニング・コース #19 2
  • 3. NodeM • NodeM モジュールは、cache.nodeと等価であり オープン・ソースのエミュレーションとして、JavaScript から同じ方法で GT.M データベースにアクセスすること ができます • https://github.com/dlwicksell/nodem 2016/9/30 EWD 3 トレーニング・コース #19 3
  • 4. cache.node と NodeM の API • ewd-xpress アプリケーションの中で、次のようにアク セスすることができます this.db.someFunctionName() 2016/9/30 EWD 3 トレーニング・コース #19 4
  • 5. インターフェース・モジュールの読込みと初期化 • このステップは、ewd-xpress によって自動的に実行 されます • ここでは、手動でどのようにするかを説明します... 2016/9/30 EWD 3 トレーニング・コース #19 5
  • 6. NodeM API • NodeM の読み込み require(‘./setEnvironment’); // GT.M環境変数をセット var interface = require(‘nodem’); // NodeM I/F var db = new interface.Gtm(); // GT.M DB インスタンス 2016/9/30 EWD 3 トレーニング・コース #19 6
  • 7. NodeM API • GT.M への接続を開く db.open(); 2016/9/30 EWD 3 トレーニング・コース #19 7
  • 8. NodeM API • Caché への接続を開く db.open({ path: '/opt/cache/mgr', username: '_SYSTEM', password: 'SYS', namespace: 'USER', charset: 'UTF-8', lock: 0 }); 2016/9/30 EWD 3 トレーニング・コース #19 8
  • 9. NodeM API • GT.M への接続を閉じる var ok = db.close(); 2016/9/30 EWD 3 トレーニング・コース #19 9
  • 10. NodeM API • NodeM を読み込む require(‘./setEnvironment’); var interface = require('nodem'); var db = new interface.Gtm(); 2016/9/30 EWD 3 トレーニング・コース #19 10
  • 11. NodeM API • GT.M への接続を開く db.open(); 2016/9/30 EWD 3 トレーニング・コース #19 11
  • 12. NodeM API • GT.M への接続を開く db.open(); これ以降、API はすべて cache.node で用いられる ものと同一です 2016/9/30 EWD 3 トレーニング・コース #19 12
  • 13. NodeM API • GT.M への接続を閉じる var ok = db.close(); 即ち、cache.node と同じです 2016/9/30 EWD 3 トレーニング・コース #19 13
  • 14. テスト・アプリを設定します • ewd-xpress には例題も用意してあります • ~/ewd3/node_modules/ewd-xpress/example.test.js • あなたの GT.M の構成に合わせて編集してください 2016/9/30 EWD 3 トレーニング・コース #19 14
  • 15. GT.M環境変数定義ファイルを編集 2016/9/30 EWD 3 トレーニング・コース #19 15 cd ~/ewd3 vi ./setEnvironment export gtmdir="$HOME/.fis-gtm" export gtmver="V6.2-002A_x86_64“ export gtm_icu_version=5.0 export gtm_chset="utf-8“ export gtm_dist="/usr/lib/fis-gtm/$gtmver2/utf8“ export gtmgbldir=$gtmdir/$gtmver/g/gtm.gld export gtmgbldir="/home/mta/.fis-gtm/V6.2-002A_x86_64/g/gtm.gld“ export gtmroutines="$gtm_dist” $HOME/ewdjs/node_modules/nodem/src" export PATH=$PATH:$gtm_dist # Define aliases alias gtm="$gtm_dist/gtm"
  • 16. test.js を編集する require('./setEnvironment'); // GT.M環境変数をセット var interface = require('nodem'); var db = new interface.Gtm(); console.log('db: ' + JSON.stringify(db)); // 以下のパラメータは、あなたのGlobalDB または Caché システムに合わせて変更します var ok = db.open(); console.log('ok: ' + JSON.stringify(ok)); console.log(db.version()); var node = { global: 'rob', subscripts: [1], data: 'hello' }; db.set(node); var result = db.get(node); console.log(JSON.stringify(result)); db.close(); 2016/9/30 EWD 3 トレーニング・コース #19 16
  • 17. test.js を編集する require('./setEnvironment'); // GT.M環境変数をセット var interface = require('nodem'); var db = new interface.Gtm(); console.log('db: ' + JSON.stringify(db)); // 以下のパラメータは、あなたのGlobalDB または Caché システムに合わせて変更します var ok = db.open(); console.log('ok: ' + JSON.stringify(ok)); console.log(db.version()); var node = { global: 'rob', subscripts: [1], data: 'hello' }; db.set(node); var result = db.get(node); console.log(JSON.stringify(result)); db.close(); 2016/9/30 EWD 3 トレーニング・コース #19 17
  • 18. ~/ewd3/test.js として保存する require('./setEnvironment'); // GT.M環境変数をセット var interface = require('nodem'); var db = new interface.Gtm(); console.log('db: ' + JSON.stringify(db)); // 以下のパラメータは、あなたのGlobalDB または Caché システムに合わせて変更します var ok = db.open(); console.log('ok: ' + JSON.stringify(ok)); console.log(db.version()); var node = { global: 'rob', subscripts: [1], data: 'hello' }; db.set(node); var result = db.get(node); console.log(JSON.stringify(result)); db.close(); 2016/9/30 EWD 3 トレーニング・コース #19 18
  • 19. 実行します cd ~/ewd3 node test 2016/9/30 EWD 3 トレーニング・コース #19 19
  • 20. 実行します cd ~/ewd3 node test db: {} ok: {"ok":1,"result":"1"} Node.js Adaptor for GT.M: Version: 0.6.2 (FWSLC); GT.M V6.2-002A Linux x86_64 {"ok":1,"global":"rob","data":"hello","defined":1,"subscripts":[1]} 2016/9/30 EWD 3 トレーニング・コース #19 20
  • 21. testプログラムとewd-xpress間の1つの違い • test プログラム: NodeM API を次のように呼び出し ます • db.xxx() • ewd-xpress ワーカー・モジュールでは • this.db.xxx() 2016/9/30 EWD 3 トレーニング・コース #19 21
  • 22. testプログラムとewd-xpress間の1つの違い • test プログラム: NodeM API を次のように呼び出し ます • db.xxx() 2016/9/30 EWD 3 トレーニング・コース #19 22 db.set(node) var result = db.get(node); console.log(JSON.stringify(result)); db.close();
  • 23. testプログラムとewd-xpress間の1つの違い • ewd-xpress ワーカー・モジュールで • this.db.xxx() • 注意: ewd-xpress は、ワーカーが停止するとデータベースを 自動的に閉じます 2016/9/30 EWD 3 トレーニング・コース #19 23 this.db.set(node) var result = db.get(node); console.log(JSON.stringify(result));
  • 24. 基本的なグローバル API 2016/9/30 EWD 3 トレーニング・コース #19 24
  • 25. Global ストレージ操作 API • グローバル節にアクセスする • set • get • delete (kill) 2016/9/30 EWD 3 トレーニング・コース #19 25
  • 26. Global ストレージ操作 API • グローバル節を定義します var node = { global: 'employee', subscripts: [123456, 'name'] }; 2016/9/30 EWD 3 トレーニング・コース #19 26
  • 27. Global ストレージ操作 API • グローバル節を定義します var node = { global: 'employee', subscripts: [123456, 'name'] }; employee(123456,"name") 2016/9/30 EWD 3 トレーニング・コース #19 27
  • 28. Global ストレージ操作 API • グローバル節にアクセスする • set node.data = 'Rob Tweed'; this.db.set(node); 2016/9/30 EWD 3 トレーニング・コース #19 28
  • 29. Global ストレージ操作 API • グローバル節にアクセスする • get var value = this.db.get(node).data; 2016/9/30 EWD 3 トレーニング・コース #19 29
  • 30. Global ストレージ操作 API • グローバル節にアクセスする • kill this.db.kill(node) 2016/9/30 EWD 3 トレーニング・コース #19 30
  • 31. Global 添字を横断する 2016/9/30 EWD 3 トレーニング・コース #19 31
  • 32. Global ストレージ操作 API • グローバル節を横断する • 添字を横切って操作する 2016/9/30 EWD 3 トレーニング・コース #19 32
  • 33. Global ストレージ操作 API • グローバル節を横断する • 階層構造のあるレベルの添字を横切って操作する 2016/9/30 EWD 3 トレーニング・コース #19 33 myGlobal("a")=123 myGlobal("b","c1")="foo" myGlobal("b","c2")="foo2" myGlobal("d","e1","f1")="bar1" myGlobal("d","e1","f2")="bar2" myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" myGlobal "a" 123 "b" "c1" "foo" "c2" "foo2" "d" "e1" "e2" "f1" "bar1" "f2" "bar2" "f1" "bar1" "f2" "bar2" "f3" "bar3" "a", "b", "d"
  • 34. Global ストレージ操作 API • グローバル節を横断する • 階層構造のあるレベルの添字を横切って操作する 2016/9/30 EWD 3 トレーニング・コース #19 34 myGlobal("a")=123 myGlobal("b","c1")="foo" myGlobal("b","c2")="foo2" myGlobal("d","e1","f1")="bar1" myGlobal("d","e1","f2")="bar2" myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" myGlobal "a" 123 "b" "c1" "foo" "c2" "foo2" "d" "e1" "e2" "f1" "bar1" "f2" "bar2" "f1" "bar1" "f2" "bar2" "f3" "bar3" "e1", "e2"
  • 35. Global ストレージ操作 API • グローバル節を横断する • 階層構造のあるレベルの添字を横切って操作する 2016/9/30 EWD 3 トレーニング・コース #19 35 myGlobal("a")=123 myGlobal("b","c1")="foo" myGlobal("b","c2")="foo2" myGlobal("d","e1","f1")="bar1" myGlobal("d","e1","f2")="bar2" myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" myGlobal "a" 123 "b" "c1" "foo" "c2" "foo2" "d" "e1" "e2" "f1" "bar1" "f2" "bar2" "f1" "bar1" "f2" "bar2" "f3" "bar3" "f1", "f2", "f3"
  • 36. Global ストレージ操作 API 2016/9/30 EWD 3 トレーニング・コース #19 36 myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" "f1", "f2", "f3"
  • 37. Global ストレージ操作 API • Global節を横断する var node = { global: 'myGlobal', subscripts: ['d', 'e2', ''] }; 2016/9/30 EWD 3 トレーニング・コース #19 37 myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" "f1", "f2", "f3"
  • 38. Global ストレージ操作 API • Global節を横断する var node = { global: 'myGlobal', subscripts: ['d', 'e2', ''] }; 2016/9/30 EWD 3 トレーニング・コース #19 38 myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" "f1", "f2", "f3" 繰り返し処理の初期値 空文字列
  • 39. Global ストレージ操作 API • Global節を横断する var node = { global: 'myGlobal', subscripts: ['d', 'e2', ''] }; var subscript = this.db.order(node).result; // f1 2016/9/30 EWD 3 トレーニング・コース #19 39 myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" "f1", "f2", "f3"
  • 40. Global ストレージ操作 API • Global節を横断する var node = { global: 'myGlobal', subscripts: ['d', 'e2', ''] }; var subscript = this.db.order(node).result; // f1 subscript = this.db.order(node).result; // f2 2016/9/30 EWD 3 トレーニング・コース #19 40 myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" "f1", "f2", "f3"
  • 41. Global ストレージ操作 API • Global節を横断する var node = { global: 'myGlobal', subscripts: ['d', 'e2', ''] }; var subscript = this.db.order(node).result; // f1 subscript = this.db.order(node).result; // f2 subscript = this.db.order(node).result; // f3 2016/9/30 EWD 3 トレーニング・コース #19 41 myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" "f1", "f2", "f3"
  • 42. Global ストレージ操作 API • Global節を横断する var node = { global: 'myGlobal', subscripts: ['d', 'e2', ''] }; var subscript = this.db.order(node).result; // f1 subscript = this.db.order(node).result; // f2 subscript = this.db.order(node).result; // f3 subscript = this.db.order(node).result; // '' 2016/9/30 EWD 3 トレーニング・コース #19 42 myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" "f1", "f2", "f3"
  • 43. Global ストレージ操作 API • Global節を横断する var node = { global: 'myGlobal', subscripts: ['d', 'e2', 'f2'] }; var subscript = this.db.order(node).result; // f3 2016/9/30 EWD 3 トレーニング・コース #19 43 myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" "f1", "f2", "f3" 繰り返し処理の初期値 空文字列
  • 44. Global ストレージ操作 API • Global節を横断する var subscript = this.db.order(node).result; // f3 Global節の現状: { global: 'myGlobal', subscripts: ['d', 'e2', 'f3'] }; 2016/9/30 EWD 3 トレーニング・コース #19 44 myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" "f1", "f2", "f3"
  • 45. Global ストレージ操作 API • Global節を横断する var node = { global: 'myGlobal', subscripts: ['d', 'e2', 'f2'] }; var subscript = this.db.order(node).result; // f3 var subscript = this.db.order(node).result; // '' 空文字列は、これ以上添字がないことを示します 2016/9/30 EWD 3 トレーニング・コース #19 45 myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" "f1", "f2", "f3"
  • 46. Global ストレージ操作 API • Global節を横断する var node = { global: 'myGlobal', subscripts: ['d', 'e2', 'f2'] }; var subscript; do { subscript = this.db.order(node).result; if (subscript !== '') console.log(subscript); } while (subscript !== ''); 2016/9/30 EWD 3 トレーニング・コース #19 46 myGlobal("d","e2","f1")="bar1" myGlobal("d","e2","f2")="bar2" myGlobal("d","e2","f3")="bar3" "f1", "f2", "f3"
  • 47. この API は低水準です • Globalストレージにアクセスする基本機能を提供する ために慎重に設計されています • アプリケーション開発者がGlobalストレージの機構につ いて理解していることを前提としています • JavaScriptによる開発のためには低水準過ぎます • 特に、添え字を縦断する機能は多くのコードを必要とします • しかし、もっとJavaScript中心の見方からすると、抽 象化は可能です • この問題について、このコースの次のパートで扱います 2016/9/30 EWD 3 トレーニング・コース #19 47