Haskell Relational Record を PostgreSQL アンカンファレンスで宣伝してきました
Haskell Advent Calendar 2015 の15日目のエントリーです。
以前から、 Haskell Relational Record (HRR) [ http://khibino.github.io/haskell-relational-record/ ] を RDBMS のユーザーのコミュニティーにも紹介してみたいと考えていました。 ( HRR 自体についてはプロジェクトページ や チュートリアル を見てください )
HRR を使うと SQL の部品化とその型付けを行なうことができるため、 複雑な SQL を書く際の間違いを減らすことができるのが HRR を使うメリットです。 そのような方向でよく利用されていると思われる、PostgreSQL 系のイベントで発表してみようと思い、 PostgreSQL アンカンファレンス ( https://atnd.org/events/70296 ) に発表しに行ってきました。
※ 発表資料
以下、togetter によるまとめからですが、
集合の数式・・・う・・・頭が・・・ #pgunconf
Haskeller って数学屋さん好きな言語なの?
— ぬこ@横浜 9.5-beta2 (@nuko_yokohama) 2015, 12月 12
モナド怖くないけど、やっぱりHaskell怖いw #pgunconf
— ぬこ@横浜 9.5-beta2 (@nuko_yokohama) 2015, 12月 12
— どこ住み?LINEやってる? (@a_suenami) 2015, 12月 12
Haskellでは<-と∈(数式)は同じような意味!
#pgunconf
— show (@surumegohan) 2015, 12月 12
最初にリスト内包表記(とリストモナド)の見た目を紹介して、 それとの対比で HRR の Query の表記と example を紹介していく流れで説明しました。
Composableバンザイ!
#pgunconf
— show (@surumegohan) 2015, 12月 12
型の話ってデータベース・データタイプと関係するの?
haskellコンパイル中にスキーマ情報もとってくる。それを元に型的には安全なSQLを生成できる(という理解で合ってるのかな?) #pgunconf
— ぬこ@横浜 9.5-beta2 (@nuko_yokohama) 2015, 12月 12
inner JOINの例、Left Outer、Aggregate(group by)、order by, Window関数!
これまでの例はHaskell式なので合成可能。
#pgunconf
— ぬこ@横浜 9.5-beta2 (@nuko_yokohama) 2015, 12月 12
SQL を部品化して、composable に組み上げることができるという内容は伝わったのかなと考えています。
懇親会では、型付けをするモチベーションとして、 必要な変更を正しく行ないやすいという話をして、ある程度納得してもらえたのかなと思っています。
簡単ですが以上です。