ククログ

株式会社クリアコード > ククログ > Ruby関連のコンテストっぽいものへの応募例

Ruby関連のコンテストっぽいものへの応募例

Rubyに関する取り組みは無理のない範囲で応援しています。コンテストっぽいものもそのうちの1つで、ちょうど募集している時期にそれっぽいものがあれば応募しています1。これは、応募者が少しでも増えると、次回の開催時には少しは盛り上がるのではないかという期待からです。「応募したくなる人が増えるには」という方向で考えた応援の仕方です。

逆に、応募する敷居を下げる方法もあるでしょう。その1つに「どのように応募すればよいかのヒントを提供する」ことがあるのではないでしょうか2。ということで、Rubyアソシエーション:2011年度助成金公募への応募内容と第3回フクオカRuby大賞への応募内容を紹介します。Rubyアソシエーションの方は落ちた応募で、第3回フクオカRuby大賞は受かった応募なので参考にするときは注意してください。なお、どちらも現在(2011-12-12)は募集していませんので、気になった方は次回の募集時に応募してみてください。

Rubyアソシエーションの2011年度助成金への応募内容

目的が似ていそうな原さんの世界の誰でも読めるRubyリファレンスマニュアル(に向けて)が採択されています。その観点から、「この応募内容では何が足りないのか」を考えると参考にしやすいのではないでしょうか。なお、2011年12月18日(日) 13:00から秋葉原でRubyの次世代リファレンスマニュアルを構想する会あるそうなので、興味のある方は参加してみてはいかがでしょうか。

----
* 応募者名(個人名又は団体名)

株式会社クリアコード

* 担当者名

須藤功平

* 連絡先電子メールアドレス

kou@clear-code.com

* 略歴

  * 2006年7月25日: 設立
  * 2008年8月5日: 代表取締役を須藤に交代
  * 2009年6月: 日本Ruby会議2009にスポンサー・発表者として参加
  * 2009年10月: とちぎRuby会議02にスポンサー・発表者として参加
  * 2009年12月: 札幌Ruby会議02にスポンサー・発表者として参加
  * 2010年8月: 日本Ruby会議2010にスポンサー・発表者として参加
  * 2011年3月: 第3回フクオカRuby大賞でコミュニティ特別賞を受賞
  * 2011年6月: 本社移転
  * 2011年6月: 日本Ruby会議2011にスポンサー・発表者として参加

* プロジェクト名

Ruby用ドキュメントツールの国際化対応

* プロジェクトの詳細

以前のRubyは他のプログラミング言語と比較してドキュメントが弱
いと言われていたが、最近ではるりまプロジェクト(*1)や"Ruby
1.9.3 Documentation Challenge"(*2)などによりRubyのドキュメン
トが改善されている。

(*1) http://redmine.ruby-lang.org/projects/rurema/wiki
(*2) http://blog.segment7.net/2011/05/09/ruby-1-9-3-documentation-challenge

しかし、上記の2つのプロジェクトはそれぞれ独立に動いており、片
方の成果をもう一方が取り込む、といったことが難しい状況となっ
ている。ドキュメントを改善する作業はあまり人々の関心を得られ
ず、慢性的にリソースが足りない状況である。それにも関わらず
リソースが分散してしまっており、日本語のRubyのドキュメントも
英語のRubyのドキュメントもRuby全体を網羅したものにはなってい
ないのが現状である。

このような状態になってしまっているのは、ドキュメントツールが
国際化に対応していないことが問題であると考える。そこで、この
プロジェクトではRuby用のドキュメントツールであるYARD(*3)に国
際化機能を実装し、貴重なドキュメント改善作業のリソースを分散
せずに協力して作業できる仕組みを提供する。

(*3) http://yardoc.org/

なお、すでにこの作業は開始しており、YARDのメーリングリストで
国際化対応について議論を行なった(*4)。国際化対応作業の方向に
ついてYARDの作者から合意を得ており、実際にいくつかの機能は実
装済み(*5)である。これより、以下のことが言えるため本プロジェ
クトの実現可能性は高いと考える。

  * YARD開発チームとの関係が良好である
  * すでに方向性が決まっている
  * すでに動き出している

(*4) http://groups.google.com/group/yardoc/browse_thread/thread/9aecb2fe3c6c9d5
(*5) https://github.com/kou/yard

Ruby標準添付のRDocではなくYARDに対して国際化対応を行う理由は
以下のとおりである。

  * 国際化機能を実装するにあたり、RDocでは他のライブラリを利
    用しづらいため。
    (他のライブラリもRubyに標準添付しなければいけないため。)
  * YARDはRDocの上位互換であり、RDocで書かれたドキュメントも
    YARDで扱えるので、YARDの方が国際化機能を適用できる範囲が
    広いため。
  * YARDの方が拡張を意識した作りとなっており、実装しやすいた
    め。

YARDを国際化対応した結果、使い勝手がよく継続的に利用できるも
のであると判断できた場合はRDocへのポーティングも検討すること
を考えているが、本プロジェクトの範囲とはしない。

