記事一覧 by xrsns.com

Wagtail Wiki

Wagtail Wikiに関して

Wagtail Wiki xrsns.com

WagtailとはPythonのフレームワークであるDjangoベースのCMSです。
ライブラリを組み合わせる事でWord Pressの様にブログ形式での利用も出来ます。

Word Pressでサイトを作った事のある人なら、簡単にWagtailも構築できる様に説明します。

開発環境はWinowsを想定してますが、Macでも多少異なりますが、推測して構築出来ると思います。
Wagtailをアップグレードされる際は「Wagtail アップグレードについて」についてを一読下さい。
Wagtailを取り巻く環境についての考察」も一覧の下にあります。

Wagtailでローカル接続まで(初心者向け)

Anacondaをインストール

Wagtailを構築する前に、広く使われているAnacondaをインストールして、Pythonを使えるようにします。

Wagtailプロジェクトの作成

実際にWagtailをインストールして、ローカル環境でWagtailのプロジェクトを作ってみます。

Venvで仮想環境を作成

なぜ、Wagtailにライブラリを入れる前に、仮想環境にするのかについて理由や仮想環境の作成方法を説明します。

バージョンについて(Django等)

Python、Django、Wagtail、Puputなどの必要ライブラリのバージョン関係についての説明です。

ライブラリを入れる(Puput等)

Wagtailをブログ形式で使用する際に、必要となるライブラリを入れて行きます。

ファイル内設定(URLや日付等)

Wagtailを動かす際に、Wagtail内のファイルで記載の追加や直すべき箇所を直して行きます。

マイグレーション&ローカル接続

マイグレーションをして、管理画面のユーザーを設定して、ローカルでWagtailサイトをブラウザ表示します。

Wagtailで記事を作成し投稿

Wagtailの管理画面より、記事を作成して投稿する一連の流れの説明をします。

WagtailのSQLiteをMySQLに変更

MySQLをDLしてインストール

SQLiteとMySQL違いの比較についてと、MySQLをダウンロードしてインストールして使えるようにします。

MySQLにパスを通す

コマンドプロンプトからMySQLを使用できるようにMySQLにPathを通します。

MySQLに繋いでローカル接続

MySQLとWagtailを連携後、管理画面のユーザーを設定して、ローカルでWagtailサイトをブラウザ表示します。

WagtailをHerokuにアップロード

Herokuにアカウントを作成

Herokuのアカウントを作成して、Herokuをコマンドプロンプトから起動するまでの説明です。

HerokuにWagtailをデプロイ

HerokuクラウドサーバーにWagtailをデプロイして、管理画面のユーザーを設定後、サイトをブラウザ表示します。

Wagtail 2.8.1へのアップグレードについて

2020年4月14日にWagtail2.8.1がリリースされました。
Wagtail管理インターフェイス内のページのリビジョンの「comparison view」を介しての、
クロスサイトスクリプティング(XSS)の脆弱性に対処したとの事です。

$ pip install -U wagtail

アップグレードは通常通り行えば完了します。
今回はマイグレーション等の必要はありませんでした。

Wagtail 2.8へのアップグレードについて

2020年2月3日にWagtail2.8がリリースされました。
今までWagtail2.7やWagtail2.6を使用していてアップグレードされる際は、
アップグレード後に必ずマイグレーションをして下さい。

どうやら、wagtailcoreというデータベース関連の部分も変更されたらしく、
「pip install wagtail==2.8」だけではエラーになります。

$ pip install wagtail==2.8
$ python manage.py makemigrations
$ python manage.py migrate

Wagtail2.8では、Django3に対応したほか、ページロックの改善されました。
詳しくは下記参照(英文)
https://docs.wagtail.io/en/v2.8/releases/2.8.html

因みにWagtail Wikiで解説を行うに際に試して正常に動作したバージョンは、
wagtail==2.8、2.7、2.6 になります。

下記に2020年2月に構築した際のライブラリとバージョン一覧を記載しておきます。

beautifulsoup4==4.6.0
certifi==2019.11.28
chardet==3.0.4
Django==2.1.8
django-colorful==1.3
django-el-pagination==3.2.4
django-modelcluster==5.0
django-social-share==1.3.2
django-taggit==1.1.0
django-treebeard==4.3
djangorestframework==3.10.3
draftjs-exporter==2.1.7
html5lib==1.0.1
idna==2.8
Pillow==6.2.1
puput==1.0.5
PyMySQL==0.9.3
pytz==2019.3
requests==2.22.0
six==1.13.0
Unidecode==1.1.1
urllib3==1.25.7
wagtail==2.7
webencodings==0.5.1
Willow==1.3

Wagtailを取り巻く環境について

何故、既に広く普及してるCMSのWord Pressではなく、Wagtailを紹介するのかというと、
既にWord Pressの紹介サイトは多数存在するから、敢えて取り上げる必要がないというのもありますが、
別の視点として、言語のトレンドについて言及する必要があります。

世界的に見ると2014年辺りから、PHPよりも機械学習のライブラリが使えるPythonの方が、
トレンドな言語になり、近年はPHPとの差は開く一方です。


何故、ここまでの差になってしまったのか考察すると、DjangoやFlask等のフレームワークが成熟して、
PHPで出来る事はPythonでも出来る事が殆どですが、
逆に今旬の機械学習や深層学習等のPython出来る事が、PHPで難しい点が上げられます。

更にWebサイトの競争も激化しており、技術的な側面で見ると、単純な造りのサイトのみでは、
なかなか差別化出来ない状況下にあり、そのような環境下で機械学習や深層学習を、
より効率的に動かす為にPythonが支持されてるという時代背景があると推測してます。

そんな中、PHPではなく、PythonベースのWord Pressの様なCMSが無いか探してみたところ、
主なCMSとして「Mezzanine」、「django CMS」、「Wagtail」が存在する事が分かりました。
(因みに上記の3つはいずれもDjangoベースです。)

この中で、2020年現在、もっとも開発の勢いがあるのがWagtailです。
GitHubのスターの数を2019年の中ごろから2020年の頭まで計測したところ、
いずれの時期もWagtailがトップだっただけではなく、他のCMSの二倍の伸び率でした。


Wagtailを使うメリットとしては、記事の下書き、公開などの管理、画像管理が容易になります。
更にPuputと組み合わせる事で所謂、ブログ形式で利用する事も出来て、
PHPのWord PressのPython版のような使い方も出来ます。

Word PressとWagtailの内部の記述を比較してみると、
Word Pressは、PHPの独自のフレームワークであるのに対して、WagtailはDjangoをベースにしてるので、
Djangoを知っていれば比較的容易にWagtailの構造も推測出来る点も個人的には利点かなと思います。

デメリットに関しては、Word Pressは基本的にはGUIでサイト作成がある程度完結する点と比較して、
Wagtailは基本的には構築まではCUIで行う必要があり、簡単なファイル内の記述変更が必要です。

今後のバージョンアップで機能の追加や改善がされて行けば、
世界で一番使われていると言っても過言ではない言語Python版のCMSと言う事もあり、
今後広まって行くと予想されます。

今後もWagtailとDjango、Pythonに関しては追っていく予定なので、
もしも、やって欲しいコンテンツやコーナーが御座いましたら、気軽にメールよりお問合せ下さい。

Wagtail Wiki xrsns.com