- 2012年12月19日 19:56
こんにちは。ひさびさの更新です。
僕が開発に携わっているbaserCMSで Advent Calendar をやる事になったので、もう更新する事もないかなと思っていたこのブログで書いてみる事にしました。
Advent Calendar は、だいたい技術系の内容が多いのですが、今回はちょっとそれたお話しになりそうです。
baserCMSの開発の経緯とか、今後どうなっていく事を目指しているかとかそういった事が伝わればよいかなと思います。
baserCMS開発の経緯
baserCMSについて極論を言うと、僕がフリーランス時代に溜め込んだ「大きめのライブラリ」です。
プログラマの特性として、「一回書いたものは二度と書きたくない」という事で、どうしても使いまわして楽をしたかった。
フリーランス時代、商品検索システムだとか、店舗検索システムだとかWeb系の更新システムの開発に携わる事が多かったのですが、当時は管理画面もその都度最初から作っていました。
ある程度デザイン的なものは使いまわすにしても、その作業が煩雑で面倒。
Web系の更新システムは、公開サイドのデザインとも密接に関わる事がほとんどなのですが、せめて、Webサイトの雛形を作りたいなというのが始まりです。
そこに、プラグインという形で機能を追加できたり、スクラッチにしてもライブラリとは完全に分離できれば便利になるなと。
プレゼンテーション層に限りなく近いところまでをフレームワーク化する。まさにWebサイトのフレームワークを想像してました。
僕のフレームワークの経験としては、Smarty → 自前フレームワーク → Mojavi → CakePHP といった感じですが、CakePHPはサイズ的にちょうどよく、規約もしっかりしていて、かつ、逃げ道が色々と用意されているという印象で、一気にハマり込みました。
といった事から、作ったライブラリ群は、CakePHP の app にボンボン放り込んでいってました。
別のWebサイトの案件が始まると、そのライブラリ込みのCakePHPをコピーして使うのですが、別サイトで利用した「いらない部分」があったりするので、まず面倒。
また、ライブラリに致命的なバグが見つかった場合は、納品済のサイト全部にコードベースで修正を加えていく必要がありました。
当時は小さいプログラムを色んなサイトに納品していたので、ひどい時は、20〜30サイト以上も一気にメンテするハメに。
ライブラリのバージョン管理はしていたのですが、納品先ごとのバージョン管理はちゃんとやってなかったので、どこからどこまでを反映させたかどうかなんて考えると気が狂いそうでした。
保守費用をちゃんともらってない上、立場の弱いフリーランスのプログラマなもので修正費用も請求しにくいという。。
単純に、当時の僕のビジネススキル不足だっただけかもしれませんが。
そこで、当時、ライブラリと拡張部分のフォルダ分けをしているEC-CUBEを参考に、ライブラリ部分を app から分離する事にしました。
分離したフォルダの名称が baser です。
ただ、その当時は、EC-CUBEを参考にしクラスを継承する仕組みを採用してましたので、appフォルダ内がかなりチラかるハメとなり、コアライブラリのバージョンアップ自体は、上書きだけで楽に行えるようになったものの、app内は、どのファイルがカスタマイズしているファイルなのか全てをチェックする必要がありました。ああ、結局、面倒。
そこで他に何かいい方法がないかとCakePHPのソースコードを読み漁ったところ、Configure クラスで、include するクラスの候補を管理している事に気づきました。
CakePHPでは、cake というフォルダ内にCakePHPの全てのライブラリが詰まっているのですが、app というフォルダ内の指定の場所にコピーするとそちらを優先する仕組みを備えています。
では、app と cake の間にもうひとつ候補を挟めないかという思いつきでしたが、それができる仕組みをなんと CakePHP は既に用意していました。
この辺の話は、12月12日の kanjihtmt さんが書いてくださっているのでそちらを見られてください。
※ CakePHPの最新バージョン(現在 2.2.4)では、App::build というメソッドで提供されています。
この仕組みがあったおかげで、baserCMSは、フレームワークであるCakePHPの上にフレームワークを載せる事に成功しました。
バージョンアップの問題も解決し、何かあった場合のメンテナンスもだいぶん楽になりました。
書き始めると長くなってきましたが、次は何故オープンソースにしたか。
baserCMSをオープンソースにした理由
さて、自分なりに素晴らしい仕組みと思えるものができたので、次はどうしようかと考えました。
まずは「ソフトウェア販売」を考えましたが、2つの問題が頭をよぎりました。当時の僕はお金もない1人のただのフリーランス。
広告にかけれるお金がない、保守を提供できる体制がない。
この状態で販売してうまくいくか。自分がこれまでに取引をしてきたお客さんだけに提供するのであればまだなんとかなるかもしれないが広がりがない。出資を受けるには勇気がなさ過ぎた。
そんな時、ある人物よりこんなアドバイスを受けました。
「オープンソースにしたらどう?」
それまでオープンソースを使った事は何度も何度もあるけど、自分が提供する側という発想はありませんでした。
そこからオープンソースへの興味が強くなり、オープンソースに関する色んな情報を収集しました。
結果、僕なりに5つの事がわかりました。
- 無料を前提とするので多くの方につかってもらいやすく知名度も向上しやすい。
- 多くの方につかってもらえるので多くのフィードバックを受ける事ができる。
- ボランティア開発者の協力を得やすくみんなで同じ場所にノウハウを貯めこむ事ができる。
- 協力者が集まれば自分自信がダメになった場合も継続する事ができる。
- 利用者は自己責任である。
なんて素晴らしい仕組み。これで広告の問題も当面の保守の問題も解決しました。
さらに、プロダクト自体をもっと良くする事ができるし、幅広く使ってもらえる。
後は、マネタイズの問題のみ。
これがその後一番の足かせとなるのですが、当時の僕は、利用者が増えれば仕事は後からどうとでもなると思っており、オープンソースしかないと考えていました。
そこからが茨の道の始まりです。
現在に至るにあたり、従業員雇用、事務所開設、離婚、破産寸前、解散、と色々な事がありました。
色んなところでエピソードを話す度に、「自虐ネタ」とお褒めの言葉?を頂いているのですが、無償のパッケージで利用者と協力者を増やすまでがホント大変でした。
忙しいのにお金がない。まさに貧乏ヒマなしというヤツですね。
なんとか乗り切り、今では以前に比べ、利用者も協力者も少しずつ増えてきています。
数カ所のホスティングサービスに簡単インストールとして採用され、少しずつ認められてきました。
仕事の方もbaserCMSをカスタマイズするお仕事がだいぶ増えてきており、スタッフも増え、最近、法人化する事ができました。
これからが正念場。
普及活動の成果もあり、使ってもらえるようになってきたので、パッケージ自体をよくしていかないと。
パッケージ自体をよくしていく為にも開発者を増やさなければなりません。
現在は、CakePHPの最新版に対応したら、開発者の方も増えると信じて CakePHPの最新版への対応をすすめています。(現行のbaserCMSの最新版のCakePHPは1.2系です)
それと同時進行で、baserCMSの次期バージョン 2.1.0 の開発もすすめています。
今年中のリリースには間に合わないかもしれませんが、さらに使いやすくなる予定ですのでお楽しみに!
また、実現可能かどうかまだハッキリしていないですが、書籍の出版もやり取りをすすめています。
そして、テーマやプラグインの販売サイトの企画もすすめています。
会社では社長1年生という事でやる事が多すぎて、まだまだ貧乏ヒマなし状態で、なかなかbaserCMSにかける時間がとれずにいますが、ここを乗り切れば、baserCMSは次のフェーズを迎えられると信じています。みなさん、見捨てないでねっ><
今日の教訓
みなさん、マネタイズはしっかりとやりましょうね!
- Newer: baserCMSの初書籍が発売に
- Older: 生きてます