SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZineスーパー対談

【西内啓氏 × ミック氏】 データエキスパート対談
これからは分析を意識したデータマネジメント力がエンジニア全員に必要になる

CodeZine スーパー対談 シリーズ 第1回

SQLで書いたほうが圧倒的に速い

―― この辺り(SQL)はミックさんに専門分野だと思いますが、いかがですか?

ミック ► 私が西内さんに初めてお会いしたきっかけは、西内さんが統計解析の現場でSQLをよくお使いなので、ということだったと記憶していますが、そのときに意外だなと思いました。

 自分も以前、SQLを使って統計解析のまねごとみたいなことをしていた時期があったのですが、当時はSQLが高度な分析ができる言語という認識はなかったんです。今後はBI(Business Intelligence)ツールという、SQLを出力してくれるパッケージが簡単な切り口の分析を受け持つことになり、統計解析の現場でSQLが使用される機会は減っていくのだろうなと思っていました。

 でも、西内さんが先ほどお話しされたように、分析できるようにきれいなデータを揃える作業(データクレンジング)は、アルゴリズムで書けるほど一般化されておらず、「非定形」なアドホック作業になりがちです。そこがうまく機械化できずボトルネックになっているのは、自分の経験を思い返しても確かにありますね。

西内 ► そこを解決すべく「GUI上で何とかします」というツールもあるのですが、分析の変数として使うカラムが増えてきた場合、GUIでやると「オレはいったい何回ドラッグして、何回クリックすればいいんだ?!」となってしまう。SQLで書いたほうが圧倒的に速い。

 私は統計解析の際、元々SASをよく使っていたのですが、データを加工する部分と分析する部分の命令体系がきっちり揃い、こなれていてものすごく使いやすい。しかし、SASを使える場所や環境は限られていて、あの便利なデータ加工の機能はどうすればいいんだろうと考えたら、「あ、SQLを覚えればいいじゃないか」と気づいて。それから、ミックさんのSQL解説書を読み込ませていただいて、この数年でSQLを自分にたたき込んだんです。

ミック ► 私の最初の著書『達人に学ぶ SQL徹底指南書』は、私がデータウェアハウスでSQLを使って分析を行っていたころに執筆したものです。なので、まさに自分がこういう分析をしたいとか、こういうふうにデータを加工したいと思ったらこういうふうにSQLを書けばいい、と1つ1つ勉強しながらやっていたことがまとまっています。そういうところが西内さんに響くところがあったのかなぁと、大変うれしく思います。

 今の西内さんのお話に関連して、SQLの何が優れているのかを考えて見ると、まず、RDBの中で正規化されたデータを扱うことに特化できているところでしょう。正規化されたデータを非正規化するのはとても単純な作業になります。逆に、そのかっちりした構造に落とせるところと、簡単にできると思ったことが実際に簡単にできるインタフェースを持っているところも、SQLの優れた一面です。

ミック氏
SQLの強みを語るミック氏。名著は自身が「こういう分析、データ加工をしたい」と勉強した成果だった。

 

―― 特にSQLに向いているな、と感じる作業はありますか?

ミック ► 統計解析とかローデータ(raw data: 生のデータ)からクレンジングされた品質の高いデータに落としていくといった作業にとても向いていると思います。

 基本的に、SQLでできることは手続き型言語でもできます。アプリケーション開発に強い人、つまり手続き型言語に強いのにRDBやSQLをあまり知らないという人たちは、データベース側にあるデータを愚直にアプリケーション側に持ってきて、アプリケーション側ですべて処理したりします。それも可能ですが、パフォーマンスが問題になるのはもちろん、保守性やコードの可読性が悪くなる傾向も見られます。

 SQLのよいところは、簡単なことが簡単にやれて、複雑なこともある程度理解すれば比較的簡単にできる点です。また、それを行うときに一番強いDBサーバーのパワーを利用できるというのが、SQLが生まれてから40年間生き残っている理由なんだろうなと思います。

 RDBMSにR言語のインタフェースが追加されたり、SQLにWINDOW関数が追加されたりしていますので、いずれデータベースが統計も含んだ大きなプラットフォームになる可能性もありますね。

 

次のページ
これから身に付けておきたいスキルとは

この記事は参考になりましたか?

CodeZineスーパー対談連載記事一覧

もっと読む

この記事の著者

小川 範夫(オガワノリオ)

ネットワーク型やカード型のデータベースの時代から、データベース界隈を興味の赴くままウン十年さまようデータベースマニア(ミーハー)。ミックさんの本を読んではDB・SQLに思いを馳せ、西内さんの本を読んでは統計学・R言語をやろうと思うものの、日々ビールを飲んで眠ってしまい、積ん読本ばかりが増える日々。基...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7818 2014/06/25 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー