WordPressで二年間WEBサービスを作ってきて思うこと

私はWebサービスを運営する会社で仕事をしていますが、開発は私一人でやっています。一人で開発をしていますが、プロダクト開発に対する会社の考えが、サービスを思いついたら、真っ先に市場の反応を見るべきというスピード重視なので、直ぐにサービスインできるスピード感が求められています。

そんな状況で私はWordPressによる開発を選び、二年間それでやってきたので、ここらで学んだことや気づいたことをまとめておこうと思います。

なぜWordPressでの開発を選んだのか

先述の通り、一人でささっとWebサービスを作る必要があったのが、大きな理由です。
ではなぜ、WordPressを使うと一人でささっとWebサービスを作れると考えたかといいますと、以下のような理由だったと思います。
・レンタルサーバーを借りればすぐにサイトが作れる
・プラグインが豊富なため必要な機能を自力で開発しなくてよい
・管理画面やユーザー管理など基本的な機能が初めからある
・書籍やインターネットに情報が豊富にある

また、私個人としてもWordPressに強い興味がありました。というのも私は前職でWordPressのようなCMS(コンテンツマネジメントシステム)を社内向けに開発していたこともあり、世界中で一番使われているCMSがどのような作りになっているのか興味があったためです。

では、実際に二年間開発を続けてきて、今はどう思っているかを書いていきたいと思います。

レンタルサーバーで簡単運用

通常、Webサービスを作って運用を開始する場合は、AWSなどを利用してサーバーを役割ごとに何台か用意するのが普通かと思いますが、その分適切なサーバー構成を考えたり、OSを一からセットアップするなど、インフラやミドルウェアの知識や経験が必要となってきます。それはWebサービスが順調に拡大した時のスケーラビリティや、大量のアクセスにも耐えられる負荷耐性が必要なためです。また運用が開始したのちも、OSやミドルウェアの更新などは自分たちで行う必要があります。

一方、私たちのように、「Webサービスのアイデアが出たら、さくっと作ってさっさとリリースしよう」と考えている場合ですと、そのサーバー構築の時間すらもったいなかったりします。さらに私一人しかエンジニアがいないような組織ですと、そのサーバー運用という日常業務も乗っかってくるので、余計に手間がかかります。

その点、レンタルサーバーでは、WordPressのインストールもボタン一つ押すだけで完了しますし、サーバーの運用はレンタルサーバーの提供会社が行ってくれるので、私が面倒を見ることはありません。DBの更新なんかもこまめにやってくれています。

それにWebサービスのリリース当初はそれほどアクセスも多くありませんし(それはそれで問題だけど、、、)、テレビにでも紹介されない限り、瞬間的な大量アクセスも来ないので、今まで問題なく運用できています。

ちなみに私たちはXサーバーのX10というプランを利用していますが、スピードも十分速いですし、質問しても丁寧に答えてくれますし、設定の情報などもインターネットに多く書かれているので困ったことはありません。それで、月々たったの1,080円で利用できるので、もう大満足を通り越してる状況です。年間で見たらサーバー費用が大きく節約できています。

豊富なプラグインで開発のスピードアップ

もともと他の人が作ってくれたプラグインの利用をあてにしていたわけですが、これも間違いなく開発のスピードアップに貢献してくれています。

Webサービスを作るときに、たいてい必要になるのがDBやサイトで利用している画像などのファイルのバックアップですが、WordPressには、無料で使えるバックアップソフトが多数あるため、いちいち自前で用意する必要がありません。他にもセキュリティ対策のプラグインやお問合せページを簡単に作れるプラグイン、会員登録やその管理を行えるプラグインなど、Webサービスの基本を固めるためのプラグインが数多く提供されています。しかも無料で使えるものがほとんどです。

また、便利なプラグインは多くのサイトで紹介されていますし、WordPressの管理画面から検索もできます。そして、どのプラグインにも評価や最終更新日が書かれているので、評価が悪いものや最近更新されていないものなどは利用しないようにすれば、安心して利用することが可能です。更新があったプラグインは管理画面にわかりやすく表示されるので、どれを更新すべきかも直ぐにわかります。

管理画面やユーザー管理など基本的な機能が初めからある

Webサービスを開発するときに何気に面倒なのが管理画面の開発です。Webサービスの利用者には直接目に触れませんが、データのメンテナンスや、お知らせなどの記事の登録・編集、ユーザーの管理など、Webサービスを運用していくうえで欠かすことができません。

WordPressでは、初めから管理画面が用意されていますので、開発をする必要がありません。
それにユーザー管理も、デフォルトで4つの権限があり、プラグインを利用すれば権限の追加も簡単に行うことができます。自分自身のプロフィールの変更やパスワードの変更などは、通常のユーザー権限でも可能なので、会員制のサイトなどを作る場合でも、いちいち設定画面を作らなくて良いので便利です。

書籍やインターネットに情報が豊富にある

Amazonで”WordPress”で検索すれば、何冊あるのかわからないくらい本が販売されています。近所の本屋でも少し大きなところに行けば必ず何冊かはWordPress関係の本が置いてあります。ちなみに私の場合は私が住んでいる市の図書館でもWordPressの本が10冊以上借りられます。

インターネットにもたくさん情報があります。基本的なサイトの作り方や、お勧めのプラグインとその使い方、サーバーへの設置方法など、多くの方が図を交えて丁寧に書いてくれています。

なおインターネット上にたくさんの情報があるWordPressですが、初めて使う人は、まずは数冊、書籍を元に手を動かしてから基本と勘所を理解する方が手っ取り早いと思います。

