今日も適当ダイアリー

PHP や Javascript や Symfony、BEAR.Sunday などのWeb周りのことを中心に。それ以外のことも気まぐれに投稿します。

2.0 からはじめる MongoDB - 第0回 #mongodbjp

一部の方から“SymfonyのMongoDBの人”などと呼ばれたりしますが、実はSymfonyもMongoDBも業務では使っていない、という痛い感じの @madapaja です。

大事なことは最初に言う。という事で、宣伝から始めます。
ここ1年で急伸している MongoDB。日本でもMongoDB JP(MongoDBの日本ユーザー会)が去年の11月18日に立ちあがって以来、勉強会やカンファレンス等も開かれ、盛り上がりは加速し続けています。
MongoDBをもっと知りたい、と思ったら、以下のGoogle グループや勉強会にもぜひ参加してください!みんなでMongoDBを楽しみましょう。
MongoDB JP | Google グループ
「第6回 MongoDB 勉強会 in Tokyo」 : ATND(すでに定員オーバーしてますね。。。)

宣言 2.0からはじめるMongoDB という記事をブログに書く!宣言しないと書かなそうなので…

と大見得を切ったので、MongoDB について最初から優しく丁寧に解説していこうと思います。
ただ、とても一回で終わりそうにないので、これから複数回にわたって MongoDB の基本的な使い方を書いていこうと思います。

さて、今回は「0回目」として、MongoDB のメリット・デメリットやユースケース、特徴を通して“MongoDB とはなんぞや”という部分をお話します。(たぶん割と退屈な内容です。。。)

今回のアジェンダ

  • 設計思想
  • デメリット
  • ユースケース
  • 特徴
続きを読む

TDDBC Tokyo 1.7 for PHP に参加して #tddbc

8/21(日)にタイレルシステムズさんの TDDBC Tokyo 1.7 for PHP に参加してきました。
すでに3週間が経とうとしてますが、あの時感じた事や、今想う事をここに書いておきます。(なので、TDDのやり方やブートキャンプ部分については、今回は触れていません。。。)

なお、TDDBCについてのまとめ記事は主催者である @shishi4tw さんが書かれた記事が詳しいので、そちらをどうぞ。
It's just same as dust ahead of a wind: TDDBC Tokyo 1.7 for PHP を開催しました
http://shishithefool.blogspot.com/2011/08/tddbc-tokyo-17-for-php.html


今回のTDDBCの内容は大きく2つにわかれ、1つめは日本のTDD先駆者である @t_wada 氏によるTDD(BC)についての基調講演を中心とした(いわゆる普通の)勉強会の部分、2つめはTDDをペアプログラミングで実践してみるTDDBCのBCの部分です。

続きを読む

Git のおさらい

8/21(日)にタイレルシステムズさんに会場提供いただいて行われた TDDBC Tokyo 1.7 for PHP に参加してきました。
参加登録に出遅れ補欠だったのですが、@ さんから、

LT してくださる方を 1 名補欠の方の中から募集します。LT してくださる方は LT 枠として、本編にも参加していただけるようにします。題材は広く PHP や TDD に関することなら何でも良い、つまり、開発に関することなら何でも良い、とします。

との言葉をいただき、参加したかったので、LT表明をして参加させていただけることになりました。

そこで、「Gitのおさらい」というLTをしてきましたので、その内容をまとめておきます。
なお、勉強会本編の感想は別記事でアップする予定です。

続きを読む

Symfony温泉に参加してきました! #trspa


[テトラポッドで作業をする人々]


Symfonyユーザー会で企画された温泉ツアーに参加しました。
今回は、主にリリースが迫った Symfony2 のドキュメントの翻訳を一気に進めよう、ということで、7月23日(土)〜24日(日)の一泊二日で静岡県伊東の旅館に行ってきました。



旅館に着いて一発目、靴箱に書かれた「シンニーユーザー会」の文字で吹き出してしまいました。
旅館の粋な計らい。侮れませぬ。


私は、短めのドキュメントを2つ翻訳したのですが、久しぶりに翻訳をして日本語がやっぱり難しいな、と改めて感じました。
結局の所、自然な日本語を作るのが難しい。
ですが、これをきっかけに、SymfonやMongoDBのドキュメント翻訳に出来る範囲で貢献していけたらいいな、と思っています。


それにしても今回のツアーでは翻訳をしていたのに、いつの間にかMacやGitの勉強会になったり、大喜利大会になったりして、なかなかユニークで面白くて有意義な2日間でした。


まとめ:Symfonyユーザー会にはツッコミが多い


他の参加者の日記:
http://yanchi52.blog21.fc2.com/blog-entry-40.html
http://d.hatena.ne.jp/n416/20110726/1311645557
http://shishithefool.blogspot.com/2011/07/2-symfony.html

[symfony2][mongo]「第4回 Symfony2 勉強会」でも、Symfony2でMongoDBと仲良くする方法についてLTしてきました

2011-06-06 に ZyngaJapan さんで開催された Symfony2 勉強会でLTをしてきました。

今回の勉強会では MongoDB 周り以外にもちょっと応用的な内容(動的なフォーム、バリデーションなど)を含むことをやろうと思っていたのですが、あえなく挫折。
そして、時間的に押し押しになっていたことと、LTにしては欲張り過ぎたのか、全然説明できずにLTは終わってしまった感があります。。。
が、スライドは丁寧に書いたので、そちらを見ていただけると嬉しいかな、と思います。
また、これを機に、Symfony2やMongoDBを触り始めていただければ、なお嬉しいかな、と思います。

