SlideShare una empresa de Scribd logo
1 de 86
Descargar para leer sin conexión
Shibuya, Tokyo
Wakanda
勉強会 #1
2013-08-06
2013-06-19
presented by
Shibuya, Tokyo
agenda
integration
Shibuya, Tokyo
agenda
WAK3 WAK4 WAK5
openDataStore
open4DBase
model API v4 model API v5
addOutsideCatalog
addOutsideCatalog
addRemoteStore
addRemoteStore
integration
Shibuya, Tokyo
agenda
WAK3 WAK4 WAK5
openDataStore
open4DBase
model API v4 model API v5
addOutsideCatalog
addOutsideCatalog
addRemoteStore
addRemoteStore
http://doc.wakanda.org/--v4/What-s-removed-after.904-991912.ja.html
removed in WAK4...
Shibuya, Tokyo
agenda
downloads
Shibuya, Tokyo
agenda
http://download.wakanda.org/ProductionChannel/v1/
http://download.wakanda.org/ProductionChannel/v2/
http://download.wakanda.org/ProductionChannel/v3/
http://download.wakanda.org/ProductionChannel/v4/
downloads
Shibuya, Tokyo
open4DBase()
WAK3 121356 122625 124119
v12
Wrong DB4D
version number
Wrong DB4D
version number
Wrong DB4D
version number
v13 OK OK OK
v14 OK OK OK
http://doc.wakanda.org/-/-/open4DBase.301-593664.ja.html
http://doc.wakanda.org/-/-/open4DBase.301-593664.ja.html
Shibuya, Tokyo
open4DBase()
relation
Shibuya, Tokyo
open4DBase()
relation attribute
Shibuya, Tokyo
open4DBase()
プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)
プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)
1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)
nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)
n対1リレーション名(推奨: nテーブル名_1テーブル名)
1対nリレーション名(推奨: 1テーブル名_nテーブル名)
命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字
checklist
Shibuya, Tokyo
open4DBase()
プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)
プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)
1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)
nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)
n対1リレーション名(推奨: nテーブル名_1テーブル名)
1対nリレーション名(推奨: 1テーブル名_nテーブル名)
命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字
checklist
Shibuya, Tokyo
open4DBase()
プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)
プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)
1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)
nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)
n対1リレーション名(推奨: nテーブル名_1テーブル名)
1対nリレーション名(推奨: 1テーブル名_nテーブル名)
命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字
checklist
Shibuya, Tokyo
open4DBase()
プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)
プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)
1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)
nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)
n対1リレーション名(推奨: nテーブル名_1テーブル名)
1対nリレーション名(推奨: 1テーブル名_nテーブル名)
命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字
checklist
Shibuya, Tokyo
open4DBase()
プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)
プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)
1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)
nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)
n対1リレーション名(推奨: nテーブル名_1テーブル名)
1対nリレーション名(推奨: 1テーブル名_nテーブル名)
命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字
checklist
Shibuya, Tokyo
open4DBase()
プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)
プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)
1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)
nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)
n対1リレーション名(推奨: nテーブル名_1テーブル名)
1対nリレーション名(推奨: 1テーブル名_nテーブル名)
命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字
checklist
http://doc.wakanda.org/home2.ja.html#/-/-.300-661504.ja.html
Shibuya, Tokyo
open4DBase()
relation name
Shibuya, Tokyo
open4DBase()
relation name
Shibuya, Tokyo
open4DBase()
var modelFolder = ds.getModelFolder();
var postFolder = modelFolder.parent.parent.path + "Post.4dbase/";
var structureFile = File(postFolder + "Post.4DB");
var dataFile = File(postFolder + "Post.4DD");
var dsPost = open4DBase(structureFile, dataFile);
Shibuya, Tokyo
openDataStore()
http://doc.wakanda.org/-/-/openDataStore.301-592820.ja.html
removed in WAK4...
Shibuya, Tokyo
openDataStore()
http://doc.wakanda.org/-/-/openDataStore.301-592820.ja.html
removed in WAK4...
WAK3 WAK4 WAK5
waModel XML JSON JSON
breakpoints XML JSON JSON
waPreferences XML XML XML
waSettings XML XML XML
waSolution XML XML XML
waProject XML XML XML
waPerm XML XML XML
waDirectory XML XML XML
Shibuya, Tokyo
openDataStore()
var modelFolder = ds.getModelFolder();
var studentsFolder = modelFolder.parent.parent.path + "Students/Students/";
var modelFile = File(studentsFolder + "Model.waModel");
var dataFile = File(studentsFolder + "DataFolder/data.waData");
var dsStudents = openDataStore(modelFile, dataFile);
Shibuya, Tokyo
openDataStore()
var modelFolder = ds.getModelFolder();
var studentsFolder = modelFolder.parent.parent.path + "Students/Students/";
var modelFile = File(studentsFolder + "Model.waModel");
var dataFile = File(studentsFolder + "DataFolder/data.waData");
var dsStudents = openDataStore(modelFile, dataFile);
Shibuya, Tokyo
addOutsideCatalog()
enterprise feature
http://www.wakanda.org/customers/enterprise
Shibuya, Tokyo
addRemoteStore()
enterprise feature
http://www.wakanda.org/customers/enterprise
Shibuya, Tokyo
free form syntax (v3)
http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html
guided model
guidedModel =
{
! Student :
! ! gradeId :
! ! {
! !
! onGet:function()
! {!
unlock script
free form syntax
model =
{
! Student :
! ! gradeId :
! ! {
! !
! onGet:function()
! {!
model.js
reload model
Shibuya, Tokyo
free form syntax (v3)
http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html
model.js
Shibuya, Tokyo
free form syntax (v3)
http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html
model.js
guidedModel model
クラス GUI JavaScript
属性 GUI JavaScript
メソッド JavaScript JavaScript
コードエディターにジャンプ YES NO
ファイル数 model.js model.js+include()
Shibuya, Tokyo
free form syntax (v3)
http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html
model.js
guidedModel =
{
Student :
{
fullName :
{
onSet = function(value)
{
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
}
}
};
guided model
Shibuya, Tokyo
free form syntax (v3)
http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html
model.js
model = {};
model.Student = {};
model.Student.fullName = {};
model.Student.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
free form syntax
グローバルオブジェクトmodelにアクセス
Shibuya, Tokyo
free form syntax (v3)
http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html
model.js
model = {};
model.Student = {};
model.Student.fullName = {};
model.Student.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
free form syntax
グローバルオブジェクトmodelにアクセス
deprecated
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model.js
* @startlock~@endlockを除去してguidedModelをmodelに書き換えるだけ・・・
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model.js
* @startlock~@endlockを除去してguidedModelをmodelに書き換えるだけ・・・
v3 v4
モデルエディターに表示 NO YES
コードエディターにジャンプ NO NO
移行時にコードを自動変換 NO NO*
*
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model = {};
var sc = model.addClass("Student");
sc.addAttribute("ID", "storage", "long", "key auto");
sc.addAttribute("firstName", "storage", "string", "btree");
sc.addAttribute("lastName", "storage", "string", "btree");
sc.addAttribute("name", "calculated", "string");
sc.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
model.Student = {};
model.Student.fullName = {};
model.Student.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
v3: グローバルオブジェクトmodelにアクセス
model.js
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model = new DataStoreCatalog();
var sc = model.addClass("Student");
sc.addAttribute("ID", "storage", "long", "key auto");
sc.addAttribute("firstName", "storage", "string", "btree");
sc.addAttribute("lastName", "storage", "string", "btree");
sc.addAttribute("name", "calculated", "string");
sc.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
model.Student = {};
model.Student.fullName = {};
model.Student.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
v4: コンストラクターを使用
model.js
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model = new DataStoreCatalog();
var sc = model.addClass("Student");
sc.addAttribute("ID", "storage", "long", "key auto");
sc.addAttribute("firstName", "storage", "string", "btree");
sc.addAttribute("lastName", "storage", "string", "btree");
sc.addAttribute("name", "calculated", "string");
sc.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
v3コードを削除
model.js
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model = new DataStoreCatalog();
var sc = model.addClass("Student");
sc.addAttribute("ID", "storage", "long", "key auto");
sc.addAttribute("firstName", "storage", "string", "btree");
sc.addAttribute("lastName", "storage", "string", "btree");
sc.addAttribute("name", "calculated", "string");
sc.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
クラスと属性の定義をmodel API v4に書き換え
model.js
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model = new DataStoreCatalog();
var sc = model.addClass("Student");
sc.addAttribute("ID", "storage", "long", "key auto");
sc.addAttribute("firstName", "storage", "string", "btree");
sc.addAttribute("lastName", "storage", "string", "btree");
sc.addAttribute("name", "calculated", "string");
sc.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
計算属性の定義をmodel API v4に書き換え
model.js
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model = new DataStoreCatalog();
var sc = model.addClass("Student");
sc.addAttribute("ID", "storage", "long", "key auto");
sc.addAttribute("firstName", "storage", "string", "btree");
sc.addAttribute("lastName", "storage", "string", "btree");
sc.addAttribute("name", "calculated", "string");
sc.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
model.js
Shibuya, Tokyo
model API (v5)
http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html
model.js
Shibuya, Tokyo
model API (v5)
http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html
v3 v4 v5
モデルエディターに表示 NO YES YES
コードエディターにジャンプ NO NO YES
移行時にコードを自動変換 NO NO YES
model.js
Shibuya, Tokyo
model API (v5)
http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html
unlock script
waModel (JSON)
WAK4
model API (v4)
waModel (XML)
WAK3
model.js
unlock script
free form syntax (v3)
waModel (JSON)
WAK5
unlock script
model API (v5)
移行時にコードを自動変換
する
しない
Shibuya, Tokyo
model API (v5)
http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html
XML to JSON
Shibuya, Tokyo
Wakanda
勉強会 #1
2013-08-06
2013-06-19
presented by
Shibuya, Tokyo
Wakanda
勉強会 #1
2013-08-06
2013-06-19
presented by
Shibuya, Tokyo
agenda
integration
Shibuya, Tokyo
agenda
WAK3 WAK4 WAK5
openDataStore
open4DBase
model API v4 model API v5
addOutsideCatalog
addOutsideCatalog
addRemoteStore
addRemoteStore
integration
Shibuya, Tokyo
agenda
WAK3 WAK4 WAK5
openDataStore
open4DBase
model API v4 model API v5
addOutsideCatalog
addOutsideCatalog
addRemoteStore
addRemoteStore
http://doc.wakanda.org/--v4/What-s-removed-after.904-991912.ja.html
removed in WAK4...
Shibuya, Tokyo
agenda
downloads
Shibuya, Tokyo
agenda
http://download.wakanda.org/ProductionChannel/v1/
http://download.wakanda.org/ProductionChannel/v2/
http://download.wakanda.org/ProductionChannel/v3/
http://download.wakanda.org/ProductionChannel/v4/
downloads
Shibuya, Tokyo
open4DBase()
WAK3 121356 122625 124119
v12
Wrong DB4D
version number
Wrong DB4D
version number
Wrong DB4D
version number
v13 OK OK OK
v14 OK OK OK
http://doc.wakanda.org/-/-/open4DBase.301-593664.ja.html
http://doc.wakanda.org/-/-/open4DBase.301-593664.ja.html
Shibuya, Tokyo
open4DBase()
relation
Shibuya, Tokyo
open4DBase()
relation attribute
Shibuya, Tokyo
open4DBase()
プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)
プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)
1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)
nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)
n対1リレーション名(推奨: nテーブル名_1テーブル名)
1対nリレーション名(推奨: 1テーブル名_nテーブル名)
命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字
checklist
Shibuya, Tokyo
open4DBase()
プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)
プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)
1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)
nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)
n対1リレーション名(推奨: nテーブル名_1テーブル名)
1対nリレーション名(推奨: 1テーブル名_nテーブル名)
命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字
checklist
Shibuya, Tokyo
open4DBase()
プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)
プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)
1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)
nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)
n対1リレーション名(推奨: nテーブル名_1テーブル名)
1対nリレーション名(推奨: 1テーブル名_nテーブル名)
命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字
checklist
Shibuya, Tokyo
open4DBase()
プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)
プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)
1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)
nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)
n対1リレーション名(推奨: nテーブル名_1テーブル名)
1対nリレーション名(推奨: 1テーブル名_nテーブル名)
命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字
checklist
Shibuya, Tokyo
open4DBase()
プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)
プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)
1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)
nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)
n対1リレーション名(推奨: nテーブル名_1テーブル名)
1対nリレーション名(推奨: 1テーブル名_nテーブル名)
命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字
checklist
Shibuya, Tokyo
open4DBase()
プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)
プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)
1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)
nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)
n対1リレーション名(推奨: nテーブル名_1テーブル名)
1対nリレーション名(推奨: 1テーブル名_nテーブル名)
命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字
checklist
http://doc.wakanda.org/home2.ja.html#/-/-.300-661504.ja.html
Shibuya, Tokyo
open4DBase()
relation name
Shibuya, Tokyo
open4DBase()
relation name
Shibuya, Tokyo
open4DBase()
var modelFolder = ds.getModelFolder();
var postFolder = modelFolder.parent.parent.path + "Post.4dbase/";
var structureFile = File(postFolder + "Post.4DB");
var dataFile = File(postFolder + "Post.4DD");
var dsPost = open4DBase(structureFile, dataFile);
Shibuya, Tokyo
openDataStore()
http://doc.wakanda.org/-/-/openDataStore.301-592820.ja.html
removed in WAK4...
Shibuya, Tokyo
openDataStore()
http://doc.wakanda.org/-/-/openDataStore.301-592820.ja.html
removed in WAK4...
WAK3 WAK4 WAK5
waModel XML JSON JSON
breakpoints XML JSON JSON
waPreferences XML XML XML
waSettings XML XML XML
waSolution XML XML XML
waProject XML XML XML
waPerm XML XML XML
waDirectory XML XML XML
Shibuya, Tokyo
openDataStore()
var modelFolder = ds.getModelFolder();
var studentsFolder = modelFolder.parent.parent.path + "Students/Students/";
var modelFile = File(studentsFolder + "Model.waModel");
var dataFile = File(studentsFolder + "DataFolder/data.waData");
var dsStudents = openDataStore(modelFile, dataFile);
Shibuya, Tokyo
openDataStore()
var modelFolder = ds.getModelFolder();
var studentsFolder = modelFolder.parent.parent.path + "Students/Students/";
var modelFile = File(studentsFolder + "Model.waModel");
var dataFile = File(studentsFolder + "DataFolder/data.waData");
var dsStudents = openDataStore(modelFile, dataFile);
Shibuya, Tokyo
addOutsideCatalog()
enterprise feature
http://www.wakanda.org/customers/enterprise
Shibuya, Tokyo
addRemoteStore()
enterprise feature
http://www.wakanda.org/customers/enterprise
Shibuya, Tokyo
free form syntax (v3)
http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html
guided model
guidedModel =
{
! Student :
! ! gradeId :
! ! {
! !
! onGet:function()
! {!
unlock script
free form syntax
model =
{
! Student :
! ! gradeId :
! ! {
! !
! onGet:function()
! {!
model.js
reload model
Shibuya, Tokyo
free form syntax (v3)
http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html
model.js
Shibuya, Tokyo
free form syntax (v3)
http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html
model.js
guidedModel model
クラス GUI JavaScript
属性 GUI JavaScript
メソッド JavaScript JavaScript
コードエディターにジャンプ YES NO
ファイル数 model.js model.js+include()
Shibuya, Tokyo
free form syntax (v3)
http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html
model.js
guidedModel =
{
Student :
{
fullName :
{
onSet = function(value)
{
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
}
}
};
guided model
Shibuya, Tokyo
free form syntax (v3)
http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html
model.js
model = {};
model.Student = {};
model.Student.fullName = {};
model.Student.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
free form syntax
グローバルオブジェクトmodelにアクセス
Shibuya, Tokyo
free form syntax (v3)
http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html
model.js
model = {};
model.Student = {};
model.Student.fullName = {};
model.Student.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
free form syntax
グローバルオブジェクトmodelにアクセス
deprecated
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model.js
* @startlock~@endlockを除去してguidedModelをmodelに書き換えるだけ・・・
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model.js
* @startlock~@endlockを除去してguidedModelをmodelに書き換えるだけ・・・
v3 v4
モデルエディターに表示 NO YES
コードエディターにジャンプ NO NO
移行時にコードを自動変換 NO NO*
*
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model = {};
var sc = model.addClass("Student");
sc.addAttribute("ID", "storage", "long", "key auto");
sc.addAttribute("firstName", "storage", "string", "btree");
sc.addAttribute("lastName", "storage", "string", "btree");
sc.addAttribute("name", "calculated", "string");
sc.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
model.Student = {};
model.Student.fullName = {};
model.Student.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
v3: グローバルオブジェクトmodelにアクセス
model.js
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model = new DataStoreCatalog();
var sc = model.addClass("Student");
sc.addAttribute("ID", "storage", "long", "key auto");
sc.addAttribute("firstName", "storage", "string", "btree");
sc.addAttribute("lastName", "storage", "string", "btree");
sc.addAttribute("name", "calculated", "string");
sc.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
model.Student = {};
model.Student.fullName = {};
model.Student.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
v4: コンストラクターを使用
model.js
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model = new DataStoreCatalog();
var sc = model.addClass("Student");
sc.addAttribute("ID", "storage", "long", "key auto");
sc.addAttribute("firstName", "storage", "string", "btree");
sc.addAttribute("lastName", "storage", "string", "btree");
sc.addAttribute("name", "calculated", "string");
sc.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
v3コードを削除
model.js
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model = new DataStoreCatalog();
var sc = model.addClass("Student");
sc.addAttribute("ID", "storage", "long", "key auto");
sc.addAttribute("firstName", "storage", "string", "btree");
sc.addAttribute("lastName", "storage", "string", "btree");
sc.addAttribute("name", "calculated", "string");
sc.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
クラスと属性の定義をmodel API v4に書き換え
model.js
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model = new DataStoreCatalog();
var sc = model.addClass("Student");
sc.addAttribute("ID", "storage", "long", "key auto");
sc.addAttribute("firstName", "storage", "string", "btree");
sc.addAttribute("lastName", "storage", "string", "btree");
sc.addAttribute("name", "calculated", "string");
sc.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
計算属性の定義をmodel API v4に書き換え
model.js
Shibuya, Tokyo
model API (v4)
http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html
model = new DataStoreCatalog();
var sc = model.addClass("Student");
sc.addAttribute("ID", "storage", "long", "key auto");
sc.addAttribute("firstName", "storage", "string", "btree");
sc.addAttribute("lastName", "storage", "string", "btree");
sc.addAttribute("name", "calculated", "string");
sc.name.onSet = function(value){
var names = value.split(' ');
this.firstName = names[0];
this.lastName = names[1];
}
model.js
Shibuya, Tokyo
model API (v5)
http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html
model.js
Shibuya, Tokyo
model API (v5)
http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html
v3 v4 v5
モデルエディターに表示 NO YES YES
コードエディターにジャンプ NO NO YES
移行時にコードを自動変換 NO NO YES
model.js
Shibuya, Tokyo
model API (v5)
http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html
unlock script
waModel (JSON)
WAK4
model API (v4)
waModel (XML)
WAK3
model.js
unlock script
free form syntax (v3)
waModel (JSON)
WAK5
unlock script
model API (v5)
移行時にコードを自動変換
する
しない
Shibuya, Tokyo
model API (v5)
http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html
XML to JSON
Shibuya, Tokyo
Wakanda
勉強会 #1
2013-08-06
2013-06-19
presented by

Más contenido relacionado

Destacado

Advanced querying
Advanced queryingAdvanced querying
Advanced querying
strmpnk
 

Destacado (20)

Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
 
Présentation de LemonLDAP::NG aux Journées Perl 2016
Présentation de LemonLDAP::NG aux Journées Perl 2016Présentation de LemonLDAP::NG aux Journées Perl 2016
Présentation de LemonLDAP::NG aux Journées Perl 2016
 
No money? No matter - Improve your website with next to no cash
No money? No matter - Improve your website with next to no cashNo money? No matter - Improve your website with next to no cash
No money? No matter - Improve your website with next to no cash
 
7 reasons to start using Docker
7 reasons to start using Docker7 reasons to start using Docker
7 reasons to start using Docker
 
STC Communities with Mentoring Programs
STC Communities with Mentoring ProgramsSTC Communities with Mentoring Programs
STC Communities with Mentoring Programs
 
UX Camp CPH Ignite presentation 24 April 2014
UX Camp CPH Ignite presentation 24 April 2014UX Camp CPH Ignite presentation 24 April 2014
UX Camp CPH Ignite presentation 24 April 2014
 
Help, we have no more time for testing! (gotoCon Berlin 2013)
Help, we have no more time for testing! (gotoCon Berlin 2013)Help, we have no more time for testing! (gotoCon Berlin 2013)
Help, we have no more time for testing! (gotoCon Berlin 2013)
 
Scott Chacon, GitHub, SXSW Lean Startup 2013
Scott Chacon, GitHub, SXSW Lean Startup 2013Scott Chacon, GitHub, SXSW Lean Startup 2013
Scott Chacon, GitHub, SXSW Lean Startup 2013
 
An Introduction to Multisite - WordCamp Phoenix
An Introduction to Multisite - WordCamp PhoenixAn Introduction to Multisite - WordCamp Phoenix
An Introduction to Multisite - WordCamp Phoenix
 
State of the art server side java script
State of the art server side java scriptState of the art server side java script
State of the art server side java script
 
Extensionworkshop
ExtensionworkshopExtensionworkshop
Extensionworkshop
 
Introducing Xapian
Introducing XapianIntroducing Xapian
Introducing Xapian
 
Working in Harmony: Lightning Talk - London CS Meetup Jun 2013
Working in Harmony: Lightning Talk - London CS Meetup Jun 2013Working in Harmony: Lightning Talk - London CS Meetup Jun 2013
Working in Harmony: Lightning Talk - London CS Meetup Jun 2013
 
Benchmarking APIs - LNUG February 2014
Benchmarking APIs - LNUG February 2014Benchmarking APIs - LNUG February 2014
Benchmarking APIs - LNUG February 2014
 
Advanced querying
Advanced queryingAdvanced querying
Advanced querying
 
HP Discover - Developing new applications for the cloud
HP Discover - Developing new applications for the cloudHP Discover - Developing new applications for the cloud
HP Discover - Developing new applications for the cloud
 
Prototyping in the cloud
Prototyping in the cloudPrototyping in the cloud
Prototyping in the cloud
 
Is having no limits a limitation [distilled version]
Is having no limits a limitation [distilled version]Is having no limits a limitation [distilled version]
Is having no limits a limitation [distilled version]
 
What may I do with your data? What do I have to do with your data? Policie...
What may I do with your data? What do I have to do with your data? Policie...What may I do with your data? What do I have to do with your data? Policie...
What may I do with your data? What do I have to do with your data? Policie...
 
London nhs hack day presentation may 2012
London nhs hack day presentation may 2012London nhs hack day presentation may 2012
London nhs hack day presentation may 2012
 

Similar a Wakanda#1

エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
 

Similar a Wakanda#1 (20)

APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimuraAPIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りました
 
JavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 AutumnJavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 Autumn
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
 
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIJavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData API
 
GoF デザインパターン 2009
GoF デザインパターン 2009GoF デザインパターン 2009
GoF デザインパターン 2009
 
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニックOSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
 
初めての Data api
初めての Data api初めての Data api
初めての Data api
 
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングpi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
 
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
 
Cubby 2008-09-06
Cubby 2008-09-06Cubby 2008-09-06
Cubby 2008-09-06
 
jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 

Más de kmiyako

Más de kmiyako (20)

Build an iOS app with Ionic and 4D
Build an iOS app with Ionic and 4DBuild an iOS app with Ionic and 4D
Build an iOS app with Ionic and 4D
 
4D WORLD TOUR 2017
4D WORLD TOUR 20174D WORLD TOUR 2017
4D WORLD TOUR 2017
 
Leaflet
LeafletLeaflet
Leaflet
 
Inside Multi-Threading
Inside Multi-ThreadingInside Multi-Threading
Inside Multi-Threading
 
4D Tags
4D Tags4D Tags
4D Tags
 
Mirroring
MirroringMirroring
Mirroring
 
Objects Fields
Objects FieldsObjects Fields
Objects Fields
 
Code Optimisation
Code OptimisationCode Optimisation
Code Optimisation
 
Auto Update
Auto UpdateAuto Update
Auto Update
 
Classic Query Editor
Classic Query EditorClassic Query Editor
Classic Query Editor
 
Web area-phone-home
Web area-phone-homeWeb area-phone-home
Web area-phone-home
 
MONET研究会 #14
MONET研究会 #14MONET研究会 #14
MONET研究会 #14
 
4d
4d4d
4d
 
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
 
Xslt
XsltXslt
Xslt
 
Journaling slides
Journaling slidesJournaling slides
Journaling slides
 
Unicode-v11-5
Unicode-v11-5Unicode-v11-5
Unicode-v11-5
 
Unicode-v11-0
Unicode-v11-0Unicode-v11-0
Unicode-v11-0
 
アップグレードセミナー
アップグレードセミナーアップグレードセミナー
アップグレードセミナー
 
4D Write Pro
4D Write Pro4D Write Pro
4D Write Pro
 

Último

Último (11)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

Wakanda#1

  • 3. Shibuya, Tokyo agenda WAK3 WAK4 WAK5 openDataStore open4DBase model API v4 model API v5 addOutsideCatalog addOutsideCatalog addRemoteStore addRemoteStore integration
  • 4. Shibuya, Tokyo agenda WAK3 WAK4 WAK5 openDataStore open4DBase model API v4 model API v5 addOutsideCatalog addOutsideCatalog addRemoteStore addRemoteStore http://doc.wakanda.org/--v4/What-s-removed-after.904-991912.ja.html removed in WAK4...
  • 7. Shibuya, Tokyo open4DBase() WAK3 121356 122625 124119 v12 Wrong DB4D version number Wrong DB4D version number Wrong DB4D version number v13 OK OK OK v14 OK OK OK http://doc.wakanda.org/-/-/open4DBase.301-593664.ja.html http://doc.wakanda.org/-/-/open4DBase.301-593664.ja.html
  • 10. Shibuya, Tokyo open4DBase() プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない) プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ) 1フィールドのインデックス(任意: デフォルトの自動をB-Treeに) nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに) n対1リレーション名(推奨: nテーブル名_1テーブル名) 1対nリレーション名(推奨: 1テーブル名_nテーブル名) 命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字 checklist
  • 11. Shibuya, Tokyo open4DBase() プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない) プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ) 1フィールドのインデックス(任意: デフォルトの自動をB-Treeに) nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに) n対1リレーション名(推奨: nテーブル名_1テーブル名) 1対nリレーション名(推奨: 1テーブル名_nテーブル名) 命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字 checklist
  • 12. Shibuya, Tokyo open4DBase() プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない) プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ) 1フィールドのインデックス(任意: デフォルトの自動をB-Treeに) nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに) n対1リレーション名(推奨: nテーブル名_1テーブル名) 1対nリレーション名(推奨: 1テーブル名_nテーブル名) 命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字 checklist
  • 13. Shibuya, Tokyo open4DBase() プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない) プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ) 1フィールドのインデックス(任意: デフォルトの自動をB-Treeに) nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに) n対1リレーション名(推奨: nテーブル名_1テーブル名) 1対nリレーション名(推奨: 1テーブル名_nテーブル名) 命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字 checklist
  • 14. Shibuya, Tokyo open4DBase() プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない) プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ) 1フィールドのインデックス(任意: デフォルトの自動をB-Treeに) nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに) n対1リレーション名(推奨: nテーブル名_1テーブル名) 1対nリレーション名(推奨: 1テーブル名_nテーブル名) 命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字 checklist
  • 15. Shibuya, Tokyo open4DBase() プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない) プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ) 1フィールドのインデックス(任意: デフォルトの自動をB-Treeに) nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに) n対1リレーション名(推奨: nテーブル名_1テーブル名) 1対nリレーション名(推奨: 1テーブル名_nテーブル名) 命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字 checklist http://doc.wakanda.org/home2.ja.html#/-/-.300-661504.ja.html
  • 18. Shibuya, Tokyo open4DBase() var modelFolder = ds.getModelFolder(); var postFolder = modelFolder.parent.parent.path + "Post.4dbase/"; var structureFile = File(postFolder + "Post.4DB"); var dataFile = File(postFolder + "Post.4DD"); var dsPost = open4DBase(structureFile, dataFile);
  • 20. Shibuya, Tokyo openDataStore() http://doc.wakanda.org/-/-/openDataStore.301-592820.ja.html removed in WAK4... WAK3 WAK4 WAK5 waModel XML JSON JSON breakpoints XML JSON JSON waPreferences XML XML XML waSettings XML XML XML waSolution XML XML XML waProject XML XML XML waPerm XML XML XML waDirectory XML XML XML
  • 21. Shibuya, Tokyo openDataStore() var modelFolder = ds.getModelFolder(); var studentsFolder = modelFolder.parent.parent.path + "Students/Students/"; var modelFile = File(studentsFolder + "Model.waModel"); var dataFile = File(studentsFolder + "DataFolder/data.waData"); var dsStudents = openDataStore(modelFile, dataFile);
  • 22. Shibuya, Tokyo openDataStore() var modelFolder = ds.getModelFolder(); var studentsFolder = modelFolder.parent.parent.path + "Students/Students/"; var modelFile = File(studentsFolder + "Model.waModel"); var dataFile = File(studentsFolder + "DataFolder/data.waData"); var dsStudents = openDataStore(modelFile, dataFile);
  • 25. Shibuya, Tokyo free form syntax (v3) http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html guided model guidedModel = { ! Student : ! ! gradeId : ! ! { ! ! ! onGet:function() ! {! unlock script free form syntax model = { ! Student : ! ! gradeId : ! ! { ! ! ! onGet:function() ! {! model.js reload model
  • 26. Shibuya, Tokyo free form syntax (v3) http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html model.js
  • 27. Shibuya, Tokyo free form syntax (v3) http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html model.js guidedModel model クラス GUI JavaScript 属性 GUI JavaScript メソッド JavaScript JavaScript コードエディターにジャンプ YES NO ファイル数 model.js model.js+include()
  • 28. Shibuya, Tokyo free form syntax (v3) http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html model.js guidedModel = { Student : { fullName : { onSet = function(value) { var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } } } }; guided model
  • 29. Shibuya, Tokyo free form syntax (v3) http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html model.js model = {}; model.Student = {}; model.Student.fullName = {}; model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } free form syntax グローバルオブジェクトmodelにアクセス
  • 30. Shibuya, Tokyo free form syntax (v3) http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html model.js model = {}; model.Student = {}; model.Student.fullName = {}; model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } free form syntax グローバルオブジェクトmodelにアクセス deprecated
  • 31. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model.js * @startlock~@endlockを除去してguidedModelをmodelに書き換えるだけ・・・
  • 32. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model.js * @startlock~@endlockを除去してguidedModelをmodelに書き換えるだけ・・・ v3 v4 モデルエディターに表示 NO YES コードエディターにジャンプ NO NO 移行時にコードを自動変換 NO NO* *
  • 33. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model = {}; var sc = model.addClass("Student"); sc.addAttribute("ID", "storage", "long", "key auto"); sc.addAttribute("firstName", "storage", "string", "btree"); sc.addAttribute("lastName", "storage", "string", "btree"); sc.addAttribute("name", "calculated", "string"); sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } model.Student = {}; model.Student.fullName = {}; model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } v3: グローバルオブジェクトmodelにアクセス model.js
  • 34. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model = new DataStoreCatalog(); var sc = model.addClass("Student"); sc.addAttribute("ID", "storage", "long", "key auto"); sc.addAttribute("firstName", "storage", "string", "btree"); sc.addAttribute("lastName", "storage", "string", "btree"); sc.addAttribute("name", "calculated", "string"); sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } model.Student = {}; model.Student.fullName = {}; model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } v4: コンストラクターを使用 model.js
  • 35. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model = new DataStoreCatalog(); var sc = model.addClass("Student"); sc.addAttribute("ID", "storage", "long", "key auto"); sc.addAttribute("firstName", "storage", "string", "btree"); sc.addAttribute("lastName", "storage", "string", "btree"); sc.addAttribute("name", "calculated", "string"); sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } v3コードを削除 model.js
  • 36. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model = new DataStoreCatalog(); var sc = model.addClass("Student"); sc.addAttribute("ID", "storage", "long", "key auto"); sc.addAttribute("firstName", "storage", "string", "btree"); sc.addAttribute("lastName", "storage", "string", "btree"); sc.addAttribute("name", "calculated", "string"); sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } クラスと属性の定義をmodel API v4に書き換え model.js
  • 37. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model = new DataStoreCatalog(); var sc = model.addClass("Student"); sc.addAttribute("ID", "storage", "long", "key auto"); sc.addAttribute("firstName", "storage", "string", "btree"); sc.addAttribute("lastName", "storage", "string", "btree"); sc.addAttribute("name", "calculated", "string"); sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } 計算属性の定義をmodel API v4に書き換え model.js
  • 38. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model = new DataStoreCatalog(); var sc = model.addClass("Student"); sc.addAttribute("ID", "storage", "long", "key auto"); sc.addAttribute("firstName", "storage", "string", "btree"); sc.addAttribute("lastName", "storage", "string", "btree"); sc.addAttribute("name", "calculated", "string"); sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } model.js
  • 39. Shibuya, Tokyo model API (v5) http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html model.js
  • 40. Shibuya, Tokyo model API (v5) http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html v3 v4 v5 モデルエディターに表示 NO YES YES コードエディターにジャンプ NO NO YES 移行時にコードを自動変換 NO NO YES model.js
  • 41. Shibuya, Tokyo model API (v5) http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html unlock script waModel (JSON) WAK4 model API (v4) waModel (XML) WAK3 model.js unlock script free form syntax (v3) waModel (JSON) WAK5 unlock script model API (v5) 移行時にコードを自動変換 する しない
  • 42. Shibuya, Tokyo model API (v5) http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html XML to JSON
  • 46. Shibuya, Tokyo agenda WAK3 WAK4 WAK5 openDataStore open4DBase model API v4 model API v5 addOutsideCatalog addOutsideCatalog addRemoteStore addRemoteStore integration
  • 47. Shibuya, Tokyo agenda WAK3 WAK4 WAK5 openDataStore open4DBase model API v4 model API v5 addOutsideCatalog addOutsideCatalog addRemoteStore addRemoteStore http://doc.wakanda.org/--v4/What-s-removed-after.904-991912.ja.html removed in WAK4...
  • 50. Shibuya, Tokyo open4DBase() WAK3 121356 122625 124119 v12 Wrong DB4D version number Wrong DB4D version number Wrong DB4D version number v13 OK OK OK v14 OK OK OK http://doc.wakanda.org/-/-/open4DBase.301-593664.ja.html http://doc.wakanda.org/-/-/open4DBase.301-593664.ja.html
  • 53. Shibuya, Tokyo open4DBase() プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない) プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ) 1フィールドのインデックス(任意: デフォルトの自動をB-Treeに) nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに) n対1リレーション名(推奨: nテーブル名_1テーブル名) 1対nリレーション名(推奨: 1テーブル名_nテーブル名) 命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字 checklist
  • 54. Shibuya, Tokyo open4DBase() プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない) プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ) 1フィールドのインデックス(任意: デフォルトの自動をB-Treeに) nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに) n対1リレーション名(推奨: nテーブル名_1テーブル名) 1対nリレーション名(推奨: 1テーブル名_nテーブル名) 命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字 checklist
  • 55. Shibuya, Tokyo open4DBase() プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない) プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ) 1フィールドのインデックス(任意: デフォルトの自動をB-Treeに) nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに) n対1リレーション名(推奨: nテーブル名_1テーブル名) 1対nリレーション名(推奨: 1テーブル名_nテーブル名) 命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字 checklist
  • 56. Shibuya, Tokyo open4DBase() プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない) プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ) 1フィールドのインデックス(任意: デフォルトの自動をB-Treeに) nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに) n対1リレーション名(推奨: nテーブル名_1テーブル名) 1対nリレーション名(推奨: 1テーブル名_nテーブル名) 命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字 checklist
  • 57. Shibuya, Tokyo open4DBase() プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない) プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ) 1フィールドのインデックス(任意: デフォルトの自動をB-Treeに) nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに) n対1リレーション名(推奨: nテーブル名_1テーブル名) 1対nリレーション名(推奨: 1テーブル名_nテーブル名) 命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字 checklist
  • 58. Shibuya, Tokyo open4DBase() プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない) プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ) 1フィールドのインデックス(任意: デフォルトの自動をB-Treeに) nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに) n対1リレーション名(推奨: nテーブル名_1テーブル名) 1対nリレーション名(推奨: 1テーブル名_nテーブル名) 命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字 checklist http://doc.wakanda.org/home2.ja.html#/-/-.300-661504.ja.html
  • 61. Shibuya, Tokyo open4DBase() var modelFolder = ds.getModelFolder(); var postFolder = modelFolder.parent.parent.path + "Post.4dbase/"; var structureFile = File(postFolder + "Post.4DB"); var dataFile = File(postFolder + "Post.4DD"); var dsPost = open4DBase(structureFile, dataFile);
  • 63. Shibuya, Tokyo openDataStore() http://doc.wakanda.org/-/-/openDataStore.301-592820.ja.html removed in WAK4... WAK3 WAK4 WAK5 waModel XML JSON JSON breakpoints XML JSON JSON waPreferences XML XML XML waSettings XML XML XML waSolution XML XML XML waProject XML XML XML waPerm XML XML XML waDirectory XML XML XML
  • 64. Shibuya, Tokyo openDataStore() var modelFolder = ds.getModelFolder(); var studentsFolder = modelFolder.parent.parent.path + "Students/Students/"; var modelFile = File(studentsFolder + "Model.waModel"); var dataFile = File(studentsFolder + "DataFolder/data.waData"); var dsStudents = openDataStore(modelFile, dataFile);
  • 65. Shibuya, Tokyo openDataStore() var modelFolder = ds.getModelFolder(); var studentsFolder = modelFolder.parent.parent.path + "Students/Students/"; var modelFile = File(studentsFolder + "Model.waModel"); var dataFile = File(studentsFolder + "DataFolder/data.waData"); var dsStudents = openDataStore(modelFile, dataFile);
  • 68. Shibuya, Tokyo free form syntax (v3) http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html guided model guidedModel = { ! Student : ! ! gradeId : ! ! { ! ! ! onGet:function() ! {! unlock script free form syntax model = { ! Student : ! ! gradeId : ! ! { ! ! ! onGet:function() ! {! model.js reload model
  • 69. Shibuya, Tokyo free form syntax (v3) http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html model.js
  • 70. Shibuya, Tokyo free form syntax (v3) http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html model.js guidedModel model クラス GUI JavaScript 属性 GUI JavaScript メソッド JavaScript JavaScript コードエディターにジャンプ YES NO ファイル数 model.js model.js+include()
  • 71. Shibuya, Tokyo free form syntax (v3) http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html model.js guidedModel = { Student : { fullName : { onSet = function(value) { var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } } } }; guided model
  • 72. Shibuya, Tokyo free form syntax (v3) http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html model.js model = {}; model.Student = {}; model.Student.fullName = {}; model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } free form syntax グローバルオブジェクトmodelにアクセス
  • 73. Shibuya, Tokyo free form syntax (v3) http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html model.js model = {}; model.Student = {}; model.Student.fullName = {}; model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } free form syntax グローバルオブジェクトmodelにアクセス deprecated
  • 74. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model.js * @startlock~@endlockを除去してguidedModelをmodelに書き換えるだけ・・・
  • 75. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model.js * @startlock~@endlockを除去してguidedModelをmodelに書き換えるだけ・・・ v3 v4 モデルエディターに表示 NO YES コードエディターにジャンプ NO NO 移行時にコードを自動変換 NO NO* *
  • 76. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model = {}; var sc = model.addClass("Student"); sc.addAttribute("ID", "storage", "long", "key auto"); sc.addAttribute("firstName", "storage", "string", "btree"); sc.addAttribute("lastName", "storage", "string", "btree"); sc.addAttribute("name", "calculated", "string"); sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } model.Student = {}; model.Student.fullName = {}; model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } v3: グローバルオブジェクトmodelにアクセス model.js
  • 77. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model = new DataStoreCatalog(); var sc = model.addClass("Student"); sc.addAttribute("ID", "storage", "long", "key auto"); sc.addAttribute("firstName", "storage", "string", "btree"); sc.addAttribute("lastName", "storage", "string", "btree"); sc.addAttribute("name", "calculated", "string"); sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } model.Student = {}; model.Student.fullName = {}; model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } v4: コンストラクターを使用 model.js
  • 78. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model = new DataStoreCatalog(); var sc = model.addClass("Student"); sc.addAttribute("ID", "storage", "long", "key auto"); sc.addAttribute("firstName", "storage", "string", "btree"); sc.addAttribute("lastName", "storage", "string", "btree"); sc.addAttribute("name", "calculated", "string"); sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } v3コードを削除 model.js
  • 79. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model = new DataStoreCatalog(); var sc = model.addClass("Student"); sc.addAttribute("ID", "storage", "long", "key auto"); sc.addAttribute("firstName", "storage", "string", "btree"); sc.addAttribute("lastName", "storage", "string", "btree"); sc.addAttribute("name", "calculated", "string"); sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } クラスと属性の定義をmodel API v4に書き換え model.js
  • 80. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model = new DataStoreCatalog(); var sc = model.addClass("Student"); sc.addAttribute("ID", "storage", "long", "key auto"); sc.addAttribute("firstName", "storage", "string", "btree"); sc.addAttribute("lastName", "storage", "string", "btree"); sc.addAttribute("name", "calculated", "string"); sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } 計算属性の定義をmodel API v4に書き換え model.js
  • 81. Shibuya, Tokyo model API (v4) http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html model = new DataStoreCatalog(); var sc = model.addClass("Student"); sc.addAttribute("ID", "storage", "long", "key auto"); sc.addAttribute("firstName", "storage", "string", "btree"); sc.addAttribute("lastName", "storage", "string", "btree"); sc.addAttribute("name", "calculated", "string"); sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } model.js
  • 82. Shibuya, Tokyo model API (v5) http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html model.js
  • 83. Shibuya, Tokyo model API (v5) http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html v3 v4 v5 モデルエディターに表示 NO YES YES コードエディターにジャンプ NO NO YES 移行時にコードを自動変換 NO NO YES model.js
  • 84. Shibuya, Tokyo model API (v5) http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html unlock script waModel (JSON) WAK4 model API (v4) waModel (XML) WAK3 model.js unlock script free form syntax (v3) waModel (JSON) WAK5 unlock script model API (v5) 移行時にコードを自動変換 する しない
  • 85. Shibuya, Tokyo model API (v5) http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html XML to JSON