InfoQ

News

AmbitionによるRubyのデータクエリーの抽象化

作者 Sebastien Auvray, 翻訳者 長部 広太 投稿日 2007年10月4日 午後10時42分

コミュニティ
Ruby
トピック
データアクセス
タグ
データベース,
LINQ

今日の課題の一つとして、様々な情報源から情報にアクセスし、それを統合する際に生じる複雑さを軽減することがあげられる。.NETはすでにLINQ(source)という手段でデータアクセスの複雑さを軽減させているが、Rubyには同様な解決策がない。Rubyを使用してクエリーを行うDSLプロジェクトは存在するが、Rubyそのものではない。

Chris Wanstrath氏は、Ambition(source)という独自の解決策をもたらした。AmbitionはParseTree(サイト・英語)を利用してパースツリーを解析し、プレインなRubyクエリをSQLへと翻訳してくれるのだ(ターゲットはRDBの時である)。そして最終的にRuby風にクエリーが書けるという訳である。

User.first
User.firstと書くと、"SELECT * FROM users LIMIT 1"というSQLに変換されます。
User.select { |u| u.karma > 20 }.sort_by(&:karma).first(5)と書くと"SELECT * FROM users WHERE (users.`karma` > 20) ORDER BY users.karma LIMIT 5"というSQLに変換されます。

元々Chris氏はRack(サイト・英語)に力を注いでいたが、LINQの存在を知って(source)からは自身の目標を変更した。

我々はRackからLINQへ視点を移しました。我々は他のORMのみをサポートしたいわけではない。我々はAmbitionがSQL、LDAP、XPath用のクエリー言語になって欲しいんだ。リリース1.0はバックエンドを選ばないものになるだろう。そしたら名前を傲慢に変えるかも?時間が経てば分かるさ。

Ambitionの最新ソースは、git://errtheblog.com/git/ambitionで入手出来る。

原文はこちらです:http://www.infoq.com/news/2007/09/data-query-with-ambition

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

ファイルシステムでHello World

この連載では"ファイルシステムの作り方"をご紹介します。第1回目の今回は簡単なイントロダクションと単純なHello Worldファイルシステムの作り方を説明します。次回以降で詳しい解説と本格的なファイルシステムの作り方をご紹介しようと思います。

Guice(ジュース)を早飲みしすぎていませんか?

あなたのチームが、既存アプリケーションを「シングルトンの入れ子」設計から依存性注入(DI)へ移行しようとしているなら、この論文に心引かれるでしょうが、DIへの移行は難しいことが分かっています。論文にはGoogleのJava DIコンテナ(Guice)の名を入れていますが、Javaや.NET、Python、Rubyなどにも当てはまります。

チームがキュービクルと引き換えにコミュニケーションスキルを得る手助けをせよ

アジャイルの「自己組織化チーム」のパラダイムでは、チームのメンバに新しいスキルが要求されます。この記事では、発展しつつあるチームの自己組織化を壊さずに、新たなスキルを伝えるためのいくつかの戦略を提案します。そして、新しいスキルを身につけるのに役立つ資料のありかを提示しています。

F#の土台を越えて - 非同期ワークフロー

今回の記事では、非同期ワークフローと呼ばれるワークフロー機能の面白い使用法を考察しますが、非同期ワークフローは.NETの非同期プログラミングモデルを単純化することを目的としています。

言語としてのアーキテクチャ: ストーリー

アーキテクチャは一般に、Word文書に主として見られるような極めて実体のない、ソフトウェアシステムの概念的な側面であるか、または完全に技術によって駆動されるものかのいずれかです。そのどちらも間違っています。では、どう対処すればよいでしょうか? この記事ではアイデアを説明します、そしてアプローチのキーポイントを要約します。

メタプログラミングを使ってRubyにプロパティを追加する

Werner Schuster氏が、簡単な例を示しながら、Javaのようなプロパティをメタプログラミングを使ってRubyに追加する方法を示します。

BlazeDSとAMFでWebとデスクトップのアプリケーションを構築する

現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。

業務ソフトに手を加えずに暗号化を実現する~秘文の挑戦~

hibun

ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。