Your SlideShare is downloading. ×
0
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
MongoTalkを試してみた
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

MongoTalkを試してみた

496

Published on

MongoDBの非公式SmalltalkドライバーMongoTalkを試しに使って見ました。そのショートレポート。 https://gist.github.com/4389646 も併せてみてね

MongoDBの非公式SmalltalkドライバーMongoTalkを試しに使って見ました。そのショートレポート。 https://gist.github.com/4389646 も併せてみてね

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
496
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MongoTalkを 味見してみたですよ おがさわらなるひこ naruoga@gmail.com Twitter: @naru0ga 2012年Smalltalk勉強会忘年会於 シンコム・システムズ・ジャパン様
  • 2. 最近お仕事でMongoDB触ってます
  • 3. せっかくだから 俺もなにかアプリを 作るぜ!
  • 4. ……。
  • 5. 先生! 書くものが浮かびません!
  • 6. どうせ PoCだし Squeak系で 書くことでモチベーションを 維持したい
  • 7. MongoDBのページ見てたら 変なの? 発見
  • 8. えっ?
  • 9. eXtremeProgramming の 元祖 Kent Beck?
  • 10. という話を@umejava さんに したら
  • 11. 「Kentの ソースはたいてい地雷 だからやめたほうがいいですよ」
  • 12. 地雷=ネタ
  • 13. 地雷=ネタ
  • 14. 使ってみよう!
  • 15. そんなわけで まずは Pharoの イメージを 取ってくるよhttp://www.pharo-project.org/ ※なんでPharoかというと将来はSeaSideと連携したいなーなんて
  • 16. Pharoにはもう便利なパッケージがいっぱい入ってるが、それじゃー足りない、だって?オーケー、じゃあ下にあるやつをDo it してみな? ←カーソルをここに 当てて alt+D (Do It)
  • 17. いた!(Untrustedだけど)
  • 18. 右クリックでインストール!
  • 19. 入った!
  • 20. ??? 使い方が よくわかんないよ
  • 21. System Browserを もっかい見る
  • 22. これだ!
  • 23. MQQueryTest>>setUpsetUp root := Mongo default. root open. database := root databaseNamed: test. collection := database addCollection: testCollection
  • 24. Mongo クラスに default メッセージを 投げると ポート27017に 繋ぎに行ったオブジェクトが得られる
  • 25. そのオブジェクトに open ! と 叫ぶと コネクションが 張られる
  • 26. そのオブジェクトにdatabaseNamed: を 投げると データベース オブジェクトが もらえる
  • 27. データベースオブジェクトにaddCollection: すると 追加されたコレクションが 得られる
  • 28. なんだ余裕じゃねーか
  • 29. んじゃ 値の追加っと
  • 30. MQQueryTest>>testSelecttestSelect | selected | collection add: (Dictionary new at: key1 put: value1; yourself). collection add: (Dictionary new at: key2 put: value2; yourself). selected := collection select: [ :each | each key1 = value1]. self assert: selected size equals: 1
  • 31. ふむふむ Dictionaryを newして at: put: で 要素を作ってyourself を add: ……か
  • 32. これでよくね?"Associationならリテラルで書けるから""Associationを作って Dictionaryに変換!"collection add: ({#key1->value1} as: Dictionary). Assocだったらキーは シンボルだろー、と思ったら シンボルで大丈夫でした (参照もOK)
  • 33. お次は参照
  • 34. MQQueryTest>>testSelecttestSelect | selected | collection add: (Dictionary new at: key1 put: value1; yourself). collection add: (Dictionary new at: key2 put: value2; yourself). selected := collection select: [ :each | each key1 = value1]. self assert: selected size equals: 1
  • 35. 要は collectionオブジェクトに ブロックを 渡せば いいっぽい
  • 36. collection を 覗いてみるとMongoCollection クラスの オブジェクト
  • 37. enumeratingプロトコル detect: do: inject:into: select:
  • 38. db.collection.find() っぽいことは do: (全部) かselect: (条件指定) でいけるだろ
  • 39. デモっぽく
  • 40. 使ってみた 感想
  • 41. 楽しいおもちゃですなw
  • 42. うまくいってるウチはけっこう楽しい
  • 43. けど……
  • 44. 途中で エラーになると BSONの 解釈にコケて 以降全部の リクエストが死ぬ(っぽい……確証なし)
  • 45. エラーが 起きたときに 通信キューの BSON捨ててないのかな?
  • 46. クエリー ごとに セッション 張り直せばよさそうだけどそれってどうよ?
  • 47. あと 記法がダサくないすか?
  • 48. これをcollection do: [ :item | result add: (name = , (item at: #name), , Author(s) = , (item at: #author ifAbsent: (nothing)) asString)].
  • 49. こう書きたくない?collection do: [ :item | result add: (Name = , item name, , Author(s) = , item author) asString)].
  • 50. いかにも「辞書でデータ 持ってるよ!」 ってのが モロ見えで 悲しい
  • 51. スキーマレスなんだから それぞれの文書が何持ってるか気にせずに 「お前このキーの値持ってたら教えてよ!」 って聞きたいじゃん!
  • 52. ちょっとしたラッパーを書けばできそうなんだけど 時間切れでできませんでした ゴメンナサイ orz
  • 53. 当然だけど MongoDBの 機能に全然追いついてないのも 悲しい
  • 54. READ Preference とか custom ErrorMode(tag aware WRITE) 便利そうなので ぜひ欲しいなあ
  • 55. TTL Collection とかも便利そうですねー
  • 56. aggregation frameworkもSmalltalkっぽく書ける記法とか あったら カッコイイ
  • 57. 2.4 の geospacial index はPhysical Computing 的に楽しそう
  • 58. よし! 探検隊はMongoTalkを拡張する会に しよう!
  • 59. \誰も来ないよ/
  • 60. お恥ずかしい発表ですが
  • 61. おしまい。

×