2010年4月24日土曜日

Solrの創始者によるチュートリアルに参加 はてなブックマーク



22日(木)に、麻布十番近くの国際文化会館で、 次世代サーチ・テクノロジー・フォーラム2010があった。

その前日、21日(水)には、プレイベントとしてSolrプロジェクト創設者のヨニック・シーリー(Yonik Seeley)氏のチュートリアルがあった。来日して講演というのはなかなかない機会なので、両日とも参加してきた。

ちなみに21日のチュートリアルは25,000円、22日のフォーラムは無料。

Solrチュートリアル


参加者は二十数名だった。
一般的な相場と比べても参加費がそれほど高いわけでもなく、すべてのオープンソースプロジェクトの中でもトップレベルの人気があるというSolrの、開発者直々のチュートリアルにしては、少ないように思える。

日本でのSolrの知名度の低さもあるだろうが、告知がうまくいかなかったのかなと思った。内容がよかっただけに、もったいない。

でもその分、参加者はモチベーションが高い人が多かったようで、既にSolrを使っている人も多く、質問も活発だった。

外国人の参加者も数名いた。翌日のフォーラムに参加していた会社の人達だったみたいだ。

講義は逐次通訳で行われた。内容が難しくなると、翻訳するのが大変そうだった。

アジェンダ

・Intro to Solr
・Basic Indexing
・Basic Searching
・Basic Faceting
・Faceting Deep Dive
・Trie Fields
・Distributed Search
・1.5 Preview
・Questions and Answers

Solrで驚くのは圧倒的なパフォーマンスとスケーラビリティだ。

最後のQ&Aでは、実際に動いている最大規模の構成について話があったのだが、
100個のシャード(shards)に分割して、56億ドキュメントを扱っている事例があるそうだ。
この規模でも、1秒以内で結果を返すらしい。

Solrでは1.4から分散検索(Distributed Search)という仕組みが導入されたのだが、シャードというのはその分散したひとつひとつのサーバーインスタンスのこと。

また、Wikipediaのデータを使って、10億ドキュメントを生成し、100シャードに分けてEC2上でテストしたときは、平均のレスポンスが50ms未満だったらしい。

Solrは扱いやすく、高性能、高機能で、他のオープンソース検索エンジンとは一線を画す検索エンジンだ。
日本ではSennaやHyper Estraierが有名だが、数百万の文書ならともかく、もっと大規模な検索を扱うのは厳しい。これからはSolrやLuceneがどんどん使われていくようになると思う。

ただ、国産プロジェクトとは違って、日本語の情報が少なかったり、日本語を扱うノウハウが必要だったりするところがあるのも事実ではある。

僕はなんだかんだで2年くらいSolrを使っているし、数千万件のデータを扱うECサイトにSolrを導入したりしているわけで、そのへんのノウハウもある。Solrの講義や導入コンサルみたいな仕事をすることもできるんじゃないかと、ふと思ったりした。

長くなったので一旦このへんで。

2010年4月19日月曜日

Kindleが早くも故障。そして電話サポートを受ける はてなブックマーク



Reworkを購入して、本格的にKindleを使いはじめた矢先、なんと早くもKindleが故障してしまった。

液晶の上のほうがきれいに長方形の形で白くなってしまって、何も表示されず。

交換してもらえるらしいが、他の人のブログを見ていると、どうもAmazon.comのカスタマーセンターと電話でやり取りしなければいけないらしい。もちろん英語で。英語の勉強をはじめたばかりの自分としては、いきなり高いハードルだ。


ということで、英語でサポートを受けてみた。
しかし、見事に全く聞き取れない。
ゆっくりしゃべってくれとお願いしたのだが、十分速い。
ところどころ聞こえる単語だけをたよりに話す。
伝える方も、ブロークン英語もいいところで、きちんと伝わったのかどうかわからないうちに終了。

正しく処理されたか心配していたが、その後、交換品を送ったとのメールが届いたので、なんとかなったみたいだ。

今回は、自分が思ってた以上に英語が話せないということを実感した。
この敗北感をバネに、今年の目標である英語力向上を、気合を入れなおしていかねば。

ちなみに英語は、TOEICをひとつの指標として使うことにした。
直近の5/30に一度受けて、今年最後の11/28にもう一度受けて、成果を測定するつもり。
自分なりに工夫して、成果が出たらノウハウをシェアしていこうと思う。

