<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>まさるblog</title><link>http://blogs.wankuma.com/masaru/</link><description>越後在住アプリケーションエンジニア奮闘記</description><managingEditor>まさる</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>まさる</dc:creator><title>二つ名</title><link>http://blogs.wankuma.com/masaru/archive/2008/09/02/155175.aspx</link><pubDate>Tue, 02 Sep 2008 12:47:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2008/09/02/155175.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/155175.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2008/09/02/155175.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/155175.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/155175.aspx</trackback:ping><description>&lt;blockquote&gt; まさるさんの二つ名は…「致死回帰（シークレットコラプション）」です
  &lt;br /&gt;&lt;a href="http://pha22.net/name2/c/%u307E%u3055%u308B"&gt;http://pha22.net/name2/c/%E3%81%BE%E3%81%95%E3%82%8B &lt;/a&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;あれですか。リビングデッドですか。
&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/155175.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる</dc:creator><title>2008年度秋季情報処理技術者試験</title><link>http://blogs.wankuma.com/masaru/archive/2008/08/22/154003.aspx</link><pubDate>Fri, 22 Aug 2008 18:01:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2008/08/22/154003.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/154003.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2008/08/22/154003.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/154003.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/154003.aspx</trackback:ping><description>&lt;p&gt;今年もこの時期がやってまいりました。
&lt;/p&gt;
&lt;p&gt;私は昨年と同じNWを受ける予定です。
&lt;/p&gt;
&lt;p&gt;昨年午後Ⅱでダメだったので、リベンジかましたいと思います。
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;ただ、勉強時間の確保がなかなかできん・・・
&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/154003.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる</dc:creator><title>デザインパターンを学ぶ～その20：Singletonパターン(3)～</title><link>http://blogs.wankuma.com/masaru/archive/2008/08/10/152505.aspx</link><pubDate>Sun, 10 Aug 2008 23:13:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2008/08/10/152505.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/152505.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2008/08/10/152505.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/152505.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/152505.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://blogs.wankuma.com/masaru/archive/2008/07/24/150168.aspx" target="_blank"&gt;前回&lt;/a&gt;は二重チェックを用いた方法で、マルチスレッド下で正常に動作するSingletonを説明しました。&lt;/p&gt; &lt;p&gt;今回はもう一つの、staticコンストラクタを用いた方法を紹介します。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;それでは、まずはいつものようにコードを掲載します。&lt;/p&gt; &lt;h5&gt;C#&lt;/h5&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:5dbc330d-78dd-4444-a49b-5f802c967d8b" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;/// &amp;lt;summary&amp;gt;
/// ログ出力クラス
/// &amp;lt;/summary&amp;gt;
public class SingletonLogger
{
  /// &amp;lt;summary&amp;gt;
  /// ログ出力パス
  /// &amp;lt;/summary&amp;gt;
  private string _logPath;

  /// &amp;lt;summary&amp;gt;
  /// プロパティ ログ出力パス
  /// &amp;lt;/summary&amp;gt;
  public string LogPath
  {
    get
    {
      return _logPath;
    }
  }

  /// &amp;lt;summary&amp;gt;
  /// コンストラクタ
  /// &amp;lt;/summary&amp;gt;
  /// &amp;lt;remarks&amp;gt;new でインスタンス化できないよう、privateでコンストラクタを定義&amp;lt;/remarks&amp;gt;
  private SingletonLogger()
  {
    // 重い初期化処理  
    for (var i = 0; i &amp;lt; 1000000000; i++)
    {
    }
    _logPath = DateTime.Now.ToString("yyyyMMddhhmmssfff") + ".log";
  }

  /// &amp;lt;summary&amp;gt;
  /// 自身の唯一のインスタンス
  /// &amp;lt;/summary&amp;gt;
  private static SingletonLogger _uniqueLogger = new SingletonLogger();

  /// &amp;lt;summary&amp;gt;
  /// プロパティ インスタンス
  /// &amp;lt;/summary&amp;gt;
  /// &amp;lt;remarks&amp;gt;自身の唯一のインスタンスを返す&amp;lt;/remarks&amp;gt;
  public static SingletonLogger Instance
  {
    get
    {
      return _uniqueLogger;
    }
  }

  /// &amp;lt;summary&amp;gt;
  /// ログ出力
  /// &amp;lt;/summary&amp;gt;
  /// &amp;lt;param name="message"&amp;gt;&amp;lt;/param&amp;gt;
  public void WriteLog(string message)
  {
    // ログ出力処理
    // ・・・
  }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h5&gt;VB&lt;/h5&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:4d828d5f-5342-4fb4-be30-fbe7fef833cc" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="vb"&gt;''' &amp;lt;summary&amp;gt;
''' ログ出力クラス
''' &amp;lt;/summary&amp;gt;
''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;
Public Class SingletonLogger

  ''' &amp;lt;summary&amp;gt;
  ''' ログ出力パス
  ''' &amp;lt;/summary&amp;gt;
  ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;
  Private _logPath As String

  ''' &amp;lt;summary&amp;gt;
  ''' プロパティ ログ出力パス
  ''' &amp;lt;/summary&amp;gt;
  ''' &amp;lt;value&amp;gt;&amp;lt;/value&amp;gt;
  ''' &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
  ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;
  Public ReadOnly Property LogPath() As String
    Get
      Return _logPath
    End Get
  End Property

  ''' &amp;lt;summary&amp;gt;
  ''' コンストラクタ
  ''' &amp;lt;/summary&amp;gt;
  ''' &amp;lt;remarks&amp;gt;new でインスタンス化できないよう、privateでコンストラクタを定義&amp;lt;/remarks&amp;gt;
  Private Sub New()
    ' 重い初期化処理  
    For i As Integer = 0 To 1000000000
    Next i
    _logPath = DateTime.Now.ToString("yyyyMMddhhmmssfff") &amp;amp; ".log"
  End Sub

