PHP レッスン — パート 3 — 自分の CMS を作る
CMS でのサイト作成は、Drupal、Joomla、WordPress だけに限られません。世界では、ほとんどのサイトが自作の CMS で作られています。すでに PHP で多くのコードが書かれているにもかかわらず、プログラマーは非常によく自分自身の開発物を使います。なぜ自分の CMS を使うのか、理解してみましょう。
確かに、自作モジュールのための多くのモジュール、フック、関数を持つ強力なシステム Drupal は存在します。多くの人が自分のモジュールを書けますが、Drupal 自体の作成に携わっている人が何人いるか見てみましょう。もちろん、Drupal は数百、いや数千人のプログラマーの労作だと読んだことがあるでしょう。しかし、実際に誰が Drupal を作っているのか見てみましょう。
Drupal のダウンロードページには、Drupal のコア、つまり CMS 自体に取り組んでいるプログラマーのリストのブロックがあります。
drupal.org/node/3060/committers?sort=desc&order=Commits
そしてこのページには、彼らが加えたコアの修正とともにプログラマーのリストがあります。そのリスト:
| 開発者 | 最後の修正 | 最初の修正 | 修正 |
|---|---|---|---|
| Dries | 3 日前 | 11 年前 | 10501 件の修正 |
| webchick | 5 日前 | 3 年前 | 3108 件の修正 |
| Gábor Hojtsy | 2 日前 | 4 年前 | 1635 件の修正 |
| Steven | 4 年前 | 11 年前 | 1156 件の修正 |
| drumm | 1 年前 | 5 年前 | 764 件の修正 |
| killes@www.drop.org | 4 年前 | 6 年前 | 506 件の修正 |
| Kjartan | 5 年前 | 11 年前 | 383 件の修正 |
| catch | 2 日前 | 21 週前 | 329 件の修正 |
| Jeroen | 10 年前 | 11 年前 | 101 件の修正 |
| Git Migration | 1 年前 | 10 年前 | 38 件の修正 |
| jhodgdon | 2 日前 | 3 日前 | 3 件の修正 |
| quicksketch | 16 週前 | 16 週前 | 3 件の修正 |
| pillarsdotnet | 23 週前 | 23 週前 | 2 件の修正 |
リストの順に始めましょう:

Dries(1 万件の修正) — フルネームは ドリス・バイタルト(Dries Buytaert)、Drupal プロジェクトの創設者です。ご覧のとおり、Drupal プロジェクトはすでに 11 年以上続いています。Dries は Acquia という会社を作りました。この会社は Drupal サイトのテクニカルサポート(Drupal 自体とは違って決して無料ではありません)や、Drupal とそのモジュールの開発を行っています。Dries のあるインタビューで、彼はもうプログラマーとして直接 Drupal を開発してはおらず、大部分は Acquia の経営をしていると読んだ覚えがあります。そして、コアの修正がこれほど多いのは、すでに出来上がったコアのパッチが彼のもとに送られてきて、彼はそれを追加するだけだからだと説明していました。
webchick(3 千件の修正) — フルネームはアンジー・バイロン(Angie Byron)、Drupal 7 版の開発者です。Lullabot 社で働いています(働いていました?)。もっとも、drupal.org のプロフィールには、自分のサイトの作業で彼女を雇いたいなら Acquia に問い合わせるべきと記されています。また、アンジーは Drush、すなわちコンソールから Drupal を扱うためのスクリプト群を開発しました。今日、アンジーは Drupal の主要な開発者の 1 人です。
Gábor Hojtsy — フルネームはガーボル・ホイチ(Gábor Hojtsy)、Drupal 6 版の主要な開発者の 1 人です。また、Drupal 7 版で、Drupal の国際化と他言語への翻訳の機能も開発しました。
もちろん、他のコア開発者もいて、彼らは Drupal の何かしら 1 つの部分に取り組んでいました。しかし、これらの開発者が中心です。このように、Drupal は数千人のプログラマーの産物だとどれだけ言われても、Drupal のコアは数人の仕事なのです。つまり、巨大な CMS でさえ、数人が開発しているのです。
最初の問いに戻りましょう。なぜ自分の CMS を開発するのか。Drupal の習得にどれだけ時間がかかったか覚えていますか。実は、一部のプログラマーは、Drupal 規模の CMS を習得するよりも短い時間で CMS を作ってしまいます。
PHP は(他の言語に比べて)シンプルな言語で、誰でもそれでコードを書け、(簡単なことには)特別な知識は要りません。もちろん、いずれスケーラブルな CMS を書くには多くを学ぶ必要がありますが、ひとまず自分の CMS の利点を見てみましょう:
1. どこに何があるか自分で分かっている。あなたは taxonomy.module や comment.module のコードをどれくらいの頻度で見ますか。私はあまり頻繁には見ませんが、あなたは? 単にそんな必要が生じないのです。コードは書かれ、関数は文書化され、テンプレートは上書きされます。ほかに何が必要でしょう? では問題やエラーが起きたら。そのときどうする? drupal.org に書き込んで、仕事に追われるコア開発者が答えるのを待つ? 私に言わせれば、それは解決策ではありません。
2. 高い動作速度。Drupal が遅く動作し、DB に多くのクエリを送ることは周知の事実です。自作の CMS ははるかに速く動作します。しかし物事には裏面もあり、Drupal にはすでに最適化とキャッシュのためのモジュールがあるので、この問題は共有ホスティングでのみ生じます。
3. 自分が主人である。「コアに触れない」という規則に従わず、コアを直接修正することもできます。これは非常に便利で、自分の修正を有効にするために新しいコアバージョンのリリースを待つ必要がありません。
もちろん欠点もありますが… それについては触れないでおきましょう。Drupal が優れていることは分かりきっていますし、なぜ優れているかを改めて言うのはやめておきましょう。誰もが知っていることですから。
さて、あなたは自分の CMS を書くと決めました。始めましょう。