Pickles 2

モジュールメンテナンスに関する注意事項

一度運用にはいったモジュールセットを後から修正すると、すでに制作した過去のコンテンツのHTMLにも変更を波及でき、HTML構造の保全に便利です。しかしその反面、誤った変更を行うと、既存コンテンツを壊してしまう可能性もあることになります。

ここでは、モジュールの変更にかかる影響範囲や、安全にメンテナンスするための注意事項について説明します。

モジュールの変更を既存のコンテンツに反映させるには

Broccoliが出力したデータは、生成されたHTMLとして保存され、ロードされています。 モジュールを変更しても、このHTMLを再生成するまで変更は反映されません。

HTMLを再生成するには、再生成したいコンテンツを編集し直します。または、ハンバーガーメニューから 「ツール」 > 「GUI編集コンテンツを一括再構成」 の順に選択し、サイト全体のコンテンツを一括して再生成することができます。

つまり、コンテンツ再生成の操作をしなければ、モジュールを更新しても既存コンテンツに影響はなく、以降に制作するコンテンツにのみ新しいモジュールが適用されることになります。

それでよい場合もありますが、古いコンテンツのモジュールが更新されないということは、サイト内に複数のモジュールの仕様(バージョン)が混在することになり、CSSなどの制御が次第に困難となり、メンテナンス性が損なわれます。 モジュールは常に最新の状態ですべてのコンテンツと整合するように管理されるのが理想的です。

モジュールを追加する

新しいモジュールを追加するにあたっては、既存コンテンツへの影響はありません。

モジュールを変更する

フィールドを追加する

既存のコンテンツに対する影響はありませんが、未入力の状態でどう表示されるべきか、については考慮しておく必要があります。

フィールドを変更する

変更する際に特に気をつけることは、 フィールド名 name の値です。

Broccoliは、コンテンツデータを name によって関連付けて処理しているため、 name 値を変更すると既存のデータのリンクが失われてしまいます。

表示名を変えたい場合は、 name ではなく label を使用してください。

どうしても name を変更する必要がある場合は、既存コンテンツの更新が必要です。

フィールドを削除する

フィールドを削除した場合、既存のコンテンツにすでに入力されたデータは参照されなくなります。

再編集しても既存の入力データは削除されることなく維持されます。

モジュールの分類を変更する

モジュールは、パッケージ、カテゴリの階層構造で分類されます。モジュールは、階層構造を元に モジュールIDを得ます。

例えば、 パッケージID packageA、 カテゴリID categoryB に格納されたモジュール moduleC のモジュールIDは、 packageA:categoryB/moduleC と命名されます。

モジュールの分類を変更すると、この モジュールID が変わるため、これに対応する必要があります。

既存のコンテンツで利用されている場合、 インスタンスの modId の値を更新する必要があります。

または、 モジュールの info.jsonid を設定することで、 パッケージやカテゴリに関わらず指定したIDとして振る舞うようになります。変更前のIDを明示することで不整合を防ぐことができます。

{
    "id": "packageA:categoryB/moduleC"
}

モジュールを削除する

使わなくなったモジュールを削除すると、既存のコンテンツで使われていた場合に不整合が生じます。既存のコンテンツで使われていないことを確認してから削除してください。

または、 info.json で、 depricated: true を設定すると、既存コンテンツを壊すことなく、モジュールパレットから隠すことができます。

{
    "deprecated": true
}

既存コンテンツのメンテナンス

コンテンツを一括加工する

モジュールの仕様を変更するにあたり、既存コンテンツのデータ構造にも変更を要する場合には、サイト全体のコンテンツに一括して高度な加工処理を施すことができます。

ハンバーガーメニューの「ツール」>「コンテンツを一括加工」を選択してください。

既存コンテンツの中で特定のモジュールが使用されているかを検索する用途にも活用できます。

クリップモジュールとクリップJSONへの配慮

クリップモジュールやクリップJSONの構造にも、既存コンテンツと同様の配慮が必要です。

コンテンツIDの変更や、フィールド仕様の変更などについて、既存コンテンツと同様に加工処理が必要になります。