2008/06/30

Googleを支える技術

Googleを支える技術 ~巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

タイトルの通りGoogleが如何にして大規模なシステムを運用構築しているのかを論文から探る本で、専門的な知識を特別持たない人間でも概要を理解できる要、かなり分かりやすく解説している。

紹介されている主要技術は、GFSやBigTable、MapReduceと言った、Google関連技術で耳にした事のあるものが中心。これらの技術はGoogleは大規模システムを構築するために大量のコンピューターをネットワークで接続して一台のコンピューターの様に扱っている所に起源があり、大きなデータを扱ったり、コンピューターリソースを片より無く効率的に使う為と、その仕組みを抽象化して使いやすくする技術が中心となっている。

ここで紹介されているのものには、本当に大規模である意味割り切ったシンプルな仕様の物が多く、使いやすくする為に抽象化を重ねて汎用性を高めてはいる物の、Googleを構成する全てのシステムをこのアーキテクチャーでまかなう事が必ずしもベストという訳でもなく、実際MySQLも使っている様なので、適材適所という感じで使い分けているのだろう。

それにしてもここまで大規模な物がきちんと動いているというのは、ただただ本当にすごいと思った。相当キチンと設計してシンプルに保たないとある日破綻しそうで、読んでいるだけで保守的な感情がわき上がってきます。

2008/06/26

Twitterのfollowersとfollowingを揃えるスクリプト

タイトルの通りですが、followersとfollowingを揃えるスクリプトです。

followersとfollowingを取得して、followingに存在するけどfollowersに存在しないユーザーを取得して、削除するかどうかを決めます。削除しないユーザーは削除しますか?と問われた時にNoと答えると、Safe listに追加されて、以後削除対象からはずれます。

元々はcronで定期的に起動して、タイムラインに見える人は全員話しかけてOK状態を自動的にキープする事が目的だったのですが(だから引数にYを付けて起動すると自動的に削除してくれたりする)、Twitter APIのエラーが多すぎるためなるべくエラーが発生しても処理を続けられる様にリトライしたり、ブロッキングするような変更が加わっています。なので、タイマーを使った定期実行は辞めた方がいいです。ずっとリトライしたりブロッキングされてプロセスが増え続けると困りますよね。

というように、色々と完成度は低いので使う場合は(このスクリプトに限りませんが)自己責任で使ってください。あと、friendを削除する処理があるので、スクリプトの趣旨を良く理解して気をつけて使ってください。誤動作しても一切責任持てませんし、穿ちすぎな話ですが、時としてTwitter APIが正しいデータを返さないかもしれませんから。

あと、これを使ってもfollowingとfollowersの数字は必ずしも一致しません。というか、一致した事がありません。なんでかはわかりません。

あと、API制限の関係でfollowerとかが多いと制限に引っかかって処理しきれません。一時間当たり20回制限とかかかってる時は私程度の friend 数でも無理だったりする事があります。

idとパスワードは直接スクリプトに書いてますので、変更してください。マルチユーザー環境の人はパーミッションは0700とか0600(としてrubyの引数に指定して使う)にしましょう。以上です。

あー、あとruby-jsonに依存してます。

#!/usr/bin/env ruby -Ku
require 'rubygems'
require 'json'
require 'open-uri'

Dir.chdir(File.dirname(File.expand_path(__FILE__)))

module Twitter
ID = 'your id'
PASSWORD = 'your password'
SHOW = 'http://twitter.com/users/show/%s.json'
FRIENDS = 'http://twitter.com/statuses/friends.json'
FOLLOWERS = 'http://twitter.com/statuses/followers.json'
DESTROY = 'http://twitter.com/friendships/destroy/%s.json'
end

module Twitter
class Manip
attr_reader :followers, :friends
def initialize(id, password)
@auth_info = [id, password]
@followers = []
@friends = []
end

def get_show(id)
get(Twitter::SHOW % id) do |f|
JSON.parse(f.read)
end
end

def get_friends(page=1, lite=false)
user_data(Twitter::FRIENDS, page, lite) do |friend|
@friends << friend['screen_name']
end
end

def get_followers(page=1, lite=false)
user_data(Twitter::FOLLOWERS, page, lite) do |follower|
@followers << follower['screen_name']
end
end

def friend_destroy(friend_id)
entry = Twitter::DESTROY % friend_id
get(entry) do |f|
JSON.parse(f.read)
end
end

