【プログラマー向け】イラつかせるWordPressの非MVC的な構造

【プログラマー向け】イラつかせるWordPressの非MVC的な構造

WordPressは、言わずもがな世界のシェアの25%を占める、世界で一番有名なオープンソースのCMS(コンテンツマネージメントシステム)だ。

Webのことに詳しくない方でも、Wordpressという言葉を聞いたことがある方はかなり多いと思う。特にネカフェ(ネットカフェ)で、イヤホンしながらノリノリでMacいじってる人いたら、その人はもしかしたらWordpressに記事を投稿している可能性は高い。

今回は、そのWordpressに関すプログラマの悩みについてお伝えする。

エンジニアの中でも、評価が分かれるWordpress

このWordpress。実は、Web屋さんとシステム屋さんで、評価がかなり分かれる。

このブログでは、Webの世界には、サーバーサイドエンジニアとフロントエンドエンジニアという2種類があることを、度々お伝えしているが、彼らからWordpressの評価はそれぞれ大きく異なる。

フロントエンドエンジニアから見たWordpress

私の知人に聞いたところによると、Web屋から見た場合、Wordpressは肯定的な評価をする人が多いかな、という印象だ。

特に、日々コンテンツを更新したり、アニメーション追加したり、画像差し替えたりといったタスクは、機能の多さよりも操作のシンプル性を重要視する運用者が多い。その点、機能がシンプルでググれば見つかるようなWordpressは、他のCMSと比べても比較的運用しやすい。

サーバーサイドエンジニアから見たWordpress

これは私の独断と偏見が多分に入るが、フロントエンドエンジニアさんと比べてあまり肯定的な評価は多くない。

その理由は、主にこんな理由があった。

  • 作り(プログラム構造)が悪い!
    プログラムの書き方、ファイルの配置等、分かりづらいところがある。
    MVCモデルになっていない。
  • カスタマイズしずらい!
    プラグインが画面と一体化してしまっており、追加の処理を挟めないケースがあると、プラグイン本体を修正する必要が出てくる。
    その結果、プラグインをアップデートするとカスタマイズ内容がぶっ飛ぶ。

MVCとは?

特に、Webシステムの世界では、MVCモデルになっているか否かで、カスタマイズの規模が変わってしまうことが多い。
では、そもそもMVCモデルって何?というと、以下のようにWebサイトやシステムの処理を実装する一つのフレームワークな考え方だ。実装方針といったほうが分かりやすいかもしれない。

  • M(Model)
    データの構造や処理を定義。
  • V(View)
    Webサイトの表示を行ったり、入力フォームの制御を定義。
  • C(Controller)
    Webサイトの内部処理(ビジネスロジック)を制御したり、入力内容をチェックする内部処理を定義。

 

MVCになっていないと何が問題?

最近ではプログラミング教室が増えてきたこともあり、他の教室との差別化?の観点から、座学でMVCモデルについても教えるところが増えてきている。

ところが、

なぜMVCじゃないと問題なのか?

をお伝えしている講師やスクールは少ない。

個人的な経験をもとに、なぜMVCじゃないと問題なのか?を解説すると、

  • 処理がどこに書いてあるかわからない!
  • 出力処理(View)と内部処理(Controller)が同じ関数に書かれていて、
    出力処理を少しいじっただけで、内部処理にも影響が出てしまう(≒バグる)
  • セキュリティの脆弱性を作りかねない

といった、Webサイトの保守性を損なうような弊害を生み出す可能性が出てくる。

そこで、

処理をどこに書くのか?どこで処理を受け渡すのか?

を、プログラマ達が試行錯誤した結果生まれたのが、MVCモデルという実装モデルなのだ。

逆にMVCモデルになっていないWordpressは、カスタマイズしようとすると、うまくハマるケースとハマらないケースがはっきり分かれる。

大抵のWebサイトの場合は問題ないが、高パフォーマンスを求められるサイトやECサイトをWordpressで構築すると、途端に問題が頻発する。

では、どうすればWordpressを効率的にカスタマイズできるようになるのか?については、内部構造の解説を含め、後日詳しくお伝えしていく。