Google Cloud Platform (GCP) で WordPress を運用する様々な方法 2

以前書いた記事「Google Cloud Platform (GCP) で WordPress を運用する様々な方法」から新たな進展がありました。

WordPress on App Engine Starter Project はもう古い

「GAE スタンダード環境で運用する方法」で紹介したインストール手順ですが、2017/11/11 に GitHub の readme が更新されました。

This project is no longer actively developed or maintained.

For new work on this check out A helper command for running WordPress on Google Cloud Platform

このプロジェクトはもはやメンテナンスされていないため、別の方法でインストールするように案内されています。
別の方法としてリンクされているリポジトリは、「GAE フレキシブル環境で運用する方法」で紹介したインストール手順でも使用されています。
つまり、現在は GAE のスタンダード環境もフレキシブル環境も、このヘルパースクリプトを使った運用方法を推奨しているようです。
ネットで紹介されているインストール手順は古いやり方ばかりなので要注意です。

GCE で運用する方法2

前回の記事で、ランチャーを使用したインストール手順を紹介しましたが、ランチャーを使わずにインストールする方法もありました。

CONTAINER ENGINE に WORDPRESS をデプロイする方法

また、推定費用も $4.28~/月 と紹介しましたが、GCE には無料で使えるマシンタイプもあるようです。(以前はGCEに無料枠はなかった気がします)
実は、これらの情報は GCP の公式ドキュメントにまとめられていました。
正確な情報はそちらをご確認いただければ良いと思います。

WordFes Nagoya 2017 に参加してきました

10月28日に名古屋工業大学で開催された WordFes Nagoya 2017 に参加してきました。
WordCamp Kyoto, Tokyo はスタッフとして参加しましたが、今回は一般でのんびりと参加させてもらいました。

のんびりしすぎて遅刻

一応、開会式から参加しようと思っていたのですが、のんびりしていたら盛大に遅刻してしまいました。

がらがらの受付を済ませて中に入ると、WordFes のチョコレートがおいてありました。
「これはインスタ映えする!」と思わず写真を撮りましたが、下手すぎて全然ダメでした(笑)フラッシュくらいつければよかった…

これからの WordPress × SSL on レンタルサーバ

ちょうど2つ目のセッションが始まるところだったので、ぱっと目についた SSL のセッションに参加しました。
常時 SSL についてのお話だったのですが、私はこれまで全く気にしていなかったので、「ちゃんと勉強しないといけないな」と反省しました。
常時 SSL 化の手順やレンタルサーバの選び方も解説されていて、とても実践的な内容でした。

昼食休憩

お昼休みには、何人かの知り合いにお会いしました。
ハムさんにもお会いし、なぜか白いブラックサンダーをいただきました!
参加者にはパンとおにぎりと飲み物が無料で配布されました。
近くに座った方にも話しかけていただき、楽しく昼食を摂ることができました。

これからのWebディレクターのあるべき姿2017

Web ディレクターとはどんな仕事なのか気になったので参加してみました。
プロデューサーはプロジェクトを成功させる人、ディレクターはプロジェクトを責任持って終わらせる人というお話が印象的でした。
プロジェクトを完結させるために、多くの苦労や工夫があるんだと思いました。

AI×WordPress 〜45分で学ぶAIブロガーの設計と構築〜

最近は AI がとても身近になって来ましたが、WordPress と連携して運用するという話は聞いたことがなかったので、思わず参加してしまいました。
内容としては、実際に運用しているという話ではなく、AI が今後 WordPress でできるようになることとそれを実現する方法、それに対する心構え等の話がメインでした。
とてもイメージしやすく、わかりやすいお話でした。

「人生は一度きり!」悔いのない人生を送るための、これからの働き方座談会

このセッションでは、フリーランスの方や企業に勤めている方が、様々な働き方について座談会形式でお話しされていました。
古民家で民宿をしながらWebデザインで生計を立てていたり、優良企業に勤めていてもいつリストラされるかわからなかったり、面白い話が盛りだくさんでした。

