市田さん

山口です。
いつもご教示ありがとうございます。

> ...、render メソッドを単なるアクセッサメソッドとせずに
> @is_in_nw が false の場合は、render メソッドが false を返すとか
> 、例外とする手もあります。これだとDeviceクラス側の処理で済みます。

def render とするのでしょうか。

下記ソース内でコメントで記載しましたが
# obj.render.SetMuteやobj.render.Play で呼び出されているのを、@renderイ
ンスタンスmethodを呼び出す記述が分からない
や
# obj.render が nil なので undefined method `SetMute' for nil:NilClass (
NoMethodError) でスクリプ終了されると困る

をdef render 内に記述をどうすればいいのかが分からず...

class Render
  def initialize(service)
    @service = service
  end

  def SetMute(sw)
    puts "#{__method__} is executed!"
  end

  def Play
    puts "#{__method__} is executed!"
  end

  ### 他にも多数method有 
end

class NetWorkAudioDevice

  attr_reader	:is_in_nw

  def initialize(device,is_in_nw)
    @is_in_nw = is_in_nw

    if @is_in_nw then 
      service = "service"
      @render = Render.new(service)
    else
      @render = nil
    end
  end

  def render
    if @is_in_nw then
      puts "in network!"      
      # obj.render.SetMuteやobj.render.Play で呼び出されているのを、@
renderインスタンスmethodを呼び出す記述が分からない
    else
      puts "not in network!"
      # obj.render が nil なので undefined method `SetMute' for nil:
NilClass (NoMethodError) でスクリプ終了されると困る
    end
  end
end

# Network上に master機器存在 is_in_nw true でインスタンス作成
mdevice="192.168.0.2"
master = NetWorkAudioDevice.new(mdevice,is_in_nw=true)
# Network上に slave 機器存在しない is_in_nw false でインスタンス作成
sdevice="192.168.0.3"
slave  = NetWorkAudioDevice.new(sdevice,is_in_nw=false)

master.render.SetMute(true) # Render method SetMute実行を期待
slave.render.SetMute(true)  # NetWorkAudioDevice render method で return 
nil かで何も処理をしないようにしたい。

> ただこう考えてくると
> - @is_in_nw が false の場合でも Render などのインスタンスを作成する意
味 
> があるか

あまり意味をなさなくなってしまうのは、承知しておりまして。

network上に存在しようがしまいが、インスタンスを作成して、呼び出しを 
master.render.SetMute(true) 
slave.render.SetMute(true)
揃えたい。
しかし、ネットワーク上に存在しない場合、そのまま呼び出すと、内部で用いて
いるgemがRaiseし、スクリプトが終了して困るので、
それを回避したいのです。

また、他のメンバーの利用も考えており、network上に機器が存在しなかった場
合をの事をコード上であまり意識させたくないので、
機器が存在しない場合は、内部で何も実行せず、メッセージを表示するのみにし
たいと考えています。

>- 作成したとして、その場合に呼びされたインスタンスメソッドは @is_in_nw
>の値に従ってどう振る舞うのが良いか

上述しました内部で何も実行せず、メッセージを表示するのみと考えています。

>- @is_in_nw は動的に変わるのか、それともDeviceインスタンス生成時に指定
し 
>た以降変化するのか

現時点では、Deviceインスタンス生成時で後変化せずに、しております。
考慮に入れなければと思っておりますが...

>など、クラスにどのような役割をもたせるのかなど、クラス設計の話になるの
で
>はと思います。

ご尤もです。
質問していて、Rubyでの記述方法での質問部分もありますが、クラス設計に関し
ての
質問の色合いが強いですね。
オブジェクト指向言語は、Rubyで初めてでして...
知識レベルが足りない部分を考慮していただき、ご教示いただけると幸いです。