tumblr

tumblr(タンブラー)は、メディアミックスブログサービス。ブログとミニブログ、そしてソーシャルブックマークを統合したマイクロブログサービスである。アメリカのDavidville.inc(現: Tumblr, Inc.)により2007年3月1日にサービスが開始された。

オブジェクト指向設計実践ガイド

インターフェースについて学ぶ

class MacBookPro
  def turn_on
    hardware_detect
    farmware_initialize
    bios
  end

  def hardware_detect
    puts 'detect cpu, memory, disk...'
  end

  def farmware_initialize
    puts 'initializing firmware...'
  end

  def bios
    puts 'processing boot sequence...'
  end

end

class Programmer

  def work
    computer = MacBookPro.new
    computer.hardware_detect
    computer.farmware_initialize
    computer.bios

    puts 'start working!'
  end

end

Programmerインスタンスは仕事を始める際にパソコンが必要になる。パソコンの電源を入れないと仕事ができない。だからといって、ProgrammerインスタンスがMacBookProインスタンスの起動処理を全て知っている必要やそれを呼び出す必要はない。むしろそれをProgrammerインスタンスが知っていることは依存性が増すことになってしまう。MacBookProのブートシーケンスにもう1つ処理が追加されてしまった場合、MacBookProクラスだけでなくProgrammerクラスにもその増えたシーケンスを追加しなければならなくなってしまう。その時に必要になるのがインターフェース。この場合であれば、MacBookProクラスはturn_onのみをpublicにして、それ以外はprivateメソッドとすべき。Programmerクラスへの依存性は最小限になる。 インターフェースを考える上での肝は「How」と「What」。この場合、Programmerは「何」がほしいのか?自分の使うパソコンの電源が入って欲しいのだ。電源が入ったパソコンがあれば、あとはProgrammerが勝手に色々してくれる。どうやったらパソコンが起動してくれるのかは知ったことではないし、知っておくべきでもない。「What」を明確にし、それをオブジェクト間のメッセージにして通信させるのが重要となる。そしてその「何」が提供できるかがそのクラスの責任範囲になるため、その責任範囲の提供口としてインターフェースというかpublicなメソッドが出て来る。依存する側、つまりMacBookProクラスのpublicなメソッドを呼ぶProgrammerは、そのインターフェースを受け入れてそれ以上は踏み込まないように、相手の責任を尊重し呼び出すオブジェクトを信頼しながらそのpublicなメソッドを呼び出せるように設計しなければならない。

筋トレ

30 PushUP 30 JumpingSquats 30 LegRaise 30 CrapJack 30 BicycleCrunch 6セット