def raise_bar(total, count)
begin
sleep 1
yield
#tc.get_followers(count, true)
print '.'
rescue StandardError => e
puts e.message()
puts 'リトライしますか?'
if gets.upcase.chomp == 'Y'
puts '.' * total
print '.' * count
retry
else
puts '断念!'
exit(1);
end
end
end

private
def user_data(entry, page=1, lite=false)
param = [entry, page]
param << lite.to_s if lite
tmpl = lite ? '%s?page=%d&lite=%s' : '%s?page=%d'
entry = tmpl % param
get(entry) do |f|
JSON.parse(f.read).each do |user|
yield(user)
end
end
end

def get(entry)
begin
open(entry, {:http_basic_authentication => @auth_info}) do |f|
yield(f) if f.status == ['200', 'OK']
end
rescue Timeout::Error => e
puts 'タイムアウト: 10秒間隔を置いてリトライします。'
sleep 10
retry
end
end

end

class SafeList
attr_reader :list
def initialize(path="safe_list.txt")
@path = path
@list = []
end

def load
begin
File.open(@path) do |f|
f.each_line do |line|
@list << line.chomp
end
end
rescue Errno::ENOENT
end
end

def save
File.open(@path, 'w') do |f|
@list.uniq!
@list.each do |line|
f.write line + "\n"
end
end
end

def add(str)
@list << str
@list.uniq!
end

def del(str)
@list.delete(str)
end
end
end

if $0 == __FILE__
begin
tc = Twitter::Manip.new(Twitter::ID, Twitter::PASSWORD)
user = tc.get_show(Twitter::ID)
followers_count = user['followers_count'] / 100 + 1
puts '取得中: followers'
puts '.' * followers_count
STDOUT.sync = true
1.upto(followers_count) do |count|
tc.raise_bar(followers_count, count) do
tc.get_followers(count, true)
end
end
STDOUT.sync = false
friends_count = user['friends_count'] / 100 + 1
puts
puts '取得中: friends'
puts '.' * friends_count
STDOUT.sync = true
1.upto(friends_count) do |count|
tc.raise_bar(friends_count, count) do
tc.get_friends(count, true)
end
end
STDOUT.sync = false
puts

p tc.followers - tc.friends #片想われ
destroy = tc.friends - tc.followers #片想い

sl = Twitter::SafeList.new
sl.load
sl.list.each do |safe_id|
destroy.delete(safe_id)
end
puts "削除対象: %d" % destroy.size
unless destroy.size.zero?
p destroy
destroy.each do |id|
begin
puts "#{id} を削除しますか? [Yn]"
ins = ARGV.first.nil? ? gets.upcase.chomp : ARGV.first.upcase
if ins == "Y"
puts "#{id} を削除します。"
result = tc.friend_destroy(id)
puts result['screen_name'] == id ? "destroy [%s]: Success" % id : "destroy [%s]: Fail" % id
elsif ins == "N"
sl.add(id)
puts "#{id} をセーフリストに加えました。"
else
#pass
end
rescue StandardError
puts 'エラー: リトライ中'
sleep(10)
retry
end
end
sl.save
end
puts '完了。'
rescue OpenURI::HTTPError => e
if e.message =~ /400 Bad Request/
puts 'API制限に引っかかりました。'
end
puts e.message()
e.backtrace.each do |trace|
puts "* #{trace}"
end
end
end

2008/06/23

牛丼一杯の儲けは9円

牛丼一杯の儲けは9円―「利益」と「仕入れ」の仁義なき経済学 (幻冬舎新書 さ 5-1)

売り上げから経費を引いた利益が単価レベルでは如何に小さいかという現実を前に、売り上げをやみくもに伸ばしても利益率が改善しない中、最も確実に利益を伸ばせる要素が如何に仕入れ値を安くするかであり、この仕入れの時点で最終利益の多くが決まるといった話を中心に、余りスポットライトの当たる事の無い仕入れという仕事の周辺事情を紹介する本です。

本書のテーマである、利益を確保するには売り上げアップより、利益率向上という話は非常に納得できるもので、仕入れ自体は殆どの流通小売り業に関係する普遍的な仕事であるのにも関わらず、担当人員の少なさ等もあり、あまり表に出る事の無い部分で興味深く思ったのだけど、一般に知られていない話や意外性というのは殆ど無い様に感じました。

突き詰めると仕入れの全ては個別事情であって、そこを具体的につまびらかにした事例であったとしても一事案にすぎません。そういった状況なので、枠組み的な話や慣例的な商習慣の話、伝聞事例や充分価格交渉したけどネットで調べたら市場流通価格より高くて失敗したといった体験談からは特に発見や意外性を感じないのも無理はありません。

