ERDの作成

プロジェクトを作成したら、まずアプリケーションのテーブルを定義しましょう。
ここではERD設定画面の使い方を説明します。

DatastoreとCloudSQLのERD設計についてより詳しく知りたい方は以下からご確認ください。
DatastoreのERD設計
CloudSQLのERD設計

ERD設定画面の使い方解説動画

TemPlatでのERD設定画面の使い方に関しては、動画解説がありますのでこちらも参考にしてください。

操作ボタンに関して

ERD画面の右側にいくつかの操作ボタンがあります。
こちらのボタンの種類はテーブルの選択状態によって変化し、それぞれ実行できるアクションが異なります。

テーブル未選択時の操作ボタン

こちらがテーブルを一つも選択していない状態でのボタンの表示です。

1つ目のボタンは新規のTable(またはStruct)を作成するボタンです。
なお、このボタンは一つもテーブルを選択していない時だけ表示されます。

2つ目のボタンはERDを間違えて変更してしまった時に、以前の状態に戻すためのロールバックボタンです。
ロールバックできるのは、過去にビルドを行なった時点のみです。
なお、このボタンは一つもテーブルを選択していない時だけ表示されます。

3つ目と4つ目のボタンはERDのTable(またはStruct)間の関連線の表示・非表示を切り替えるボタンです。
それぞれの関連線の詳細に関しては後ほど詳しく解説します。
なお、これらのボタンはテーブルの選択状態に関わらず表示されます。

ボタンの説明(テーブル一つ選択状態)

こちらがテーブルを一つだけ選択している状態でのボタンの表示です。

テーブルを一つ選択している状態では、選択しているテーブルに対するボタンが表示されます。
それぞれのボタンで、選択しているテーブルの編集、コピー、削除が行えます。

ボタンの説明(テーブル複数選択状態)

こちらがテーブルを複数選択している状態でのボタンの表示です。

これらは選択したテーブルを縦横に揃える(整列させる)ためのボタンです。
データ自体には影響を及ぼしませんが、関連するテーブルを横に並べる等、見た目を整えるために使用します。

テーブルの設定方法

テーブルの設定では、テーブルの名前(Struct Name)とタイプ(Type)、コメント(Struct Comment)が指定でき、テーブルのフィールドを自由に追加出来ます。

テーブルの名前の規約

テーブル名に関しては「パスカルケース」で入力してください。
「パスカルケース」では、単語の先頭を大文字にします。一番先頭も大文字です。
なお、このネーミングルールはこのあと説明する「フィールド名(テーブルの各項目名)」でも同じです。
(誤) PRODUCT → (正) Product
(誤) PRODUCT_DETAIL → (正) ProductDetail
(誤) userGroup → (正) UserGroup

また、Go言語の規約として「省略語はすべて大文字とする」というものがあります。
こちらは、設定を正しく行わない場合でもビルドは可能ですが、表記揺れによる思わぬバグを防ぐためにも従っておいた方が良いでしょう。
代表的なものでいうと「ID」や「URL」などがあります。
(誤) Url → (正) URL
(誤) ImageUrl → (正) ImageURL
(誤) UserId → (正) UserID

テーブルのType(Datastoreのみ)

Datastoreを使う場合、ERDの構成要素としては「Table」と「Struct」があります。
なお、TableとStructの違いや使い所はDatastoreのERD設計で説明しているので、そちらを参照してください。

ERD設定画面では、テーブルを新規作成する時に「Table」と「Struct」を指定できます。

また作成されたERD画面上での表示は基本色で区別できます。Tableが青で、Structが緑になります。

フィールドの追加と名前

Tableを新規作成する際に「ID」という名称のフィールドが初期で設定されています。
これはKeyになるフィールドなので、名称は固定です。型は初期はnumberですが、stringにすることもできます。
なお、型をnumberにした場合、「ID」は自動で採番されますが、stringの場合は手動で指定する必要があります。
また、TypeがStructの場合はKeyが存在しないため、「ID」はありません。

それ以外のフィールドは編集画面の下の方にあるプラスボタンで追加していきます。

各フィールドの設定では「Field Name」「Type」が設定が必要な項目となります。
「Field Name」はプログラム上で使用する物理名です。
ここはテーブルの名前と同様の規約で「パスカルケース」で名前をつけてください。

フィールドのType(型)

一番左側の「Type」に指定できるものには大きく3つの種類があります。
1つ目は、いわゆる「プリミティブ型」的なもので、一般的なプログラム言語で用意されている型になります。
TemPlatでは以下の型が利用できます。

Type
string文字列
number数値
boolブール値(true or false)
time日付時刻

2つ目は、ERDで定義したStructの指定になります。Datastoreの場合、StructはTableのフィールドとして使えるので、そのようなケースで指定します。Structを選んだ場合、その右側に実際にどのStructを使うかを選ぶことができるようになります。

3つ目は、配列(array)になります。これはここまで出てきたプリミティブ型やStructを配列として持つ場合に使用します。

テーブル間の関連線

ERD設定画面ではTableおよびStruct間の関連を示す以下の2種類の関連線を表示することができます。

関連の種類線の色説明
自動関連線水色フィールドのTypeでStructを選択すると自動的に引かれる関連線
ユーザー定義関連線
(Datastoreのみ)
オレンジフィールドのRelatedで他のTableを指定すると引かれる関連線

自動関連線

自動関連線はフィールドのTypeでStructやArrayを選択すると自動的に引かれる関連線です。
以下の例では、TableとStructの関連線を説明します。
なお、CloudSQLモードの場合はStructは存在しませんが、代わりにTableとTableを関連付けることが可能です。

以下は、ProductDetail(商品詳細)テーブルに対して、商品の仕様を保持したSpecInfo(仕様情報)Structを配列で持っているようなケースです。同じ商品でも色とかサイズ、重さがいくつかあり、それを購入時に選択できます。

この関連線は以下の設定によって引かれています。基本TableがStructを持つケースは単一のStructをもつ場合と、配列として持つ場合がありますが、どちらでもこの関連線は引かれます。

ユーザー定義関連線(Datastoreのみ)

ユーザー定義関連線はDatastoreモードでTableとTableの間の関連をメモしておくために利用します。
DatastoreモードではERD上でTableとTableの連携が出来ませんが、片方のTableのIDをもう片方のTableで保持する等してTableとTableの間に関連づけを行うことは可能です。
そういった場合、自動関連線は引かれませんので、メモとしてユーザー定義関連線を引くことが出来ます。
DatastoreモードでのTable同士の関連付け方法に関してはDatastoreのERD設計をご参照ください。

以下、Table間の関連線の例になります。以下は商品(Product)Tableと、商品詳細(ProductDetail)Table間で関連線を引いています。この例では一つの商品に複数の商品詳細があるケースで、ProductDetailの親ProductのIDを「ProductID」というフィールドで持っています。

この場合のERDの設定は以下のようになります。ProductDetailが親ProductのIDを持っているいるのでそのフィールド定義でRelatedを「ProductID」に設定しています。

ユーザー定義関連線はERDの表示上のみしか影響はなく、実際に生成されるソースコードには影響しません。
ですので、関連線を引いたTableのレコードをまとめて取得したいなどの要件がある場合には、APIのソース(Handler)をカスタマイズする必要があります。
カスタマイズの方法は標準APIのカスタマイズ例で説明していますので参考にしてください。