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