Wagtailインストールと初期設定記事カバー画像
wagtail 20 min read

【2025年最新】Python製のCMSフレームワークwagtailって何?

my-icon

karrinn

著者

はじめに

こんにちは。

この記事に辿り着いた方はおそらくPythonのフレームワーク、ライブラリを調べていた、もしくはPython製のCMSを探してみていたという方におすすめの記事です。

筆者もいろんな仕組みでブログは過去かなりの数作っては壊してを繰り返してきて(しまって)います。

2024年の秋ごろからwagtailを本格的に使い始めてみて1年ほど経過し、とりあえず使ってみていたWordpressなどと比べて優っている点、劣っている点、根本的な思想の違いを実感しています。

本記事ではwagtailとWordpressなどのCMSの違いや始め方を紹介します。

対象者

  • CMSを探している方の中でプログラミングが多少できる方
  • Pythonのフレームワーク「Django」を習得し、さらにDjangoを便利に使いたい方
  • Wordpress等のCMSを使っていて不満があり情報収集している方

また、本記事では以下のような技術を活用していきますのでこれらに興味がある、または習得済みだとスムーズです。

名称バージョン概要

Python

3.12

主となるプログラミング言語

Django

5.2系(LTS)

WagtailのもとになるPythonフレームワーク

Wagtail

7.1系

Python製、Djangoの拡張であるCMSライブラリ。この記事の主題

uv

0.8.11

pythonのバージョン、パッケージ管理。もはやデファクトスタンダードになりつつある神ツール

そもそもCMSってなに?

CMSとは、コンテンツ・マネジメント・システム(Content Management System)の略です。Webサイトのコンテンツ(テキスト、画像、動画など)を、専門的な知識がなくても簡単に追加・管理・更新できる仕組みのことを指します。

もっと簡単に言うと、Webサイトの「裏側」にある管理画面のようなものです。

通常、Webサイトを作るにはHTMLやCSS、JavaScriptといった専門的な言語でコードを書く必要があります。しかし、CMSを使えば、まるでブログやSNSに投稿するように、見たままの感覚で記事を作成したり、写真をアップロードしたりできます。

このシステムのおかげで、プログラマーでないマーケターや編集者でも、Webサイトの運営に直接関わることができるようになるのです。CMSは、Webサイト制作の効率を飛躍的に向上させるための重要なツールと言えるでしょう。

もっとも有名なCMSWordpressとの違いは?

CMSと聞いて、多くの人が真っ先に思い浮かべるのがWordPressではないでしょうか。全世界のWebサイトの実に40%以上がWordPressで作られていると言われています。では、WagtailとWordPressは具体的に何が違うのでしょうか?

一言で言うと、提供形態設計思想が根本的に異なります。

比較項目WordPressWagtail

提供形態

完成済みのソフトウェア

Djangoアプリ(フレームワーク)

主な利用者

ブロガー、マーケターなどの非開発者

Python/Django開発者

カスタマイズ性

テーマとプラグインが圧倒的に豊富

コードによる自由な設計

設計思想

ブログから始まった多機能CMS

開発者が作る柔軟なコンテンツ管理基盤

Wordpressのメリット、デメリット

メリット

WordPressは、インストールすればすぐにブログサイトとして機能する「完成されたソフトウェア」です。とにかく豊富なテーマ(デザインテンプレート)とプラグイン(拡張機能)があり、プログラミング知識が一切なくてもECサイトや予約サイトなど、様々な用途のWebサイトを構築できます。これは非開発者にとっては非常に大きなメリットです。

デメリット

一方で、完成されているがゆえに自由な変更には弱いです。テーマやプラグインとして用意されているものを開発者の用意したとおりに使う分には素早くきれいにできます。逆にそれがない場合はPHP等でコーディングすることになりますが、これが非常に面倒です。筆者はもはや諦めてテーマやプラグインが存在しなかったりイメージと違うデザインも目をつぶって使っていました。

Wagtailのメリット、デメリット

メリット

一方、Wagtailは、PythonのWebフレームワークであるDjango上で動作する「CMSフレームワーク」です。Wagtail単体ではWebサイトとして機能しません。開発者がDjangoの知識を活かして、コンテンツの構造(モデル)から管理画面の項目、そしてサイトの見た目(フロントエンド)まで、すべてをコードで定義していきます。

その前提が全機能/インターフェースが開発されているため、自分の思い描いたデザイン、機能のWebアプリをコーディングさえ苦にならなければ完全に実現することができます。

デメリット

メリットと裏表ですが、コーディングが前提となっているCMSフレームワークですので、Pythonが大前提習得されていてプログラムをある程度できる人でないと扱うことはできません。例えばまったく別業種の方が副業でブログなどを書いてみようといった時には絶対におすすめできません。