仕入れという仕事自体も、必ず安く仕入れる方法等という物はあるわけ無いし、属人的で恣意性の高いその場のかけひきと持ちつ持たれつのおつきあいの世界なのだと思います。やはり、表に出ない物は表には出しようがないとか、出ていてもとらえどころが無いのだという印象でした。

2008/06/18

WEBページを白背景黒文字にするブックマークレット

以前、2chのレスをMS Pゴシックで表示するブックマークレットという日記で、コントラストの問題で文字が読みにくいページを読みやすくするブックマークレットを書いたのだけど、文字を大きくする以前にコントラストをはっきりさせた方が話が速いし、完全性が高いという事で、全ての要素の背景を白く、文字を黒くするブックマークレットを作りました。

{{"[白黒]"}} ← ブックマークツールバーにドラッグ。

さらに文字を大きくするブックマークレットと組み合わせて使う事でより読みやすくなります。

{{"[拡大]"}} ← ブックマークツールバーにドラッグ。

ソースはこんな感じ。

白黒
javascript:(function(){var t=document.getElementsByTagName('*');var tl=t.length;var a=document.getElementsByTagName('a');var al=a.length;for(var i=0; i
拡大
javascript:(function(){var p=document.getElementsByTagName('*');var l=p.length;for(var i=0;i

2008/06/17

鴨川ホルモー

鴨川ホルモー

謎の競技ホルモーを介して繰り広げられる人間関係を描く青春もの?一目惚れ、仲間割れ、団結、お約束ありで、てんやわんやで盛り上がりつつ奇麗に終わる。色々独りよがりな話でどうやって収束するんだろうって話なんだけど、終わりよければ全て良しみたいな話で、無茶苦茶な気もするんだけど、とにかくおもしろく読めますし、終わり方もなんだかこれでBESTって説得力が妙にあります。他にも話の本筋以外でも細かく笑いどころがあったりして楽しめます。

しかし、ホルモーって何かとか、ホルモーじゃなくても全然代替可能なんじゃないかとか、大学対抗にする必要あったのかとか、10人居るのに半分ぐらいしか存在してない様な感じで、読後にはかなり荒い話という印象が強く残ります。

あと、表紙がアビーロードパロで4人なのは分かるんですけど、ブルース5人の内の誰が居ないのか気になりますね。っていうか主人公が1番目か3番目かすらわからない。

2008/06/16

zsh-develをインストールした

zshで日本語入力が出来ないのでなんでかなと思ってたんだけど、macportにある普通のzshでは日本語表示できなくて、zsh-develを使わないといけないらしい。なんか、ここらへん昔も知った様な気がするんだけど、再発見。

OS再インストールしてから今までずっとこれで使い続けてたんだな。直接日本語を入力する事も無いし、(subversionのコメントとかもvim経由だしね)特に困る事もなかったので不思議ではないのだけど知ってしまったら気持ちが悪いのでzsh-develをインストールする事に。

mac port経由なので普通にインストールするだけ。ひたすらビルドとインストールが終わるのを待つ。

sudo port install zsh-devel

activate に失敗したけど、手動でzshをディアクティベートして、zsh-develをアクティベートしたら問題無し。

sudo port deactivate zsh
sudo port activate zsh-devel

日本語は入力できる様になったけど、ファイル名が日本語の物とかはやっぱり#####で表示されるなぁ。これきちんと表示させられないのだろうか。

2008/06/15

受託開発の極意

受託開発の極意 ~変化はあなたから始まる。現場から学ぶ実践手法 [WEB+DB PRESS plusシリーズ] (WEB+DB PRESSプラスシリーズ)

内容的に極意と言われて想像するものとは違う様な気がするんだけど、普遍的で問題になりがちな所を広範囲に押さえているという意味で、極意ってこういう地味な物なのかもしれないとは思いました。それだけにもう少し突っ込んだ改善事例なんかを期待してしまうのですが。ともかく銀の弾丸は無いというのは現実です。

とはいえ、何よりも前向きで負担感が無く、意欲と希望が感じられる内容です。

全体的に広く浅く受託開発に関するトピックに触れるという感じで、印象としては淡白ですが、実務レベルで業務をまとめた本というのは余りありませんし、ソフトウェア開発というジャンルの類書と比べても読みやすさは一線を画ししており、存在感があると思いました。

2008/06/14

Firefox3にGreasemonkeyが対応

超便利拡張Greasemonkeyは今までFx3には対応してなかったんだけど、最近対応したみたいでインストールしました。

Fx2から3に移行して一番不便だなぁと思っていたのが拡張のアップデートが追いついていない部分で、これが徐々に整備されているというのは嬉しい事です。2008年の6月17日にFx3は正式リリースされる様なので今後どんどん出揃いそうですね。

24時間最多ダウンロードソフトの世界記録をめざすキャンペーンを行っている様です。興味のある人は参加してみてはいかがでしょうか。

Spread Firefox | Download Day 2008

2008/06/11

サーバ移転

サービスは今までと同じくXREAだけど、サーバマシンを変更しました。

前のサーバマシンがのスペックが同一サービスの中で他と比べて何故か飛び抜けて低かった事と、ログが保存されないケースが頻繁にある事と、未だにApache module版のphpが4という事で重い腰を上げました。

ずっと前から移転は考えていながら、どうにも面倒な上に決定的に困る事も無くて、要はだらだらと使い続けてたんだけど、今日思い立って作業を始めると終わるのは早いですね。DNSとかも私が利用しているネームサーバはすぐ切り替わったので特に問題はなさそう。

しかし、XREAはUIやアーキテクチャーから、すごくつぎはぎな印象があるんだけど、実際は良く出来てる。面倒な事をしなくて良い様に一括コピーできる機能がDNS周りとか、ドメインウェブ設定等、面倒な部分にきちんと所に用意されてて、助かりました。

2008/06/10

ウェブ国産力

ウェブ国産力―日の丸ITが世界を制す (アスキー新書 047)

国内で技術を競争力とした有望企業と国の取り組みをまとめて紹介する本なんだけど、各社の各サービスが有望かどうか、競争力があるかどうかは余り伝わってきません。

技術力があるかどうかはともかくとして、取り組み内容として諸外国に劣っている様な印象は無く、その点では競争力があると言っても良いのかなと思いました。

しかし、ビジネスとして売り上げを立てて行けるのか、普及して行くのかという事を考えると、是非使ってみたいとか、待ってましたとか、面白そうといったポジティブな印象より、面倒くさいとか、メリットが分からないとか、行動履歴の積み重ねとその利用に得体の知れない気持ち悪さを感じ、市場に受け入れられるという確信よりも不安の方が圧倒的に大きい気がします。

本書のテーマとははずれて、技術力というのは必須だろうけど、それ以外の要因が大きい事がより明確になったと思う。強力な技術力を持ちながら、もっと上のレイヤーで勝負しないとダメなのかなぁと。

この辺りの所感については、極論実績次第なわけで、実績が無いこれからの取り組みに対してはいくらでも否定できるので、気にする事は無いと思います。普及するにしろしないにしろ、こういった企業群が歴史を作って行くのでしょうし。国内企業には頑張って欲しいという気持ちももちろんありますけど。

ウェブ国産力として取り上げられている企業やサービス構想に関してはこのような印象が主ですが、本自体は著者のその他の著作でも顕著なのですが、まとめ的読み物として価値があると思います。あまりウェブは関係ないのでタイトルはどうかと思いますが。

2008/06/08

独自ドメインをSPFに対応させた

独自ドメインのメール送信を SPF に対応させる方法 - WebOS Goodiesに書いてある通りに設定しただけですが。

自分のメールアドレスをエンベロープ送信者に使ってspamを送信されるのはどうしようもないですが、騙りですよというのを判断してもらえますし、リターンパスに指定された為に変なバウンスメールを受け取る機会も(たぶん)減って、精神的なモヤモヤが解消される様な気がします。

はてブのエントリーページを表示するブックマークレット

ブックマーク登録ページに移動するのではなくて、コメントとか情報が集約されているページに移動するブックマークレットです。これ、はてな側でオフィシャルに用意してると思い込んでたんだけど、無いみたいですね。探し方が甘いのかもしれませんが。

コメントを見る

ブックマークツールバーにドラッグ!

2008/06/06

webサーバにアクセスできない時

随分昔の話になりますが、PS2が発売された頃SCEのサイトで予約かなにかが出来たらしいですが、人気がありすぎてサーバがダウンしてアクセスできず予約困難みたいな事がニュースになっていた頃、httpsでアクセスすれば易々とアクセスできるし予約できるよという話がありました。

これって今でも結構使えるテクニック(?)なので、覚えとくと良い事があるかもしれません。

そんなんじゃクチコミしないよ。

そんなんじゃクチコミしないよ。 ネットだけでブームは作れない!新ネットマーケティング読本

クチコミマーケティングの盛り上がりに対する現実や、広告主の浅はかさ、広告代理店の不誠実さや、ブロガーの意識の低さ等をきっぱり切って捨てています。

この本のタイトルだと「そんなんじゃクチコミしないよ、こうしないと」と言った内容を想像してしまいますが、そういう話ではなく、クチコミを発生させるにはそもそも今のペーパーポスト(お金を払ってブロガーに記事をポストしてもらう)では効果無いという事。そしてこれらの活動に対する不誠実さに対してそれは違うんじゃないかという意見表明です。

このあたりは本人もぶっちゃけてますと認めるぐらいにキッパリしていて、主張は分かりやすい。読んでいて余り不誠実な事がまかり通るとブログ自体の価値をそもそも毀損してしまうんじゃないかという危惧が感じられます。基本的には、そんなの通用しないからきっと淘汰されるはずというスタンスの様ですが。

とりあえず、覚えておくと良いと思った基本原則は、クチコミの一時情報はTVやラジオや雑誌に新聞と言ったネット以外のメディアが強力でPR等でそちらにアピールした方がクチコミとしても効果的な事と、ネットやブログはそこまで市民権を得ていないし、小遣い稼ぎで記事をポストする人が多い現状があるにもかかわらず(これ自体はそこまで批判はしていないけど、数百円のために書かれた記事といった文脈から嫌悪感は感じられます)、ペイパーポストなのかどうかといった表示がされておらず信頼が置けないケースがあまりにも多く信頼という点で問題がある事と、仕組み自体が余り理解されていないため読み手側がそのあたりを差し引いて受け止められない為問題があると言った懸念を上げている。

それらの主張には説得力があったし、ペイパーポストなどの仕組みもあまり効果的には感じませんでした。クチコミ自体は強力ですし、ネット上でのクチコミマーケティングもまだ始まって間もなく試行錯誤の段階というのもありますが、どうも今の流れは生産者と消費者の利害が一致せず、エコシステムにはなりそうもないなと思いました。

タイトルから想像する様な、より良いクチコミマーケティングのハウトゥー本ではありませんが、クチコミマーケティングの今を知る本として価値は高いと思います。

2008/06/05

小飼弾のアルファギークに逢ってきた

小飼弾のアルファギークに逢ってきた [WEB+DB PRESS plus] (WEB+DB PRESSプラスシリーズ)

WEB+DB Pressのコラム枠で連載していた対談をまとめて本にしたもの。

雑誌では1回3ページの連載物なんだけど、本にしてみるとなかなか濃くて、しっかりとしたコンテキストの中でなるほどと感じさせる様な基本的な考え方やポリシー、その製品を作った時の考え方等、端的にまとまっていて説得力があり、弾さんから発せられる質問も読者の疑問と近く的を得ていて興味深く読む事が出来る。

場合に依っては対談相手が多い時があってその薄さというのは致し方のないところがあるのだけれど、そこは面子の豪華さでフォローできるかな?

(登場するアルファギーク/敬称略)

  • David Heinemeier Hansson

  • 伊藤直也

  • Larry Wall

  • 池邉智洋/谷口公一/ma.la

  • Evan Williams

  • ひがやすを

  • Dave Thomas

  • 奥 一穂

  • John Resig

  • 高林哲

  • Ingy dt Net/Dave Rolsky/Jesse Vincent/C.L. Kao

  • 天野 仁史/Hamachiya2

  • 近藤淳也・令子 × 小飼弾・直美

  • きたみりゅうじ × 小飼弾



WEBでも大体読めます。本書に収録されていない新しい記事まで。

連載:小飼弾のアルファギークに逢いたい♥|gihyo.jp … 技術評論社

2008/06/04

おもてなしの経営学 アップルがソニーを超えた理由

おもてなしの経営学 アップルがソニーを超えた理由 (アスキー新書 55)

3章構成になっていて、第1章はブログエントリーを元にした書き下ろし、第2章は月刊アスキーに掲載されたコラムの再録、第3章も月刊アスキーに掲載された対談の再録で、月刊アスキーの記事を新書化した様な(というかそのままなのだけど)内容でテーマ性が低く、ちょっとした読み物といった感じでした。

また、ページの大半を対談が占めている事もページ数の割に内容が薄くて満足感が低くなった原因だと思います。対談内容も話が途切れがちで、噛み合っていない部分が多く感じられたし、思い出話もアスキーマイクロソフトの話は興味深かったけれど対談という形式を取っている為まとまりが悪く読んでいる方は要領を得難い。

梅田さんとの対談は、スーツとギークというテーマでありながら早々にスーツ&ギークじゃないとダメという結論が出て、Googleの弱い所やマイクロソフトのイノベーションのジレンマの事例をサンプルにした大企業の弱みに軸が移ってテーマを深めながら対談が進んでいて面白かった。

全体的に面白かったんだけど、どういう本でどういう所が見所というのは打ち出し難くて、時間軸的にもテーマ的にも広い範囲に渡っているので、何の本というより取り合えず溜まった記事を1冊にしたという印象が強かった。

2008/06/03

TOKYO0円ハウス0円生活

TOKYO0円ハウス0円生活

ホームレスのホーム探訪という内容で、0円で作られた、必要最小限の生活を支える工夫が随所に見られる、住む為の家を紹介した本で、普段知る事の無い路上生活者の知恵がぎっしりと詰まったとても濃い本。

隅田川の岸に立つブルーシートハウスに住むスズキさんの家についてが本書の大半を占めるが、家の事に留まらず生活に関してまで綿密に取材されており、ちょっとしたルポとして読む事が出来る。

その後に紹介される多摩川沿いにある数々の0円ハウスも、必要最低限の生活をする為の工夫が凝らされていて、規模は小さくならざるを得ない物の無駄が削ぎ落とされ本質的な暮らしが凝縮されている。それはもうシンプルで無駄が無く、生きている実感の様な物が色濃く漂う、世が世なら幸せそうにすら見えるほどである。

無論、本書に扱われている人達はその世界では成功者の部類なのだろうし、そのような生活で良かったとは思わないが、0円ハウスとい着眼からすれば非常に立派な住宅ばかりで興味は尽きない。

2008/06/02

哲学堂 野球場



以前、夕凪の街桜の国の原作で出てくる野方配水塔というのを見てきたのだけど、すぐ南にある哲学堂公園の野球場が、アニメ映画の時をかける少女で、真琴と千昭と功介が野球をしている場所のモデルだそうです。

中井(踏切のある商店街のモデルになった駅)の近所と言えば近所なのでアレですが、急な坂とかは雑司ヶ谷のあたりだし(あの辺は音羽の方面に谷があって勾配が酷い坂が多い)、学校のモデルは杉並にある東京女子大学らしいので、あんまり場所は関係ないみたいだけど。まぁ、野球場なんて何処も似た様な物だし。

ちなみに今回の写真からも配水塔の上の当たりが写ってますね。フェンス越しで激しく見難いですけど。

たまたま近所なので撮影してみただけで、特に舞台巡りとか行くつもりとかはないのですが、このページとか面白いです。楽しそうですね。

ZERO

ZERO―The flower blooms on the ring………alone. (上) (Big spirits comics special) ZERO 下    BIG SPIRITS COMICS SPECIAL

ボクシング漫画。

松本大洋の作品はどれもそうなのだけど、ものすごく個性的な登場人物がいて、少ない会話のみで細かい所は明かされず、結果描かれている以上の奥行きが感じられる話で、淡白なストーリーなのに後味が悪い。

全部で22話と短いのですが、第一話目から終わりが想定されていると思われるテンポの良い構成で、飽きる事は無いのだけど、ピークを過ぎていながらとにかく強い五島の不気味さと、最後の最後も勝ってしまう終わらない狂気がなんとも収まりが悪く、読んでいて辛い。

2008/06/01

きつねのはなし

きつねのはなし

きつねのはなし、果実の中の龍、魔、水神の四話が収録されている短編集で、表題以外は書き下ろしらしいですが、それぞれ関係しているようで関係してない話ですね。全体的にシリアスな話、というと変ですが、大衆的なおふざけは無いです。けれども、怪談とか怖い話かといわれるとそういう所も無くて、少し狙いが外れているかもしれません。

収録されている話で一番面白いのは果実の中の龍でしょうか。自分の嘘に自分が騙されて訳が分からなくなってしまうというのは創作話としては凡庸に見えてしまいますが、この話は観念的でありながらもリアリティがあり、またストーリー性も高く、終わりはなんだか妙に寂しい気持ちになりました。

大きな事を成し遂げる人というのは、本当はもっともっと大きな目標を持っていて、夢の出来損ないが第三者に成功と思えるレベルに達しているだけなのかなぁとか考えてしまいます。

やはり森見さんは変人を扱ったお話が一番生き生きしている様な気がします。