* プロジェクトの成果物

以下を成果物とする。

  * 国際化機能付きのYARD
  * 国際化されたYARDのドキュメント(日本語のドキュメント)

ただし、YARDのリリースはYARDの開発者が行うため、期間内に上記
のYARDがリリースされるとは限らない。

実装した国際化機能を用いて実際にYARD自体のドキュメントを国際
化する。これにより国際化機能が利用しやすいか・継続可能な仕組
みになっているかを評価する。Ruby本体や多くのライブラリは、一
度作ったら完成するものではなく、日々改良が続けられていくもの
である。そのため、ドキュメントも一度作成したら完成ではなく、
改良に追従していく必要がある。国際化機能そのものも重要である
が、ドキュメントの改良が無理なく続けられる仕組みであることも
重要であるため、その観点でも評価する。
----

第3回フクオカRuby大賞への応募内容

第3回フクオカRuby大賞は予備審査と本審査があり、予備審査は応募内容を使って審査するそうです。この応募内容で予備審査を通過しました。1年ほど前のものなので内容が古くなっていたりしますね。

----
○ 応募日

平成22年11月13日

○ ソフトウェア、取組等の名称

るりまサーチ

○ 応募者区分

法人・団体として応募

○ 応募者

○○ 応募者名

須藤功平

○○ 応募者名ふりがな

すとうこうへい

○○ 法人・団体 代表者名

須藤功平

○○ 法人・団体 代表者役職

代表取締役

○ 所在地

○○ <都道府県>

東京都

○○ <市区町村名、番地>

文京区本郷1-25-4

○○ <ビル名等>

ベルスクエア本郷5F

○ URL

http://www.clear-code.com/

○ 連絡担当者

○○ 担当者 氏名

須藤功平

○○ 担当者 氏名ふりがな

すとうこうへい

○○ 担当者 所属部署

所属なし

○○ 担当者 役職

代表取締役

○○ 連絡先TEL

03-6231-7270

○○ 連絡先FAX

03-6231-7271

○○ 連絡先e-mail

kou@clear-code.com

○ 1.ソフトウェア、取組等の概要について

○○ (機能・特徴を簡潔に説明してください。)

るりまサーチはRuby本体のリファレンスマニュアルを高速に検索す
るWebアプリケーションです。説明文などテキスト情報から全文検索
して目的のマニュアルを検索する機能はもちろん、マニュアルの記
述対象の種類(クラスについて記述している、インスタンスメソッ
ドについて記述しているなど)など付加的な情報からも絞り込んで
いける機能を提供しています。この多角的に絞り込んでいく機能に
より、少ない労力で目的のマニュアルを見つけ出せることが特徴で
す。

○○ (ソフトウェア、取組等について、参考となるURLを記載してください。)

URL: http://rurema.clear-code.com/

○ 2.ソフトウェア、取組等の目的、ねらいについて

○○ (開発の目的や取組の動機、ターゲット等を記述してください。)

開発の目的:

目的は「Rubyのドキュメントが十分実用的であると評価されるよう
にすること」です。開発に用いる言語を選択する場合の指標のひと
つにドキュメントの充実度が挙げられることがよくあります。その
時、PHPやPythonなどは充実しているが、Rubyはそれほどでもない、
と評価されます。これは、せっかく充実してきたリファレンスマニュ
アルを十分に活用するためのインターフェイスがないことが原因だ
と考えています。

従来のリファレンスマニュアル閲覧Webアプリケーションにも検索機
能がありましたが、全文検索に数十秒かかる、全文検索以外の検索
方法がない、などの理由により、せっかく充実してきたリファレン
スマニュアルを十分に活用することができませんでした。るりまサー
チを開発することにより、検索機能を充実させ、リファレンスマニュ
アルを活用できる環境を提供することで目的の達成に近づくと考え
ています。

ターゲット: Rubyを用いて開発している開発者すべて

○ 3.Rubyを用いた理由、またはRubyに注目した理由について

Ruby本体のリファレンスマニュアルを検索するシステムにはRubyを
用いることが必然だからです。

○ 4.ソフトウェア、取組等の特徴について

○○ 1)優位性、セールスポイントについて、具体的に記載してください。

まず高速であることです。すぐに結果が返ってこないと格段に使い
勝手が悪くなります。処理に何秒もかかった上に「0件ヒット」と
なるようなシステムは使われなくなります。

次にリンクを辿るだけで絞り込んでいけることです。

キーワードがわかっている場合はそのキーワードを入力するだけで
目的のマニュアルをすぐに見つけることができますが、そうでない
場合の方がほとんどです。その場合は絞り込み条件を増やすことに
より、検索結果を絞り込んでいき目的のマニュアルを見つけていき
ます。この操作を簡単にできる仕組みを提供しています。

検索結果内にあらかじめ絞り込み条件をリンクとして挿入しておき
ます。例えば、エンコーディング関連を調べているとします。まず
「enc」というキーワードで絞り込みます。

  http://rurema.clear-code.com/query:enc/

