Date:  Wed, 01 Dec 2010 19:50:13 +0900
Subject:  【オブジェクト倶楽部: 2010-45号】
X-Mail-Count: 00363

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.353 2010/12/01

■ I N D E X
┃
┣【プログラミング】ドキュメント指向データベースMongoDB [7]
┣【PF】現場リーダーの心得 [30]
┗ 編集後記

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【プログラミング】ドキュメント指向データベースMongoDB [7]

こんにちは、ursmです。

日本のMongoDBユーザグループ、MongoDB JPが発足しました。
http://groups.google.com/group/mongodb-jp 

当面は公式ドキュメントの翻訳やイベントの開催を主な活動とされていくよう
です。
早速「第1回 MongoDB JP & CouchDB JP 合同勉強会 in Tokyo」と題したイベン
トの開催が予定されています。
http://atnd.org/events/10377 

こちらは残念ながらすでに定員に達してしまっていますが、今後も同様のイベ
ントが催されると思われますので、興味のある方はチェックしてみてはいかが
でしょうか。

● MongoDB driver
さて、この連載ではシェルを通してMongoDBの使い方をご紹介してきました。実
際にアプリケーションからMongoDBを利用する場合、プログラミング言語ごとに
用意された「ドライバ」を使います。
ドライバはMongoDBの機能の呼び出しやデータ型の変換などを行い、プログラミ
ング言語からMongoDBをシームレスに扱えるようにする役割を持ちます。

MongoDBはドライバを通じて多数の言語に対応しています。公式に提供されてい
るものだけでも10、コミュニティによって提供されているものも含めると30以
上の言語に対応しています[*1]。

それでは実際にRubyからドライバを経由してMongoDBを使ってみましょう。
このドライバはRuby1.8.6〜1.9.2とJRuby1.5.1に対応しています。

インストールにはRubyGemsを使います。

   $ gem install mongo
   Installing gem mongo-1.1.4
   Successfully installed mongo-1.1.4

C言語をビルドできる環境があるなら、合わせてbson_extをインストールしてお
くといいでしょう。BSONの処理が高速化されます。

   $ gem install bson_ext
   Installing gem bson_ext-1.1.4
   Successfully installed bson_ext-1.1.4

準備はこれだけです。試しにirbから使ってみましょう。まずは必要なライブラ
リを読み込みます。(>>は入力、=>は戻り値の出力です)

   $ irb
   >> require 'rubygems'
   => true
   >> require 'mongo'
   => true

localhostのデフォルトポートに接続したConnectionオブジェクトを作成します。
接続エラーが出てしまう場合はMongoDBが起動していない可能性がありますので
確認してみてください。

   >> conn = Mongo::Connection.new
   => #<Mongo::Connection:0x7f5315f1dac8 ...>

testデータベースを開きます。

   >> db = conn.db('test')
   => #<Mongo::DB:0x7f5315f18640 ...>

続いてusersコレクションを開きます。大半の処理はコレクションを経由して行
うことになるでしょう。

   >> users = db.collection('users')
   => #<Mongo::Collection:0x7f5315f109e0 ...>

ドキュメントを保存して取り出してみます。

   >> users.count
   => 0
   >> users.save(:name => 'ursm', :age => 26)
   => BSON::ObjectId('4cf5b49ba887a60d71000002')
   >> users.count
   => 1
   >> users.find_one
   => {"_id"=>BSON::ObjectId('4cf5b49ba887a60d71000002'), "age"=>26, "name"=>"ursm"}

最後に掃除しておきましょう。

   >> users.drop
   => true

● まとめ
Rubyからドライバを経由してMongoDBを操作する方法をご紹介しました。
(id:ursm)

● 参考
Ruby Language Center -MongoDB
http://www.mongodb.org/display/DOCS/Ruby+Language+Center 

[*1] http://www.mongodb.org/display/DOCS/Drivers 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【PF】現場リーダーの心得 [30]

オブジェクト倶楽部メルマガ読者のみなさん、こんにちは。
岡島です。

数年前、私がPM兼アーキテクトを担当したプロジェクトがありました。比較的
小規模な業務系Javaシステムです。
外部システムとデータのやりとりをする要件があり、サービスの口であるAPIを
公開する必要がありました。様々な方式がある中で、当時の技術背景から考え
ると一番手堅いと思われるSOAPを選択しました。外部システム側がCやC#など複
数の言語で開発されているため、言語やプラットフォームに依存しないSOAPは
妥当な選択だと考えたからです。(他の選択肢として、「DBを経由したデータ連
携」なんてのもありました)
もし、今同じシチュエーションでアーキテクチャを検討するのであれば、当然
のようにRESTが選択肢に入ってくるでしょう。技術の移り変わりは速く、先を
見越すのが難しくなりましたね。
Javaですらそうです。数年前は業務系システム開発はJava一辺倒でしたが、Ruby
をはじめとするライトウエイト言語の流行や、OracleのSun買収によるゴタゴタ
により、Javaの地位も安泰とは言えない状況になってきました。もちろん、今
すぐ廃るものではありませんが、システムを提案するにあたっては、「とりあ
えずJava」という考えからは脱却しなくてはいけない状況になってきました。

いつになく長い前書きになりましたが、今日のテーマは「技術」です。現場を
離れたマネージャが、移り変わりの激しい技術と向き合いキャッチアップして
いくにはどうすればよいか考えてみましょう。

