BT

PrismaticがSchema 0.2にデータ型強制変換を追加

| 作者: Tom Coupland フォローする 0 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2014年3月10日. 推定読書時間: 3 分 |

原文(投稿日:2014/02/19)へのリンク

Prismaticでは,同社のClojureデータ記述ライブラリであるSchema0.2リリースに,データの強制型変換(coercion)を追加した。これにより,不正な型のデータを単にリジェクトするのではなく,スキーマに適合させてインスタンスを変換するような設定が可能になる。

ClojureではMapのキーとしてキーワードが慣用的に使用される。そのためJSONオブジェクトの受信時には,変換を実施するために頻繁に使用されるボイラプレートコードが存在する。従来このような変換は,リクエストを検証する前に実行する必要があった。今回の変更により,キーをキーワードとして定義しておけば,Schemaがその処理を実行してくれるようになる。自分自身のニーズに合わせて,独自の変換処理を定義することももちろん可能だ。この追加機能などによってPrismaticでは,データ検証の所要時間が5分の1に短縮されたと説明している。

9月の初回リリース時にSchemaが目標として挙げたのは,"より少ない手間で,Clojureの型システムのメリットをより多く享受する"ことだった。リリースの時点では,同じくClojureに型システムを導入するライブラリであるcore.typedと競合する可能性が指摘されていた。この見方に対しては,core.typedの作者であるAmbrose Bonnaire-Sergeant氏が反論した。両ライブラリは互いに補完し合うものだという氏の主張は,後にcore.typedに関してInfoQがインタビューした時にも改めて述べられている。

InfoQではライブラリの開発リーダであるJason Wolfe氏と,Schemaの今後について話す機会を得ることができた。
 

InfoQ: Shemaが最初にリリースされたとき,core.typedと組み合わせることで非常に強力なものになる可能性が示唆されました。それ以降,このアイデアに進展はあったのでしょうか?

数年前にQiプログラムを初めて見て以来,Clojureの漸進的型付け(gradual types)には強い興味を持っていました。それを実現したという意味で,Ambroseは素晴らしい仕事をしたと思います。Schemaとcore.typedを組み合わせる方法はいくつかありますが,もっとも興味深いのは多分,core.typedでチェックしたコードとそうでないコードとのブリッジとして,Schemaを使う方法だろうと思います。
 
そうなのですが,残念なことにまだcore.typedを十分に調査する時間が取れていないので,今の時点でご報告できることはほとんどありません。

InfoQ: テストデータ生成への展開は意欲的なテーマだと思うのですが,simple-checkを取り込んだり,test.generativeを利用したりするのでしょうか。あるいは別のアプローチを考えていますか?

選択肢を探している段階です。simple-checkについては素晴らしい評価をたくさん目にしていますから,何とか取り入れたいと思うのですが,今はまだ実装内容を理解して,その生成プロセスに追加の制約を組み込み方法を見つけようとしているところです。個別のデータを疑似ランダムに具体化するような,もっとシンプルなジェネレータも存在するでしょう。テストでは結構,そういったものを多く使用しています。

InfoQ: Schemaの定義からもっと価値を引き出すために,どのような考えをお持ちですか?

強制型変換と変換は非常に強力ですから,今はまだその可能性をすべて引きだそうとしている段階です。同僚のDave GollandがClojure Westで"fnhouse"という,グラフとスキーマを結合してWeb APIを容易に構築可能にする新ライブラリについて話をする予定です。今回のリリースに続いて,fnhouseのAPIからObjective Cと ClojureScriptのモデルクラス,クライアントAPIライブラリを自動生成する"coax"をリリースする予定です。

その後もクレイジーなアイデアがたくさんありますが,まだお話できる段階ではありません。

Graph2013年にリリースされたPrismaticsのClosureライブラリで,構造化された計算を宣言型のスタイルで表現するものだ。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT