MongoTalkを試してみた
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

MongoTalkを試してみた

on

  • 884 views

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

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

Statistics

Views

Total Views
884
Views on SlideShare
884
Embed Views
0

Actions

Likes
1
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

MongoTalkを試してみた Presentation 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. おしまい。