WordPressでサイトを作るとき、
お問い合わせフォームをどうするかは、ほぼ必ず話題になります。
多くの場合は、
- Contact Form 7
- MW WP Form
- その他フォーム系プラグイン
といったものを使うのが一般的だと思います。
ただ、私の場合は
フォーム系プラグインを使わない
というスタンスです。
今回は、その理由を整理してみます。
フォームプラグインを否定したいわけではない
最初に書いておくと、
フォームプラグイン自体が悪いと言いたいわけではありません。
- 手軽に導入できる
- 管理画面で完結する
- 非エンジニアでも触りやすい
こうしたメリットがあるのは事実ですし、
条件によっては最適な選択になることもあります。
それでも毎回使っていない理由
それでも私がフォームプラグインを使わないのは、
シンプルに言うと
コードで管理したほうが楽だと感じているからです。
ここで言う「楽」というのは、
- 実装が楽
- 管理が楽
- 数年後に見返したときも分かりやすい
という意味です。
プラグインだと「把握する場所」が増える
フォームプラグインを使うと、
- HTMLはどこか
- バリデーションは設定画面か
- メール文面は管理画面か
- フックは functions.php か
と、
確認すべき場所が分散しがちになります。
一方、コードで書いていれば、
- このファイルがフォーム
- この処理が送信
- この部分がバリデーション
と、構造が一目で分かります。
後から自分が触るにしても、
他の人が引き継ぐにしても、
この差は意外と大きいです。
MW WP Form の開発終了アナウンスがあったことも影響している
以前、定番だった MW WP Form について、
一度「開発終了」というアナウンスが出たことがありました。
現在もプラグイン自体は公開されていますが、
- 今後どこまで継続的にメンテナンスされるのか
- WordPressやPHPの将来バージョンに追随できるのか
正直、外からは判断しづらい部分があります。
この件をきっかけに、
フォームという重要な機能を、特定のプラグインに依存するのは少し怖い
と感じるようになりました。
フォームは「止まると困る」機能
フォームは、
- 壊れてもすぐ気づきにくい
- でも止まると機会損失が大きい
という、かなり厄介な機能です。
- メールが届いていない
- スパムだけ届いている
- アップデート後に動かなくなった
こうしたトラブルの切り分けで、
プラグイン・WordPress本体・サーバ設定を行き来するのは、
正直あまりやりたくありません。
管理画面から文言を変えたい、という要望について
フォームプラグインを使う理由として、
「管理画面から文章を変更したいから」という要望もよく聞きます。
ただ、この点についても、
必ずしもフォームプラグインが必須とは限りません。
例えば、
- フォームの説明文
- 注意書き
- 送信完了メッセージ
- メール本文の一部
こういった文言は、
カスタムフィールドとして用意しておき、
フォームのコード側で読み込めば、
管理画面から自由に変更できます。
構造や処理はコードで管理しつつ、
変更頻度の高い文言だけを管理画面に切り出す。
この形のほうが、
- どこを触ればいいか分かりやすい
- 設定が散らばらない
- 数年後に見ても把握しやすい
というメリットがあると感じています。
プラグインを使うと、どうしても制約が出てくる
フォームプラグインを使っていると、
どうしても「プラグイン側の仕様」に合わせる必要が出てきます。
例えば、
- HTML構造を細かく調整したい
- クラスの付け方を統一したい
- バリデーションの挙動を少しだけ変えたい
- 分岐条件を要件どおりに書きたい
こういった細かい調整をしようとすると、
- 用意されている設定では足りない
- フィルターやフックを探す
- 結局、プラグインの内部仕様を追うことになる
という流れになりがちです。
それなら最初から、
- HTML
- バリデーション
- 送信処理
をコードで書いてしまったほうが、
結果的に早く、分かりやすいと感じることが多くなりました。
「ある程度まで簡単にできる」代わりに、
「それ以上の調整がしづらい」。
このトレードオフも、
フォームプラグインを使わない理由の一つです。
自作フォームでやっていることは最低限
自作するといっても、
特別なことをしているわけではありません。
- フロントとバックエンドのバリデーション
- トークンを使った簡易CSRF対策
- PHPMailerなどを使ったメール送信
- 必要最低限のスパム対策
「フォームとして最低限必要なこと」だけを
コードでシンプルに書いています。
それでもプラグインを使うケースはある
もちろん、
どんな場合でも自作するわけではありません。
例えば、
- 管理画面から構造自体を頻繁に変えたい
- 非エンジニアがフォーム仕様を触る
- 要件がかなりシンプル
- 短期案件でスピード優先
こうした条件なら、
フォームプラグインを選ぶほうが合理的です。
まとめ
フォームプラグインを使わない理由は、
思想というより、かなり実務的な話です。
- コードで管理したほうが分かりやすい
- プラグイン依存や制約を減らしたい
- 数年後の自分や他の人が触りやすい
過去の経験から、
今はこのやり方が一番しっくりきています。