また、筆者は過去数回ぶちあたりましたが、特殊なユースケースではドキュメントも用意されておらず、Wagtailそのもののソースコードを読み込んで、Djangoのテンプレートオーバーライドの仕組みなどを活用して機能を実現しなければならなかった時がありました。高度で特殊な状況であればあるほど周辺フレームワークの知識も要求されます。Wordpressに比べてユーザがまだまだ少ないことの欠点かもしれません。

公式ドキュメントにある以下の一文があります。

The best user interface for a programmer is usually a programming language. (プログラマーにとって最適なユーザーインターフェースは通常、プログラミング言語です)

このように書いてある通り、非開発者のみで使うようにはそもそも作られていないことがわかります。

次のセクションではより具体的にWagtailを選ぶ理由を解説します。

Wagtailを選ぶ理由

WordPressという強力な選択肢がある中で、あえてWagtailを選ぶのには明確な理由があります。

1. 圧倒的な柔軟性と拡張性 🎨

Wagtailの最大の魅力は、その柔軟性です。WordPressが「投稿」や「固定ページ」といった決まった型を基本とするのに対し、Wagtailでは開発者がコンテンツの構造をゼロから定義します。例えば、「イベントページ」というコンテンツタイプを作り、それには「開催日時」「場所」「登壇者リスト」といった独自のフィールドを持たせる、といったことが自由自在です。これにより、プロジェクトの要件に完璧にフィットした、無駄のない管理画面を構築できます。

しかも自分で定義しているので、他の出来合いのCMSで起きがちだった「プラグイン入れたけどそもそもプラグインの使い方がむずい・わからない」みたいなことが起きないのが最高です。正直そういう謎時間が嫌でこれまで数回ブログ更新が止まってしまっていました。

2. Python/Djangoエコシステムの活用 🐍

WagtailはDjango製です。これは、すでにPythonやDjangoに慣れ親しんでいる開発者にとって、学習コストが低いという大きなメリットがあります。また、Djangoが持つ強力なORM(Object-Relational Mapper)、堅牢なセキュリティ、豊富なサードパーティライブラリといった恩恵を余すところなく受けることができます。

そもそも最近どこを見ても1番人気のプログラミング言語であるPythonのフレームワークであるという点も非常に大きいです。加えて最近はAIの観点でもPythonは有利ですから、魅力はさらに上がりました。

3. 洗練された管理画面 ✨

コンテンツを管理する編集者にとって、管理画面の使いやすさは非常に重要です。Wagtailは、直感的でモダンなUIを提供することに力を入れています。特に「StreamField」という機能は画期的で、テキスト、画像、動画、引用といった様々なコンテンツブロックを、編集者が好きな順番で自由に組み合わせてページを作成できます。これにより、画一的ではない、表現力豊かなページレイアウトを実現できます。

Wagtailを使って開発などをしていて感じたことは「StreamField/StreamBlock」「StructBlock」あたりを使いこなせるようになると圧倒的に自由度が上がるということでした。

4. ヘッドレスCMSとしての利用

Wagtailは、传统的なWebサイトだけでなく、管理画面(バックエンド)と表示部分(フロントエンド)を完全に分離するヘッドレスCMSとしても非常に強力です。APIを通じてコンテンツを配信できるため、ReactやVue.jsといったモダンなJavaScriptフレームワークで作るWebサイトや、スマートフォンアプリのバックエンドとしても活用できます。

最新のWagtail7以降ではこのヘッドレスCMSのための機能が続々と開発されており、筆者はReactも使うエンジニアのため非常に期待しています。

このように、Wagtailだからこそうれしいポイントはたくさんあります。

次のセクションではWagtailが得意なこと、苦手なことを具体的に紹介します。

Wagtailの得意なこと、苦手なこと

どんなツールにも向き不向きがあります。Wagtailを選ぶ前に、その特性を理解しておくことは非常に重要です。

Wagtailが得意なこと

パフォーマンスや機能、デザインに明確な希望があり妥協したくない場合はWagtailがおすすめです。先の記載の通り、完全なカスタマイズが可能なため、思い描いたサイトデザインを完璧に実現するにはもってこいのフレームワークです。AVIFなどモダンな拡張子への対応、精密なキャッシュ戦略など、細かな要求にも歴史が長く人気言語であるPythonや周辺ライブラリの最強機能たちでスピーディーに実現することができます。

Wagtailが苦手なこと(あるいは、他の選択肢が良い場合)

こちらも先の記載の通り、開発が必須であるため「開発者じゃない」とか「デザインテーマは出来合いのものを買うから今日から書き始めたい」みたいなシーンでは選ぶべきではないです。

ちなみにこのブログも書き始めるまで2週間くらい裏側を開発して、記事を作成するごとに欲しいパーツを追加開発しながら作っています。

そういう柔軟性が魅力でもあり、プラグインが少ないデメリットでもあります。

Wagtailで作られた有名サイト事例

