Umi Blog
ウミブログ

こんにちは。
ウミでは1月にデザイナーさんとエンジニアさんがそれぞれ1人ずつ加わり、さらに活気が出てきました。最近会社の方針などについてみんなで話し合う機会が多いですが、それぞれ人生経験も違うので様々な意見が出てきて面白いです。
さて今回は、新人さんによく聞かれる「コンテンツと構成の見分け方」について、自分なりの考え方を紹介したいと思います。
「コンテンツも構成も何かのデータということはわかるけど、管理画面を見てもどれがコンテンツで、どれが構成かわからない」というのは、Drupal初心者あるあるかと思います。そのような方のヒントになれば幸いです。
後述しますが、
など扱い方に違いがあるため、サイトビルディングに関わる人は誰でも知っておくと便利です。
いきなりですが表にするとこんな感じです。
| コンテンツ | 構成 | |
|---|---|---|
| 例 | ノード、ターム、ユーザー | コンテンツタイプの設定、Viewsの設定、権限設定 |
| 用途 | サイトのコンテンツ(実データ、サイトの命!)を保存するのに使う | サイト構築で必要な設定を保存するのに使う |
| 触る人 | CMS利用者の場合が多い | 開発者の場合が多い |
| サイトリリース後は | 増え続けることが多い | 変わらないことが多い |
| フォームの特徴 | ノードの編集画面のように、決められたフィールドに入力することで、同じ形式のデータを何個でも作ることができる | Viewsの設定画面のように、大項目の中に小項目が何重にもネストされている |
以下、ジャンル別にまとめてみました。初心者さんから見ると、意外?それとも想像通りでしょうか?
ほぼ全部構成です。ただし例外もあります↓
管理画面上では似てるようなそうでもないようなコンテンツと構成ですが、扱い方には以下のような違いがあります。
| コンテンツ | 構成 | |
|---|---|---|
| drush cexすると | ファイルに出力できない | ファイルに出力できる |
| Git管理 | できない | できる |
| 復旧方法 | DBのバックアップをインポートする | Gitでファイルを元に戻し、DBにインポートし直す |
コンテンツも構成も最初はデータベースに保存されますが、ファイルに出力できるかどうかが違います。drush cexは、データベースから構成をエクスポートするコマンドです。コンテンツはdrush cexしてもファイルに出力できないので、Git管理はできませんが、構成はdrush cexするとファイルに出力できるため、通常はGit上で管理します。なので、構成を変更した後はコミットするのを忘れずに!
DBバックアップの無い状態で、DBがおかしくなるようなアクシデントがあった場合(間違って管理画面から変更してしまう、DBのスキーマのアップデートに失敗する等)、致命的なのはコンテンツです。コンテンツは元のDBが無いと復旧できません。構成の場合は、Git管理していてファイルが存在していればdrush cimいつでも元に戻すことができます。というわけで作業前は必ずバックアップを取りましょう & コンテンツを間違って変更しないように気をつけましょう!
バックエンドよもやま話なので、興味の無い方はスルーしてください。コンテンツの値は、フィールドをカラムとして、テーブルのような形で表現することができます。
| タイトル | 本文 | 投稿日 |
|---|---|---|
| 記事1のタイトル | 記事1の本文 | 記事1の投稿日 |
| 記事2のタイトル | 記事2の本文 | 記事2の投稿日 |
| ... | ... | ... |
それに対して、構成はツリー状です。Viewsの設定を以下にコピペしました。例えば、displayの下にdefaultがあり、その下にはid、 display_title、などの小項目があり、さらにその下にも小項目があり...というように構成は無限にネストすることができます。
...
id: archive
label: アーカイブ
display:
default:
id: default
display_title: マスター
display_plugin: default
position: 0
display_options:
title: マンスリーアーカイブ
fields: { }
pager:
type: mini
options:
offset: 0
items_per_page: 10
total_pages: 0
id: 0
tags:
next: ››
previous: ‹‹
expose:
items_per_page: false
items_per_page_label: ページ毎の件数
items_per_page_options: '5, 10, 25, 50'
items_per_page_options_all: false
items_per_page_options_all_label: '- 全て -'
offset: false
offset_label: オフセット
...
個人的には、この形の違いがコンテンツと構成の決定的な違いなのかな〜と思っています。
ちなみにDrupalでコンテンツ、構成に次いでよく使われる「ステート」はkey value pairと呼ばれる通り1:1の形をしています。
my_process_last_execution_time: 2024-01-01
この三種の神器があれば、だいたいどんなものでも保存できますね。
というわけで、コンテンツと構成の違いの紹介でした。管理画面を見ていて、「これはコンテンツか構成か?」と迷った場合は
→コンテンツ!
→構成!
という風に考えてみるといいかもしれません。
そして、
ことを忘れないでくださいね。
ところで今回のアイキャッチ画像はITとは全然関係ない風景画像ですが、なぜこのような画像にしたかわかりますか?ここまで読んだ鋭い方は気づかれたかもしれませんね....
画像の中に「テーブル」と「ツリー」があるってことにね...!(ズコー)
それでは楽しいDrupalライフを!
小さなご意見も、私たちにとっては大きなヒントです!
ぜひ率直なご感想をお寄せください
この

Masters of Drupal Engineering.
人に、