<Blog> DB設計と「ストーリーを作る」

はい。やってみます。

お話は突然にやってくる。

ある友人から急にFacebookのメッセージご入りました。

今度仕事でコミュニケーションの仕事でストーリーを作るということをするんだけど、なんかDB設計と似てない?スキーマデザインとか、右脳使わない?

‥‥‥ふぁ!?ストーリーを作るってなんだ!?

と、一瞬困惑はしたものの、よし、これは面白いテーマを与えられたぞと思い、スキーマデザインをする中でやることと、右脳ポイント・左脳ポイントをまとめておこうと思います。

スキーマデザインでやること

流れをまとめると、このような感じになると思います。

  1. ユースケース図の作成
  2. E-R図の作成
  3. カラムの決定
  4. シーケンス、パーティション、インデックスの決定

デザインの上流であれば、あるほど肝になってくるので、一個ずつ丁寧にやっていく必要があります。

訳わからない英語やカタカナが並んでると感じてしまう人もいると思うので、それぞれを、料理に例えてみましょう。

  1. ユースケース図の作成 →献立を決める。それぞれの献立どうしがどんな働きをしているのか考える。例えば、しょっぱいものの後のお口直しとか。

  2. E-R図の作成 →献立どうしの関係を考える。例えば、肉じゃがに使ったジャガイモを、味噌汁にも入れられるな、とか、主菜がこれならば副菜はこれが必要だな、とか。

  3. カラムの決定 →献立ごとに必要な材料をリストアップする。複数のメニューに登場する必須なものは要チェック。

  4. シーケンス、パーティション、インデックスの決定 →自分好みのスパイスがある場合は、どの料理に使うかを決める。隠し味的要素。

ストーリーを作ることとの共通点

ぱっと見だと、献立を作るところに1番の醍醐味があるかもしれません。どんな登場人物にどんな役割を与えるのかというところが決まってしまえば、あとは自然に進んでしまうように考えられることもあります。

でも、どちらかというと、4番のほうが右脳を使うと思うのです。

こんな例で考えてみましょう。

  • クリスマスが近いからチキンを食べよう。
  • 寒くなってきたから鍋を食べよう。

というのは、それぞれ納得感があるロジックではありますが、全く異なる特性を持っています。

前者は「固定観念」を重要視しています。クリスマス=チキンという概念がない人にとっては全然意味不明ですが、すでにその習慣がある文化圏の人にとってはチキンを食べずにはいられません。後者は「効率化」を重要視しています。寒い=あったまるものという感覚的な直感から導かれた献立となっています。コタツに入るだけじゃなく、体の中からあったまりたい、というもっといい効率を望んでいる結果です。

これはDB設計にも同じことが言えて、既に正規化という考え方が浸透している中では当たり前のリレーションの張り方や、当たり前の味付けが決まっていて、それをやらずにはいられないこともあります。この「固定概念」にとらわれた設計ばっかりやっていても、右脳はあまり働かず、単純な作業に落ちることが多いです。

どちらかと言うと、「効率化」をはかるために、4番の味付けや隠し味を探して、ひねり出すという作業が現代のDBアプリがカバーできない部分を人間がやることになるので、右脳にアドレナリンがでまくります。

右脳使いのDBA

運用、というものは、できるだけ定例化され平準化されたものが良しとされる場面もありますが、やはりエンジニアたるもの「攻めの運用」姿勢が大事だと思います。右脳の入り込む余地を作って設計をすること、それは、自身の成長にもつながると思いますし、後世に対しても外部に対しても、一定のプレゼンスを発揮するきっかけになると思うのです。

言われたことだけやってればいい、ではなく、頭は使ってなんぼの世界で生きていきたいなぁとしみじみ思う、問いかけでした。