  ''' &amp;lt;summary&amp;gt;
  ''' 自身の唯一のインスタンス
  ''' &amp;lt;/summary&amp;gt;
  ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;
  Private Shared _uniqueLogger As New SingletonLogger()

  ''' &amp;lt;summary&amp;gt;
  ''' プロパティ インスタンス
  ''' &amp;lt;/summary&amp;gt;
  ''' &amp;lt;value&amp;gt;&amp;lt;/value&amp;gt;
  ''' &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
  ''' &amp;lt;remarks&amp;gt;自身の唯一のインスタンスを返す&amp;lt;/remarks&amp;gt;
  Public Shared ReadOnly Property Instance() As SingletonLogger
    Get
      Return _uniqueLogger
    End Get
  End Property

  ''' &amp;lt;summary&amp;gt;
  ''' ログ出力
  ''' &amp;lt;/summary&amp;gt;
  ''' &amp;lt;param name="message"&amp;gt;&amp;lt;/param&amp;gt;
  Public Sub WriteLog(ByVal message As String)
    ' ログ出力処理
    ' ・・・
  End Sub

End Class
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;では、コードについて説明しましょう。ポイントは&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Singleton自身のインスタンス変数の宣言箇所で初期化も行う。 
&lt;li&gt;Instanceプロパティでは、チェックを行わないで良い。&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;の２点です。&lt;/p&gt;
&lt;p&gt;前回、前々回の方法ではInstanceプロパティにアクセスしたときに、その中で自身のインスタンスを作成しました。これを&lt;strong&gt;遅延初期化&lt;/strong&gt;といいます。&lt;/p&gt;
&lt;p&gt;しかし、今回は変数宣言時に初期化しており、このコードが実行されるのは、初めてSingletonのメンバにアクセスしようとした際に実行される、&lt;strong&gt;staticコンストラクタ（クラスコンストラクタ）&lt;/strong&gt;の内部になります。そして、CLRでは&lt;strong&gt;staticコンストラクタはスレッドセーフであることが保証される&lt;/strong&gt;ため、必ず１つしかインスタンスが作られないことになります。&lt;/p&gt;
&lt;p&gt;ですので、2.のようにInstanceプロパティ内でのチェックは不要になります。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ところで、この方法は二重チェックの方法に比べて単純ですし、積極的に利用したほうが良いと感じるかもしれません。ただ一点、Singletonのメンバにアクセスしようとした際、それがInstanceプロパティでない場合でも初期化がおこなわれるため、実行時のオーバーヘッドが問題になる場合は使うべきでないときもあります。&lt;/p&gt;
&lt;p&gt;が、最近はマシンの性能も上がっていますし、このオーバーヘッドはほぼ無視して良いでしょう。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ということで、Singletonについては、複雑になる二重チェックの方法ではなく、今回のstaticコンストラクタで初期化を行う手法を使っておけば、ほぼ間違いないと考えて良いのではないでしょうか。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;さて、Singletonについて３回にわたりお送りしてきました。次回からはCommandパターンを取り上げようと思います。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/152505.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる</dc:creator><title>新マシン届く</title><link>http://blogs.wankuma.com/masaru/archive/2008/08/04/151628.aspx</link><pubDate>Mon, 04 Aug 2008 10:40:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2008/08/04/151628.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/151628.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2008/08/04/151628.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/151628.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/151628.aspx</trackback:ping><description>&lt;p&gt;先日BTOで注文していた新マシンが届きました。
&lt;/p&gt;
&lt;p&gt;構成は以下の通り。
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;マザーボード ： GIGABYTE GA-X48-DS5&lt;/li&gt;
  &lt;li&gt;電源 : Evergreen Silent King α 550W&lt;/li&gt;
  &lt;li&gt;CPU ： Intel Core 2 Quad Q9450 2.66G&lt;/li&gt;
  &lt;li&gt;メモリ ： PATRIOT PSD24G800KH 4G (2G×2)&lt;/li&gt;
  &lt;li&gt;VGA ： GIGABYTE GeForce 9600 GT&lt;/li&gt;
  &lt;li&gt;OS : Microsoft Windows Vista Ultimate 64bit&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;早速スコアを計測すると、
&lt;/p&gt;
&lt;p&gt;&lt;img alt="Windows エクスペリエンス インデックス" src="http://masaru.wankuma.com/img/blogimg/exscore.jpg" border="0" /&gt;
&lt;/p&gt;
&lt;p&gt;うん、メモリ以外は最高スコアですね。非常にさくさく♪
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;ただ一点問題がありまして、スリープからうまく復帰できないのです。
&lt;/p&gt;
&lt;p&gt;流れはこんな感じ。
&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt; Vistaでスリープ&lt;/li&gt;
  &lt;li&gt;マシンの電源落ちる&lt;/li&gt;
  &lt;li&gt;マウスを動かす or キーボードを適当に押す&lt;/li&gt;
  &lt;li&gt;マシン電源ON&lt;/li&gt;
  &lt;li&gt;CPUファン、ハードディスク回る&lt;/li&gt;
  &lt;li&gt;ここで急に電源断&lt;/li&gt;
  &lt;li&gt;CPUファン、ハードディスク止まる&lt;/li&gt;
  &lt;li&gt;4～7繰り返し&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ググってみても、自作の経験が無いため、どうもよく分からんのです。
&lt;/p&gt;
&lt;p&gt;心当たりのある方、アドバイスいただけると助かりますm(_ _)m
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;[2008/08/05 追記]
&lt;/p&gt;
&lt;p&gt;マザーボードのBIOSを最新の「&lt;a href="http://www.gigabyte.co.jp/Support/Motherboard/BIOS_Model.aspx?ProductID=2671"&gt;F7&lt;/a&gt;」にし、VGAのドライバも最新の「&lt;a href="http://www.nvidia.co.jp/object/winxp64_175.16_whql_jp.html"&gt;Release 175&lt;/a&gt;」にすることで、スリープから正常に復帰するようになりました。
&lt;/p&gt;
&lt;p&gt;ただ、BIOSアップデート後は、ブロードバンドルータを再起動しないと、ネットワークにうまく繋がりませんでした。
&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/151628.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる</dc:creator><title>デザインパターンを学ぶ～その１9：Singletonパターン(2)～</title><link>http://blogs.wankuma.com/masaru/archive/2008/07/24/150168.aspx</link><pubDate>Thu, 24 Jul 2008 23:24:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2008/07/24/150168.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/150168.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2008/07/24/150168.aspx#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/150168.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/150168.aspx</trackback:ping><description>&lt;p&gt;さて、&lt;a href="http://blogs.wankuma.com/masaru/archive/2008/06/08/142217.aspx" target="_blank"&gt;前回&lt;/a&gt;は一番単純なSingletonの実装を紹介しました。そして、そのなかで、&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;以下のようにマルチスレッドで動かす場合、1つだけであるはずのインスタンスが、複数生成されてしまうことがあります。&lt;/p&gt; &lt;p&gt;～中略～&lt;/p&gt; &lt;p&gt;ごらんのように、インスタンスが２つ生成された結果、ログ出力パスが変わってしまいます。  &lt;p&gt;この問題を解消する方法はないのでしょうか？  &lt;p&gt;実はあります。&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;と書きました。 &lt;/p&gt; &lt;p&gt;まずは、なぜインスタンスが２つ作成されるかを考えてみましょう。そのために、前回のコードの、インスタンス取得部分のコードを再掲します。&lt;/p&gt; &lt;h5&gt;C#&lt;/h5&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9d968456-522a-43f0-9bf4-d71d5fb5ec8f" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;  /// &amp;lt;summary&amp;gt;
  /// プロパティ インスタンス
  /// &amp;lt;/summary&amp;gt;
  /// &amp;lt;remarks&amp;gt;自身の唯一のインスタンスを返す&amp;lt;/remarks&amp;gt;
  public static SingletonLogger Instance
  {
    get
    {
      if ( _uniqueLogger == null )
      {
        _uniqueLogger = new SingletonLogger();
      }
      return _uniqueLogger;
    }
  }

&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h5&gt;VB&lt;/h5&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:0b4c1266-e26a-47ed-a628-6b60824b36f4" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="vb"&gt;  ''' &amp;lt;summary&amp;gt;
  ''' プロパティ インスタンス
  ''' &amp;lt;/summary&amp;gt;
  ''' &amp;lt;value&amp;gt;&amp;lt;/value&amp;gt;
  ''' &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
  ''' &amp;lt;remarks&amp;gt;自身の唯一のインスタンスを返す&amp;lt;/remarks&amp;gt;
  Public Shared ReadOnly Property Instance() As SingletonLogger
    Get
      If _uniqueLogger Is Nothing Then
        _uniqueLogger = New SingletonLogger
      End If
      Return _uniqueLogger
    End Get
  End Property
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;このコードで何が問題かというと、C#、VBともに9行目でインスタンスがないことを確認した後、10行目で新しいインスタンスを作成するのですが、コンストラクタが重い場合、インスタンスが生成される前に他のスレッドによって9行目が再び実行され、このときはやはりインスタンスがないので、そのまま後に実行されたスレッドでも10行目が実行されてしまうのです。&lt;/p&gt;
&lt;p&gt;これを解決する方法には大きく２つあるのですが、今回は有名な「二重チェック」の方法を紹介します。さっそくコードを見てみましょう。&lt;/p&gt;
&lt;h5&gt;C#&lt;/h5&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:87efaa22-f270-4ae3-8700-ddb70c886002" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="c#"&gt;/// &amp;lt;summary&amp;gt;
/// ログ出力クラス
/// &amp;lt;/summary&amp;gt;
public class SingletonLogger
{
  /// &amp;lt;summary&amp;gt;
  /// ログ出力パス
  /// &amp;lt;/summary&amp;gt;
  private string _logPath;

  /// &amp;lt;summary&amp;gt;
  /// プロパティ ログ出力パス
  /// &amp;lt;/summary&amp;gt;
  public string LogPath
  {
    get
    {
      return _logPath;
    }
  }

  /// &amp;lt;summary&amp;gt;
  /// コンストラクタ
  /// &amp;lt;/summary&amp;gt;
  /// &amp;lt;remarks&amp;gt;new でインスタンス化できないよう、privateでコンストラクタを定義&amp;lt;/remarks&amp;gt;
  private SingletonLogger()
  {
    // 重い初期化処理
    for ( var i = 0; i &amp;lt; 100000000; i++ )
    {
    }

    _logPath = DateTime.Now.ToString("yyyyMMddhhmmssfff") + ".log";
  }

  /// &amp;lt;summary&amp;gt;
  /// 自身の唯一のインスタンス
  /// &amp;lt;/summary&amp;gt;
  private volatile static SingletonLogger _uniqueLogger;

  /// &amp;lt;summary&amp;gt;
  /// ロック用のオブジェクト
  /// &amp;lt;/summary&amp;gt;
  private static object lockObj = new object(); 

  /// &amp;lt;summary&amp;gt;
  /// プロパティ インスタンス
  /// &amp;lt;/summary&amp;gt;
  /// &amp;lt;remarks&amp;gt;自身の唯一のインスタンスを返す&amp;lt;/remarks&amp;gt;
  public static SingletonLogger Instance
  {
    get
    {
      if ( _uniqueLogger == null )
      {
        lock ( lockObj )
        {
          if ( _uniqueLogger == null )
          {
            _uniqueLogger = new SingletonLogger();
          }
        }
      }
      return _uniqueLogger;
    }
  }

  /// &amp;lt;summary&amp;gt;
  /// ログ出力
  /// &amp;lt;/summary&amp;gt;
  /// &amp;lt;param name="message"&amp;gt;&amp;lt;/param&amp;gt;
  public void WriteLog(string message)
  {
    // ログ出力処理
    // ・・・
  }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;h5&gt;VB&lt;/h5&gt;
&lt;div class="wlWriterSmartContent" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:59b2809b-2606-4fff-ba05-877de46b9ee4" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre name="code" class="vb"&gt;''' &amp;lt;summary&amp;gt;
''' ログ出力クラス
''' &amp;lt;/summary&amp;gt;
''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;
Public Class SingletonLogger


