スパイスラボ神部です。
iKnow! API KICK OFF! Developer Challenge に参加表明していたところ、セレゴジャパンより「オープンソースライセンスであることを明示してソースコード入手できるようにしとかないと審査無効だかんね」というアラートメールがきていたので、急いで対応を進めました。
しかしよく考えてみると、オープンソースライセンス下で何かリリースするのって、生涯これがはじめてかも知れません。
iKnow! API KICK OFF! デベロッパーチャレンジについて簡単ににおさらい
-iKnow! API KICK OFF! Developer Challenge - iKnow! は、iKnow の API コンテストです。
全体的には制約も緩く参加のハードルも高くはないのですが、
・iKnow の開発者アカウントを作成し API Key を取得する必要がある
・英語学習アプリということでなかなかネタ出ししにくい
・応募作品は任意のオープンソースライセンスのもとでの公開が必要
というあたりが意外と障害になる気もします。
応募方法も、フォームやメールで連絡ではなく、開発者エリアのアプリ登録画面に
アプリケーション名の先頭に、【API KICK OFF!】と既述する
という一風変わったものであり、参加出来ているのかちょっと心配になりましたが、メールが来ているので無事認知されているようです。
自作のウェブサービスをオープンソースライセンスで公開する
さて、オープンソースライセンスで公開せよ、と言われても、これまでオープンソースライセンスでソフトウェアを公開したことがない私は、どのライセンスを選べばよいかわかりませんでした。
今回のコンテスト用に設けられた、専用の日本語フォーラム がありましたのでこちらで質問してみたところ、Wikipedia のオープンソースの項目を見よとのこと。何という丸投げw
結局私は独断と偏見により BSD ライセンス が公開する側も利用する側もやりやすいと思ったため、BSDライセンスを選択しました。
自分のソースコードにオープンソースの魔法をかける
さて、オープンソース化するといってもどうやってやったらいいものかわからないので、よく見かける感じの「ソースコードの先頭にライセンスを貼り付ける」という原始的な方法で取り組むことにしました(Mozilla のソースコードリポジトリなんかは全部そんな感じだったことを思い出して)。
ひな形としては Open Source Initiative OSI - The BSD License:Licensing | Open Source Initiative にあるものを利用し、Owner と Organization、Year を原文から差し替えました。
実は今回この作業を見越して、ソースコードのファイルは二つだけにしておきました。もしこれを CakePHP で構築したら、いったいどうやってソースコードにこれらのライセンスを添付すればよいのでしょうか。ファイルひとつひとつにライセンスのコピーを貼り付ける?とてもそんなことはやっていられません。フレームワークごとに「ここに書いておけばOK」とか「ここに置いておけばOK」というものはあるのかもしれませんが、それらはユーザが自分自身で処理しなければいけないことを考えるだけでも悩ましいところです。
このあたりが「今時の開発者なら当たり前に出来るだろう」というところが、iKnow コンテストの隠れたハードルの高さであり、自分自身の「ウェブにおける開発者としての意識の低さ」を自覚させられる出来事でもあったりもしました。
ソースコードをダウンロード出来るように公開する
さて、ソースコードの準備が出来たら、iKnow の審査に落ちないようにサイト上でダウンロードできるようにリンクを張っておきます。
・・・なんだかこれもちょっと違和感があるんですよね。sourceforge とかでこっそり開発を続けているならともかく、サービスサイト上で公開してしまうと某はまちおにいさんのような指摘好きな方にゼロデイアタックを受けてしまう可能性があるし、利用者に対してもソースコードのダウンロードの混乱の原因になるような気がします。
ソースコードの脆弱性を減らすことは、ソースを公開することによって返って進むというところをポジティブにとらえるとしても、やっぱり大規模アプリになったらどこまで脆弱性をチェックしきれるかというところで、オープンソースで公開することが前提であるがゆえに企画よりも開発のところにかなり力を注がなくてはならなくなります。今回はコンテストということで特別対応するにしても、アイディアと実装を広く集めるやりかたとしてはベストであるとはいいきれないのではないでしょうか。
強い信念のもとにオープンソースライセンスを支持しているのだということであればそれはぜひ応援させていただきたいところですが、手塩にかけたサービスがあっという間に誰かにコピーされてより流行させられてしまうのではないかという気持ちも正直あります。Mozilla の製品のように、多様なプラットフォームに移植しなければならないということであればソースコードを公開することは開発者にとってのメリットを大きく感じますが、こういった超小規模な Web 上のサービスですと LAMP 環境なんていくらでも調達できるし、ちょっとした手間を加えればあっという間に別のサービスにアレンジ出来てしまうことからも、正直このレベルでソースコード公開はしたくないなぁ、というのが心情です。
応募アプリは「英語日和」というものです。
さて本当に前置きが長くなりましたが、今回コンテストに応募するアプリは「英語日和 」というものになります。
詳しくは、「英語日和」をリリースしました (ラボブログ) にもありますように、学習した項目がリンク済み項目として画面から消えていくだけという、アイディアとしては非常に弱いものです。まだ読んでない
というサイトでも使われているように、ユーザの履歴とブラウザのレンダリングの関係をつかったものです(一部行動ターゲティング広告もこの手法を使っています)。
本当はもっと面白いものを考えていましたが、やはり最終的にソースコードを公開しなければいけないというところを考えると、あまり複雑なものや脆弱性を孕む可能性があるものにはとりくめないなといおそれがありました(もしデータベースを使うような場合は、その設定ファイルは別途配布用に用意して実装環境とは別のモノにしていかなければなりません。今回は API Key を利用していませんが、それらはソースコードから切り離さなければいけない可能性もあるでしょう)。
やはり印象としては「コンテストにオープンソースライセンスは向かない」という気持ちが強かったです。
でも、いい経験になりました
しかし、なんだかんだ言ってオープンソースライセンス下でソフトウェアをリリースするといういい体験ができました。ここから先は Web 上で知的財産を共有するということがどういうことなのかを改めて考えてから議論していきたいと思います。
今回のアイディアではとてもプライズを取れるとは思わないので、その分このエントリで自省することで自分自身の糧に出来ればと思っています。
参考リンク
-オープンソース法・・・makoto_okada さんによるオープンソースライセンスの全文日本語訳をコンテンツとしたブログ
関連記事



