馬鹿な男のお手本 読書感想「ジャンプ」

9月 16th, 2009 admin

ジャンプ (光文社文庫)
ジャンプ (光文社文庫)
posted with amazlet at 09.09.16
佐藤 正午
光文社
売り上げランキング: 141425

これも友人がmixiで推薦していた作品。馬鹿な男がまじめに馬鹿をするという他人事とは想えないお話。最後まで一気に読んでしまうスピード感もありかなり面白かったです。

あらすじ

ある夜、主人公はつき合って半年の彼女とバーで名前を聞いたことのないカクテルを飲んで泥酔してしまう。ぐでぐでになりながらもなんとか彼女のアパートにたどり着くも、毎朝必ず食べることにしているリンゴを会話すれたことに気がつく。やさしい彼女は5分で戻ってくるとリンゴを買いにいってくれるが、それきり失踪してしまった。
わずかな手がかりをたよりに主人公は彼女の行方を追う

感想

(ややねたばれあり)
最初は「賢い主人公やなー」と思いながら読みはじめるのだけど、だんだんと気がつく。「あれ?こいつなんか勘違いがおおいな」と。そう、この主人公はキザで格好を付けて男らしくしようとしている典型的な「馬鹿な男」。決して学校のお勉強ができないとかそういうことではなく、女心がわからないとか、空気が読めないタイプの馬鹿。最後の最後まで勝手に迷走して見事に自分でとどめを刺します。
特に、彼女のまわりの人間が彼に彼女の行方を黙っているところなど、思い返せば最高の場面だった。主人公は気がつかない。なぜ自分にだけ彼女は居場所を教えないのか、そして周りの人間もなぜ自分に情報をくれないのか。うすうす気がついてもよさそうなものなのに、最後の最後まで彼女の気持ちを”考える”ことばかりにやっきになり、自分自信を見つめない主人公。あーなんだか耳が痛いですね。

最後のオチは少し弱いかなと思いつつも、そこまで読ませるスピードがよかった。まるでドラマ「24」のような感じ。「次々と選択肢がなくなっていく。しかし!最後の望みがまだ一つだけある」の連続。

この小説が面白くないという人がいたら是非どこが面白くなかったか聞いてあげてほしい、なぜならその面白くなかったポイントこそが作者が表現したかった楽しむポイントなのだから

★★★★☆

若い夏 読書感想「MISSING」

9月 16th, 2009 admin

MISSING (双葉文庫)
MISSING (双葉文庫)
posted with amazlet at 09.09.16
本多 孝好
双葉社
売り上げランキング: 89844

どんな本を読んでいるのか全くわからない友人がmixiでお薦めしていた一冊。「このミステリーがすごい!2000年」で10位にランクインしています。

ちょっと奇妙だったり不思議だったりする短篇5作品。どうも僕は、本多孝好さんの文章を読んでいると村上春樹の文体に似ているのが気になってしまって集中できなかった。今回はお薦めエントリーではない。

村上春樹のあの書き方は彼の圧倒的な知識量と後光があってこそ、初めて僕等は身を任せて酔っ払う事ができる代物。素人がお経を唱えてもありがたみが全然無いのと同じ理由で、ひたすら回りくどい言い回しが鼻につく。

そして話がどれも強引だ。作者が表現したいものを露骨に表現しすぎている。だから登場人物がどれも個性的になりすぎるし、セリフも説明が多くなる。うまい作家ならもっと間接的に伝えてくる、空模様や登場人物の食事のメニューを通じて読者にメッセージを伝えてくる。そういう小説が僕は読みたい。

でも第16回小説推理新人賞受賞作なんかもあるので、単に僕の好みにあわなかっただけの話なのだろう。(あと、まじめな話新人賞とかは今後ののびしろも考慮して与えているのだとも思う)
人の文章を僕なんかの文章で悪く言うのもなんだけど、とにかく好みにあわなかった。そいうこともあるみたいです。

★☆☆☆☆

名古屋Ruby会議のロゴができました。

9月 15th, 2009 admin

nagoya

僕も実行委員として参加している「名古屋Ruby会議01」というイベントのロゴファイルをのりおさんという方に作って頂きました。

イベントは10月10日(バイナリの日)に開催です。すでにいろいろ準備はしていますが、こういったグッズができるとグッと実感が増してきます。
まだスピーカーの発表は一部しかしていませんが、参加者の募集は行っておりますので公式ページに是非きてください。参加は無料ですよ!

