オープンソースカンファレンス 2009 Nagoya に行ってきました

行ってきましたよ。You&Iさん (id:youandi) と 39 さんに遭遇しました。

OCamlでらくらく関数型プログラミング

OCaml の特徴をさらっと流しただけで、突っ込んだ内容には触れず。
もっとこう、Haskell との違いとか聞きたかったんだけど・・・


で、斜め前に座っていた人から、「ループを書かずに再帰を使うとのことだけど、ループ回数が分かってれば普通にループ書いた方がいいのでは?」って感じの質問?意見?が出た。
そもそも再帰よりも高階関数を使うんじゃ?ってのは置いといて、そのとき質問者が例に出したのが九九のプログラム。
その場でぱっと思いついた (ただし Haskell) のが、

map (\x->[x * y | y <- [1..9]]) [1..9]

で、帰ってから Twitter に投げたら、EAGLE さん (id:eagletmt) からこんなのもらった。

[map (*x) [1..9] | x <- [1..9]]

自分にはこういう、(*x) とかを渡すって発想がまだ出来ないみたい。
もっと精進せねば・・・


で、もし Java でやるとしたら、

int[][] result = new int[9][9];
for (int i = 0; i < result.length; i++)
    for (int j = 0; j < result[i].length; j++)
        result[i][j] = (i + 1) * (j + 1);

こんな感じになるんじゃないかと思う。
これ、どうひいき目にみても間違える可能性のあるポイントが多すぎる。
例えば、内部のループで j++ とすべきところを i++ としてしまって無限ループとか、i や j を 1 から始めたのに <= じゃなくて < 使ってバグるとか、i と j に + 1 (もしくは - 1) するの忘れるだとか・・・

階層構造型DB「GT.M」と各種オブジェクト言語I/Fモジュール「MGWSI」の紹介

一番期待していなかったセッション。そして一番面白かったセッション。
MGWSI は日本では「エム グワシ」と呼ぶことにするらしいですw


それにしても、階層型 DB のことを誤解してました。
仕組みがかなりシンプルで、そのまま使う分には言語へのバインディングはかなり簡単な感じで、しかも空間効率がいいらしい。
空間効率については後で聞いてみたんだけど、インデックス周りの効率がいいんじゃないか?とのこと。
確かに、スキーマという考え方が本来ないので、レコード単位でインデックスを作るか作らないかを選べるし、そこら辺で効率いいのかなぁ、とか妄想。
あと、非 NOT NULL 列を多用するような設計だと、RDB は空間効率悪くなるよなー、とか。


なんでも、超大規模な DWH とかにも耐えられそうとのことなので、なかなか面白そう。
ちょっと調べてみようかなー。

実践的リレーショナルデータベース設計手法

一番期待してたセッション。そして一番期待はずれだったセッション。
えー、正直、実践的じゃなかった。仕入れ価格が商品テーブルにあるとか・・・


あと、間違いとか、間違いとまでは行かないまでも微妙な表現とかも多かった。
リレーショナルデータモデルとか普通言わないし・・・
RDB集合論に基づいていると言うよりは、「集合論に基づくリレーショナル理論」に基づいているし・・・
第一正規形の繰り返しって列単位の話じゃないし・・・
インデックスは目次じゃなくて索引だし・・・


まぁかめすい (中身は阿蘇のメイスイらしい) とかクリアファイルとかもらえたからよしとするよ!

Key Value Store について調べてみよう

なんか最初トラブってて大丈夫か?と思ったんだけど、なかなか面白かった。
Bigtable とか、そこら辺を期待して行ったんだけど、memcached とかそっちの話だったというw

全体

なんか期待を (いい意味でも悪い意味でも) 裏切られっぱなしの一日でした。
来年は・・・そうだな、ベンダー系のセッションに参加して、グッズをもらおう(何