【以下ブログのとおり、現在作成途上です。了承のうえ下へお進みを】
データ駆動
まずデータ駆動とは、英語なら Data Driven。その名称の意味する通り、データにより何かが引き起こされるもの。行われる挙動の起点となるものが登録されているデータによって変化する仕組みのことを指しています。
しかし、人によって捉え方はさまざまで誤解も生じやすいため、ここで説明を補足いたします。
ただ、ここでいうデータ駆動の場合、さらにその先のある概念を含んでおり(実はそこが本質であり肝でもある)、後半部分にて説明いたします。
データ駆動の捉え方
まず、人それぞれの捉え方について、例えば、この名称はリアルタイムの動的なイメージで捉えられる場合もあります。
「データが変化するとそれをトリガーに、次の瞬間、何かが起こる」
確かにそれもデータ駆動、むしろそちらのほうが言葉の意味としてはより適切なのかもしれません。
しかし本システムの場合は、データ変化で変更イベントが起こるような意味ではなく、静的な観点の動作を指しています。
JavaやphpなどによるWebシステムのサーバサイドでは、データ内容の変更に伴い表示結果が変わること自体、システム目線では、一般的には動的な振る舞いと受け取られています。
その意味では、本システムのデータ駆動も動的であると言えます。
しかし、結果として表示されるページは、ユーザー目線では、そのまま静的な状態を保ちます。
htmlコンテンツの特性として、データを変更してもページの再表示を行わなければ変更内容は反映されません。
そういった意味で、ユーザー視点の場合、本システムで提供する主な機能の振る舞いは静的な観点の動作としています。
おそらくajaxなどを利用して、ページ移動なしで情報を取得し表示が変わる状態がユーザー視点の場合の動的な振る舞いになると考えます。
概念的にややわかりにくいと思われたかもしれませんが、データ変更による変化には、ページ再表示が必要ということだけ知っておいてください。
データ駆動:◇基本的な挙動
続いて、データ駆動の、データ変化がもたらす振る舞いで、まずは最も基本的で一番単純な挙動の場合について説明いたします。
まず、Webサイト上の各種コンテンツの表示の振る舞いとして、データの登録内容によって表示文言やその表示構成が変化します。
データ駆動:◇データ変更とソース修正
それは、例えばページの背景色を白から赤に変更する場合に、データ上で白から赤に変更する、というDBのデータ変更操作を行います。
そこだけ見ると、htmlソースの該当部分をそのように変更すれば、当然同じように表示状態が変化するため、そんなデータ変更操作に何の意味があるの?や、ソースを直接修正すればいいだけでしょ?と、疑問に思われる方もいらっしゃると思います。
データ駆動:◇コスト(時間・量)、スキル、リスク
ここで重要なことは、その変更にかかる時間と、その変更対象の量の違い、必要なスキル有無、元のソースに対する変更リスクの有無です。
修正部分が1か所だけなら、変更にかかる時間の差異はそれほどありませんが、それが100か所ならどうでしょう?
データ駆動:◇ソース修正は、ハイリスク、ハイコスト
その変更すべき場所が項目としてピックアップされたDBのデータに対する登録値の変更作業と、htmlソースのhtml構造のどこかにある変更箇所をその構造を読み解きながら探して適切な値にソースを直接修正する作業。
数が増えるほどに、その所要時間はだんだんと差が開く(時間増加=ハイコスト)ばかりか、ソース修正の場合は、変更箇所や変更内容を誤れば、表示状態を壊しかねない大きなリスクを背負います。(リスクは極大)
そうならないために高いスキルのエンジニア(スキル相応の料金=ハイコスト)が注意深く作業を行う(時間がかかる=ハイコスト)必要があり、それでも状況により、思わぬバグが仕込まれる危険性は残ります。
データ駆動:◇データ登録は、ローコスト、ローリスク
変更したい箇所に対するデータ登録の場合、もちろん内容を誤れば、その部分は正しくない表示となります。しかし、元となるhtmlソースの構造を壊すことがありません(壊れない=リスクは極小)。また、html構造に沿った表示の中でおかしな部分だけがおかしな表示となり、何がおかしかったのかも気付きやすいため、修正も的確に行える可能性が高い(最小復旧=ローリスク)です。
そして、1番肝心なことは、ソース修正の場合は、相応の高いスキルのエンジニアが必要になるということです。(コストに大きく跳ねる)
これに対して、変更可能部分がピックアップ済のデータの値変更の場合は、ソースを触ることなく、ソースを壊す心配もなく、html構造に関する深い知識なし(委託不要または低賃金=ローコスト)に、気軽かつ自在な変更が可能となることです。
データ駆動:◇その本システムにおける概念
データと一口に言ってもいろんな形態があります。
JavaやphpなどでDBを利用するWebシステムのサーバサイドではごく普通にやっていることですが、それらのシステムでは、表示する名称や値などをDBに登録し、表示のためにその値を参照して、コンテンツに表示させます。
説明の便宜上、前述する振る舞いの説明でも例としたように、定義や振る舞い的な話でいえば、データの登録内容により表示内容が変わるものであることから、これもデータ駆動である、といえます。
しかし、このサービスで提供するデータ駆動とは、そんな当たり前なことができるなどと、高らかに言っているわけではありません。
これまでの説明やサービスの商品説明を読まれた方の中には、おそらくこの部分について誤解・曲解された方も多いものと思います。説明が不十分で申し訳ない限りです。
そう思われたことを大変恥ずかしいとも思いますが、説明可能なスペースの関係からうまく説明できていないという状況でもありました。
そんな状況を打開したく、このブログの利用を思いつき、この執筆に至ったわけですが、それでもなかなか理解の得られる説明は難しいものです。
できるだけ噛み砕いた説明を行ったつもりですが、一人でも多くの方に正しい理解が届けられることを切に願っています。
横道に逸れてしまいましたのでこの辺りで復帰します。
データ駆動:◇ツリーと形
さて、このサービスで提供するデータ駆動。それは簡単に言えば、「ツリー」と「形」で形成されるものと考えており、以下のような情報を指します。
・「ツリー構造情報」
(特定のアイテムについて多階層の親子構造を形成するその情報の集合体)
・「表示させる形」
(表示粒度や表示レイアウトなどのテンプレート的切替制御や表示制御)
(例えば一覧形式やカード形式、簡易表示や詳細表示のような表示の形)
データ駆動:◇ツリー構造情報と表示させる形
このうちの主に下記の「ツリー構造情報」について、DBへのデータ登録を行います。
また下記の「表示させる形」は、JavaScriptやCSS、xsltなど(そのほか、そもそものjspにおける表示編集部分などを使う場合もありますが)、利用可能な形で予め準備したものを指します。
それらにより外部から、DBデータの「ツリー構造情報」とマージして表示したり、その振る舞いを制御します。
また「表示させる形」と「ツリー構造情報」の組み合わせ(紐付け)もDBへデータ登録します。
さらにこの「ツリー構造情報」はある特定のアイテムの親子関係に関する構造ですが、それを一括りとするさまざまな種類の「ツリー構造情報」があり、それらを組み合わせて、複合的・総合的な結果のコンテンツ表示を行うというものです。
データ駆動:◇コンテンツの全てはアイテムとツリー構造で表現可能
持論ですが、Webコンテンツ上で表現されるもの、そのたいていの情報は「様々な属性を持つ個々のアイテムのツリー構造やリスト構造」で表せるものであると考えています。
即ち、さまざまな属性を持つ、元となる情報に対して、どのようなレイアウトを適用して表示するか、という感じのことになります。
例えば、当Webシステムのヘッダ部では、その領域の高さや背景画像などをデータとして登録し、それに応じた状態で表示されます。
サンプルのデモサイト
サンプルとして作成しているサイトでは、さらにその上のレイヤーに何かを配置するための配置構造をツリー構造で定義しています。
それは例えば、上、中、下の縦方向の配置構造とそれぞれの中に左、中央、右のような配置構造を定義しています。それぞれの個数は説明の便宜上3個で記載しましたが、3個と決まっているわけではなく、表示領域の許す範囲で、何個でも定義可能です。
そういった配置に関するツリー構造や、子や孫へと連なるメニューのツリー構造など、さまざまなツリー構造の形があると思います。イメージを掴みにくい場合は、サンプルのデモサイトの画像を参照すると理解しやすいかもしれません。
(「サンプルのデモサイト」については、以下リンクをご参照ください)
【作成途上です】