11
7

More than 5 years have passed since last update.

エンジニアなので家系図をGitHub上にYAML形式で管理する

Posted at

あなたは親戚の名前や兄妹の人数など覚えているでしょうか?私は覚えられません。
そもそも誰かが結婚する度に親戚が増えるわけだから覚えられるわけがない、私はそう思っています。

ということで家族間の親族情報共有とその可視化に取り組むことにしました。

技術選定

  • 管理・更新が容易(テキストベース)
  • 図を自動生成できる

という条件を満たすkingraphというOSSを見つけました。
https://github.com/rstacruz/kingraph

kingraphとは

家系図をJavaScriptとGraphvizで作図するツールです。インストール方法などはREADMEをみましょう。

以下ではドラゴンボールの家系図を例に書き方を軽く説明します。

例: ドラゴンボールの孫悟空周りの家系図

公開リポジトリ: https://github.com/nagamoto/db-family-tree
image.png
※牛魔王やサタンの妻はわからないのでとりあえず”牛魔王の妻”・”サタンの妻”としています

YAMLファイルの書き方

親子は次のように定義できます、簡単ですね。

son.yml
parents: [悟空, チチ]
children: [悟飯, 悟天]

それぞれの人の詳細を設定することもできます。今回は兄弟の生まれた順番を図に表現するために、fullnameというプロパティを本来とは違う用途で利用しています。また、後述するスタイリングのためにclassにmaleを指定しています。

son.yml
people:
  ラディッツ:
    fullname: 第一子
    class: [male]
  悟空:
    fullname: 第二子
    class: [male]

図に細かなスタイリングを施すこともできます。今回は男性であれば枠が青、女性であれば枠が赤となるように設定しました。

son.yml
styles:
  male:
    color: blue
  female:
    color: red

保守運用

誰かが結婚したり、子供が生まれたりしたときにはPullRequestを投げてもらいます。太郎くんが生まれた際に作られるブランチはdeploy-taroでしょうか。これでエンジニアらしく、常に最新の家系図が作成されます。

最後に

マジレスをすると、そもそも結婚や出産はそう頻繁に起こることではないので、これはやりすぎです。
また、「親族にエンジニアはそう何人もいない」=「メンテナが少ない」となるため、特定の少数メンバのみが更新するというつらい運用になるでしょう。

11
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
7