グリーとオープンソースソフトウェア - GREE with Open Source Software -

グリーとオープンソースソフトウェア

OSS的写真

インフラストラクチャ本部の大場です。

今日から12月がはじまりました。みなさんは、今年やりたかったことはできたでしょうか。僕はといえば、やりたかったことが多くてあれもできなかった、これもできなかったとという後悔から目をそらすため、今日は11月32日かもしれないと強い意志で自己暗示をかけているところです。

さて、それはさておき今年を締めくくるのに相応しい企画として、これからグリーのエンジニアがクリスマスまで毎日このブログを更新していきます。題して『GREE Advent Calendar 2013』が始まります。

今回、口火を切る役としてグリーとオープンソースソフトウェアの関わりについてゆるくまとめましたのでお付き合いください。

グリーとオープンソースソフトウェアの関わり

グリーはApacheやLinux、PHPをはじめ多くのオープンソースソフトウェアに支えられて開発をしています。
常日頃からお世話になっているオープンソースソフトウェアを利用するだけでなく貢献していきたいとも考えていて、機会があればupstreamへパッチを送ったり、あるいは社内で作ったライブラリやフレームワークを公開もしています。

グリーが公開しているオープンソースソフトウェアとして、古くは藤本さんが開発したEthnaFlareなどがあります。最近ではlwfという坂本さんのアニメーションエンジンがあります。そんな中、僕は開発者としてではなくソフトウェアをオープンソースとして公開するにあたっての支援をするお仕事をさせていただきました。

会社が自社開発したソフトウェアをオープンソースとして公開する理由はいろいろありますが、ひとつには広く共有することによって開発したソフトウェアの寿命を延ばすことができるのが開発したエンジニアにとって嬉しいところではないでしょうか。実際に五年前に公開したFlareは今も継続的に更新されており、社内で行った改善もすべて反映されています。

他にいくつか期待していることをまとめますと以下のような感じです。

  • 素晴らしいソフトウェアを会社の枠を越えて広く共有し社内外での開発効率を向上
  • グリーの技術者のプレゼンスを向上することでひいてはグリーの技術力をアピール
  • オープンソースコミュニティ活動を通じたスキルの向上

プロジェクトにもよりますが、現在もpull requestやissueの報告を受けたりもしていますが、次のフェーズとして開発コミュニティとして育てていければと思っています。

公開フローの話

ソフトウェアの公開にあたっては主に次のようなポイントを確認しています。

独自のライセンスを発明しない

ライセンスは、基本的にOSIが認めるオープンソースライセンスから選択しています。
オープンソースコミュニティの中でコンセンサスのとれていない新たなライセンスを発明することは会社とコミュニティの両方にとって新たな課題を生み出します。よほどの理由が無い限りやるべきでないでしょう。

また、ライブラリの性質にあったライセンスを選択するということも考えていて、例えばアプリケーションに組み込んで使うことが前提のlwfなどは、組み込みに制限の無いzlibライセンスを選択しています。

ただし、もっとも尊重されるのは開発者の意思なので最初に必ず本人に希望のライセンスを確認しています。

コーディング規約的なこと

多くの人の目に触れる状態にするということで、読む人のことを考えて一定のコーディング標準に沿った記述がなされているかを確認します。どのようなコーディング標準でもよいのですが、ソースコード全体であまりに統一感が無いとあとから開発に参加する人がpull requestし難いからです。

こういった公開フローやガイドラインを通じてグリーのエンジニアが安心して社内で開発したフレームワークやライブラリを、オープンソースとして公開できるような会社としての仕組みづくりをしています。

これまで公開してきたソフトウエアをいくつか紹介

oss-stack.001

すべては紹介できませんが簡単にいくつか紹介します。この後のAdvent Calendarで取り上げられるものもあるかもしれません。

Observed

URL: https://github.com/gree/observed

監視システムを簡単に実装できるRubyのフレームワークです。


JOSE

URL: https://github.com/gree/jose

JSONデータに署名したり暗号化する規格のjoseのPHPリファレンス実装です。


LWF

URL: https://github.com/gree/lwf

Flashコンテンツから変換したデータを用いたマルチプラットフォーム対応のアニメーションエンジンです。
Creator's Blogに丁寧な紹介記事がありますので、参考にしてください。


sf2synth.js

URL: https://github.com/gree/sf2synth.js

Chrome上でWeb Audio APIを使ってSoundFont音源を鳴らせるJavaScriptライブラリです。smfplayer.jsを使うとMIDIファイルを再生できます。


haskell-test-sandbox

URL: https://github.com/gree/haskell-test-sandbox

Haskellで書かれたSandbox内での自動テストできるフレームワークです。Flareのテストに使われています。


Cascade

URL: https://github.com/gree/cascade

データベース、KVSなど多様なストレージバックエンドに対応したデータアクセスライブラリです。
某記事に(内製、非公開)と載ったのでカッとなって公開した。


まとめ

脈絡なく猫

このようにグリーは、引き続き社内開発したライブラリを公開したり、オープンソースプロジェクトへ貢献していきます。今後ともよろしくお願いします。

入社してから2年が経つ中、業務のかたわらでやってきたことがしっかりした制度になりました。取りも直さずオープンソースへの造詣が深い藤本さんや、法律家でもなんでもない僕に辛抱強く付き合ってくれた知財法務の皆様のお陰です。この場を借りて感謝します。ありがとうございます。

最後までお付き合いありがとうございます。

明日はPythonistaの亀井さんです。