一つのシステムを複数の言語で開発することがある。例えばサーバーをJavaで開発しクライアントをTypeScriptで開発する、などだ。こんな時、定数の一覧をYAMLなどでファイル化しよう。そして、YAMLから各言語の定数ファイルを自動生成するものも作ろう。すると、サーバーとクライアントのやりとりでtypoによるエラーがなくなって便利だ。例えばプロフィール入力画面があったとする。そこで入力する性別がman/womanとmale/femaleのどちらにしようか、また大文字か小文字か間違えないようにしたい。こんなYAMLを作ろう。
MALE: MALE
FEMALE: FEMALE
そこから生成したGoとTypeScriptはこんな感じだ。
const (
MALE = "MALE"
FEMALE = "FEMALE"
)
const MALE = "MALE",
FEMALE = "FEMALE";
TSXからこんな感じに使える
return <select>
<option value={MALE}>{MALE}</option>
<option value={FEMALE}>{FEMALE}</option>
</select>
サーバーサイドはこんな風に描ける
func PutGender(userid , gender string) {
if gender != MALE && gender != FEMALE {
panic(gender)
}
db.put(userid , gender)
}
このようにサーバークライアント通じて安全にプログラミングができて便利だ。
Swaggerなど関連する便利なツールもあるので利用していきたい。