●「プログラミングを続ける」こと
私もそうなのですが、マネージャになると、(少なくともお仕事では)プログラ
ミングをしなくなることが多くなります。作業の大半は計画や管理・調整に関
わるものとなり、自分が動くのではなく人を動かすのが仕事となるのです。
これを辛いと感じるか、楽になったと感じるかは人それぞれでしょうが、どち
らにせよ、現場で実際に開発をしている若手に追い抜かれていく感覚を持つこ
とになるでしょう。プログラミングをしなくなると、当然スキルは低下します。
これは、(システム全体の構造を検討する役割としての)アーキテクトであって
も同じことです。アーキテクトといえどもプログラミングを止めてしまうと、
徐々に勘が鈍ってきます。若手にアドバイスを求められても、微妙にピントは
ずれなことを言ってしまったり、自分の経験だけで判断しちゃって時代遅れに
なったりするんですよね。趣味の範囲でも、プログラミングを続けるのは大切
です。

●「継続的に情報がインプットされる」環境を保つこと
私は、マネージャといえども新しい技術に向き合うことを止めてはいけないと
思います。たとえ、プログラミングする機会がなくなったとしても。そのため
に、「継続的に新しい情報がインプットされる」環境を作り保つ工夫が大切で
す。私の場合、雑誌のモニター読者を続けることで、新しい技術に触れるモチ
ベーションを保つ工夫をしています。記事を読んで良かった・悪かったという
結果を返す役目を請けているので、緊張感を持って真剣に記事を読むことがで
きます。その結果、情報が頭に入ってきやすくなるのです。

●「新しいこと」に興味のある人たちと繋がりを持つこと
つい先日、技術的守備範囲の広い同業の友人と話す機会があったのですが、い
ろいろな裏話が聞けて面白くためになりました。
もう一つ大切にしたいことは、「新しいこと」に興味のある人たちとの繋がり
を持つことです。これはリアルでもネットでも両方に言えるのですが、自分の
守備範囲外の情報が入ってくることによって、新しい刺激を得ることができま
す(そのためにも、SNSなどのソーシャルサービスは一通り試してみるとよいで
しょう)。

もちろん、情報は得るだけでなく提供することも大切です。私がこのメルマガ
を続けている一つの理由もそこにあります。

気が付けば、今回で「現場リーダーの心得」も30回目の区切りをむかえます。
ここまで続けられたのも皆さまのおかげです。今後ともよろしくお願いします。
(岡島)

■ 永和システムマネジメントの組込みソフトウェア開発
ICTとETのクロスーオーバーを目指します。
http://et.esm.co.jp/site/index.html

■「ソフトウェア開発を成功させるチームビルディング」
現場リーダーの仕事術をチームビルディングの観点から説明しています。
http://www.amazon.co.jp/exec/obidos/ASIN/4797352434/xpjp-22

■ okajima_yukioのtwitter
http://twitter.com/okajima_yukio/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人のナガタユウコです。12月に入り、ついに2010年も残すと
ころあと1ヶ月ですね。みなさま、2010年に遣り残したことはないでしょうか?
私は1月に2010年の目標を立てた・・・はずなのですが、そもそも目標が何だっ
たのか今となっては思い出せないというお恥ずかしい状況です>< 2011年はき
ちんと目標を書き留め、その目標の達成に向けて、充実した1年になるようにし
たいと思います!(ナガタユウコ)

*** オブラブスタッフ自己紹介 ***
No.31 水越明哉
( @Akiyah )
こんにちは、オブジェクト倶楽部の水越です。オブラブのメルマガで連載[*1]
をしています。
趣味は珈琲とぐりぐり写真です。ぐりぐり写真とは、マウスを乗せて動かすと
ぐりぐりと動いて立体的に見える写真のことです。作品をたくさん載せている
ので下記のブログ[*2]を見てくださいね。
オブラブ以外のコミュニティ活動は、日本XPユーザグループ(XPJUG)やアジャイ
ルプロセス協議会(通称アジャパ)[*3]に参加しています。とくにアジャパは運
営委員長なのでがんばって活動していますよ!
最近は息子がポケモン好きなのでポケモンのことを考えるようになってきまし
た。そういえばオブラブのイベントでもポケモンのLT[*4]をやりましたね。ポ
ケモンの正体、モデル、教育、楽しさ、ビジネスなどを妄想しています。好き
なポケモンはポッチャマ、好きなタイプはみずタイプ、好きな団はロケット団
です。
あと、カエルと餌のコオロギを飼っています。カエルは前の冬は室内で飼って
いて冬眠させなかったので、この冬は寝てもらおうと計画しています。(水越)
[*1] Flex 3 SDKとPapervision3Dで三次元を遊ぶ [17]
     /ml-arch/magazine/356.html
[*2] ぐりぐり写真を作ろう
     http://blog.livedoor.jp/akiyah1/
[*3] アジャイルプロセス協議会
     http://www.agileprocess.jp/
[*4] ポケットモンスター進化の不思議
     http://www.slideshare.net/Akiyah/pocketmonstar-modeling

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒/community/object_ml/help/
〇 免責事項、過去の記事は   ⇒/community/object_ml/
■ 発行:オブジェクト倶楽部 ⇒http://ObjectClub.jp/
Copyright (c)2010 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.