LT大会

最後にお待ちかねの LT 大会がありました。
個人的には GOUTEN さんの LT が良かったです。
Google のサービスについて色々知れたのと、スライドに出てきた写真の女の子が可愛かった!

懇親会

その後、会場を移動して懇親会が行われました。
今回は、すごく多くの方とお話できて、持って行った名刺も全て交換してしまいました。
暖かい雰囲気で話しやすかったです。
料理も豪華で美味しくいただきました。

感想

結果、このイベントに参加して本当に満足できました。
WordCamp Kyoto, Tokyo に比べて規模は小さいですが、その分リラックスして参加できたような気がします。
是非、また来年も参加したいです!

WordPress プラグインを GlotPress で国際化する必要最低限の手順

英語で作成した WordPress プラグインを国際化したので、その手順を書き残します。
この手順は、GlotPress を使った翻訳のみ想定しています。
また、あらかじめ公式ディレクトリにプラグインを掲載している前提です。

プラグインのスラッグを調べる

まずはプラグインの URL からスラッグを調べます。
URL が https://wordpress.org/plugins/analytics-tracking の場合、スラッグは analytics-tracking となります。
プラグインのスラッグは、テキストドメインとして使用します。
テキストドメインとは、WordPress が読み込む翻訳を区別できるようにするための一意識別子です。
GlotPress での翻訳を反映するには、プラグインのスラッグとテキストドメインを一致させる必要があります。

プラグインヘッダにテキストドメインを追加する

プラグインヘッダにテキストドメインを追加すると、管理画面でプラグインを表示するときに WordPress がプラグインメタデータを国際化します。

プラグインヘッダ

/*
 Plugin Name: Analytics Tracking
 Plugin URI: https://github.com/hirofumi2012/analyticstracking
 Description: Add the tracking code snippet to each web page.
 Version: 2.6
 Author: hirofumi2012
 Author URI: https://four-dimensional-friend.appspot.com/
 License: GPLv2 or later
 Text Domain: analytics-tracking
 */

管理画面

load_plugin_textdomainの追加

プラグインに翻訳ファイルを読み込む処理を追加します。

function myplugin_load_textdomain() {
 load_plugin_textdomain( 'analytics-tracking' );
 }
 add_action( 'plugins_loaded', 'myplugin_load_textdomain' );

なお、プラグインに言語ファイルを同梱しない場合load_plugin_textdomain の第二引数以降は全て省略可能です。

引用元

Late 2015 版、WordPress プラグインの翻訳の仕方

翻訳する文字列のマーク

プラグインで翻訳する文字列とテキストドメインを __() 関数でくくります。

$hello = __('Hello', 'analytics-tracking');

文字列を echo で出力する場合は、_e() 関数を使います。

_e('Hello', 'analytics-tracking');

参考ドキュメント

I18n for WordPress Developers – WordPress Codex 日本語版

まとめ

以上の手順で、プラグインを GlotPress で翻訳できるようになりました。
GlotPress で翻訳を登録して承認されると、プラグインに反映されます。

参考ドキュメント

はじめの一歩 – 翻訳の始め方

Google Cloud Platform (GCP) で WordPress を運用する様々な方法

2017/11/23パート2投稿しました。

最近、Google Cloud Platform (GCP) のドキュメントを調べていて、WordPress の運用方法についていくつか気が付いたことがあるので、まとめて紹介します。

Google Cloud Platform (GCP) とは

Google が提供している様々なクラウドサービスをまとめて、Google Cloud Platform (GCP) といいます。
アプリケーションの実行環境を提供する Google App Engine (GAE) や、スケーラブルな仮想マシンを提供するGoogle Compute Engine (GCE) は、それらのサービスの一部です。

GAE スタンダード環境で運用する方法

