JanGaJan.com

Is fun? JOY!

MetaNight 第4回を開催しました

イベント概要については、About MetaNightをご覧ください。

MetaNightというMetaprogramming Ruby 2の読書会の第4回目を開催しました。

活動内容

Part 1 Chapter2 の Inside the Object ModelからThe Truth About Classesの前までやりました。
読みながらの意見とかはこちらに載せてあります。
https://trello.com/b/djxLBmZ8/metanight-4th

感想

PUBLIC HOUSEに行きました。

inside the object model

Billがさらっと書いた図がこの部分で言いたいことを全てを象徴しています。オブジェクトとクラス、インスタンス変数とメソッドの関係についてです。
今回の内容でRubyにおけるオブジェクトとクラスの役割分担や関係性が少しずつ見えてきました。図で視覚的に理解するというのは非常に大事ですね。

立場が変わると、言葉の意味が変わってくるという点も興味深かったです。
クラスはオブジェクトが呼び出すことのできるメソッドを定義しているけれども、正確には、クラスはオブジェクトが呼び出すことのできるインスタンスメソッドを定義しています。クラスから見たインスタンスメソッドはオブジェクトから見たメソッドとなります。
メソッドの差分を見てみたで試してみました。

1
2
3
4
5
obj = Object.new
Object.instance_methods - obj.methods
=> []
obj.methods - Object.instance_methods
=> []

となります。ちなみに、比較対象をObject.methodsにすると差分が出てきます。これについては後々出てくると思うのでちょっと置いておきます。

他にもmethodsinstance_methodsのようなオブジェクトの中を参照するコードのことをintrospective codeと言っているようでしたが、これは一般的な用語なのかな?と疑問に感じたりしました。

英語

  • Let’s wrap it all up

しっくりきたのは、まとめましょう

  • OO speak

OOはObject-Oriented 慣れないと??ですね。

  • spring into

湧き上がる、という表現に落ち着きました。ないところから自然と生まれる、というニュアンスなのかなぁ…
「Instance variables just spring into existence when you assign them a value」というところで使われていた。お洒落な言い回し。

その他

  • クラス図っぽい図が出てきたことを皮切りに、UMLやBPMNについて
  • object_idはメソッドだった(どこかに持っているのかな?そういう疑問はこれを読んで解決しよう!)

第5回は1月にやります!

Comments