あなたは親戚の名前や兄妹の人数など覚えているでしょうか?私は覚えられません。まして結婚して親戚の数が倍になると言うまでもないです。また、先日の母とこのような会話をしました。
母「aさん(私の嫁の叔母)って bさん(私の嫁の父)の姉なの?妹なの?」
私「aさんはbさんの姉だよ。」
私は思いました。
これ前も聞かれなかったか?
というか、誰かが結婚する度に親戚が増えるわけだから覚えられるわけなくね?
ということで情報共有とその可視化に取り組むことにしました。
技術選定
- 管理・更新が容易(テキストベース)
- 図を自動生成できる
上記の条件を満たすOSSがありました。*1 github.com
kingraphとは
家系図をJavaScriptとGraphvizで作図するツールです。インストール方法などはREADMEをみましょう。
以下ではドラゴンボールの家系図を例に書き方を軽く説明します。
例: ドラゴンボールの孫悟空周りの家系図
※牛魔王やサタンの妻はわからないのでとりあえず”牛魔王の妻”・”サタンの妻”としています
YAMLファイルの書き方
ソース: db-family-tree/son.yml at master · nagamoto/db-family-tree · GitHub
親子は次のように定義できます。簡単ですね。
parents: [悟空, チチ] children: [悟飯, 悟天]
それぞれの人の詳細を設定することもできます。今回は兄弟の生まれた順番を図に表現するために、fullnameというプロパティを本来とは違う用途で利用しています。また、後述するスタイリングのためにclassにmaleを指定しています。
people: ラディッツ: fullname: 第一子 class: [male] 悟空: fullname: 第二子 class: [male]
図に細かなスタイリングを施すこともできます。今回は男性であれば枠が青、女性であれば枠が赤となるように設定しました。
styles:
male:
color: blue
female:
color: red
保守運用
誰かが結婚したり、子供が生まれたりしたときにはPullRequestを投げてもらいます。*2これでエンジニアらしく、常に最新の家系図が作成されます。
最後に
マジレスをすると、そもそも結婚や出産はそう頻繁に起こることではないので、これはやりすぎです。 また、「親族にエンジニアはそう何人もいない」=「メンテナが少ない」となるため、特定の少数メンバのみが更新するというつらい運用になるでしょう。