おっと、TOEICの申し込みは明日までだ。

2010年4月15日木曜日

Kindleで 37signalsの"Rework"を購入 はてなブックマーク



Kindleを入手して、初めて有料の本を購入した。

購入したのは37シグナルズ「小さなチーム、大きな仕事」の原書"Rework"。

面白いという話は聞いていたので、どうせ読むなら英語の勉強も兼ねて原書を読もう、そしてどうせなら手元にKindleがあるのだし、Kindleで購入体験してみよう、ということで、Kindle購入書籍第1号がこれに決まった。

Kindleの本はたいていサンプルが読めるようなので、まずはサンプルをダウンロードして読んでみる。知らない単語はちょくちょく出てくるが、内容は平易だし、薄い本なので、何とか読みきれるだろう。Kindleならその場で辞書も引けるし。

購入はクリック一発。
こんなに簡単に買えてしまうなんて、手軽であると同時に怖い気もする。油断してるとどんどん購入してしまいそうだ。
アマゾンで最初に本を買った時もその手軽さに驚いたけど、配送の時間もなく、こんなに一瞬で本を(しかも洋書を)入手できるというのは、かなり奇妙な感覚だ。


手持ちのiPod TouchにKindleアプリを入れて、使ってみた。
Kindleで購入した本は、Kindle本体とiPod Touch(やiPhone、iPad、PCなどなど)で同期ができる。

操作性はKindle本体よりiPod Touchのほうが断然いい。特にKindle Storeで本を探すのは、iPod Touchのほうが遥かに楽だ。Kindle本体はページの切り替えが遅い上に、なぜか一覧に本の金額が出てこない。このあたりは改善してほしいところ。

長時間読むときはKindleで、ちょっと読むときはiPod Touchで、みたいな使い方はすごく便利そうだ。

しばらく頑張って活用してみようと思う。

2010年4月6日火曜日

Google App EngineでDjangoを使う(インストールから起動まで) はてなブックマーク



Google App Engine Helper for Djangoというものが用意されているので、それを使って、まずはサーバーの起動までやってみる。
Windows環境。

Djangoのインストール


まずはDjangoのインストール。

Python2.5とGoogle App Engine SDKはインストール済み。(SDKのバージョンは1.3.2 - 2010-03-25)

Djangoの公式サイトから、現在最新の1.1.1をダウンロード。

解凍し、コマンドプロンプトでそのフォルダーに移動したら、以下を実行してインストール。

python setup.py install


以下のように、インストールされたバージョンを確認できる。

>python
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 1, 1, 'final', 0)


Google App Engine Helper for Djangoを使う


公式ドキュメントのとおり、ヘルパーをダウンロードして、mysiteフォルダーに設置。
サーバーを起動してみる。

python manage.py runserver


ところが、ImportError: No module named ipaddrというエラーが出る。
ipaddrというモジュールがうまく入ってないということらしい。

ここから、easy_installをインストールする。Rubyでいうgemにあたるとのこと。

手順通り、ez_setup.pyをダウンロードして、以下でインストール。
python ez_setup.py


それから、Scripts(自分の環境ではC:\Python25\Scripts)にパスを通して、

以下のようにipaddrをインストールできればOK。

easy_install ipaddr



もう一度、

python manage.py runserver


とすると、今度は起動できた。

http://localhost:8000/を開くと、It worked!と表示された!
とりあえずここまで。

2010年3月3日水曜日

今年の目標はGAEとスマートフォン開発と英語 はてなブックマーク

今更だけど、今年の目標は、

・Google App Engine(GAE)を使ったWebサイトをつくる
・iPhoneアプリをつくる
・Androidアプリをつくる

ということで、いつの間にか多言語を勉強している。
GAEはPythonを使うつもりだし、iPhoneはObjective-C、AndroidはJava。

2週間くらいやってみた感想としては、GAEの開発はわりとすぐできそう。
iPhoneは思ったより大変そう。Objective-Cが難しい。
今年前半(6月)くらいまでに、GAEで何か開発して、今年の後半で
iPhoneとAndroidアプリを作ることにしようと思う。


Google App Engine



