Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

QCon Tokyo 2011に行ってきた

大阪から日帰りで参加しました。
有給取って、自費です。


地震の影響で、途中新幹線が20分弱泊まりました。
おまけに東京ビックサイトの方に行っちゃって、
東京ファッションタウンになかなかたどり着けず…
Eric Evansのセッションは、30分くらい遅刻しました。

ドメイン駆動設計:複雑な問題群に対する有用なモデル達(Eric Evans)

途中からだったけど、雰囲気はつかめたかな?


コードを書く前に、正しいモデルを作る?
それは不合理である。
知識は蒸留される。
チームが、モデルに完全な知識をつけることは、永遠にない。
これはうまくいかない。


具体的なビジネスケースを考える。


いつでも複数のモデルがある。
1つの正しいモデルというものはない。

群盲象をなでる

モデルは抽象化である。


象は縄のよう、というのは1つのモデルである。


なぜ象について知りたいのか。


モデルを作成することには、具体的な理由がある。
たとえばリスクを下げること。


象は木のようだというモデル。
木は人を踏みつけない。
これではリスクを下げていない。モデルとしては誤っている。


境界づけられたコンテキストがある。


コンテキストを変換する。


群盲象を撫でるでは、人々は異なった部分を触っている。
足、鼻。


モデルをトランスレートする。


すべての大規模システムがうまくモデル化されるわけではない。

モデル探求は、DDD本3章にある。

コンテキストはDDD本14章にある。

Webアプリケーションエンジニアがみてきたこの10年(伊藤直也)

naoyaさんの「自分の代表作がほしかった」という言葉が頭に強く残っている。


95年は、デバイス・メディア・グローバリゼーションの10年に1度の転換だった。


そして、ポータル戦争が起こった。

Yahooのサーバは、名前はアケボノだった。
創業者の2人が、相撲が好きで、相撲のリンク集を作ったのが始まりだった。


ウルティマオンラインにはまる。5000人ぐらいがいた。


Googleの創業は、1998年。


そして9・11が起こる。
メディアとしてのインターネットが認められる。


Web業界は、アクセスログがビジネスの源泉である。
けれど、9・11でYahooはシステムがダウンし、それを防ぐためにアカマイに切り替えた。
なお、このときアカマイの社長は巻き込まれてなくなっている。
アクセスログを他者に渡してまで、社会的意義をまっとうしようとした。


昔、はてなはよく落ちた。
障害に対する意識が低かった。
yahooの人が乗り込んできて、さきほどの話をしてくれた。


そして、ネットバブルが崩壊した。


Googleのカルチャーは衝撃だった。
エンジニアが世の中の中心になっている。


エンジニアが主役になってもよい。


Movable Typeが出てきた。
Perlで、たった2人で作られた。


cheap revolutionが起こる。


greeは個人で作られた。


Googleがやらないことを考えると、ソーシャルになった。
ケータイのソーシャルは、ブルーオーシャンだった。


ソーシャルプラットフォームは、エコシステムを形成している。


Androidが売れまくっている。


Web開発トレンドの変化。
mongodbなど。


モバイルシフトは、全世界で起こっている。

クラウドのデータアーキテクチャ―設計の原則(萩原 正義)

クラウドはshared nothing。
レイテンシとスループットを区別する。
電車の間隔と乗車人数と同じ。


n層モデルのボトルネックはRDBである。


レイヤを分けることが遅延につながる。
クラウドでは、ロジックをデータの場所に近づけることができる。


フロントがタスクパラレル。
half sync/half async


データパラレル。
各スレッドにデータを渡す。
クラウドで主になる。


keyvalueとカラム指向。


パーティション単位でデータを持つ。
各行は別々のマシンにある。


複数行の更新しない。
トランザクションは複数パーティションをまたがない。


どのマシンにどのデータを配置するか。
ERから非正規化する。
水平パーティション化する。
参照をローカルなマシンで完結させる。


問題点。
非正規化するので効率が悪い。
膨大なデータ量に対応できない。


リアルタイム処理とバッチ処理を組み合わせる。


MapReduce。
columner database。
カラムにビットを立てて、andを取る。
途中の操作が、カラム単位となる。


カラム指向では、同一の型なので圧縮が効く。
並列で処理できる。

Cube。
あらかじめJoinしておく。


ひとまずここまで。