オープンソースとして理想的な SHIRASAGI
徳島発のオープンソースプロダクト SHIRASAGI の紹介セミナーが先日ありました。ずっと詳しく聞きたかった製品だったので、自分で開催しているボードゲーム会を中止にして、お邪魔することにしました。
いや-、これは予定をねじ曲げてまで行った甲斐がありました。すばらしい製品だと思いました。以前、このプロダクトオーナーであるウェブチップスさん主催のセミナーで、徳島に呼んでいただき、「国産」「オープンソース」「企業向け」としていまぼくたちが手がけているプロダクトの、信念みたいなお話しをさせて頂いたんですが、SHIRASAGI はそれを実現してます(たぶんぼくたちがやろうとして、能力不足で出来てないことも既にやってる)
その志も含めて非常に共感を覚えるプロダクトで、ちょっと興奮しちゃいましたよ。
あ、CMS という機能面について言えば、申し訳ないですが、ぼくには良し悪し、機能の過不足を判断できるだけの経験も材料もありません。ですので、以下は、その思想についての共感を述べています。もっとも、ここまで技術も経験もある集団が眼高手低になって、思想だけのプロダクトになっているとはさすがにちょっと考えにくいので、そのへんはわりと直感でありなんじゃないかと思ってたりしますよ。
さて、いくつか共感ポイントを紹介したいと思います。
ソースコードがその開発行動を含め、公開されている
以前にも書きましたし、ぼくに会う方々は何度も話してると思います。これ、ライブラリとかフレームワークを作ってるエンジニアにはあたりまえに思うかも知れません。が、企業向けの国産の OSS プロダクトでは意外と出来てないところも多いのです。「リリースされたバージョンのソースコードがzipで置いてあるだけ」とか「問い合わせページでなんか入力するとソースもらえる」とか。いや、もちろんそれだってオープンソースではあります。しかし、「開発行動」そのものが見えないというのは、開発者としては暗闇を歩かされてるような気持ちになります。これでは、ぼくはちょっとオープンソースとしてあまりに心許ない。
SHIRASAGI のソースコードは GitHub に公開されたものがすべてで、社内に別リポジトリがあってそこに先行コードがある、ということはないそうです(もちろん瞬間で言えば、各技術者の手もとに最新の最新があるのでしょうけれど、それは Git 使ってれば普通にあることですから)
つまり、そこにあるコードとコミットログがすべて。コミットログは、軌跡です。いまどこがホットなのか、どこは停滞しているのかわかります。軌跡を見るだけでその先の方向性も何となく分かるってものです。
コミュニティからの貢献を受け入れる準備が出来ている
まあ GitHub を使っているところで第一段階は済んでますね。GitHub というか プルリクエストがすごいわけですが、それだけコミュニティからの貢献がメッセージとして伝わると思っています。そのうえで実体としてのコミュニティが既に出来つつあるようで、プロダクトオーナー自身がそのコミュニティをちゃんと機能させようとしているところ、すなわち、コミュニティとプロダクトが一方的な関係ではなく、双方に貢献し合える環境を作ろうとしているところが、素晴らしいです。いやこれも、グローバルなプロダクトを扱っている方にはあたりまえのことのように思えるかも知れませんが、国産ではなかなかできてるところはなかったりするのです。不思議なんですけど。
ユーザコミュニティももちろんよいのですが、やはり開発者コミュニティが大事です。
API のホストアプリケーションとして設計されている
これはオープンソースかどうかとはちょっとずれていて、もっと設計に関する話なんですが、個人的には「APIのないオープンソース」「APIのあるプロプライエタリ」なら、後者の方がよっぽどましなんじゃないかと思ったりする人間なのです(以前にもそのエントリを書きました)。
API をどれくらい意識してプロダクトが設計されているかはたいへん重要です。API のレイヤーがあることで他システムと疎結合で連携が取れますから、そのプロダクトは巨大なシステムにロックインされづらくなります。オープンソースは自由であるべきですが、API がないケースでカスタマイズを入れすぎてしまったオープンソースは、ただコードが自由に読めるだけで、他のプロダクトに寄生する腫瘍のようない存在になっていきます。切り離しの手術はコードが読めるだけマシでしょうけれど、手術が必要になる時点でもはやダメです。
SHIRASAGI は RESTful であることに徹底しているようなので、その点だけでもう素晴らしいなと思いました(ま、ぼくがわりと RESTful 原理主義者だからってことですが)
製品コンセプトと技術的なバックボーンが合致している
SHIRASAGI は MongoDB をバックエンドに使っているということでした。自治体向けの CMS というコンセプトにおいて、MongoDB が犠牲にしてきている部分はあまり問題ではないという判断をしっかりしています。たとえば、「トランザクション的な部分を重視した業務向けのシステムのフロントには SHIRASAGI はあまり向かない」とはっきりおっしゃいました。ただ「新しい」から、MongoDB が流行っているから、というだけでないことは素晴らしいことだと思います(なお、技術者目線で言えば、新しいから、ということ自体も無視して良いことじゃないと思ってますが、トレードオフをちゃんと考えないといけませんよね。われわれはつい新しさを優先しすぎるきらいがありますからね)
というわけで、なんか、べた褒めになっちゃいましたが、付き合いがある会社さんだから褒めているわけではないことはおわかりかと思います(他の CMS も機能面ではそれぞれにいいものだろうとは思いつつ、わざわざ紹介しないことからお察しください)。 SHIRASAGI は、相当いいオープンソースプロダクトだと確信しています。これは負けてられないなーと思いました。うちで作ってる NemakiWare もAPIという意味では結構徹底しているので、システム上の連携もできるよなー、なんて思ったりしました。今後も注目していきたいと思います。