昨日は肉の日でした。 肉の日ということでたくさんのフリーソフトウェアをリリースしました。
今月から始めたパッチ採用では「クリアコードのメンバーがコミット権を持っているフリーソフトウェアの開発に参加する」とあります。しかし、クリアコードのサイトでは3つのフリーソフトウェアしか紹介していません1。明らかに提供している情報が不足しています。そこで、肉の日を含め今月リリースしたフリーソフトウェアを紹介することにしました。
以下が今月リリースしたフリーソフトウェアのリストです。それぞれ簡単に紹介します。
- ActiveLdap
- Cutter
- gettext
- grntest
- groonga
- Groonga CloudSearch
- locale
- mroonga
- Packnga
- Rabbit
- Ruby-GNOME2
- Rubyリファレンスマニュアル刷新計画(るりまプロジェクト)
- test-unit
- Tree Style Tab(ツリー型タブ)
- UxU
ActiveLdap 3.2.0
ActiveLdapはオブジェクト指向らしいAPIでLDAPを操作するためのRuby用のライブラリです。
前回のリリースはRails 3.1系にしか対応していませんでしたが、今回のリリースでは最新のRails 3.2.8に対応しています。Rails 3.2系でLDAPを扱いたい人はぜひ試してみてください。
前回のリリースからの変更点: ActiveLdap 3.2.0
Cutter 1.2.1
Cutterは書きやすさとデバッグのしやすさを重視しているC言語・C++言語用の単体テストフレームワークです。
今回のリリースからUbuntu PreciseとFedora 17用のパッケージも用意しています2。最新のディストリビューションでも使いやすくなっています。
さて、テストを作成したら継続的インテグレーションツールと連携したいですよね。そこで、Travis CIで簡単にCutterを使えるような仕組みを用意しました。.travis.yml
のinstall:
を以下のように書くだけです。
install:
- curl https://raw.github.com/clear-code/cutter/master/data/travis/setup.sh | sh
後で出てくるgroongaもこの仕組みを使っています。興味がある人はTravis CIでCutterを使うためのドキュメントを参考にしてください。
前回リリースからの変更点: Cutter 1.2.1
gettext 2.3.0
gettextは地域化(L10N)を実現するためのRubyライブラリです。ライブラリだけではなく関連ツールも提供しています。gettextはGNU gettextパッケージをモデルにして実装されています。ちなみに、Pythonには同様の機能がgettextモジュールとして標準添付されています。
これまでは「Ruby-GetText-Package」という名前でしたが、今回のリリースから「gettext」に変更しました。 また、2012年からruby-gettextプロジェクトとしてメンテナンスをしています。
今回のリリースでは、GNU gettextのmsginitをRubyで実装したrmsginitを追加しました。これで、GNU gettextなしでも.potから新しく.poを作成できるようになりました。Windowsでもgettextだけあれば必要最小限のツールが揃います3。
grntest 1.0.0
grntestは後で出てくるgroonga用のテストツールです。 groongaのコマンド(selectやloadなど)列が期待する結果になるかを確認するために使います。MySQLのmysql-testというツールのgroonga版です。
grntestは今回が最初のリリースです。
もちろん、groonga本体のテストに使われていて、grntestで書かれたテストは徐々に増えています。パッケージされたことにより、groongaのプラグインを開発する人にも簡単に使えるようになりました。
groonga 2.0.6
groongaはオープンソースのカラムストア機能付き全文検索エンジンです。groongaを使うと全文検索機能付き高性能アプリケーションを開発することができます。
今回のリリースでは指定した語句を含まない文書を検索できるようになりました。このようなクエリは多くの文書がヒットするため重いクエリとなります。例えば、ククログで「PHP」を含まない文書を検索するとほとんどの文書がヒットしてしまいます。このような検索がたくさん実行されるとシステム全体に大きな負荷がかかります。そのため、groongaではこの機能をサポートしていませんでした。しかし、使い方によっては便利なこともあることはたしかです。そこで、デフォルトでは無効で本当に必要なときだけ有効にすることでこの機能を提供することにしました。これにより、システムが過負荷になる危険性を回避しつつ必要なときは便利に使えます。
前回リリースからの変更点: groonga 2.0.6
Groonga CloudSearch 1.2.0
Groonga CloudSearch 1.2.0 リリースアナウンス(英語)
Groonga CloudSearchはAmazon CloudSearch互換のAPIを備えるオープンソースの全文検索システムです。名前からわかる通り、バックエンドにgroongaを使っています。
Amazon CloudSearchは有償のクラウド型サービスですが、Groonga CloudSearchは任意のサーバ(開発環境のPC自体でも問題ありません)にデプロイして利用するソフトウェアです。Amazon CloudSearchを使用するアプリケーションの初期開発段階などにおいて、自由に利用することができます。
groongaを利用する際には転置インデックスの準備などのように検索エンジンそのものに関する知識が必要となってきます。そのため、使い始められるようになるまでの障壁が若干高い事は否めません。Groonga CloudSearchはそのような部分を内部で自動的に処理するため、groongaベースの全文検索システムを、論理的なインターフェースのみを用いて簡単に利用することができます。
このリリースでは簡易的なアクセス制限のための仕組みなどが投入されており、公開の実サービスでの利用も可能となっています。
locale 2.0.6
localeは地域化(L10N)を実現するためのRubyライブラリです。localeに関する情報の扱いはプラットフォーム毎に異なりますが、そこを抽象化し、プラットフォームに依存せずに扱えるようにします。前に出てきたgettextもlocaleを使っています。
今回のリリースでRuby 1.9 + Windowsの組合せでも動くようになりました。
前回リリースからの変更点: locale 2.0.6
mroonga 2.06
mroongaは全文検索可能なMySQLのストレージエンジンです。すべてのMySQLユーザーに高速な全文検索機能を提供します。バックエンドには前に出てきたgroongaを使っており、日本語にも対応しています4。
今回のリリースではMATCH(...) AGAINST("-語句" IN BOOLEAN MODE)
というクエリを書けるようになっています。これは指定した語句を含まないレコードを検索するクエリです。このクエリはMyISAMでは使えたのですが、mroongaでは使えませんでした。理由はバックエンドのgroongaがこの機能をサポートしていなかったからです。groongaでこの機能が実装されたため、mroongaでもこの機能をサポートしました。
前回リリースからの変更点: mroonga 2.06
Packnga 0.9.5
PackngaはRubyのパッケージ作成を支援するライブラリです。国際化に対応したドキュメントを生成するための機能も含んでいます。ドキュメントの生成にはYARDを使います。
今回のリリースではYARDの国際化(i18n)機能を使うようにしました5。これまではxml2poを使って国際化機能を実現していましたが、ドキュメント中のシンタックスハイライトされたサンプルコードなどでノイズ6が多くなるという問題がありました。国際化機能をYARDと統合することでノイズがなくなり、翻訳しやすくなりました。
また、xml2poがなくてもドキュメントを生成できるようになったため、特にWindowsでPackngaを使うハードルが低くなっています。
Rabbit 2.0.0
RabbitはRubyistの多くが使っているプレゼンテーションツールです。 約1年ぶりにメジャーバージョンアップして2.0.0になりました。
今回のリリースではスライド・テーマを共有する仕組みが導入されました。スライド・テーマともにgemで公開できるようになりました。gemはすでに実績のあるパッケージ配布システムです。gemをベースにすることで共有するために必要な機能が一気に揃いました。簡単にスライド・テーマを公開できますし、インストール・アンインストールもコマンド一発です。
また、SlideShareにもコマンド一発で公開できる機能も追加しました。Rabbitで作ったスライドがより共有しやすくなりました。
前回リリースからの変更点: Rabbit 2.0.0
Ruby-GNOME2 1.1.5
Ruby-GNOME2はGTK+-2.xなどGNOME 2関連のライブラリをRubyから利用するための拡張ライブラリです。
今回のリリースではネットワーク周りが改良されています。TLSを扱えるようになったり、Windows用のパッケージにglib-networkingが追加されています7。
前回リリースからの変更点: Ruby-GNOME2 1.1.5(英語)
Rubyリファレンスマニュアル刷新計画(るりまプロジェクト)
Rubyリファレンスマニュアル刷新計画」2012-08分のスナップショットリリースアナウンス
Ruby1.9対応にも一区切りつけた約一年振りのスナップショットリリースです。 BitClust、ReFe2がgemになりました。gemになったので簡単にインストールできます。
コマンドラインから高速に日本語のリファレンスを読みたい人におすすめです。
test-unit 2.5.2
test-unitはRuby用のxUnit系の単体テストフレームワークです。
今回のリリースではshoulda-contextやRSpecにある(便利と思われているらしい)機能をいくつか追加しました。
--location
コマンドラインオプションはRSpecの--line_number
相当の機能です。sub_test_case
はshoulda-contextとRSpecのcontext
と似た機能です。
前回リリースからの変更点: test-unit 2.5.2
Tree Style Tab(ツリー型タブ)0.14.2012081101
このバージョンでの変更点一覧(Mozilla Add-ons)
ツリー型タブは、Mozilla Firefoxのタブバーをサイドバー状に縦型に表示した上で、タブ同士の親子関係を視覚的に表現できるようにするアドオンです。開発に必要な資料を検索する場面など、タブを大量に開いたままの状態でそれぞれのタブを行ったり来たりする場合がありますが、そのような場合でも、切り替える先のタブがどこにあるのかを直感的に把握しやすくなります。
このリリースでは目立った新機能の追加はなく、Firefoxの仕様変更への追従と、細かい不具合の修正が主な内容です。
UxU (UnitTest.XUL) 1.0.1
このバージョンでの変更点一覧(Mozilla Add-ons)
UxUは、Mozilla FirefoxやMozilla Thunderbird用のアドオン開発者向けのテスティングフレームワークです。
このリリースでは、テスト対象のアドオンを、テストケース内でメタ情報として明示できるようになりました。テスト対象のアドオンがインストールされていない場合は警告が表示されるため、何が原因でテストが失敗したのかが、より分かりやすくなります。また、プロファイルを明示して別プロセスでテストを実行する場合に、現在のプロファイル内にインストールされているテスト対象のアドオンを、テスト実行用の一時プロファイル内に自動的にコピーするようになるため、一時プロファイルの雛形を用意する際の手間が軽減されます。
より詳しい説明: Firefox/Thunderbird用アドオン開発者向けテスティングフレームワーク UxU 1.0.0をリリースしました - ククログ(2012-07-24)
まとめ
今月リリースしたフリーソフトウェアを簡単に紹介しました。 どのフリーソフトウェアも(程度の差はありますが)継続的に開発を継続しており、その成果がこれらのリリースです。
気になるものがあったらぜひ使ってみてください。
-
ただいまサイトの更新作業を進めています。 ↩
-
Ubuntu Preciseのuniverseには少し古いCutterのパッケージがあります。最新のCutterでなくてもよければそちらを使った方がインストールの手間が少し減ります。 ↩
-
WindowsにGNU gettextをインストールするのとRubyをインストールするのではどちらが敷居が低いかは難しいところです。 ↩
-
MySQLの全文検索機能は日本語に対応していません。 ↩
-
YARD 0.8.0から国際化対応が始まっています。 ↩
-
翻訳対象外のテキストを翻訳対象と扱ってしまったり、翻訳対象を細かく分割しすぎて訳しづらくなってしまうことです。 ↩
-
これらの機能はRabbitで必要になったため改良されました。 ↩