このとき、ページ左のサイドバーには「インスタンスメソッド」や
「定数」など、種類での絞り込み条件を表示します。リンクの右側
に表示されている「(...)」は絞り込み後のヒット数です。アプリ
ケーション側は絞り込みリクエストを受け取る前にすでにヒット数
を知っているので、絞り込み後にヒット数が0になる条件はここに表
示しません。つまり、「絞り込んだ後にヒット数が0になる」という
無駄な操作をユーザがしなくても済むようになっています。

また、ページ本体の検索結果表示部分にも「Rubyのバージョンによ
る絞り込みリンク」、「インスタンスメソッドなどの種類」、「所
属するクラスなど関連する付加情報」などによる絞り込みリンク表
示しています。これにより、リンクを辿るだけでどんどん絞り込ん
でいけるため、少ない労力で目的のマニュアルを見つけることがで
きます。

上記のように高速である、リンクを辿るだけで絞り込んでいけると
いう機能が優位性、セールスポイントになります。

○○ 2)新規性、革新性について、具体的に記載してください。

上記の優位性、セールスポイントは先進的なECサイトや情報提供サ
イトではすでに導入されています。(例えば、amazon.co.jpやぐる
なびなどでも導入されています。)このような機能は今後の検索シ
ステムでは標準的な機能になっていくと考えています。

るりまサーチはそのような先進的な検索機能をRubyで実現できるこ
とを示した、実際に動くオープンソースソフトウェアであることに
新規性があります。先進的なECサイトなどの実装がオープンソース
ソフトウェアとして公開されることはないため、同様の機能を実現
するためには1から自分で調べる必要があります。しかし、るりま
サーチはオープンソースソフトウェアとして公開されているため、
どのように機能を実現しているかを参考にしたり、改変して利用す
ることなどができます。

○○ 3)社会的効果、インパクトについて、具体的に記載してください。

上述の内容と重複しますが、以下の2点が社会的効果となります。

  * Rubyのドキュメント環境が改善されることによりRubyの普及に
    つながる。
  * オープンソースソフトウェアとして公開されているため、同様
    の検索機能を実装する場合に有用である。

○ 5.ソフトウェア、取組等の実績について

○○ (具体的な実績、市場等からの評価があれば記載してください。)

Rubyのリファレンスマニュアルの公式検索サービスに採用されまし
た。(現在はメンテナンス中のようです。)

  http://doc.ruby-lang.org/ja/search/

るりまサーチをもっと便利に利用するためのソフトウェアを開発し
てくれた方がいました。

  http://codnote.net/2010/09/20/rurema-instant/
  https://github.com/sorah/rurema_instant

○ 6.今後の展開について

○○ (今後の目標や事業展開について記載してください。)

るりまサーチはRubyのリファレンスマニュアルを便利に検索する機
能を提供するという目的の他に、バックエンドで利用している全文
検索エンジンgroonga(*)のデモという目的もあります。

(*) groonga: http://gronoga.org/

クリアコードではgroongaを利用した検索システムの開発・開発支援
も行っています。groongaを利用した場合にどのような検索システム
を作ることができるか、ということを実際に動くるりまサーチとい
うアプリケーションでデモできます。

るりまサーチ自体はこれまで通り、groongaの機能を活かした使い
やすい機能を追加していきます。るりまサーチはデモとして使い、
新しい開発案件などにつなげていきます。るりまサーチ自体は今後
もオープンソースソフトウェアのままです。

○ 7.添付資料について(添付資料は返却しません。)

○○ (概要説明図やこれまでの発表資料、新聞・雑誌の記事等)

るりまサーチ: Rubyでgroonga使ってリファレンスマニュアルを全
文検索 - ククログ(2010-04-27):
  http://www.clear-code.com/blog/2010/4/27.html

日本Ruby会議2010発表資料: るりまサーチの作り方 - Ruby 1.9で
groonga使って全文検索 - ククログ(2010-09-01):
  http://www.clear-code.com/blog/2010/9/1.html

○ 8.ソフトウェアの動作環境について(ソフトウェアのみ)

○○ (OS、ソフトウェア、ハードウェア構成等について記載してください。)

OS: Linux 64bit
    (rurema.clear-code.comではDebian GNU/Linux lenny 64bitを利用)
ソフトウェア:
  * Ruby 1.9.x
  * groonga
  * Rack
  * rroonga
  * racknga
ハードウェア構成:
  * CPU: 64bit対応のもの
  * メモリ: 512MB以上
----

まとめ

Rubyアソシエーション:2011年度助成金公募への応募内容(落選)と第3回フクオカRuby大賞への応募内容(書類審査通過)を紹介しました。このようなコンテストっぽいものに応募しようとしている人の参考になり、応募者が増えたら、紹介した甲斐があるというものです。

  1. それっぽいものがないときは無理して用意しません。

  2. 実際、「第3回フクオカRuby大賞」はどのような内容で応募したかを聞かれたことがあるため、少しは必要とする人がいるはず。