Wagtailは個人のプロジェクトだけでなく、世界中の名だたる企業や組織でも採用されています。そのスケーラビリティと信頼性の高さを証明する事例をいくつかご紹介します。

  • NASA (アメリカ航空宇宙局):Jet Propulsion Laboratory サイトなどでWagtailを採用しており、膨大な科学的情報を効率的に管理しています。
  • Google:blog.google をはじめ、Googleの厳格なセキュリティ基準を満たす唯一のCMSとして、多くのオフィシャルブログやサイトでWagtailを活用しています。
  • Mozilla: Firefoxブラウザで知られるMozillaの公式サイトやブログでも、Wagtailがその情報発信を支えています。
  • イギリス国民保健サービス (NHS):英国の公的な医療サービスサイトという、非常に高い信頼性とアクセシビリティが求められる大規模サイトの基盤としてもWagtailが選ばれています。

他にも公式サイトで紹介されているような様々な有名企業、組織でWagtailが採用されています。

Wagtailプロジェクトを立ち上げてみる

実際にWagtailのプロジェクトを始めてみます。ここではPython(uv)がインストールされている環境を前提とします。次回以降の記事では初心者がWagtailにチャレンジできるように丁寧に解説していきますが、少なくともこのくらいのプログラミングてきなことは日常的にやりますので、身に着ける気持ちくらいは必要です。

Pythonでなにかを開発するならまずはここから。クリーンな仮想環境を作成します。

bash
# ディレクトリの作成
mkdir myproj
# 作成したディレクトリへ移動
cd myproj
# プロジェクトの初期化
uv init
# 仮想環境作成
uv sync

仮想環境が容易で来たらwagtailをインストールします。

bash
# wagtailのインストール(執筆時点最新の7.1系)
uv add "wagtail>=7.1.0,<7.2.0"
# バージョン確認
uv pip list

次にwagtailのプロジェクトを作成します。

Djangoでいうところのdjango-admin startproject myprojにあたりますね

bash
# 現在のディレクトリにwagtailプロジェクトを作成
uv run wagtail start myproj .

次はマイグレートとスーパーユーザ作成です。Djangoとまったく同じですね。

bash
# マイグレート
uv run manage.py migrate
# スーパーユーザ作成(任意のユーザ情報を入れて作成)
uv run manage.py createsuperuser

サーバー起動もDjangoと同じです。

bash
# 開発サーバ起動
uv run manage.py runserver
wagtailデフォルトトップページ
http://127.0.0.1:8000

このようにDjangoプロジェクトだとロケットが飛んでいるトップページですが、Wagtailではたまごちゃんが表示されます。

これがWagtailプロジェクト作成の第一歩ですね。

筆者の場合はここから自動作成されるいらないhomeアプリ、searchアプリを消しちゃってなんやかんやの開発を始めていくのがパターン化しています。

Wagtailでのブログ開発に困ったら...

Wagtailは非常に高機能で比較的ドキュメントも充実していますが、それでも開発中に壁にぶつかることはあるでしょう。そんな時は、以下のリソースをあさってみてください。

  • 公式ドキュメント (Your First Wagtail Site): まずはここから始めるのが王道です。ブログ機能を持ったサイトを一通り作るチュートリアルが用意されており、Wagtailの基本的な考え方や開発の流れを体系的に学べます。また、各機能の紹介ページもかなり読みやすいので、最初は手間ですがドキュメントを検索しながら開発することをお勧めします。
    筆者は1年の間に公式でめちゃ便利な機能が用意されているのを見逃して無駄で冗長な実装をしてしまったことが幾度となくあります。今は猛省し、ドキュメントをくまなくチェックして実装が必要かどうかを判断するようにしています。
  • GitHub: 世界中の開発者がWagtailを使って何を作っているのか、他の人のコードから学ぶことも非常に有効です。また、公式リポジトリのIssueを覗けば、最新の議論や問題解決のヒントが見つかるかもしれません。またはWagtail自体のソースコードも参考になります。Djangoの一定の知識があれば読みやすいコードなので、筆者は正直とりあえずソースコード読みに行っちゃいます。
  • Wagtail Slack Workspace: Wagtailには活発なSlackコミュニティがあります。開発中に遭遇したエラーや、実装方法の相談など、世界中の開発者に質問することができます。

最後に

Wagtailは特にPython開発者にとって最高なツールだと断言します!

真面目にやっている開発者としてはアウトプットもしたい。けどWordpressとかでただ文章を書くだけは時間がもったいない。そんな気分になるかもしれません。

Wagtailならコーディングの腕を磨きながらアウトプットもできる。一石二鳥っていう魅力もあります。

是非一緒にWagtailでコンテンツを管理してみましょう!!!

関連トピック

コメント (0)

まだコメントはありません。最初のコメントを残しませんか?

コメントを投稿

メールアドレスが公開されることはありません。必須項目には * が付いています