今週は全文検索エンジンgroongaとその関連ソフトウェアがいろいろリリースされました。リリースされたソフトウェア以下がリリースされたソフトウェアとそのバージョンです。1.2.0全文検索エンジン。一部非互換があるためマイナーバージョンがあがっています。MLでのアナウンスを参照してください。0.5.0ストレージエンジンとしてgroongaを利用するMySQLのプラグイン。5.5への対応強化などが含まれています。1.2.0groongaをRubyから使えるようにするためのRubyの拡張ライブラリ。1.2.0対応だけではなく、新機能もあります。MLでのアナウンスを参照してください。3でrroongaを利用するためのRubyライブラリ。3用のページネーションライブラリKaminari(のViewの部分のみ)に対応しています。MLでのアナウンスを参照してください。[NEW!]オブジェクト生成ライブラリFabricationにActiveGroongaサポートを追加するライブラリ。gemでインストールできます。activegroonga-fabrication使うための準備はこれだけです。'active_groonga_fabrication'後は、通常のFabricationの使い方と同じです。まとめ今週リリースされたgroonga関連のソフトウェアを紹介しました。いえば、先日、groongaを使ったアプリケーションであるるりまサーチで受賞した第3回フクオカRuby大賞のコミュニティ特別賞の賞状が届きました。GNU/LinuxやUbuntuなど最近のLinuxディストリビューションではインストール時にディスクの内容を暗号化する設定をすることができます。インストーラのメニューで選択するだけなので、簡単に設定できます。groongaの開発に参加していて、頻繁な単体テストの実行でデータベースを作成・削除を繰り返すなどキャッシュが効かないディスクI/Oが多い使い方をする場合は、暗号化による速度劣化を体感してしまいます。Linux上で開発をしている場合はよくあることですよね。この場合、「一部だけ暗号化しない」または「一部だけ暗号化する」というように記憶領域を使い分ければ、安全性を高めながら開発効率を落とさずにすみます。インストール後に使い分けたくなった場合、追加のディスクがないと「一部だけ暗号化しない」使い方をすることはできません*1。そこで、ここではディスクを追加しないで「一部だけ暗号化する」簡単な方法を紹介します。インターネット上には日本語の情報があまり見つからない*2のですが、これは需要がないからという気もします。概要loopデバイスを使うとディスク上のファイルをディスクのように扱えます。これを利用して、暗号化していないディスク上にイメージファイルを作成し、それをloopデバイスで追加のディスクのように扱えるようにして、そこに暗号化ファイルシステムを作成します。暗号化したいファイルはイメージファイル内に保存し、暗号化しなくてもよいファイルはいつも通りの場所に保存します。これで追加のディスクなしに「一部だけ暗号化する」ことができます。初期設定まず、cryptsetupをインストールします。cryptsetup暗号化したいファイルを保存する領域として利用するイメージファイルを作成します。保存したいデータサイズを考えて作成してください。以下は20GBのイメージファイルを~/encrypted.imgに作成する例です。countの値でサイズを調整してください。count=20480イメージファイルができたらloopデバイスに関連付けます。~/encrypted.imgこれでデバイスファイルのように扱うことができるようになったので、イメージファイルを暗号化のために初期化します。初期化をすると内部のデータが壊れるので、確認のためのプロンプトがでます。今回は新しく作成したイメージで中には大事なものは何もないので大文字で「YES」と入力してください。(確認のため同じパスフレーズをもう一度入力)暗号化のための初期化が完了したら暗号化して読み書きできるデバイスファイルを作成します。(初期化時に設定したパスフレーズを入力)これで、/dev/mapper/encryptedというデバイスファイルができます。このデバイスファイル経由で読み書きすれば暗号化されるので、今後はこのデバイスファイルに対して操作します。デバイスファイルをフォーマットします。/dev/mapper/encryptedmountし、読み書きできることを確認します。/mnt/filetestこれで初期設定は完了です。/dev/loop0umountして暗号化デバイスを閉じてloopデバイスの関連付けを削除しています。実際に使うときは必要になったときに、以下の手順を行います。loopデバイスをイメージファイルに関連付けるloopデバイスに暗号化して読み書きするデバイスを作る暗号化して読み書きするデバイスをmountする用が済んだら逆順に後片付けをします。これでは面倒なので、シェルスクリプトを作ります。/dev/loop0以下のように使います。umount-encrypted.sh実際は以下のように/mnt/encrypted/以下に1つディレクトリを作り、そこを一般ユーザ権限で読み書きできるようにし、そこに対して一般ユーザで読み書きするようにすると便利でしょう。/mnt/encrypted/$USER/filetestさらに、メールボックスなど暗号化したいファイルは暗号化イメージにmvして、ホームディレクトリからはシンボリックを張ると暗号化以前と同じように使えます。GNU/Linuxで、通常の暗号化されていないディスク上に追加のディスクなしで暗号化した領域を作成する方法を紹介しました。データを暗号化した領域に置いておくとディスクを盗まれたときなどに簡単にデータを読み出すことができなくなり、万が一のときの安全性が高まります。ログインして利用しているときは同じマシンにログインしているユーザからは見えてしまう可能性があります*3。暗号化しただけで安心しないで、大事なデータは適切に扱うようにする必要があります。既存のパーティションのサイズを小さくして新しくディスク領域を作ったりすれば追加のディスクがなくてもできます。2011/4/6時点では2件くらい見つかる。これはディスク全体を暗号化していても同じ。managerを例にして2011-04-06検索エンジンはなぜ見つけるのか1ヶ月ほど前になりますが、検索エンジンについての本が出版されました。GoogleなどのWeb検索システムからAmazonなどのショッピングサイトまで、今では検索システムはなくてはならないものになりました。そんな検索システムのベースとなる考えや知識などを把握したい場合に向いているのがこの本です。検索システムを作ろうとしている人には読んで欲しい一冊です。2,592「この本を読めば独自の検索エンジンを作れるようになる!」といった類の本ではなく、「検索エンジンの基本がわかる!」という類の本です。そのため、「この検索エンジンをもっとカリカリにチューニングして性能をあげたい!」というときに読む本ではありません。なく、「検索エンジンについてまとまった知識がないので、基本をしっかりおさえたい!」という用途向きです。著者は全文検索エンジンgroongaのメイン開発者の森さんですが、groongaなど特定の検索エンジンに依存した内容ではなく、検索システム全体の基本について書かれています。検索エンジンだけではなく、クローラーについても、利用者の入力から質問の意図を汲み取ることについても、検索システムに必要な機能は網羅的に扱っています。ボリュームがあるのは検索エンジンの部分で、様々なアルゴリズムが登場します。アルゴリズムの登場の仕方が段階的なので読み進めやすくなっています。「○○という問題があります。」→「△△でこれを解決できます。」→「次は●●という問題があります。」→「▲▲でこれを解決できます。プログラムで実装するためにアルゴリズムを説明する場合は細かいことまで説明した方が便利です。この本ではアルゴリズムの重要なアイディアだけを抜き出して図も使いながら説明しているため、アルゴリズムのコンセプトを理解しやすくなっています。注釈に参考文献が載っているのも嬉しいところです。詳しく知りたいときは参考文献の方をあたることができます。まとめ検索エンジンについてのオススメの本を紹介しました。検索はこれからもっと重要に、そして便利になっていくでしょう。kdmsnrさんが若い頃はかわいかったことを検索することがもっと重要に、そして便利にできるようになるかもしれませんね。managerについて紹介します。managerはサーバーサイドの迷惑メール対策システムをできるだけ簡単に構築するためのフリーソフトウェアです。その秘密は強力な設定記述力にあります。多くのソフトウェアはパラメーターを変更することでプログラムの動作をカスタマイズすることができます。managerにはRubyという本格的なプログラミング言語のインタプリタが内蔵されていて、単にパラメーターを変更するだけではなく、システムにインストールされている迷惑メール対策プラグインを自動検出する(設定の自動化)、怪しい送信元は迷惑メールチェックを強化するが認証済みユーザは緩くする、といったこともできてしまいます。多くの便利な設定は組み込みで含まれているため、そのまま使うだけでも自動でシステムに合わせて効果的な設定になってくれます。導入・運用を簡単にしたいという場合は、外部のメールシステムやアプライアンス製品の利用も十分選択肢に入るはずです。この場合は費用対効果やメールシステムを外部に出してもよいか、どこまでカスタマイズする必要があるか、などが判断基準になることでしょう。managerにはユーザ向けメーリングリストもあるので、検討段階などで疑問点などがあった場合はそこで質問してみてください。managerについて紹介しました。managerはパフォーマンス改善もおこなっており、個人サーバーから大規模なメールシステムまでいろいろな環境で効率的に動かせるようになっています。managerの利用を検討してみてはいかがでしょうか。4.0とGFDLのデュアルライセンスで自由に利用できます。クリアコードはプログラミングが楽しいソフトウェア開発者を1名募集しています。クリアコードは「クリアコードをいい感じにする人」を1名募集しています。クリアコードはフリーソフトウェア開発で培った技術力を提供しています。Thunderbird)とRubyとGroonga(全文検索)に関連した開発を得意としています。