以下の内容はhttps://ngmt83.hatenablog.com/entry/2019/03/12/085000より取得しました。


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

あなたは親戚の名前や兄妹の人数など覚えているでしょうか?私は覚えられません。まして結婚して親戚の数が倍になると言うまでもないです。また、先日の母とこのような会話をしました。

母「aさん(私の嫁の叔母)って bさん(私の嫁の父)の姉なの?妹なの?」

私「aさんはbさんの姉だよ。」

私は思いました。

これ前も聞かれなかったか?

というか、誰かが結婚する度に親戚が増えるわけだから覚えられるわけなくね?

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

技術選定

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

上記の条件を満たすOSSがありました。*1 github.com

kingraphとは

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

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

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

https://github.com/nagamoto/db-family-tree/blob/master/son.png?raw=true

牛魔王やサタンの妻はわからないのでとりあえず”牛魔王の妻”・”サタンの妻”としています

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これでエンジニアらしく、常に最新の家系図が作成されます。

最後に

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

*1:最初はPlantUMLでクラス図の記法で家系図を書こうとしていましたが、兄妹をうまく表現できず諦めました

*2:太郎くんが生まれた際に作られるブランチはdeploy-taroでしょうか




以上の内容はhttps://ngmt83.hatenablog.com/entry/2019/03/12/085000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14