まずこの本で、Pythonに入門。
ウェブ上で情報を集めるのもよいが、やはり本でまとまっているのを読むのが好きだ。



それから、Googleのドキュメント。
スタートガイドをやってみたが、非常にわかりやすい。
開発ツールがよくできていて、デプロイなども簡単。

デフォルトのwebappというフレームワークを使う予定だが、Railsのような
かちっとしたフレームワークではないから、キレイに書くには工夫が必要なのかも。

Google App Engineで、MVCとヘルパーメソッドの記述をおこなう。


テスト方法。

Google App Engine/Python で単体テスト
Google App Engineでテスト駆動開発を行うための3つのTips


iPhone、Android


iPhonetとAndroidは、まだウェブ上の入門記事をやってみた位。
やはり本で読みたい。以下、入手予定の本。





今年は、開発の目標とは別に、

・英語を実用レベルにする

という目標もあるのだけれど、それはまた別のエントリーで書くつもり。

2009年11月17日火曜日

RDB以外のデータストアを調べてみた はてなブックマーク

最近、RDB(リレーショナルデータベース)以外のデータストアを使おうという流れが、ますます強くなっていると感じます。
RDBはスキーマ変更によるアプリへの影響が大きいこと、データが大規模になったときに分散させにくいことなどにより、RDBの制約がアプリケーションの改善をする上でのボトルネックになりがちです。

ということで、リレーショナルでないデータストアについて、少し調べてみたのでメモしておきます。

キーバリュー型データストア(KVS)


memcachedや、最近ではTokyo Tyrantが有名ですね。
memcachedはキャッシュ用途だけですが、Tokyo Tyrantは永続化もできるみたいです。
Tokyo TyrantをRailsから使い易くしたという、Miyazaki Resistanceもよさそう。食べログでも使っているそうです。

ドキュメント指向データベース


ApacheのプロジェクトになったCouchDBが有名。
最近ではMongoDBが、注目株らしいです。

UbuntuにCouchDBを入れて、ここを見て動かしてみましたが、なかなかよさそうな印象でした。
RDBの発想から頭を切替えなければいけませんが、CouchDBの名前のとおり、あまり構えずに気楽に使ってみたいと思います。

MySQLを非リレーショナルに使う


非常におもしろかったのがFriendFeedの事例。
CouchDBなどは安定性で不安があったため、勝手の知ったMySQLをスキーマレスで使うようにしたとのこと。
idとbodyしかないテーブルにJSONでデータを格納し、インデックス用に別テーブルを作るという大胆な発想。

WebアプリのDBスキーマレス化がRubyにぴったりな件
のSimpleResourceも同様のアプローチのようなのでメモ。

Solrを使えないか?


Apacheプロジェクトの検索エンジンでSolrというものがあります。Solrでは、検索対象のデータを非正規化してドキュメントとして格納します。
まさにドキュメント指向のデータストアです。さらに検索能力は右に出るものがないくらいの高性能。分散させる仕組みも持っています。

実際の運用ではしっかりとRDBが別にあった上で、そのデータを検索するために使われることが多いようですが(僕もそうやっています)、もう少しメインのデータストアとして簡単に使えたらいいのになと思っています。
問題はリアルタイムの頻繁なデータ更新に対応できないことなので、他のデータストアと組み合わせてうまくパッケージ化できないかなと。

Solrについては、つい先日1.4がリリースされたので、別エントリーで書こうと思います。

Bigtable、Simple DB


Googleで使われているBigtableや、Amazonのクラウドで提供されているSimple DBも非リレーショナルなデータベースだそうです。
Bigtableは無料で使えるGoogle App Engineでも利用できます。ちょうどGoogle App Engineを使いはじめたところなので、Bigtableも使うことになるはず。

2009年10月24日土曜日

メダチェアとWindows 7を購入 はてなブックマーク

午前はオークションで購入したメダチェアとWindows7の受け取り。

以前の椅子で腰痛に悩まされていたので、アーロン、バロン、メダといったあたりを検討した結果、メダチェアを購入。すわり心地はまあまあかな。定価20万ということで少し過剰に期待しすぎたかも。

でも、長時間座っても腰が痛くならないようなのでよかった。これで椅子に座ってPCが使える。

Windows7はVAIOのアップグレードサービスで3,150円。Vistaと比べれば全然よい。動作も速くなった。