このサイトで実践している運用方法です。
英語ですが、Google公式のスターターキットにインストール手順が記載されています。
GAE は、あくまで PHP 等のプログラムで作成されたアプリケーションを実行するだけのPaaS です。WordPress を利用するには、メディア等ファイルをアップロードするための Google Cloud Storage (GCS) や、MySQL を使用するための Cloud SQL、といった他のGCP サービスも連携して利用する必要があります。
アプリケーションはトラフィックに応じて自動でスケールアップまたはスケールダウンするように設定でき、使用したリソースの分だけ課金される料金体系になっています。
GAE スタンダード環境には、1日毎に無料利用枠が用意されていて、小規模なWebサイトなら無料の範囲内で利用することもできます。
ただし、Cloud SQL には無料利用枠がないため、最低でも Cloud SQL で $8.46~/月 の費用がかかります。
また、セキュリティ上の制限が厳しく、WordPress本体やプラグイン等のインストール/アップグレードは手動で実施する手間があります。

GAE フレキシブル環境で運用する方法

最近になって気が付いたのですが、GCP のドキュメントにApp Engine フレキシブル環境での WordPress のホスティングというチュートリアルが載っていました。
日本語になっていて、インストール手順も簡略化されているので、とても親切です。
WP-CLIを使ってプラグイン等を更新する手順も載っています。
(実際に試したわけではありませんが、GAE フレキシブル環境でも、管理画面からの自動更新はできないはずです。)
ただ、GAE フレキシブル環境には無料利用枠がないので、どれくらいの費用が掛かるのか気になります。

GCE で運用する方法

GCE は IaaS なので、仮想マシンに Web サーバ(Apache)と PHP と MySQL をインストールした上で、WordPress をデプロイする必要があります。
WordPressのランチャーを使用すると、動作環境の構築も含めて一括でインストールすることができます。
GAE のような制限もないため、WordPress の自動更新も使えます。
推定費用は、以前確認した時は$24.67/月だったはずですが、2017/08/28 現在は$49.35/月になっています。また、同じようなランチャーではなんと10分の1の$4.28/月になっています。
これは、使用するマシンタイプによって推定費用が変わっているようです。
自動スケーリングの設定はできないため、要件に合ったマシンタイプを見極めることが肝心です。

まとめ

以上、3通りの運用方法を紹介しました。
それぞれの特徴を表にまとめてみます。

GAE スタンダード環境 GAE フレキシブル環境 GCE
インストール手順 長い 普通 短い
スケーリング 自動 自動 手動
運用費用 $8.46~/月 不明 $4.28~/月
アップグレード 手動 WP-CLI 自動

いかがでしょうか。
実際にやってみると、意外と日本語化が面倒だったりするかもしれませんが、是非プロジェクトに合った運用方法で挑戦してみてください。

WordCamp Kyoto 2017 に当日スタッフとして参加してきました

6月24日と25日に京都大学で開催された、WordCamp Kyoto 2017 に参加してきました。
WordCamp に参加するのは初めてでしたが、折角の機会だと考え、当日スタッフに申し込みました。
僕はセッションの撮影とタイムキーパーの係でした。
撮影係は立ちっぱなしが辛くて、背骨が折れるんじゃないかと思いましたが、やりながらでもセッションは聞けたのでラッキーでした。


あとから動画を見返して気がついたんですが、明るいスライドだと文字が白飛びしてしまって読めませんね…
明るさの調整をするところまで頭が回りませんでした。すみませんm(__)m

ところで、このセッションの10分以降を見てください。
tab index はなくした方が良いと言われているそうですが、これはなぜでしょうか。
ネットで検索しても古い情報ばかり出てくるし、WCAG 2.0 からも見つけられませんでした…
そもそも、本人に聞くチャンスがあったのに、怖じ気付いてしまって聞けませんでした(^^;

こういうところがなんとも不甲斐ないですね。

それでも、このイベントに参加したおかげでいろんな方と接することができました。
今思えばすごい人ばかりで、大変貴重な経験でした。
この経験を今後に活かせるか否かが僕の運命を大きく左右することでしょう。

親切に接してくださった皆さん、本当にありがとうございました。