ゴミ箱の中のメモ帳

まだ見ぬ息子たちへ綴る手記

Webエンジニアのための データベース技術[実践]入門 松信 嘉範(著)

中々面白い。世間には「私はDBが使える」と言いながら実際には何が使えるわけでもなく「SQL」が書けるだけだったりする。

その「書けるSQL」も単に本当に書けるだけで「効率」や「速度」のことなど考えられていない。いや、文法を「知っている」だけなのでそれらについて理解できていないのだ。

この様な人間はそもそも諦めてもらったほうが世の中のためであるが、「DBの勉強がしたい」と思っている方は是非とも本書を読んでいただきたい。

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)


本書はタイトルのままで「データベース技術」の入門書になる。だが世間ではこの「入門」の知識も持ち合わせていない人間がざらに実務を行っている。

MySQLにしてもInnoDBMyISAMの違いもわかっておらず、MySQLを使う理由を「これを使ってきたから」という理由だけで選んでいる。そこに「PosgreSQLを使ったほうがいい」と言ったものならWebページに掲載されているベンチマークなんかを探しだして「MySQLの方が優れている」と宣言する。それはMySQLPostgreSQLの比較の中から自分に都合がいいものを探し出してきただけだ。

実際にはPostgreSQLの方が優れた結果を出しているテストがザラにあるにも関わらず、それを無視して、イヤ、それをなかったコトにしてMySQLの優位性を説き始める。

SQLiteの話なんてし始めれば「あんな物性能が悪くて使い物になんてならない。お前はアホか」と騒ぎ立てる。SQLiteも十分な性能は出るし、実際に私も大多数の場合に置いて自分が制作しているものはSQLiteを利用しているし、それはMySQLよりも優れた結果が出たからこそSQLiteを利用しているに過ぎない。

お前が使い方を知らないのが原因であるにも関わらず、それをソフトウェアの性能にするのはやめて正しい知識をつけて欲しい。

多数の選択肢の中からMySQLを選択するのであれば問題ない、それを選択することが最適なのであればいいのだ。だが「それしか選択肢を持たない」状態からであればそれは「選択」していない。このことをきちんと理解して欲しい。もちろんこの「選択」は、「他のDBを選択するとメンテナンスコストが増大する」というような理由でも選択したことには間違いない。


閑話休題

過去の経験を思い出して話が脱線してしまったが、このようにシステムや環境に応じて最適なDBは異なる。本書も説明のためかMySQLを多くの場面で前提にしているが、本書でRDBMSに依存しないDBの知識を得て、その知識の中から最適なDB、果てはそれぞれのDBのセッティングを行えるようになってほしい。


但し一点のみ本書で気になったことがある。著者はライセンスやFSFOSSについて正しく理解していない。

P166.
オープンソースであることは無料を実現している背景に過ぎません。オープンソース(それも制約の厳しいGPL)であるため、誰でもビルド済みバイナリを作れることから、有償ライセンス販売というビジネスは成立せず、無料に成るわけです。
同様のものに「フリーソフトウェア」がありますが、フリーソフトウェアソースコードが公開されていないのでもともと作っていた人以外は機能を追加できません。一方、オープンソースではそれまでのソースコードが公開されているので、もし開発元ベンダーが倒産しても、誰かがカスタマイズしてくれれば機能の拡張は継続されます。「製品の持続性」という意味でフリーソフトウェアよりも優れていると言えるでしょう。
ソースコードがオープンであり、適切なライセンスが存在することは無料であることや製品の持続性があるという特徴を支えています。これは長年にわたってシステムを運用する上で安心材料となるでしょう。

これは全くの完全なる間違いである。これはオープンソースフリーソフトウェアの「勘違いしないで下さい」という項目に書いてある、まさしく注意喚起がされている間違いである。

まず、強調されている「オープンソース」と「無料」ということだが、「オープンソース」と言う言葉自体が、「フリーソフトウェア」では「無料」と勘違いされてしまうということから作られたものになる。極端に言えば「オープンソース」は「無料ではない」ことのアピールのために作られた言葉である。この意味も理解できていないのは痛い。

この人(著者)の言うところのオープンソースフリーソフトウェアのことで、フリーソフトウェアフリーソフトのことであるかと思う。誤りが無いように簡単に説明しておくと、フリーソフトウェアの「フリー」は「無料」ではなく「自由(フリーダム)」の事を示す。フリーソフトウェア発案者のリチャード・ストールマンもしつこく言っているが、フリーソフトウェアの目的自体も「無料」ではなく、それらを販売しても全く問題はない。ただし、それらを「自由」に使うことを保証するライセンスであるため、一度入手したものがそれらを自由に使い、自由に配布するという自由から「無償」のように実質的に配布されているということにほかならない。

オープンソースフリーソフトウェアからこの「自由」を取り外したものになり、オープンソースライセンスの形態は多岐に渡るが(100近くのライセンスがある)、基本的には「ソースコードを公開している」という内容になる。オープンソースライセンスはOSI(Open Source Initiative)から認証を受けたものだけが実際は名乗ることが出来、現在普及しているだけでもMITやApacheBSDなどに始まりPHPPythonなど、言語や環境毎に独自ライセンスを定義しているものも多々ある。本当にややこしい。

これについては本書の内容を鵜呑みにしてはかなり痛い目にあうので注意が必要だ。


また、ソースコードが公開されているからという理由で将来にわたって運用できると勘違いするのも危険だ。自社でそのメンテナンスを行うことが出来るのであれば話は別だが、自社で行えないのであれば結局はそのメンテナンスを他社に任せることになる。大規模なソフトウェアであればそのメンテナンスコストも莫大になる。これは、MySQLであればMariaDBとの互換性や、メンテナの人数を考えてもわかるかと思う。

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

エンジニアのための データ可視化[実践]入門 ~D3.jsによるWebの可視化 (Software Design plus)

エンジニアのための データ可視化[実践]入門 ~D3.jsによるWebの可視化 (Software Design plus)

基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )

基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )

MySQL徹底入門 第3版 ?5.5新機能対応?

MySQL徹底入門 第3版 ?5.5新機能対応?