なお、下記のスライドやサンプルコードは、Symfony2 Beta1 での動作を確認しています。
将来のバージョンでは動かなくなってしまうかも知れませんが、また改めて、このブログでも取り上げようと思いますので、一緒にSymfony2 + Mongoしましょう!

スライド:

http://www.slideshare.net/madapaja/symfony2mongodb

サンプルコード:
https://github.com/madapaja/MadapajaMongoWikiBundle

ツッコミお待ちしてます!

「第2回 Symfony2 勉強会」でSymfony2からDoctrine MongoDB ODMを使ってみる、というLTをしてきました!

2011-01-15にZynga Japanさんにて開催された、Symfony2 勉強会でLTをしてきました。
内容は、Symfony Adventで書いた記事をざっくりまとめ、現時点での最新情報に更新しただけなのですが、Symfony2+MongoDB ODMの基本的な使い方をご紹介しました。

この勉強会は、なかなかスパルタ、というか、あまり説明をしないで、とりあえず作ってみやがれ!的なノリで進行していくので、事前情報なしだと結構ひぃひぃですw
でも、やはり、習うより慣れろじゃないですけど、やっぱり最初はトライ&エラーを重ねていくしかないわけで。
それこそ、フレームワーク始めて!っていう方から、Symfonyのスペシャリストまで、いろいろな方がいる中で、こーすればいいよ!だったり、あーでもない、こーでもないというやり取りをしていくのは、適度な緊張感があって面白いです!

勉強会全体については、日本ユーザー会の下記ページをご覧ください。
http://symfony.gr.jp/blog/20110116-symfony2-workshop2-report

@hidenorigoto さん、Zynga Japanの皆様を始め、運営の皆様、参加者の皆様、本当にありがとうございました!
私も十分に楽しみましたよ!

Symfony2 + MongoDB ODM を使ってみる

この記事は、Symfony アドベントカレンダー2010 に参加しています。



投稿時の設定を間違え、12/14付けになっちゃってますが、Adventカレンダー15日目の記事です!(投稿も15日早朝です)
日付変えちゃうとURL変っちゃうのでそのままにしてありますが、ご容赦くださいませ〜


と発言したので、今回は Doctrine MongoDB ODM を Symfony2 から使ってみる。という、割と初心者向けチュートリアル的な記事です。

今回使用した環境は下記の通り。

  • PHP 5.3.3
  • MongoDB 1.7.3
  • Symfony2 PR4
  • Doctrine MongoDB ODM 1.0.0 beta1
  • PHP Mongo Extension 1.1.0 (pecl)

MongoDB ODM ってなに?

ODM は Object Document Mapper の事で、Doctrine2 のORM(Object Relational Mapper)によく似ていて、PHP 5.3.0+ のオブジェクトをMongoDBのドキュメント(RDBのレコードに相当)として簡単に扱えるようになります。

Symfony2 から MongoDB ODM は標準でサポートされているので、早速ためしてみたいと思います。

続きを読む

「第1回 MongoDB JP & CouchDB JP 合同勉強会 in Tokyo」でMongoDB 地理空間インデックスについてLTしました+

昨日(2010/12/12)開催された「第1回 MongoDB JP & CouchDB JP 合同勉強会 in Tokyo」で、MongoDBの地理空間インデックスの紹介をLTとしてやりました。

初LTで緊張しまくってましたが(?)皆様の暖かいまなざしに救われ、なんとか無事に終われました。

勉強会全体の内容については、主催者でもある@doryokujinさんがまとめられた記事をご覧ください。
「第1回 MongoDB JP & CouchDB JP 合同勉強会 in Tokyo」を開催してきました! - doryokujin's blog

で、地理空間インデックスに関するいくつかの補足と、コピペ用のテキストを書いておきたいと思います。

続きを読む

MongoDBの地理空間のインデックスを試してみる

MongoDB面白いですね。
ドキュメントが親切なのでありがたいのですが、なかなか日本語の記事が無かったりするので、Geospatial Indexingについて試してみた事を投稿しますよ!

マニュアル:MongoDB internal corp site


Geospatial Indexing は MongoDB ver1.3.3以上で使えます。

地理空間のインデックスとは

読んで字のごとくなのですが、MongoDBでは二次元地理空間情報(多くの場合、緯度経度情報)をインデックスとして検索をかけることが出来ます。

最近のガラケースマートフォンからは簡単にGPS機能を利用することもできますし、PCブラウザなどでも位置情報を取得出来るようになったり、html5のGeolocation API(厳密にはHTML5に含まれてはいない)の登場などで、今後、ますます位置情報の利用頻度は高くなるんじゃないかと思います。

でも、位置情報って検索が面倒だったりして、そのままで使いやすい情報ではないです。

GeoHashやGeoHexなどというエリア(面)情報として文字列で保存する方法などもありますが、一長一短。

例えば、GeoHashは、文字数が長いほど詳細なエリアを表し、検索なども非常に使い勝手がいい(文字列比較で済む)のですが、その特徴上、距離でのソートが難しかったり、検索エリアの範囲を細かく指定しづらかったりと、デメリットもあります。

どんな技術も、制約と利便性のトレードオフなので、上手く使い分けてやる必要があります。

今回は、MongoDB の Geospatial Index を用いて「近い店検索」のようなものを実験してみます。

続きを読む