無料プラグインのカスタマイズは高くつく
たまに無料プラグインをカスタマイズすれば安くなりますか? 安くなるんでしょ? という問い合わせが来るけれど、答えは「ならない」だ。
WordPressはPHPで書かれていて、スクリプトだから中身はテキストファイルなんだけれど、そのプラグインの恒常性を保ったままカスタマイズできることは少なかったりする。
プラグインをカスタマイズするには、カスタマイズポイントがなければならなくて、そのカスタマイズポイントはプラグインの作者が設定している。
豊富にあるプラグインもあれば全くないものもある。作者次第なんだよね。
では、プラグインのカスタマイズポイントを無視して書き換えるとどうなるかというと、プラグインの恒常性が失われる。
公式から配布されている無料プラグインは新しいバージョンがリリースされると使用者に通知が来る。
バージョンアップを実行すると、一旦プラグインファイルは全て削除された後に、新規にインストールされる。
つまり、プラグインを勝手にカスタマイズしていると全て上書きされてしまう。
新バージョンを再度書き換えればいいわけだが、旧版と同じ様に書き換えられるかどうかは保証されない。
新バージョンではまるっと変わっている可能性もある。
できればいいけれど、できない場合はプログラムコードを解析し直して再度一から取り組むしかない。
コピペで一箇所だけ変えれば済むような話であればいいけれど、変更箇所が様々なファイルの様々な場所に散らばっている場合はかなり難儀することになる。いずれ破綻する。
無料プラグインをちょこっといじって納品していたりすると痛い目にあったりする。
問題はプラグイン同士の連携
このような精査をしていると、無料プラグインで低コストカスタマイズというメリットがどんどん目減りすることになる。
で、一番大きな問題はプラグイン同士の連携だ。
例えばよくあるのが、会員制サイトで定額課金決済で会員管理機能と会員向けコンテンツ管理機能を付けて欲しい、というもの。
会員制サイトを構築するプラグインもオンライン決済するプラグインも単体無料ではあるけれど、そのプラグイン同士が連携できるわけではなかったりする。
作者が違う、開発思想が違うなど、色んな理由があるけれど、プログラムは単純に切って貼るというわけにはいかない。この辺を分かっていない人は多い。
プログラムコードを粘土のように考えている人は多いけれど、実際には大きさと形の異なるレゴブロックみたいなものなんだよね。
では、にもかかわらず無理やりプラグイン同士を連携させようとするとどうなるかというと、ネックになるのは管理画面とデータ構造の整合性、そしてセキュリティだ。
厄介なのは管理画面
特に厄介なのが管理画面で、ユーザーに何かを入力させるという機能を付けるということは、同時にそれを追加・更新・編集・削除する機能も必要になる可能性が高いことを意味している。
例えば、4つのプラグインを連携しようとしたら、そのプラグインごとにそのプラグインのやり方で管理画面をつけなければならない。
あるいは、共通して管理できる中間連携用のプラグインを開発して統一するしかない。
もちろんコストがかかるし新バージョンが出ればその対応にもメンテナンスコストが掛かり続ける。
例えば、クライアントがいて自分が受注者として無料プラグインをカスタマイズするということは、そのプラグインの使い勝手の改善コスト、不具合修正のコストを全て引き継ぐことに他ならない。
(でも予算は無料プラグインのカスタマイズ程度しか出ていないだろうから、とてもじゃないが割に合わず、実質的には無理なことが多い)
傭兵に全責任を押し付ければ金をもらえば逃げるのは目に見えている。
仕様書や設計書がないプログラムをリバースエンジニアリングすることは、それを一から開発するより開発コストが掛かったりする。
理由はそのプログラムに間違いがないとは限らないからだ。もし何らかの不具合があればそれも見つけて引き継きで修正しなければならない。
欠陥があれば解析と同時に欠陥の修正も必要で、その欠陥が根本的なものであれば根っこから作り直す必要が出てくるんだよね。
であれば、最初からオリジナルで開発した方が、最終的には問題とコスト小さく抑えられることになる。
商用で数年に渡り運用したいなら、継ぎ接ぎだらけの状態でまともに動き続けるわけがないので考え直すべきだ。
しかし、一番ネックなのはオリジナルのワンストップで開発したいと思っても、その開発費が捻出できないことだろう。
クラウドソーシングサービスのランサーズでも一番多い予算ボリュームのレンジは10万~20万。
結局はお金の問題=発注者の経済力
おそらく発注者の1ヶ月の給与が基本なんだろう。
発注者が1ヶ月取り組んでもできないことをプロならやってくれるかもしれない、ならば頼んでみるか、なんてことなのかもしれない。
しかし、10万~20万といった予算は、人日単価で計算すると1週間から10日程度の開発日数しか確保できないんだよね。
ここにシステム以外にデザイン予算も含まれていることが多々あるので、ほぼ無理ゲーだったりする。