« 2007年3月 | トップページ | 2007年5月 »

2007年4月29日 (日)

[本] The Coffin Dancer (Jeffery Deaver)


映画になった「ボーン・コレクター」でもおなじみのリンカーン・ライムシリーズ。



今回の的は、「コフィン・ダンサー」とよばれる殺し屋。
ベッドから一歩も動けないライムが事件現場に残された手がかりを元に
コフィン・ダンサーを一歩一歩追い詰めていく。
果してライムは殺し屋をつかまえることができるのか、
殺し屋から標的を守ることができるのか。



Deaverといえば、どんでん返しなので、
どこにしかけられているか気にしながら読んだ。
仕掛けられたところは、予想した通りだったのだが、
真相までは、わからなかった。



伏線があるため、XがXXXにみえて実は違うというのは予想できたが、
XXXがYであることまでは予想できなかった。
XXXがYであることがわかった時、ありえないと思ったが、
YだけでなくXもYYYとわかって納得。
YだけがYYYで、しかも納得できる説明があれば、もっと驚けたのだが、
さすがに、それは無理だったようだ。



あと、WじゃなくてVがZZZと思っていたのだが、
こっちも無理があって、UがZZZだった。



今回、英語の勉強も兼ねて、ペーパーバックに挑戦してみた。
ところどころ、一つ一つの文を正確に日本語に訳せなくても、
(Deaverの英語なら)ストーリーを追えることがわかったのが収穫だった。



ちなみに、日本語訳も出版されている。
文庫化もされており、こちらは、
巻にわかれている。


| | コメント (0) | トラックバック (0)

[本] 殺人作家同盟 (ピーター・ラヴゼイ)


久々のノン・シリーズ物。
(とは言っても、ダイヤモンド警視がちょっとだけ顔を出しているので、
ダイヤモンド警視シリーズのスピンオフ作品と言えるかも知れない。)



エドガー・ブラッカーが放火により殺される。
素人作家の集りに参加したボブ・ネイラーは事件を調べ始めるが、
第二、第三の事件が発生する。



さすがラヴゼイ。本格ミステリを堪能させてもらった。
さりげない伏線があちこちに散りばめられているし、最後のどんでん返しも鮮か。
ヘン・マリン主任警部がアガサ・クリスティを引用する場面など
ミステリファンへのサービスも忘れていない。



最近の翻訳ミステリで本格ミステリというと旧作が目立つのだが、
現代ミステリだって負けていないと思わせてくれる作品。
本格ミステリファンにはオススメの1冊。


| | コメント (0) | トラックバック (0)

2007年4月 2日 (月)

[Ruby] Win32OLE


昨日のマルチプラットフォーム版は、エイプリルフールネタです。


| | コメント (0) | トラックバック (0)

2007年4月 1日 (日)

[Ruby] Win32OLE マルチプラットフォーム対応版 0.00001(2007-04-01)

[ruby-list:43329]に急遽対応すべく、 マルチプラットフォーム対応版を作成しました。 まだ初期バージョンなのでやっと動くという程度です。 1.0がリリースできる頃には、まともに動作するものができるだろうという 期待を込めて、0.00001からスタートします。 一応 Ruby 1.8 の Win32OLE Version 0.6.9 互換にしています。以下のスクリプトをwin32ole.rbという名前で保存してお使いください。簡単な動作確認は、Vine Linux 4.1 の Rubyで実施しています。

注意:ちゃんと内部の動きもふくめ、意味の理解できる人だけ使うようにしてください。

#
# win32ole.rb
# for multi-platform version of Win32OLE
# VERSION 0.00001(2007-04-01)
#
begin
  require 'win32ole.so'
rescue LoadError
  class WIN32OLERuntimeError < RuntimeError
  end
  def unsupported
    raise(WIN32OLERuntimeError, "sorry, not supported in this environment.")
  end
  module UNSUPPORTED
    def initialize(*argv)
      unsupported
    end
    def method_missing
      unsupported
    end
  end
  class WIN32OLE
    include UNSUPPORTED
    VERSION="0.00001(2007-04-01)"
    CP_ACP = 0
    CP_OEMCP = 1
    CP_MACCP = 2
    CP_THREAD_ACP = 3
    CP_SYMBOL = 42
    CP_UTF7 = 65000
    CP_UTF8 = 65001
    ARGV = []
    module VARIANT
      VT_ARRAY = 8192
      VT_BOOL = 11
      VT_BSTR = 8
      VT_BYREF = 16384
      VT_CY = 6
      VT_DATE = 7
      VT_DISPATCH = 9
      VT_ERROR = 10
      VT_I1 = 16
      VT_I2 = 2
      VT_I4 = 3
      VT_INT = 22
      VT_PTR = 26
      VT_R4 = 4
      VT_R8 = 5
      VT_UI1 = 17
      VT_UI2 = 18
      VT_UI4 = 19
      VT_UINT = 23
      VT_UNKNOWN = 13
      VT_USERDEFINED = 29
      VT_VARIANT = 12
    end
  end
  class WIN32OLE_VARIABLE
    include UNSUPPORTED
  end
  class WIN32OLE_METHOD
    include UNSUPPORTED
  end
  class WIN32OLE_TYPE
    include UNSUPPORTED
  end
  class WIN32OLE_EVENT
    include UNSUPPORTED
  end
  class WIN32OLE_VARIABLE
    include UNSUPPORTED
  end
end

ToDo

  • インストーラをつける。

  • Ruby 1.9 相当のWin32OLEに対応する。

  • ドキュメントを書く。

  • WIN32OLE_TYPE.ole_classesなどのクラスメソッドもちゃんと対応する。

  • せめて、各メソッドの引数のチェックぐらいは、WindowsのWin32OLEと同じにする。

| | コメント (0) | トラックバック (0)

« 2007年3月 | トップページ | 2007年5月 »