isyumi_netブログ

isyumi_netがプログラミングのこととかを書くブログ

複数の言語で開発する時は定数を一元管理できるようにしよう

一つのシステムを複数の言語で開発することがある。例えばサーバーを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など関連する便利なツールもあるので利用していきたい。