WordPressでWebサービスを作るデメリット

さて、ここまでWordPressを利用して開発をするメリットを書いてきましたが、デメリットももちろん感じています。

古い情報や疑わしい情報に注意

先ほど情報が豊富にあると書きましたが、WordPressが日々進化していることもあって、古い情報が混じっていることも多いです。特にプラグインの説明などは一度書いたら更新されていないブログも多いので、注意が必要です。書いてある通りに設定しても情報が古くて動かないなんてこともありえます。私はgoogleでWordPressやプラグインの情報を探す時は、まずは1年以内に書かれた記事の中から検索するようにしています。
また、プログラマーでは無さそうな人が、他のサイトのコードをコピーして間違って紹介していたりするのでその点も注意が必要です。

Webサービスを開発する場合、日本語だけでの情報収集では厳しい

通常のブログサイトでよく使うプラグインに関しての日本語の情報は豊富にありますが、Webサービスを作る場合では、情報が不足する場面が多々あります。しかし、海外では日本よりもWordPressで開発を行っている人が多いようで、多くの役立つプラグインやそれらを活用するための情報が多く存在しています。ただ残念なことに日本ではあまり需要がないのか、それらのプラグインに関して日本語の情報を探すのは難しかったりします。
また、壁にぶつかったときも日本語だけの情報収集では限界があり、例えばstackoverflowなど、海外のコミュニティで情報を探すことも多いです。とは言え、開発の話をしているので、英語が苦手なエンジニアでも翻訳サイトなどを使えば、おおよそ話の内容はつかめるのではないでしょうか。

RDBっぽくない

WordPressはDBにMySQLを使っているため、RDBになっているのですが、主要なデータはwp_postsテーブルと、それに紐づくwp_postmetaテーブルに格納することになります。例えば、記事データ、請求データ、在庫データは性格も項目も異なるため、それぞれ別々の独立したテーブルを作ることが一般的かと思いますが、WordPressでは一つのテーブルに記事データも入れるし、請求データも入れるし、在庫データも入れるといった感じです。これらの区別はwp_postsテーブルのpost_typeで定義し、こうして作られた独自のpost_typeをカスタム投稿タイプと呼びます。この方法はテーブルの数をむやみに増やさないという点で効率的ではありますが、開発をしていると不便に感じることも多々あります。特にSQLでデータを操作したい場合は面倒です。またパフォーマンスの懸念も出てきます。一つのテーブルに複数の種類のデータを保存するために、テーブルが肥大しやすく、またwp_postmetaテーブルを複数JOINしないといけないため、さらに速度が遅くなってしまいます。

なお、私はPodsというデータフレームワークを使って開発を行っておりますが、Podsを使うとカスタム投稿タイプの定義もできますし、WordPressとは独立した独自テーブルを作ることもできます。私の場合、最初はWordPressの流儀に従って、カスタム投稿タイプでデータを定義していましたが、先述の通り、SQLが書きにくかったり、パフォーマンスの劣化が気になってきたので、最近は積極的に独自テーブルを作るようにしています。少し残念な点は、Podsも日本ではメジャーではないので、日本語の情報がほとんどないことが挙げられます。

もちろんMVCではない

WordPressはMVCモデルを採用していないため、それ上で作るWebサービスも必然的にMVCではなくなります。最近のWebサービスは何かしらのMVCフレームワークを使って開発することが多いため、それに慣れていると前時代的な感じがします。
ちなみに私は独自にWordPressに対応した”なんちゃって”MVCフレームワークを作って、それをベースに開発をしています。

今時点でのまとめ

ここで今時点での私なりの考えをまとめておくと、WordPressをベースにWebサービスを作るのは「少人数でサクッとプロトタイプ的なサイトを作る」のに向いていると思います。プラグインを上手に組み合わせ、プラグインではカバーしきれない部分のみ開発し、レンタルサーバーを準備すれば、あっという間に管理画面まで持った立派なWebサービスを立ち上げることができます。

また、PHP初心者がWebサービスを立ち上げるのにもいい勉強となります。コードは書けるようになったけど、Webサービスとして公開するまでどんなことをしたらいいのかわからない場合などは、レンタルサーバーでもサービスが開始できるので、そのハードルを下げられます。そして実際に運用していく中でプログラム以外のことも色々と学ぶことができます。それにWordPressとそのプログラムは全てオープンソースなので、自分が実現したい機能と似たようなプラグインを探してコードを読むと、どう実装すればいいのか非常に参考になりますし勉強にもなります。

お勧めの本

最後にWordPressでWebサービスを開発するのであれば、ぜひ読んでいただきたい本を三冊ご紹介します。
ただ、あくまでWordPressでWebサービスを開発する人向けの本なので、通常のブログサイトとしてWordPressを使いたい人向けではありませんのでご注意ください。

WordPressによるWebアプリケーション開発


実際にWordPressを使ってWebサービスを開発する方法がステップバイステップで書かれているので、そのとおり進めていくと、Webサービスを作る勘所が養われます。

amazonで見てみる

サイトの拡張性を飛躍的に高める WordPressプラグイン開発のバイブル


プラグインの開発方法について書かれていますが、プラグインを開発しない場合でも、Wordpressでの開発作法(開発環境構築、コーディング規約、ユニットテスト、ローカライズなど)が書かれており、とても参考になります。
amazonで見てみる

詳解 WordPress


この本はWordPressの構造や実行プロセスが書かれているため、どのような原理でページが表示されるのかが、理解できるようになります。ちょっと突っ込んだ内容のため、開発に慣れてきてから読む方が理解が進むと思います。
amazonで見てみる

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です