The Zen of Wagtail(日本語訳)

Wagtailでウェブサイトを構築することとWagtailの開発の指針を示しています。

The Zen of Wagtail(日本語訳)

The Zen of Wagtail(Wagtailの禅)

Wagtailは、うまくいくアプローチとそうではないアプローチを検証し、パワフルさとシンプルさ、構造と柔軟性のバランスをとることによる、長年のウェブサイト構築の経験から生まれました。Wagtailがそれらをうまく実現していることを知っていただければ幸いです。しかし、ソフトウェアとしてのWagtailができるのはその使命を果たすことだけであり、美しく、楽しく仕事することができるサイトを作ることができるかはあなた次第です。そのため、すぐにでもウェブサイトの構築に取り組みたいところですが、まずはWagtailのデザイン原則を理解することが大切です。

『The Zen of Python』の精神に基づき、『The Zen of Wagtail』ではWagtailでウェブサイトを構築することとWagtail自体の継続的な開発のための指針を示しています。

Wagtailは簡単にウェブサイトを作れるものではありません

既製品のモジュールを組み合わせて美しいウェブサイトを作ることはできません - あなたがコードを書くことが要求されます。

常に正しい役割を担う

Wagtailを効果的に利用するためのキーポイントは、ウェブサイトの構築において複数の役割が関わることを知ることです。たとえば、コンテンツ作成者やサイトの管理者、開発者やデザイナーなどの役割があります。これらの役割は異なる人が分担している場合もあれば、そうではない場合もあるかもしれません。もしあなたが個人的なブログをWagtailで作成しているとしたら、あなたはこれらの異なる役割を自分一人で担うでしょう。いずれにせよ、あなたが今これらのどの役割を担っているのかを認識し、その仕事に適切なツールを使うということが重要です。コンテンツ作成者やサイト管理者はほとんどの仕事をWagtailの管理画面で行うでしょうし、開発者やデザイナーはほとんどの時間をPythonやHTML、CSSを書いて過ごすでしょう。これは良いことです。Wagtailはプログラミングの仕事を代替することを目指して設計されたものではありません。もしかしたらいつか誰かが、コードを書くのと同じくらいパワフルなドラッグ&ドロップ方式のウェブサイト構築システムを作成するかもしれませんが、Wagtailはそのようなツールではありませんし、そうなるつもりもありません。

よくある間違いは、コンテンツ作成者とサイト管理者に過剰な権限と責任を与えてしまうことです。実際、もしそのような役割の人たちがあなたの顧客である場合、彼らはまさにそれらを求めて声高に叫ぶことでしょう。あなたのウェブサイトが成功するかどうかはあなたがNoと言えるかどうかにかかっています。コンテンツマネジメントの真の力は、CMSの利用者にコントロールを委ねることではなく、役割ごとに明確な線引きをすることによって発揮されます。とりわけ、コンテンツ編集画面の中で編集者にデザインやレイアウトを修正させたり、本来はコードで実現した方が良いような場面で、サイト管理者に複雑なワークフローを構築させたりしないということが大事です。

CMSは、編集者の頭の中の情報を、可能な限り効率的かつ直接的にデータベースに取り込むべき

車や猫、ケーキや不動産など、あなたのサイトの内容に関わらず、コンテンツ編集者はサイトに掲載したい固有の情報とともにWagtailの管理ページにアクセスします。サイトの作成者としてのあなたの目標はこの情報を、特定の編集者が考えたような形ではなく、生のままの情報として取得し、保存することです。

デザインに関わる問題をコンテンツと切り離すことには多くの利点があります。サイト全体を通してデザインの一貫性を保つことができ、編集者のきまぐれに左右されることがありません。また、ページの情報を最大限に活用することができます。たとえば、イベントに関するページを作っている場合、イベントの日付や場所に関するフィールドを持つ『Eventページタイプ』を作成しておけば、それをカレンダーの形式でもリストの形式でも表示することができます。これは、汎用的なページの形で実装をしている場合には実現できないものです。また、将来的にサイトのデザインを変えたり、他のプラットフォームに完全に移行する場合にも、サイトのコンテンツは新しい環境でもうまく動作することに確信を持てますし、特定のフォーマットに依存することもありません。

あるコンテンツ作成者があなたにリクエストしたとしましょう。『このテキストを、Comic Sansフォントの鮮やかなピンク色にしたい』。これに対してあなたは『なぜ?どうしてこのテキストだけ特別扱いするの?』と疑問に思うでしょう。もしその返答が、『見た目が好きだから』であれば、デザインを決めるのはあなたの仕事ではないことを優しく説得する必要があります。しかしもしその返答が、『子供向けのページだから』というものであれば、編集とデザインを分割する問題について向き合う必要があります。編集者に対して、特定のページを(タグ付けや別のページモデル、サイトの階層構造などで)『子供向けのページ』として指定できるようにし、デザイナーがそれをどのようなスタイルにするのかを決められるようにします。

プログラマにとっての最高のユーザーインターフェースは通常はプログラミング言語

コンテンツマネジメントシステムでよくみられるのは、ポイント&クリックのインターフェースで、ページの構成を作るためのデータモデルを定義するものです。これは売り文句としては良いものですが、実際にはCMSのエンドユーザーは、どのようにサイトが構築されているか、その変更がどのような影響を与えるのかという、プログラマとしての知見がない限り、現実的には根本的な変更を、特に実際に動いているサイト上では行うことはできません。つまり、そのようなポイント&クリックのインターフェースと向き合うのはいつもプログラマの仕事になるのです。このようなインターフェースが行ったことは、開発やテスト、デプロイに役立つような、テキストエディタやバージョンコントロールシステムなどの便利なツールのエコシステムを兼ね備えた、コードを書くという快適な世界からプログラマを遠ざけてしまったということに他なりません。

Wagtailは、ほとんどのプログラミングの仕事はコードを書くのが最適であると認識しており、特に理由がない限りそれらを箱詰め作業のような作業にはしないようにしています。同様に、サイトの機能を作る際に、コンテンツ編集者ではなくプログラマがメンテナンスをすることになる機能があることを念頭に置き、それらの機能をWagtailの管理画面から設定できるようにすることが、便利ではなく障害となるかどうかを検討する必要があります。たとえば、Wagtailには、コンテンツ作成者が汎用的なデータ収集フォームを作成するためのフォームビルダーが用意されています。このフォームをベースにして、CRMシステムや決済システムなどと連携したより複雑なフォームを作りたいと思うかもしれません。しかしこの場合、バックエンドのロジックを書き換えることなくフォームのフィールドを編集することはできないため、それらをWagtailの管理画面上で編集できるようにしても価値は限定的です。むしろ、フォームのフィールドが全てコードで定義されているDjangoのフォームフレームワークを使ってこれらを構築する方が良いでしょう。