毎月2回のペースで行われている WordPress のオンライン勉強会『WP ZoomUP』。24回目(2019年8月30日)のテーマ「夏のLT大会」に、「WP-CLIで太宰治がブログを作ってみたら」というタイトルで登壇しました。
WordPress のコマンドライン管理ツール WP-CLI と、Python による文章生成ツールを組み合わせて「太宰治っぽいブログ」を作るという内容です。
制作の流れ
- 青空文庫に公開されているテキストファイルをダウンロード
- 1 のテキストファイルを Shift-JIS → UTF-8 に変換
- WordPress ローカル開発環境『VCCW』に文章生成環境を構築
- テキストファイルを自動生成環境で処理
- 4 で生成した文を WP-CLI で投稿データ化
- ブログの各種設定(タイトル、キャッチフレーズなど)も WP-CLI で実行
使ったツール
- WP-CLI, Python(VCCW に内蔵)
- pip(Python パッケージインストーラ)
- MeCab(形態素解析エンジン)
- markovify(マルコフ連鎖ジェネレータ)
- learn.py(MeCab と markovify を使いテキストデータをよしなに処理してくれる Python スクリプト)
制作の手順
文章自動生成の基礎データとして、太宰治の『女生徒』という作品を用いました。
次に VCCW に
などでログインして pip をインストール。VCCW は Ubuntu ベースなので vagrant ssh
でも導入できますが、 この方法だと最新版が入らないので公式サイトの教えに沿って下記のコマンドでインストール。apt install python-pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py
pip を使ってパッケージをインストール。mecab-python3 は MeCab の Python バインディングです。
sudo pip install mecab-python3
sudo pip install markovify
learn.py をダウンロード。learn.py は、kakakaya さんが GitHub Gist 上に公開しているスクリプトです。GitHub Gist の当該ページから VCCW 内にダウンロードしておきます。
curl -o learn.py https://gist.githubusercontent.com/kakakaya/141838e738a2fd9667b5e4fd2b79c4c7/raw/b7d44d159eeeabcd3076f1671b8f3086bb5f961d/learn.py
処理対象とするファイル名(『女生徒』のファイル名)を learn.py 内に記述。
rampo_text = load_from_file('joseito.txt')
試しに learn.py を実行してみます。
python learn.py
こうして、おとなしく先生のモデルになって行くのなら、なおさら楽しいでしょう? そんなに行きたいなら、行ってもよござんす。
準備が整ったので、WP-CLI の post コマンドと組み合わせて20件分の投稿を生成します。ここでは learn.py の出力結果を投稿タイトルとしました。
for i in {1..20}; do wp post create --post_title="$(python learn.py)" --post_status=publish --post_author=1; done
Twenty Nineteen で表示した状態。
これで一応完成ではありますが、もう少し「太宰治のつぶやき感」を醸し出したくテーマを変えてみることにします。
選んだのは WordPress.org のテーマディレクトリで公開されている P2 というテーマ。
P2 はざっくりいうと、WordPress をチャットツールのように使えるテーマで、WordPress.com を運営する米 Automattic 社が2009年4月に発表したものです。
Automattic 社の高野直子さんによると P2 は社内で現役ばりばりで稼働中で、 WordPress コミュニティの各チームでも使われているということでした。
WP-CLI で P2 をインストール&有効化します。
wp theme install p2 --activate
ブログ名・キャッチフレーズもコマンドで設定。
wp option update blogname 太宰治のブログへようこそ!
wp option update blogdescription メロスは激怒した。WP-CLIでブログを作ってみた。
ユーザー情報もコマンドで更新。ユーザーID 1(ユーザー名 admin)のニックネーム・表示名をそれぞれ「太宰治」にします。
wp user update 1 --nickname 太宰治
wp user update 1 --display_name 太宰治
完成したブログのスクリーンショットがこれ。
パブリックドメインとなっている太宰治のポートレートを Gravatar に登録して、より「つぶやき感」を出してみました。
まとめ
文章自動生成とまではいかずとも、あらかじめ用意したテキストファイルをもとにダミー記事作成ということも可能です。詳しくは WP-CLI の wp post コマンドのページを参照ください。
一般的なレンタルサーバへの WP-CLI 導入については当ブログでいくつか関連記事を公開しています。何かの参考となればうれしいです。
コメントを残す