また詳しい情報などは随時、公式ページ及び、ここで発表させて頂きます。

信頼の1冊 読書感想「初めてのRuby」

9月 12th, 2009 admin

初めてのRuby
初めてのRuby
posted with amazlet at 09.09.12
Yugui
オライリージャパン
売り上げランキング: 53668

Rubyに対する自信向上のために読みました。プログラミング言語の入門書に限らず、どんな人が書いたかというのは読者の気持ちの問題として非常に大切だと思う僕には、Rubyのコミッタであり、仕事に厳しそうな雰囲気もあるYuguiさん著というのは読んでいて非常に安心感がありました。面白かった!

驚いたり、知らなかったりしたこと

第1章 ようこそ、Rubyのある生活へ
・ユーザの入力に応じてクラスの定義を切替えることができる(親クラス名に式を入れるとか)
・ファイルの冒頭の#!はshebangという名前
・-rdebugオプションをつけるとデバッグモードで実行される
・ri String などでリファレンスを参照できる(なぜか僕の環境にははいってない)

第2章 配列とハッシュ
配列
・存在しない添字を与えられるとnilを返す
・負の添字が使える。-1が最後の要素
・長さ付き添字というのがある。2個目の要素から3つ取りたいときに ary[1,3]とかける
・範囲オブジェクトも渡せる ary[1..2]
・長さ付き添字や範囲添字で複数の値の一括更新もできてしまう a[1..2] = "foo","bar"
・ソートを行うsortメソッドはブロックを渡してソート条件を変えられる
・ブロックを評価した結果が新となる要素だけを集められるメソッド select
ハッシュ
・存在しないキーを与えられた場合はnilを返す
・順序は保持しない
・Enumerable::Enumeratorクラスは、each以外の任意のイテレータについてEnumerableのメソッド群を提供するプロクシクラスらしい。強力そうだけど使いこなす自信が無い

第3章 数値
・数値計算の遅さは1.9でかなり改善されたらしい
・メモリの許す限りの大きい数字が扱える(手元のEeePCでみてみたら1万桁以上の数字も余裕でした)
・Floatオブジェクトには無限大(Infinity),負の無限大(-Infinity),非数(NaN)という特殊な値がある
・NaNは自分自身とも同値でない(なんかかっこいい!)
・-7 / 2 #=> -4で 7 % -2 #=> -1 らしい。なんかはまりそう
・比較演算子に宇宙演算子<=>というのがある、左辺が右辺より小さければ負の数を、同じなら0、大きければ正の数が返る

第4章 文字列
・Rubyistの日本語訳の一つはRuby愛好家
・式展開#{…}の中身は自動的にto_sをしてくれている
・バッククォート文字列は、中身をシェルコマンドとして実行し、コマンドが出力した内容を文字列として返す(便利やん!)
・文字リテラルはダブルクォート、シングルクォート以外に%記法というので表現できる。
・ヒアドキュメントは区切り語の前に-をつけることで、終了の区切り語をインデントしたりしてもよくなる
・鬼車をつかえば$1とかの変数を使わなくてすむ
・文字列に[]を付けることで配列と同じようなアクセスができる(添字に正規表現のパターンが便利そう)
・str = str + "world"は単にstr << "world"で表現できる
・sprintf("%03d",10)は単に"%03d" % 10とかける。すっきり!
・Ruby1.8の場合文字列オブジェクトはバイト列としてしか扱われないが、正規表現オブジェクトはマルチバイトに対応している
(だから日本語文字列を分解するときはscan(/./)とかをつかう)
・1.9から文字列はバイト列ではなくなる!

第5章 入出力
・プログラムの引数をそれぞれファイル名とみなして、それらを仮想的に一つのファイルとして表すオブジェクトARGFというのがある
・文字列をIOオブジェクトのように扱うStringIOというクラスがある
・1.9ではIOの時にエンコーディングの変換をやってくれたりすす

