シンプルな仕様を作り出すのは意外に難しい
Wordpress のカスタマイズを請け始めて10年くらい経つ。 他の人が関与した成果物を見ることも多々あるけど、振り返って見ると「保守」にターゲットを絞って製作された成果物は最近とんと見かけなくなった。なんでかなーと思ってる。
もともと、最初の頃にがっつり関わることになったWordpressは、クラックされた事がきっかけで、回り回って私のところにやってきた案件だった。 製作会社が手を離した案件で、どういう理由でクラックされたあとに手を離したのかはわからない。(要するに金額が折り合わなかったのではと予想してるんだけど)
当時、よくみかけたのはアレ。「更新しない・させない仕様」ってやつ。そういうプラグインを入れておいてくれと言われることも多かったけど、頑なに断り、通知を消してくれないかと言われても無理だとつっぱねた。通知が無ければ更新できない。
クラック祭りを何度も経て、今では更新が業務になるようになった。しかしこれもつらい作業なんだよね。ボタンぽちぽちするだけだもん。誰でも出来るんだけど、自分ではできないらしい。まあそんなこんなでこれが仕事になっちゃっている。そのうち手元は自動化したい。CLIでやればいいとは聞いてるけど、色々な理由であんまりやりたくない。
そんで、いろんなテーマやプラグインを眺めているんだけれども、仕様がシンプルと思えたプラグインは、「Event Calendar 3」というやつかな。これを読み込んだのはWordpressを理解するのに役に立った。今更新が止まっているのが惜しい。 コードの書き方はまあ良いとして、仕組みとしては良かったと思う。類似のものはまだ見かけてないので、合ったら教えてほしい。
見ていて思うのは、「仕様を単純にする」というささいな事が如何に難しいかというトコロ。単純な仕様に落とし込むのは勘所も必要だなあと思う。「こうすればできるよ!」という話は多いけど、「こうすれば誰でも見ただけで仕様が理解できるよ!」は難しい。
複雑怪奇にするのは誰でも出来る。 誰もが見ただけで使い方を予想できる、単純かつ明快な仕様は、スティーブ・ジョブズが手がけたモノを見てると、ウェブサイトの運用現場としては最も必要なものかもしれないなーと。
オチなし。
サーバを移転するのに、sakura のクラウドのDNSを使った話
同じホスティング内で新しいプランに移動することにしたのだけど、メール運用があったのでTTLを短くしたかったんですよ。でも、そのホスティングはゾーン情報は触れないし、TTLも短くしてくれなさそう(そういや聞いてないわ)だったので、TTL短くするためだけに一旦借り置き用のゾーンをsakuraで設定して新しいサーバに移すことにした。
(追記:ちなみに大塚商会さんだとゾーンも触れてTTLも変更できるよ)
ホスティングにゾーン情報ちょうだいって言ったら気持ちよくもらえた上に、外部のDNSの場合はこれこれこうしてくださいね、という指示ももらえたよ。ありがとうありがとう。
で、sakuraのクラウドに、グローバルんところからDNSを契約する。月額43円。 43円だよ。なんだこの金額。やっす!ありがとうsakura!
んで、ゾーン設定を抜かり無く設定して、ドメイン名のNSレコードを
ns1.gslb2.sakura.ne.jp ns2.gslb2.sakura.ne.jp
に変更。これを数日前にやっておく。 当然古い方のゾーンを仕込んでおく。 TTLは短くしておいて。
そんで、移行当日に変えるよーという宣言をしてから、ゾーンを新しいサーバに変更する。 全員にメールボックスからメールを受信しておいてもらう。 TTLは短くしていたからな。まあちょっと時間を置いてから、送受信サーバを新しい方に変えてもらう。
同時進行でホスティング側のゾーン情報を新しい方のサーバに移行する手続きをしておく。
問題なく新しいサーバでメールを受け取れれば、お客さんの移行は完了である。あっけない。
後始末として、しばらくしてからNSレコードをホスティングのものに戻して、sakuraのDNSを解約すればOK。
sakuraのNSは TTLが 259200 なので、消すのは3日以上後にすると良さそう。
もっとわかりやすくかけって?
めんどくせーよ。
あれですね、自前でDNSサーバ立てるのは無理ゲーだけど、こんだけ簡単にゾーン設定させてもらえるんだから、移転する時くらい使うべきですね。所詮レンサバなんてそもそも外部名使ってるんだし。
CPI ACE01 でサーバ移行(ACE01旧からACE01新へ)したらデータベース接続ができなかった話とレンタルサーバの未来
理由は単純。php.ini に
mysqli.default_port = 3307
って書かれていたから。 なんでそうなっていたかというと。
CPIでは、サーバの契約時期によって、MySQLが5.5と5.6が2つ入っているサーバがあるんだね。この時のサーバは5.5が3306、5.6が3307のポートに割り当てられていた。 今は新サーバでは5.5は提供されてなくて、5.6で3306ポート(つまりデフォルト)が割り当てられている。
で、今回そんなことすっかり忘れていたので、移行しようとしてしばらく悩んでしまったわけです。単純な事ほど気が付きにくいですね。
基本的には、契約時のサーバは契約解除するまで設定そのままっぽいねん。セキュリティ更新はしてるみたいだけどもさ。 ※CPIだけじゃないです。他んところもです。プラン名を変えてくれるところもあって、このプランは廃版です、みたいにしてれるとまだわかりやすいんだけどね。
レンサバって、同じホスティングであっても、定期的にプラン変更していかないと、サポートが切れたミドルウェアを使い続ける事になるんですよ。(RHみたく公式が切っても別でサポートし続けるってところもあるけどさ)
コンパネからはあんまりわかんないかもだけど、未だにPHP5.1とか5.3とかMySQL5.0とか入ってるサーバが10年以上も使い続けられていたりするんだよね。
保守してって言われて見てみたら、PHP7ないとかさ。
いやはやもう人外魔境なわけですよ。 でも、移行しようと思ったら手間だしやりたくないわけですよ。特にメールサーバ運用とかしてると。
メールボックスを別で管理してるホスティングとかだと楽なんだけど、あんまり多くないかな。
ホスティング側も苦慮してるっぽい感じの話は聞いたんだけど、まだまだぎょうさんあるんっすわ。ふるーいのが。
情報モラルの講演には「聞いてほしい人が来てくれない問題」ってのがあるんだけど、ホスティングもそうだよね。ずーっとお金払い続けてくれてるいいお客さんなんだと思うんだけどね。
どうすんのまじで。
oheso-version-report を公開できました。
ずっと保守するのに、こういうのがあればいいのに!って思っていたものをぼちぼち作ってたんですが、公式ディレクトリにいれてもらいました。
-- やっていること
単純です。チェックボタン押したら、プラグインやテーマなどの更新について、バージョン情報を表示します。 公式ディレクトリも見に行って、最終更新日を確認し、更新から何日経過しているかを表示します。 一番欲しかったのは、ここに「Not Found」と出るプラグインです。
更新されるプラグインは良いんだけど、見捨てられたプラグインを一々調べるのだるいんですよ。で、ここで調べて、公式ディレクトリのページにリンクを貼っています。 古いプラグインは、ページを見に行けば「 no longer available」と書かれていますから、内容に応じて利用をやめようという算段です。
自作とかで公式に登録していなければ、当然「Not Found」と出ますので、そこは自分でチェックしてください。
自分が便利に使いたかったので作りましたが、他にこんなん欲しい人いるんかな。 まあ使ってみてください。
Version Report Plugin を公式に申請してみた
勢いでプラグイン申請したので、あとから直したいとことか出てきてるところ。
受理されるといいなあ。
ところで似たようなプラグインがあったのだけれども。 wordpress.org
no-longer が no-longer となっていて何がなんだかという感じになっていた。なんだかな。
reCAPTCHA v3 を ContactForm7 で設定すると全ページにreCAPTCHA用のscriptが出力される
v3になって、クリック認証が不要になったんだけど、右下にマークが出るようになった。これが全ページに表示されてしまうので、とりあえずなんとかしてみた。
公式には↓こう書いてあったのだけど、reCAPTCHA v3のscriptは別扱いっぽい。これを設定しても出力されてしまう。(そのうち修正されるかなあ? とりあえず報告とかしてない)
必要な場合だけ JavaScript とスタイルシートをロードさせるには | Contact Form 7 [日本語]
幸い(?)扱っていたサイトでは
remove_action('wp_head', 'wp_enqueue_scripts');
なんてことをしていて、script読み込みを抑制していたので、都合よく使ってみる。
function wpcf7_file_control() { global $post; if( ! has_shortcode( $post->post_content, 'contact-form-7') ){ remove_action('wp_head', 'wp_enqueue_scripts', 1); } } add_action("template_redirect", "wpcf7_file_control");
これで、CF7のショートコードを入れているページにのみ、scriptを出力する。
場当たり的な対応で、たまたま設定上できたって内容なので推奨はできないね。