『その数学が戦略を決める』が面白かった

 以前「次の10年、「統計分析」こそテクノロジー分野でいちばんホットな職業になる - Publickey」という記事を読んだ際には、「まあGoogleやMSはそうだろうな」くらいにしか思っていませんでしたが、この本を読んでその重みを知りました。

その数学が戦略を決める (文春文庫)

その数学が戦略を決める (文春文庫)

統計やデータマイニングによる判断や意思決定が、

  • 非常に様々な分野で行われるようになってきている
  • 大半のケースで、判断や予測の精度が専門家を上回っている

という現実について数多くの事例と共に語られています。具体的な分析手法の中身には踏み込まず、専ら計算対専門家の戦い(?)に焦点を当てており、専門家の立ち位置が大きく揺らいでいる事を強調した上で、今後の専門家のあり方についても最後の方で言及しています。

 中でも私が最も印象に残ったのは、電子カルテについての話です。私は電子カルテについて殆ど知識がなく、主なメリットは管理や共有に関する部分だと思っていました。しかし本書の中で指摘されているのは、カルテを電子化する事で、大勢の患者について「どのような治療をしたらどのような結果になったか」を蓄積、集積する事ができるので、それによって診断や治療を改善する事が出来るという点でした。即ち、自分が病気になって治療を受けるという事が、単なる個人的な経験に留まらず、(例え僅かであっても)後の人類全体の健康に寄与するという事です。これを読んでからは、できればカルテが電子化された病院で診察を受けたいと思ったりしていますw。

 最近は仕事柄、アクセスログを分析して云々とか、WebページのA/Bテストをして云々という話にも若干関わってきましたが、この本を読んでからは、ちゃんと統計学を勉強してもう少し踏み込んだ分析を考えたり実践したりできるようにしたいと考えています。
という事で、現在統計学に入門中です。

Google Guiceの書籍発売

来月Google Guiceの書籍が発売されるそうです。
Google Guice: Agile Lightweight Dependency Injection Framework
100ページと薄いですが、分散しているWebの情報がまとまっているだけでも有難いかなと。
Bob Lee氏のブログに序文があります(著者はご本人ではなく、Robbie Vanbrabrant氏です)。
Google Guice: Agile Lightweight Dependency Injection Framework (Firstpress)

テーブルの外部キー制約確認方法(MySQL4.1)

需要があるのかどうか不明ですが、ひとまず必要にかられてやってみたので書いときます。

使うシチュエーション

レコード削除したいんだけどdeleteすると

ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails

と出てできない、という場合。
まあテーブル定義書やER図確認しろよとかありますが、ひとまず置いといて。

地道に簡単に消していく方法

1. コンソールでdelete from table_name where id=xxx などを実行し、上記エラーが出る。
2. 以下のコマンドを実行する

show innodb status;

3. 色々表示される中に"LATEST FOREIGN KEY ERROR"という欄があり、下記のような感じの記述がある。

delete from TABLE_2 where ID=1
Foreign key constraint fails for table `scheme_1/TABLE_1`:
,
 CONSTRAINT `TABLE_1_ibfk_1` FOREIGN KEY (`COLUMN_1`)
REFERENCES `TABLE_2` (`COLUMN_2`) ON DELE
TE NO ACTION ON UPDATE NO ACTION

この場合TABLE_2テーブルのレコードを消そうとしたらscheme_1.TABLE_1.COLUMN_1に設定された外部キー制約に引っかかって失敗しており、それはTABLE_2.COLUMN_2カラムを参照しているという事が分かる。
4. 3で分かった原因レコード(この例だとTABLE_1テーブルのレコード)を消す。
5. また外部キーエラーが出たら2から繰り替えして、元を辿って順番に消す。

あるテーブルに関する外部キー制約を全て知る方法

show table status from スキーマ名 like 'テーブル名';
show create table テーブル名;

のどちらかで分かります。ただしこれは、そのテーブルから他のテーブルへの参照が分かるだけなので、逆にそのテーブルを外部キーとして設定している他のテーブルが分かりません。
そちらを知りたい場合は

show table status from スキーマ名;

として全テーブル分を出力し、結果をgrepします。えらいベタなのでもっとスマートなやり方がありそうなものですが、ちょっと調べた範囲では見つかりませんでした。

Chris Andersonの"FREE"講演動画

ロングテールの提唱者として有名なChris Anderson氏が、次なる著作"FREE"のプレビューとして講演した動画を見ました。(via Guy Kawasaki氏のブログ
http://www.netvision.de/uk/dispatching/?event_id=5bb1b5e95afabb2e62d2b148ded47706&portal_id=369401748e8249f142a700d8098a3473

様々なものが無料化(超低価格化)していく事で何が起きて何がもたらされているのか、そんな時代にどのようなビジネスモデルがあり得るのかといった事を45分間に渡り語っています。
無料化している、もしくはそれに向かっている様々な事例を挙げながら、今後の展望を含め明瞭に展開してくれているので大変面白く、お勧めです。
上記動画の難点としてスライドが殆ど読めないのですが、slideshareを探したら発見しました。これは嬉しい。
http://www.slideshare.net/charlesfrith/chris-anderson-wired

ちなみにこれを視て、『デジタル音楽の行方』の「水のような音楽モデル」を思い出しました。この本も1度読んだきりでかなり忘れてるから、読み直さないとな…。あ、ちなみに「水のような」というのは(曲あたりでの)低価格化というのもあるけど、曲ごとに課金しないとか、公共的なサービスとしての音楽提供といった複数の概念を含むものです。読んでいない方が誤解するといけないので念の為。

なお"FREE"は来年半ばに出るらしいので、今からとても楽しみです。

ITProにブログ書きました

「自分の設計にガックリ」,システムを運用して痛感
このタイトルは会社的に大丈夫なんだろうかという気はしつつ、まあ少しでも届いて欲しい人に届き易くなるのであれば良いかなと。あと写真が何故か横長にw

関係ありませんが、趣味でAndroidをいじり始めました。しかし家のマシンはwin2kだからSDKのサポート範囲外。

DBマガジン8月号に寄稿しました

先週末に発売された、DBマガジン8月号の特集1『Ajaxによる最新型DBアプリ開発』の第2章『AjaxとサーバサイドJavaDWRでシームレスに連携させる』を寄稿しました。
第2章はDWR2.0の紹介からサンプルアプリ作成(簡易タスク管理)、どさくさに紛れてGuiceについてのコラム*1など、実装中心の話です。サンプルアプリはDWR2.0の新機能であるReverseAjaxを使うなど、小さいながらも結構面白いものになっていると思います。ReverseAjaxはCometを含むサーバ(擬似)プッシュ技術をまとめたもので、非常に手軽に使えるので是非試して欲しいと思います。ちなみにサンプルアプリは殆ど共著の松井君が作りました:-)
特集全体としてみると、Ajaxを使った開発の色々な側面に光を当てた面白いものになっていると思います。「Ajaxの原理は知ってるし、作れと言われれば作れるけど、ちゃんと取り組んだ事は無い」という方には特にお勧め。
それにしても自分の書いた文章が紙メディアに載るのは12年振りくらいなので(w、感慨深いものがあります。
P.S. 翔泳社編集部より、見本誌を送って頂きました。ありがとうございます!

*1:このブログを読まれた方は殆ど同じ話になっちゃいますが