第6章 変数
・メソッド呼出の時に、呼出元の変数と、メソッドの仮引数が同じ名前の場合、メソッド内で変更されると元の変数も変更される
・nilもオブジェクト。(たしかにメソッドもあるからそうなんだけど、なんだか不思議)
・Rubyは変数名をアンダースコアで区切る
・多重代入の応用で変数a,bの交換はa,b = b,aでできる(多重代入は代入する前に計算が行われるため)
・多重代入は奥が深すぎて誰も把握していないのでないかという噂がある
・論理和、論理積はオペランドのいずれかを返す nil || 50 #=> 50
・初期化イディオム @a ||= default_value
・unlessはRubyistはみんな使いまくってると思っていたけど、そうでもないみたい
・ifは値を返す
・while修飾子もある
・カウントアップの時はuptoというのも使える
・breakに引数を渡せる。それがループの値になる
・rescue修飾子もある
・catchとthrowを使って入れ子になったループから一番外へとべる

第7章 メソッド
・仮引数に式をかける def today(time = Time.now) end
・Enumeratorはやっぱりよくわからない
・ブロックを受け取る仮引数に&をつけるとオブジェクトとして受け取れる
・ブロック付メソッドにブロックの代わりにProcオブジェクトを渡すことができる

第8章 オブジェクトとクラス
・定数もスコープがある
・特異クラスがよくわからない
・includeしたモジュールはクラスのancestorsメソッドで確認できる

第9章 本書を超えて
・railsのfind_by_カラム名 みたいなメソッドはmethod_missingという例外を使ってる
・set_trace_funcでRuby処理系にフックを仕掛けられる
・継続もあつかえる(継続がなんなのかはぼんやり)

コラム
・doと波括弧は、基本はdoを使い。メソッドの戻り値を使う場合、リソース管理の場合、メソッドチェーンを使う場合だけ波括弧を使用する

まとめ

・1.9が使いたくなってきた
・200Pぐらいの内容とはいえ、オライリー本を最初から最後まで読んだのは初めてかもしれない。
・Rubyistに少し近付いた気がした
・RHG読書会に参加していたことがかなり役に立った
・実はサイン本

dRuby入門の発表資料

9月 10th, 2009 admin

9/6のCSNagoyaで発表(LT)をやらせてもらいましたので発表資料を公開させて頂きます。
dRubyってのは分散オブジェクトシステムを簡単に構築することができる仕組みのことです。ネットワークの知識がほぼ不要なあたりなど、ぜひdRubyの威力をサンプルを触ったりして試してもらいたいと思います。

dRuby
View more documents from toyoshi.

いかに簡単かというサンプル

オブジェクトを共有する最小のサンプルをここに紹介します。今回は配列オブジェクトをdRubyを使って共有してみます。
server.rb

RUBY:
  1. require 'drb/drb'
  2.  
  3. foo = ["apple","orange","lemon"]
  4. DRb.start_service('druby://localhost:12345',foo)
  5. puts DRb.uri
  6.  
  7. sleep

このスクリプトを起動すると、配列オブジェクトfooを共有したdRubyサーバが立ち上がります。
そこにirbで接続してみます
$ irb -r drb/drb

RUBY:
  1. >irb -r drb/drb
  2. > r = DRbObject.new_with_uri("druby://サーバのアドレス:12345")
  3. > p r[0,3]
  4. ["apple", "orange", "lemon"]
  5. => nil

オブジェクトが取得できていますね。では本当に共有できているか確認してみましょう。
いまのirbにつづけて

RUBY:
  1. > r.push "melon"
  2. => ["apple", "orange", "lemon", "melon"]

と入力します。そしてもう一つクライアントを立ち上げて

RUBY:
  1. >irb -r drb/drb
  2. > r = DRbObject.new_with_uri("druby://localhost:12345")
  3. > p r[0,4]
  4. ["apple", "orange", "lemon", "melon"]
  5. => nil

melonが追加されているので、オブジェクトが共有できていることが確認できました。

まとめ

・dRubyはとても簡単に分散オブジェクトを体験できる
・Rindaというシステムがあってそれがとても面白い(こっちをもっと紹介したかった)

関連サイト

dRuby I like Ruby
dRubyの作者である関さんのサイト。Ruby会議などで何度か発表を聞かせてもらっていますが、ゆるい雰囲気をもった素敵な方です。dRubyよりもERBのほうが有名ですね。ここに書籍の内容がですぎているのが書籍が売れない理由な気も・・・

dRubyによる分散・Webプログラミング
関さんが著者のdRubyの入門書 通常「幸福の王子本」 読みやすくわかりやすいです。