WordPress Advent Calendar 2012の4日目です。昨日はWordPress を扱う上で憶えておいて欲しい3つのesc(@jim0912さん)、WordPressの条件分岐をもちょっと便利にする関数作ったよ(@anticyborgさん)でした。本日は私と@khoshinoさんが書きます。
WordPress は、GPL(互恵ライセンス)で配布されています。このことがプラグイン開発にもたらす影響について書きます。コミュニティに参加している方は、互恵性のメリットを実感している方も多いと思います。(WordCamp Tokyo 2012 の発表Advanced Custom Fields プラグインにおける コラボレーション 水野 史土 も、互恵性をテーマにしました。)Advent Calendar から WordPress に興味をもった人もいるかもしれないので、GPL について、また GPL がプラグイン開発にもたらす影響について、解説したいと思います。(GPLの弱点とその対処については、商用サポート付きGPLテーマの一覧をごらんください。)
GPL の特徴
- ソフトウェアのソースコードが入手できる
- ソフトウェアを自由に利用できる
- プラグイン等の派生物も同様の自由が保証される
1. のメリットは言うまでもないでしょう。ソースコードを調べることで、動作の仕組みや設計を、早く確実に理解することができます。「WordPress3.xの新機能を調べてみた」といったブログ記事をリリース直後に見かけるのも、ソースコードが公開されている → 学習しやすい、というのが一因でしょう。開発プロセスがオープンになっていて、http://core.trac.wordpress.org/から誰でも開発に参加できることも大きいかもしれません。
2. も重要です。既存のコードを元にカスタマイズすることで、効率よく開発できます。コードが公開されていても、利用が制限されていれば、同等の機能を自分で再実装する等の手間が発生します。また、カスタマイズの自由が保証されているため、仮に現在の開発者が引退しても自分でメンテナンスして使い続けることができ、お客様に納品する場合にも安心です。
GPL は「派生物も自由に利用できる」ことを保証する
「オープンソースのソフトウェアは自由にカスタマイズして利用できる」というのは正しいです。しかし、オープンソースのソフトウェアから派生したソフトウェアについては、自由にカスタマイズできる、という保証はありません。別のライセンス、例えば MIT のプロダクトでは、本体はオープンソースで、上述の 1. や 2. を満たしますが、プラグインやアドオンにも自由が保証されているとは限りません。MIT のソフトウェアのプラグインが MIT である可能性もありますが、そうでないかもしれません。
ソフトウェア単体でみた場合、MITライセンスは自由(制限が緩い)ですが、プラグインやアドオンのように、本体と組み合わせて使うプロダクトまで含めると、MITライセンスのソフトウェアは自由で無くなる、という危険性を孕んでいます。カスタマイズを全部自分でやるぜ!という方には嬉しいライセンスです。しかし、アドオンを上手く組み合わせて効率よく、という場合に困る可能性があります。
一方で、上述の 3. 「派生物も自由に利用できる」ことを保証するのが、GPL に代表される互恵的ライセンスです。WordPress も GPL を採用しています。このため、WordPress 本体だけでなくプラグインも、ソースコードを入手でき、自由に利用できることが保証されています。
プラグイン同士の連携
Custom Field Snippet プラグインは、標準のカスタムフィールド用スニペットを作成します。それだけでなく、Advanced Custom Fields プラグイン(作者:Elliot Condon)のスニペットも作成できます。プラグインが GPL で配布されているので、プラグイン同士の連携がしやすいです。
Advanced Custom Fields のソースコードを読むことで、Advanced Custom Fields の条件設定の実装を理解することができました。さらに、Advanced Custom Fields の条件設定を行っている部分のソースコードをベースに、Custom Field Snippet の条件設定のスニペットを生成するコードを作成しました。
このおかげで、Advanced Custom Fields プラグインが条件設定機能を追加してから、ほんの数日で、Custom Field Snippet プラグインが Advanced Custom Fields プラグインの条件設定機能に対応することができました。Custom Field Snippet プラグインにおいて、Advanced Custom Fields プラグインのコードを再利用したためです。このような連携を効率的に行えるのは、互恵性のおかげです。(WordPress のライセンスが GPL でなかったら、自由に利用できないプラグインが多く出回っていたかもしれません。もしそうなっていたら、別のプラグインと連携するプラグインを作るのは難しかったでしょう。もし作れたとしても、効率よく開発できなかっただろうと思います。)
なおGPLは、このようなメリットを、自分が享受するだけでなく、自分のプラグイン/アドオンユーザーに許可しなければならない、というルールがありますので、守るようにしてください。
Advanced Custom Fields プラグインが公開される → Custom Field Snippet プラグインが Advanced Custom Fields プラグインと連携できる → Advanced Custom Fields プラグイン自体をさらに便利に利用できる、という良いサイクルが生まれるのも、互恵的ライセンスであることが大きく影響していると思います。(Advanced Custom Fields プラグインと Custom Field Snippet プラグインは、片方だけ使用することもできます。)
明日は@imura_designさん、@mypacecreatorさんです。お楽しみに。