  ''' &amp;lt;summary&amp;gt;
  ''' ログ出力パス
  ''' &amp;lt;/summary&amp;gt;
  ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;
  Private _logPath As String

  ''' &amp;lt;summary&amp;gt;
  ''' プロパティ ログ出力パス
  ''' &amp;lt;/summary&amp;gt;
  ''' &amp;lt;value&amp;gt;&amp;lt;/value&amp;gt;
  ''' &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
  ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;
  Public ReadOnly Property LogPath() As String
    Get
      Return _logPath
    End Get
  End Property

  ''' &amp;lt;summary&amp;gt;
  ''' コンストラクタ
  ''' &amp;lt;/summary&amp;gt;
  ''' &amp;lt;remarks&amp;gt;new でインスタンス化できないよう、privateでコンストラクタを定義&amp;lt;/remarks&amp;gt;
  Private Sub New()
    ' 重い初期化処理
    For i As Integer = 0 To 100000000
    Next i

    _logPath = DateTime.Now.ToString("yyyyMMddhhmmssfff") &amp;amp; ".log"
  End Sub

  ''' &amp;lt;summary&amp;gt;
  ''' 自身の唯一のインスタンス
  ''' &amp;lt;/summary&amp;gt;
  ''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;
  Private Shared _uniqueLogger As SingletonLogger

  Private Shared _lockObj As New Object()

  ''' &amp;lt;summary&amp;gt;
  ''' プロパティ インスタンス
  ''' &amp;lt;/summary&amp;gt;
  ''' &amp;lt;value&amp;gt;&amp;lt;/value&amp;gt;
  ''' &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;
  ''' &amp;lt;remarks&amp;gt;自身の唯一のインスタンスを返す&amp;lt;/remarks&amp;gt;
  Public Shared ReadOnly Property Instance() As SingletonLogger
    Get
      If _uniqueLogger Is Nothing Then
        SyncLock (_lockObj)
          If _uniqueLogger Is Nothing Then
            _uniqueLogger = New SingletonLogger
          End If
        End SyncLock
      End If
      Return _uniqueLogger
    End Get
  End Property

End Class
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;実行結果は次の通り。&lt;/p&gt;
&lt;h4&gt;実行結果&lt;/h4&gt;&lt;pre class="code" style="margin-top: 0.5em"&gt;20080724111338001.log
20080724111338001.log
&lt;/pre&gt;
&lt;p&gt;この方法のポイントは以下の通り。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ロック用オブジェクトを用意する。（C#の44行目、VBの44行目） 
&lt;li&gt;Instanceプロパティにアクセスされた際、インスタンスの有無を確認後、C#はlockステートメント、VBはSyncLockステートメントを使い、1.で用意したオブジェクトをロックする。（C#の56行目、VBの55行目）&lt;br&gt;これにより、後に実行されたスレッドは先に実行されたスレッドにてロックが解除されるまで待つこととなる。 
&lt;li&gt;ロックした後、もう一度インスタンスの有無を確認した後、インスタンスがなければ生成する。（C#の58～60行目、VBの56行目から57行目）&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;なお、C#のコードの39行目にて、_uniqueLoggerフィールドを宣言する際、「volatile」というキーワードをつけています。これは、このキーワードを付けられたフィールドは、キャッシュメモリ内に領域を確保しなくなるため、RAMとキャッシュで値が食い違うという現象が発生しなくなります。&lt;/p&gt;
&lt;p&gt;が、CLRのメモリ管理ではこの問題を解決しているため、「volatile」は無くても問題ありません。（Monoなど他のプラットフォームでは必要です、たぶん。）&lt;/p&gt;
&lt;p&gt;＃この辺りのことは、「プログラミング .NET Framework 第2版」のp.693、「24.3.8 ロックのための有名な二重チェックテクニック」に詳しく書かれています。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ところで、上記書籍の該当箇所にこんなことも書いてあります。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;このテクニックが有名なのは、特に面白かったり便利だったりするからではありません。これが有名な理由は、これについて書かれた文献が多いからです。このテクニックはJavaで非常によく使われています。そして、Javaではこれがどこででも動作するわけではないことが後に明らかになりました。この問題を説明している有名な文書が次のWebページにあります。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html"&gt;http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;この問題って今はどうなってるんでしょうか？教えて！Javaのエロい人！&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;＃次回はもうひとつの方法について紹介します。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/150168.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる</dc:creator><title>【お詫びと訂正】デザインパターンを学ぶ～その１8：Singletonパターン(1)～</title><link>http://blogs.wankuma.com/masaru/archive/2008/07/17/149430.aspx</link><pubDate>Thu, 17 Jul 2008 22:47:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2008/07/17/149430.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/149430.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2008/07/17/149430.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/149430.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/149430.aspx</trackback:ping><description>&lt;p&gt;以前お送りした「&lt;a href="http://blogs.wankuma.com/masaru/archive/2008/06/08/142217.aspx" target="_blank"&gt;デザインパターンを学ぶ～その18：Sinbletonパターン(1)～&lt;/a&gt;」ですが、マルチスレッドで実行する際のVBのコードが間違っておりました。謹んでお詫び申し上げます。&lt;/p&gt; &lt;p style="font-size: xx-large; text-align: center; color: red;"&gt;m(_ _)m&lt;/p&gt; &lt;p&gt;正しいコードは以下の通りとなります。（元文書はすでに修正してあります。）&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;pre class="vb" name="code"&gt;Public Class Program

  Public Shared Sub Main()

    Dim loggerHelper1 As New LoggerHelper()
    Dim thread1 = New Thread(AddressOf loggerHelper1.SetLogger)

    Dim loggerHelper2 As New LoggerHelper()
    Dim thread2 = New Thread(AddressOf loggerHelper2.SetLogger)

    thread1.Start()
    thread2.Start()

    While (loggerHelper1.Logger Is Nothing OrElse loggerHelper2.Logger Is Nothing)
      Thread.Sleep(10)
    End While

    Console.WriteLine(loggerHelper1.Logger.LogPath)
    Console.WriteLine(loggerHelper2.Logger.LogPath)

    Console.ReadKey()

  End Sub

  Public Class LoggerHelper

    Public Logger As SingletonLogger

    Public Sub SetLogger()
      Me.Logger = SingletonLogger.Instance
    End Sub
  End Class

End Class
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;なお、近日中にSingletonパターン(2)をお送りしますので、今しばらくお待ちください。 &lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/149430.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる</dc:creator><title>お許し下さい。決して魂を売ったわけじゃないんです・・・</title><link>http://blogs.wankuma.com/masaru/archive/2008/07/11/148539.aspx</link><pubDate>Fri, 11 Jul 2008 15:06:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2008/07/11/148539.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/148539.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2008/07/11/148539.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/148539.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/148539.aspx</trackback:ping><description>&lt;p&gt;しばらくVBをやっててC#に戻ったら、セミコロンの打ち忘れが多発しました・・・&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/148539.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる</dc:creator><title>書籍：勝間和代のビジネス頭を創る７つのフレームワーク力 ビジネス思考法の基本と実践</title><link>http://blogs.wankuma.com/masaru/archive/2008/07/09/148227.aspx</link><pubDate>Wed, 09 Jul 2008 23:02:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2008/07/09/148227.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/148227.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2008/07/09/148227.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/148227.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/148227.aspx</trackback:ping><description>&lt;iframe style="width: 120px; height: 240px" marginwidth="0" marginheight="0" src="http://rcm-jp.amazon.co.jp/e/cm?t=masaru.b.cl-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=4887596391&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;p&gt;いわゆる「勝間本」の最新刊。&lt;/p&gt; &lt;p&gt;勝間さんがビジネスで必要な７つの「フレームワーク力」として、&lt;/p&gt; &lt;ul&gt; &lt;li&gt;論理思考力（Logical Thinking）  &lt;li&gt;水平思考力（Lateral Thinking）  &lt;li&gt;視覚化力（Visualization）  &lt;li&gt;数字力（Numerical Thinking）  &lt;li&gt;言語力（Language Capability）  &lt;li&gt;知的体力（Mind-Body Correlation）  &lt;li&gt;偶然力（Serendipity）&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;について、それぞれの基本テクニック３点と、実践方法４点を説明しています。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;それぞれの具体的な中身については書籍を見てもらうとして、私がこの本で特に参考になった点を紹介します。&lt;/p&gt; &lt;h3&gt;MECEに整理する方法として２×２のマトリクスを使う&lt;/h3&gt; &lt;p&gt;MECE（Mutually Exclusive Collectively Exhaustive）とは「漏れなく、ダブりなく」という意味で、物事を整理する際に気をつけるべきこととして、勝間さんは上げています。&lt;/p&gt; &lt;p&gt;そしてMECEに整理する方法として、「２×２のマトリクス」を使うと非常に効果的とのことでした。&lt;/p&gt; &lt;p&gt;例えば、タスクを整理する際、重要度、緊急度を軸とする２×２のマトリクスに配置し、タスクの優先度を決める、などに使います。&lt;/p&gt; &lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/66a893cf9859_F0DA/image.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="236" alt="image" src="http://masaru.wankuma.com/img/blogimg/66a893cf9859_F0DA/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;※こんな感じでタスクを分けて、緊急度高、重要度高のタスクから片付ける&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;水平思考力（Lateral Thinking）を養うこと&lt;/h3&gt; &lt;p&gt;「水平思考力」という言葉は、私もこの書籍ではじめて知ったのですが、ものすごく簡単に言うと、「いろいろな視点で考える」ということみたいです。&lt;/p&gt; &lt;p&gt;私自身、視野が狭いと感じることがよくありますので、気をつけなきゃならないと思っていたところです。&lt;/p&gt; &lt;p&gt;どうやら↓の「ウミガメのスープ」シリーズが、水平思考力を鍛えるのによいということなので、今度購入してやってみようと思います。&lt;/p&gt;&lt;iframe style="width: 120px; height: 240px" marginwidth="0" marginheight="0" src="http://rcm-jp.amazon.co.jp/e/cm?t=masaru.b.cl-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=4767803322&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;最後に&lt;/h3&gt; &lt;p&gt;ここに上げた以外にも、たくさんのテクニックや実践方法が詰まっている本なのですが、もちろん一度にすべてできるわけではありません。それぞれ少しずつ時間をかけてやっていき、数年から１０年単位でモノにしていき、ビジネスに役立てていければと思っています。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;そんなわけでこの本、オススメです。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/148227.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる</dc:creator><title>画伯かと思いました</title><link>http://blogs.wankuma.com/masaru/archive/2008/07/09/148083.aspx</link><pubDate>Wed, 09 Jul 2008 08:41:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2008/07/09/148083.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/148083.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2008/07/09/148083.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/148083.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/148083.aspx</trackback:ping><description>&lt;p&gt;
&lt;a href='http://www.neopoleon.com/home/blogs/neo/archive/2003/09/29/5458.aspx'&gt;Rory - Neopoleon : Excel as a database&lt;/a&gt;
&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/148083.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる</dc:creator><title>今だからこそ、４年前の中越地震体験記</title><link>http://blogs.wankuma.com/masaru/archive/2008/06/17/144063.aspx</link><pubDate>Tue, 17 Jun 2008 09:53:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2008/06/17/144063.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/144063.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2008/06/17/144063.aspx#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/144063.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/144063.aspx</trackback:ping><description>&lt;p&gt; トラックバック：&lt;a href="http://blogs.wankuma.com/rugon/archive/2008/06/17/144016.aspx"&gt;地震(やや長文)&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt; まず、岩手・宮城内陸部地震で被災された方々に、心よりお見舞い申し上げます。
&lt;/p&gt;
&lt;p&gt; こんなときだからこそ、地震の記憶を風化させてはいけないと思い、４年前の新潟県中越地震の後に、私が自身のWebサイトに書いた地震体験記を再録します。
&lt;/p&gt;
&lt;p&gt; 今読み返してみると、まとまってないところも多いし、なんとなく「若さ」がにじみ出ていてこっぱずかしいのですが、当時のライブ感は伝わるかと。
&lt;/p&gt;
&lt;p&gt; ----
&lt;/p&gt;
&lt;p&gt; 10/23の新潟県中越地震、段々と余震も治まり、復旧も進んでいます。本震が襲ったとき、私はたまたま実家に帰っている途中でした。誕生日が近かったため、家族が祝ってくれるはずでした。
&lt;/p&gt;
&lt;p&gt; 実家まであと１０分くらいのところで、いきなり車が左右に振られました。最初は風か何かの所為かと思いハンドルを切りかけましたが、ハンドルはまっすぐなのに左右にぐわんぐわん揺れるので、「こいつは地震だ！」と思いすぐ停車し様子を見ました。
&lt;/p&gt;
&lt;p&gt; 強さが半端なかったので、急いで家に帰らねばと思い車を走らせていたら、なぜか通行が滞っていました。何かと思い確認しに行くと、なんと道路の左半分が１０メートル位崩れ落ちていました。残った右半分も今にも落ちそうな感じでした。これでは家に帰ることが出来ません。
&lt;/p&gt;
&lt;p&gt; その場所は山を切り崩したり、土を盛ったりした道路だったため、沢を埋め立てたところが崩れていたようです。あと５分早く出発していたら、道路とともに崖下に落ちていたかもしれません。かなりゾッとしましたよ、ホント。
&lt;/p&gt;
&lt;p&gt; 「ここにいては危ない！」と思ったので、元来た道を引き返すことにしました。その途中、容赦なく強い余震（２度目の震度６強）が襲ってきました。山からは土砂崩れの音が森の木が折れる音とともに聞こえてきます。道路は波打ったり、ひび割れたりしています。（後で聞いたら、この余震で残った右半分もなくなったそうです。）今走っている道路がいつ崩れるのかと怯えながら、街中目指して走りました。マジで死ぬかもと思ったのは人生２回目でした。
&lt;/p&gt;
&lt;p&gt; 何とか街にたどり着き、とりあえず安全なところに行こうと思い、私が昔行っていた中学校に向かいました。学校ならば広くて崩れるものもないし、非難してくる人もいるだろうと思ったからです。・・・が、見事に予想は外れました。誰も来やしねえ。とりあえず、近くの診療所の駐車場に移動することにしました。
&lt;/p&gt;
&lt;p&gt; 車を止めてから、とにかく家に連絡しようと公衆電話を探しに出ました。（私はＰＨＳを使っているため、地元は田舎で使えないんです。）その途中人が集まっているのを見つけ、そちらに行くと偶然中学時代の同級生に会いました。公衆電話の場所を聞くと、近くにはないとのことだったので諦めました。
&lt;/p&gt;
&lt;p&gt; そうとなれば、一人でいるよりは大人数でいたほうがいいので、しばらく話をしたりしていました。そんな中で空を見上げると、いわゆる「地震雲」と呼ばれる気持ち悪い雲が見えました。同級生が知り合いから聞いた話だと、空との境界線が真っ直ぐになっていたり、波打つような雲が危ないということでした。・・・両方出てんじゃん（￣□￣；）！！！
&lt;/p&gt;
&lt;p&gt; そんなこんなで余震に耐えていると、役場の人が中学が避難所になっていると教えてくれたので、みんなでそちらに移動することにしました。いつまでも診療所の駐車場に車を置いておくわけにもいかないので車ごと移動です。
&lt;/p&gt;
&lt;p&gt; 中学校に行くと、すでに何台も車が集まっていましたが、車のライト以外明かりはありません。役場の人もいないようです。せめて火ぐらい焚いていてくれればいいのにと思いましたよ。そうすれば多少は暖が取れるし、何より火を見ているとホッとしますから。
&lt;/p&gt;
&lt;p&gt; しばらく待っていると役場の人が毛布を配りにやってきました。話を聞くと、まだまだ状況はまったくといっていいほど把握できていないとのこと。おとなしく車の中で朝を待つことにしました。
&lt;/p&gt;
&lt;p&gt; その日は運悪く、かなり冷え込んだ夜でした。毛布をかけて眠ろうとしても、寒さで目が覚めます。そのたびにエンジンをかけて暖房を入れ、また眠るという繰り返しです。余震も続いているため、よく眠れるわけがありません。
&lt;/p&gt;
&lt;p&gt; 仕方ないので空をまた見上げると、地震雲は無くなり、かわりにすばらしい星空が広がっていました。あれだけの星空は今まで数えるほどしか見たことがありません。
&lt;/p&gt;
&lt;p&gt; そんな風にして時間が過ぎていき、ようやく空が白んできました。もうしばらくすると日が出てきましたが、気持ち悪いほど鮮やかな朝焼けでした。やっぱり地震の所為だったんでしょうか？
&lt;/p&gt;
&lt;p&gt; ７時を過ぎたころ、役場の人が水とカップめんを配布しにやってきました。配られたカップめん（しかもカップヌードル）をすすりながら、思わず「あ～、被災者っぽい」とか思ってしまいましたよ。
&lt;/p&gt;
&lt;p&gt; しかし、避難所でカップヌードルをすすりながら「おめでとう」って言われる誕生日ってどうよ？絶対忘れられない誕生日になりましたわ(Ｔ-Ｔ )
&lt;/p&gt;
&lt;p&gt; ＊ ＊ ＊
&lt;/p&gt;
&lt;p&gt; 避難所にて配給されたカップめんを食べ終わり、家に帰るために役場の人に現在の状況を聞くことにしました。
&lt;/p&gt;
&lt;p&gt; 話を聞くと私の実家への道は通行止めになったらしく、山道しかないとか。その山道も今は通れるがいつ通れなくなるか分からないとのこと。
&lt;/p&gt;
&lt;p&gt; 話を聞き終わった後は、とにかく実家に帰ることにしました。ただ、ガソリンがあまりなかったので、無事なスタンドを求めてまずは隣の十日町市へ。十日町市へ行くには橋を通らなければならないのですが、３本あるうち無事なのは一番新しい１本だけになっていました。
&lt;/p&gt;
&lt;p&gt; ガソリンスタンドに着くと、もうすでに車の列が出来ており、いくらか待った後ようやく入れてもらうことが出来ました。ただ「おつりがなくなるかもしれない」ということで、満タンにはできず\2,000分だけ入れてもらいました。こんなところにも影響が。
&lt;/p&gt;
&lt;p&gt; その後コンビニに立ち寄ると、停電していたにもかかわらず営業していました。そこの話ではないですが、レジは使えないので電卓で応対していたところもあったそうです。恐るべし、○ブン・イ○ブン。
&lt;/p&gt;
&lt;p&gt; ひとまずそこでメールを確認すると、すでに２０件近く。みんなありがとう。あったかいなぁ。とりあえず一番連絡を取りたかった人に真っ先に無事を知らせるメールを送り、夜にはアパートに戻ると言いました。家族には昨晩同級生からケータイを借りて連絡を取って無事だと確認してあります。
&lt;/p&gt;
&lt;p&gt; そしていよいよ実家に向けて車を走らせました。昨日引き返した道を戻っていると、昨日はひびが入っていた程度の道路に滑落箇所が新たに出来ていました。改めてゾッとしましたよ。もし引き返している途中に道路がなくなったらと思うと。
&lt;/p&gt;
&lt;p&gt; その場所にはちょうど白バイの人がいたので道路状況を聞いたのですが、上越から今来たばっかりでまだまだ確認しているところで詳しいことは分からないとのこと。もうこうなったら駄目もとで山道に行ってみるしかなさそうです。
&lt;/p&gt;
&lt;p&gt; 滑落している道路を見ると、端っこの方に落ちずに残っている部分があり、車一台がなんとか通れそうです。その無事だった（といっても今にも落ちそうなんですが）なところを通って実家への山道に入りました。通ってる最中「落ちるなよ～、落ちるなよ～」と祈って。
&lt;/p&gt;
&lt;p&gt; 山道はさすがに何箇所かがけ崩れで道路が半分ふさがったりしていましたが、思ったより状況は良く何とか実家にたどり着けました。
&lt;/p&gt;
&lt;p&gt; 家に帰るとまあ酷いもので、植木鉢はごろごろ転がっているは、庭作業の道具を入れている棚は倒れているは、屋根瓦は落ちているはと、目も当てられない様子。
&lt;/p&gt;
&lt;p&gt; 中に入ると砂壁にヒビが入っていてボロボロ壁のカスが落ちていたり、テレビが台から落ちていたり、飾っていた提灯はことごとく下に落ちていたりと、片付けるにしてもどこから手を突けたらいいのやらって感じで。（提灯は旅行地で売ってるやつね）
&lt;/p&gt;
&lt;p&gt; とりあえず家族が居間に集まっていたので、そこに合流して状況を聞きました。電気は止まったけれども、水道は今のところとまっていないし、ガスはプロパンだから使えるそうです。でも、水は集落の貯水タンクが空になったら出なくなるかもしれないってことでした。
&lt;/p&gt;
&lt;p&gt; 当初はしばらく家で過ごしたらアパートに帰るつもりだったのですが、道路は殆ど寸断されてしまったし、アパートに帰るよりは実家にいたほうが食べ物に困らなそうだったので、何日か落ち着くまでは実家で過ごすことにしました。（というか家族に説得されました。）
&lt;/p&gt;
&lt;p&gt; 一通り話を聞いたらもうやることもなく、夜まではラジオを聴きながら本を読んだりして過ごしていました。夜になると電気がないのでろうそくの明かりのなか、ラジオの情報に耳を傾けることしか出来ませんでした。
&lt;/p&gt;
&lt;p&gt; さすがに疲れてもいたのでその日は早く眠りに着きました。といっても自分の部屋は寝れるような状態じゃないですし、大きな余震がいつ来るかも分からないので、居間で毛布に包まってですけど。それでも車の中よりはよっぽどましでしたよ。
&lt;/p&gt;
&lt;p&gt; ＊ ＊ ＊
&lt;/p&gt;
&lt;p&gt; 翌日目が覚めるも、夜中に何回も余震が来るのでどうも寝たりない感じでした。朝になってもまだ電気は復旧していない模様。とりあえずすることもなく、ラジオで地震情報を聞きながら漫画を読んだりして無為な時間を過ごしました。（ちなみに読んでたのは「エースをねらえ！」なんでやねん。）
&lt;/p&gt;
&lt;p&gt; そういえば今日は月曜だということを思い出し、３時過ぎくらいに電話をしに、車で５分くらいのところにある公衆電話に行きました。会社に連絡を取ると第一声が、
&lt;/p&gt;
&lt;p&gt; 『ああ、安否不明者の一人ですね（￣ー￣）』
&lt;/p&gt;
&lt;p&gt; なんて言われたりして(- -;仕方ないんだよぅ。電話が使えないんだからさぁ。後日聞くと、最後まで連絡取れなかったのが私らしいです。
&lt;/p&gt;
&lt;p&gt; その後家に帰って同じように時間をつぶしていましたが、夕方になるともう暗いので、後はラジオだけです。もちろん明かりとしてロウソクは点けていますが、本を読めるわけもなく。
&lt;/p&gt;
&lt;p&gt; そして夕食の時間になり、みんなで集まって食べているとき、ふと外を見ると街灯がついてるじゃあないですか！ようやく電気復旧です。
&lt;/p&gt;
&lt;p&gt; コンセントの確認をしてブレーカーをあげると、久しぶりの電気の明かりが。いやぁ、電気ってありがたいですね。もう電気なしの生活は無理だと思いましたよ。なんといっても安心するんですよね、明るいと。
&lt;/p&gt;
&lt;p&gt; 電気がつけばテレビも見れるってことで、早速つけると予想通り地震情報ばかり。改めて目の当たりにすると、自分たちがいかに恵まれた状況にいるのか。本当にありがたかったですね。
&lt;/p&gt;
&lt;p&gt; ・・・で、翌日からの生活ですが、救援物資が届くようになってきました。最初は１日に家族におにぎり１個とかだったのが、後のほうだと２０個（うちおかかがほとんど）になったり、菓子パンが山ほど届いたり。
&lt;/p&gt;
&lt;p&gt; 中でも印象的だったのがこちら。
&lt;/p&gt;
&lt;p&gt;
  &lt;img src="http://masaru.wankuma.com/img/blogimg/torimeshi.jpg" alt="とり飯缶詰" border="0" height="240" width="320" /&gt;
  &lt;img src="http://masaru.wankuma.com/img/blogimg/curry.jpg" alt="戦闘糧食Ⅱ型" border="0" height="240" width="320" /&gt;
&lt;/p&gt;
&lt;p&gt; この緑色、なんか見たことありません？そうです。自衛隊のやつです。カレーなんか「戦闘糧食Ⅱ型」とか書いてありますし。さらに「とり飯」の使用法には、
&lt;/p&gt;
&lt;p&gt;
  &lt;img src="http://masaru.wankuma.com/img/blogimg/torimeshi2.jpg" alt="とり飯使用法" border="0" height="240" width="320" /&gt;
&lt;/p&gt;
&lt;p&gt; 「沸騰湯中で約２５分間以上加熱すれば、通常３日間は喫食できるが、食前にあたためればさらによい。」
&lt;/p&gt;
&lt;p&gt; とか書いてあります。なんか「喫食」、「さらによい」辺りが自衛隊臭さ満開です。
&lt;/p&gt;
&lt;p&gt; 市販されてるこういうやつだったら、
&lt;/p&gt;
&lt;p&gt; 「食べる前に２５分間以上沸騰したお湯の中で温めてください。その後３日間は食べられますが、食べる前に温めるとさらにおいしく召し上がれます。」
&lt;/p&gt;
&lt;p&gt; みたいになりますよね。
&lt;/p&gt;
&lt;p&gt; そんなこんなで被災中の食事には余り事欠かなかったんですよね。電気が止まっているときも冷凍庫の中身始末しなきゃいけないから、ハンバーグとか食べてたし。むしろ普段より豪華？
&lt;/p&gt;
&lt;p&gt; おかげでちょっと体重ＵＰです。普段より食ってるし、何よりも動かないので。
&lt;/p&gt;
&lt;p&gt; そうして何日かたつと一部道路が復旧したという話を聞いたので、１回アパートに戻ってみることにしました。正規のルートではないので時間はかかりますが仕方ない。
&lt;/p&gt;
&lt;p&gt; 途中の道路は普段なら絶対通さないだろうというくらい歪んでいました。凄い段差があったし、割れた道路にちょっとアスファルト盛ったくらいなんです。
&lt;/p&gt;
&lt;p&gt; ところがトンネル一つ越えると別世界が。ぜんぜん道路にダメージを受けてないんです。そこまで違わなくていいじゃん。ってひとりでツッコんでました。
&lt;/p&gt;
&lt;p&gt; アパートに何とか着き部屋に入ると突っ張り棚とかみんな倒れてるし、皿割れてるし、洗濯機倒れてるし、酷いもんでした。人呼んで片付け手伝ってもらいましたけど、とてもじゃないけど１日じゃ終わらないです。ただ、建物自体のダメージは余り無いようで、それだけは良かったですけど。強いて言うならドアしまらなくなったくらいですかね。
&lt;/p&gt;
&lt;p&gt; あと、ライフラインはガス以外は大丈夫だったみたいで、ガスも確認したら１１月１日に復旧とのこと。
&lt;/p&gt;
&lt;p&gt; ひと段落したら３日ほど風呂に入ってなかったので、手伝ってもらった人の家にお風呂を借りてさっぱり。生き返ったぁ。
&lt;/p&gt;
&lt;p&gt; そのあと実家に帰って、１１月１日にアパートのガスが復旧するまで、毎日やることもなく過ごしたのでした・・・
&lt;/p&gt; &lt;img src ="http://blogs.wankuma.com/masaru/aggbug/144063.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>