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