| @雑談

きっかけ

下鴨神社の看板

今年の三月、持病の経過観察で京都に行きました。病院の合間に下鴨神社と上賀茂神社にお参りしたり、六波羅の平家ゆかりの寺、六波羅蜜寺に行って平清盛像を鑑賞したりしました。帰る日の夕方にはヒトデ909さんのありがたい法話を聞きながら銅製のタンブラーでビールを飲みました。しかしこのとき僕はすでに肛門近辺の痛みのためまっすぐ座ることが出来ず、お尻の左半分で椅子に腰掛け、右半分は空中に浮かせていました。ヒトデ909さんのありがたい法談も半分くらいしか耳に入っていませんでした。

僕が痔ろうを発症したのは恐らく京都に行った前の週に参加した故郷での同窓会です。同窓会は阿蘇いこいの村という宿泊施設でとり行われました。阿蘇いこいの村はテニスコートがありますので、学生時代にテニスサークルで痴情をもつれさせていた紳士淑女のみなさんは泊まってみるといいと思います。

同窓会

僕は当初二次会には参加せずに帰ろうと思っていたのですが、参加者が少ないので協力して欲しいということで二次会に参加してしまいました。しかしこれが間違いでした。僕はインターネットの人と会ったときは饒舌なのですが、中学や高校の同級生と会ったときは寡黙になってしまいます。二次会では会場の隅っこに立って一人で延々キャラメルのリキュールを牛乳で割った液体を飲んでいました。これが全然酔わない。酔わないし手持ちぶさたなのでどんどんキャラメル牛乳酒を飲んでしまいます。これがまずかった。翌朝、下痢をしてしまったのです。

若い頃は飲み過ぎると吐いていました。しかし30歳になったあたりから酒を飲み過ぎると下痢をするようになりました。アルコールが体から抜けるまで下痢は治まりません。まぁ吐くよりかは楽なのですが、下痢は恐ろしいことに痔ろうの原因になるのです。

痔ろうはいきなり痔ろうにはなりません。まず最初、肛門周囲膿瘍というやつになります。お尻の穴の近くにおできが出来るのです。しかしこれは単なるおできではなく、肛門と直腸の間にある肛門陰窩というくぼみに下痢ピー状態のうんこが入り込んでしまい、そこが化膿してお尻の穴の近くまで膿を内包した袋が延び、肛門近辺におできを作ります。こいつがすこぶる痛い。38度程度の熱が出ます。このおできのことを肛門周囲膿瘍といい、おできから直腸のあたりまで繋がっている状態を痔ろうと言います。

告知

飛行機から見る雲

関西から夜の飛行機で帰ってきて眠りにつきますが、翌朝目が覚めたときには体がだるく、ただならぬ状態であることを悟りました。会社には遅れる旨連絡を入れ、天神近辺にある肛門科を探しました。

肛門科では見るなり肛門周囲膿瘍である旨告げられました。切開をして膿を出さない限り心の平安は訪れないそうです。僕は承知をして切開してもらいました。熱は下がりましたが、これからが地獄でした。

排膿したので熱は引きますが、傷口は相変わらず痛みます。傷口のろう管にガーゼを詰め込まれました。そしてさらに上からガーゼで傷口を圧迫される。僕は会社用と自宅用に円座クッションを二つ購入しました。会社では岡村製作所のバロンという上等な椅子に座らせてもらっているのに、この上に円座クッションを載せて座っていてなんだか残念な感じになっていました。

ハンディウォシュレット

傷口はお尻の穴の近くなので当然お尻の穴の上もガーゼに覆われています。最悪なことに大便でトイレに行くたびにガーゼの張り替えをしなくてはなりません。お尻の穴なんて自分では見えませんから、ガーゼの張り替えは困難を極めます。当然シャワーを浴びた後もガーゼを張り替えなければなりません。僕は毎日月経中の女性のように小さなポーチを持って個室トイレに入り、ガーゼを交換していました。

手術

切開から一ヶ月が経つ頃には傷口は落ち着き、ろう管に詰め込まれたガーゼも取り出してもらえます。通常の生活ができるようになった! しかしこれはつかの間の喜びなのです。切開後一ヶ月ないし二ヶ月を目安に、痔ろうを根治するための手術をしなければなりません。痔ろうとは放っておいても直らない病気なのです。

痔ろうは昔から多くの人を苦しめました。夏目漱石も痔ろうだったと言います(日本人編 近現代|じなび - 痔の総合情報サイト -)。昔は痔ろうの手術のために肛門を切り開いてろう管をそぎ取ったりしていたそうですが、最近はシートン法というものがあり、手術のために入院する必要はなくなりました。しかしこれもすこぶる痛かった。

シートン法とは肛門と痔ろうの管を輪ゴムのようなもので縛り、ゆっくりゆっくりと肛門周辺の組織を切り取っていく治療方法です。手術自体は局所麻酔と内視鏡で終わりますが、術後に地獄のような日々が待っています。せっかく傷口から膿が出なくなっていたのに、ゴム紐で肉をゆっくりと切っていくため出血したり膿が出たりします。異物が体に入り込んでいるので椅子に腰掛けるのは不可能になります。自宅では無印良品の体にフィットするソファに覆い被さるような姿勢で過ごさざるを得ませんでした。

体にフィットするソファに覆い被さる著者

しかも最悪なことにシートン法のゴム紐は一週間に一度締めなければなりません。ゴム紐は肉を切っていくので、だんだん締め付けが緩くなっていきます。定期的に締め付けを強くしないと治療が進まないのです。この締めるときがまた痛い。ある日昼休みに病院に行って締めてもらったら、あまりの痛さに耐えられなくなってしまって午後から会社を早退してしまいました。

死の散歩

結局、3月初旬に排膿のための切開をしてから6月まで地下鉄で椅子に座ったことがありませんでした。外出するときも歩き疲れたからと喫茶店に入って休むということが出来ず(お尻が痛いので椅子に座って休憩することができない)、かなりのスリルをあじわいながら生活していました。梅雨入り前の暑い日、出来心で海まで歩いて行ったのですが、炎天下に歩き続けて疲れて歩けなくなったらどうしようと気が気ではありませんでした。疲れ果ててもう歩けないと思っても、ケツが痛いためタクシーに乗ることが出来ないのです。まさかこんなことでは救急車なんて呼んでもらえないだろうしのたれ死ぬしかありません。

シートン法のゴム紐がとれたときには涙が出るほどうれしかったです。そのときのツイートです。

ゴム紐がとれたことがうれしくて、ワイフと二人で大ライスを食べて祝いました。

まとめ

僕はラーメン二郎のことは愛していますが、痔ろうのことは大嫌いです。


この記事は拡散お願いしますアドベントカレンダー2012の13日目の記事でした。

明日は @fuba さんです

| @技術/プログラミング

一個前の記事で書いた「記事の更新時に updated_at ではなく created_at が更新されてしまう」問題、原因はプログラム側にあるのではなく、MySQL の設定の問題だった。

mysql> desc entries;
+-----------------+--------------+------+-----+---------------------+-----------------------------+
| Field           | Type         | Null | Key | Default             | Extra                       |
+-----------------+--------------+------+-----+---------------------+-----------------------------+
| id              | int(11)      | NO   | PRI | NULL                | auto_increment              |
| user_id         | int(11)      | YES  |     | NULL                |                             |
| category_id     | int(11)      | YES  |     | NULL                |                             |
| slug            | varchar(255) | YES  |     | NULL                |                             |
| title           | varchar(255) | YES  |     | NULL                |                             |
| body            | text         | YES  |     | NULL                |                             |
| type            | text         | NO   |     | NULL                |                             |
| draft           | tinyint(1)   | YES  |     | 0                   |                             |
| created_at      | timestamp    | NO   |     | CURRENT_TIMESTAMP   | on update CURRENT_TIMESTAMP |
| updated_at      | timestamp    | NO   |     | 0000-00-00 00:00:00 |                             |
| frozen_tag_list | text         | YES  |     | NULL                |                             |
| markup          | varchar(255) | YES  |     | NULL                |                             |
+-----------------+--------------+------+-----+---------------------+-----------------------------+
12 rows in set (0.00 sec)

updated_atcreated_at の設定値が逆になってたのが原因。ALTER 文でカラムの情報を入れ替えておいた。

MySQL に流し込んだ Sqlite3 のデータを dump したやつの CREATE TABLE entries を見ると以下のようになってた。

CREATE TABLE `entries` (`id` integer PRIMARY KEY AUTO_INCREMENT, `user_id` integer, `category_id` integer, `slug` varchar(255), `title` varchar(255), `body` text, `type` text NOT NULL, `draft` boolean DEFAULT '0', `created_at` timestamp, `updated_at` timestamp, `frozen_tag_list` text, `markup` VARCHAR(255));

なんでこれが created_at に対して更新時に現在時間を上書きし、 updated_at は作成時のみ現在時刻が入るようになるのかは分からない。

それにしても日頃 MongoDB ばかり使っていて、データにおかしなことがあるのはほぼ間違いなくコードのせいだと思う癖がついていることが今回よくわかった。データベースのスキーマを見てみるまでに3日くらい時間がかかった。とほほ。

一方でデータベース内のデータ構造のことをあまり考えなくてよく、開発のみに集中すればよい MongoDB はやっぱり便利だなと思った。規模がでかくなったり高速な読み書きをさばかなければならない状況だと MongoDB にも色々問題があるのでしょうけどね。

| @技術/プログラミング

Lokka 、データベースはずっと SQLite で使ってたけど仕事で MongoDB を使っているため SQL 力の弱まりを感じてきたので MySQL に変えてみた。SQLite3 から MySQL への移行は意外と面倒くさくて、以下の Redmine の手順を参考にやってみた。

  1. Strip out PRAGMA lines
  2. Strip out BEGIN TRANSACTION; lines
  3. Strip out COMMIT; lines
  4. Strip out DELETE FROM and INSERT INTO the sqlite_sequence table
  5. Replace AUTOINCREMENT with AUTO_INCREMENT
  6. Replace DEFAULT ‘t’ and DEFAULT ‘f’ with DEFAULT ‘1’ and DEFAULT ‘0’
  7. Replace ,’t’ and ,’f’ with ,’1’ and ,’0’
  8. Replace “ with ` except in string values (otherwise it replaces all quotes in your text)

Migrating from sqlite3 to mysql - Redmine

↑の通りにやっておおむねうまくいったんだけど、なんか過去の記事を編集して更新すると、updated_at カラムだけじゃなく created_at まで更新されてしまうっぽい。SQLite で使ってるときにはそんなことなかったんだけどなぁ。これは問題な気がする。DataMapper のバグかな。土日で余裕があったら調べてみる。

| @読書

最近、蓄財意欲が高まっているので『男の本格節約術 — 5年で1000万円貯める52のノウハウ』を買って読んだ。

著者は元メガバンク勤務のエリートサラリーマンなので、「そりゃ年収1000万円以上あれば5年で1000万貯まるだろうよ」と思いながら読み始めたんだけど、中身を読んでみると読者の年収はあまり関係ない内容になっている。とにかく節約が大切だ、ということが書いてあった。

以下、気になった点の要約。


資産を形成するために

  • やること
    • 銀行口座残高と総資産残高を月次管理する
    • Excel に毎月の資産の変動を記録する
    • 毎月、資産増加額の目標を設定し、目標と実績の乖離を検証する
    • Excel でグラフを作成する
    • 毎月、手取り給料の25%を積み立てる
  • やらないこと
    • 家計簿はつけない
      週五日働いているサラリーマンが家計簿をつけることは事実上無理。
    • こづかい額は設定しない
      「使う額」のことを気にするのではなく、「貯める額」の方を気にする。貯めた上で余った金額を使う。
    • 貯金箱は使わない
      正確な月次資産把握ができなくなるので。

日々の心がけ

  • 「機会費用」、「時給換算」の概念を捨てる
    「時給に換算したら壊れたものの修理を自分でやるのはバカらしいので新しいものを買った方がよい」は間違い。壊れたものを修理するのにかかる間、職場にいるわけではないので給料は発生していない。新しいものを買えばお金が出ていくだけ。実際のキャッシュベースで考える。

ものを持たない、ローンを組まない

  • 持ち家よりも賃貸に住む
    • 住宅ローンは年収の5倍もの借金をすることであり、家計を企業に置き換えると圧倒的な債務超過に陥っている。住宅ローンを組むのは正気の沙汰ではない。
    • 不動産を買って良いのは、現金で買える場合か、10年程度の短期間で返済を終えられるかのどちらかの場合のみ。
  • 車は持たない
    • 車の維持費はガソリン代以外固定であり、年間の維持費は70万円程度になる。
    • 車を乗り換えながら30年間所有した場合、車への支出は2000万円を超える。
  • ものを買っても死ぬときはあの世に持っていくことはできない。レンタルで済むものは借りるようにする。

家庭での実践

  • 外食は休日の昼間に行う
    昼に外食することで安く上げられる。
  • 贅沢は結婚記念日や誕生日に限定して行う
  • 本や雑誌は図書館で借りて読む
    • 本は持っていても物理的に保管不能になる。必要なときに図書館へ行って借りて読むのが良い。
    • 読んだ本の中で気になった点は写経してパソコンに保存すると検索できるようになるので便利。
  • CD や DVD はレンタルを利用する
  • 保険に入りすぎない
    • 保険とギャンブルは似た性格を有している
      • どちらも確率ベースで、保険は「当たった」ときに辛い目に遭い(代わりに保険金を得る)、ギャンブルは当たったときに富を得られる。
      • ギャンブル(宝くじ)の還元率は46%だが、保険の還元率は39%と考えられている(保険会社は十分に情報を開示していない)。保険の方が宝くじよりも割りが悪い。
    • 十分な金融資産があるならば保険に入る必要は無い
      • 金融資産を積み上げるほど、保険料は引き下げられる。万が一のときには自己資産で対応できる。
      • 「家族の必要生活資金(総額)」 - 「手持ち金融資産」 = 保険金で受け取る金額 ←式に合わせて加入する保険を考える。
    • 生活に余裕が出たら、保険は見直す

職場での実践

  • 飲み会に行かない
    歓送迎会などの一次会のみに参加する。
  • 職場で飲み物を買わない
    毎日、2回喫茶店に入ると年間で 300円 * 2回 * 5日 * 52週 = 156,000円 の出費、毎日2本缶コーヒーを飲むと 120円 * 2回 * 5日 * 52週 = 62,400円 の出費。
  • 昼食代を浮かせる
    • 弁当を作ってもらえるなら弁当を持参する。
    • 社食があるなら社食で食べる。
  • 見栄を張らない
    職場に高いスーツを着ていかない、高い時計や靴を買わない。
  • 金融リテラシーを高める
    • 日本の教育は、個人の資産形成については教えてくれないため、日本人は金融リテラシーが著しく低い。
    • 『アメリカの高校生が読んでいる資産運用の教科書』のような本を読み、お金についての知識を高める。
  • 家計に企業の経営手法を応用する。
    • キャッシュフロー経営(入ってきた以上に使わない)
    • ローコストオペレーション(固定費を下げた生活を心がける)
    • 月次決算(金融資産の額を毎月確認する)
    • 見える化(金融資産のポートフォリオグラフを作成する)
    • 不稼働資産の売却(使わないもの、読まない本、聞かないCDを売る)
  • 貯蓄よりも返済を優先する
    一日も早く返済を終え、支払い金利を一円でも少なくする。

節約志向の副作用を知る

  • 節約ばかり考えていると発想の貧困化を招く。
  • 既存の枠組みの中でいかに出費を抑えるか、ということばかりに目が行き、斬新な発想をしてみようという感覚が出てこなくなる。

以下感想です。

すべての始まりは節約

本の中には英語の節約に関することわざがたくさんちりばめられている。冒頭は著者が影響を受けた『となりの億万長者—成功を生む7つの法則』の引用から始まる。昼食は毎日1,000円程度の外食で、職場では2本も3本も缶コーヒーを飲み、休憩時には喫茶店でコーヒー、仕事の後も週に1回は飲みに行く、という人は多いと思うけど、自分には到底理解しがたい金銭感覚だ。職場では基本的に無料の水しか飲まないし(ウォーターサーバーのある会社で良かった)、昼は持参した弁当か配達の激安弁当を食べる。豪華な昼ご飯を食べたり缶ジュースを何本も飲んだりするよりも、もっと他のことにお金使った方がいいと思う。こういう金銭感覚を持った自分からすると、英米の偉大な金持ちはケチだったという話には大変勇気づけられた。

貯蓄を行うための確実な方法は天引き

蓄財を行うための確実な方法は、手取り収入の25%を給料日に有無を言わさず貯金してしまうこと。後は残りのお金で生活する。こづかい額を設定しないのもこの発想に基づいている。貯蓄が一番先に来て消費は最後。貯蓄して余った分を使うという発想に切り替えないとお金は貯まらないと思った。

著者が提唱する Excel による月次の資産管理も参考になった。自分は iCompta という iPhone と Mac で同期しながら使えるソフトで家計簿を付けていたけど、レシートが溜まっていくばかりでここ一年ほど破滅状態にあり、家計簿が実体を反映していない。やはり着眼点を変えて、出ていく金額に気をかけるのではなく、貯める金額に気をかけるべきだと思った。

投資について

投資はどちらかというと損をしないために行うべきものであって、積極的に儲けようとしてはいけない、という印象を持った。例えば著者は海外赴任中に、日本の銀行の普通預金口座に数百万円預けたままにしておいたことに赴任先で気づいたそうだ。もしこれを定期預金として預けておけばより多い額の利息を得ることが出来た。このような「効率的に運用していれば得られたはずであろう利益」を損として考えるような心構えで投資や資産運用を行うべきだと感じた。『アメリカの高校生が読んでいる資産運用の教科書』は興味が湧いたので Amazon で古本を注文した。

家や車について

家について

著者は持ち家派か賃貸派かで言えば賃貸派だと言っている。しかし賃貸は支払う家賃の割りに部屋が狭くてしょぼいのが問題だと思う。例えば分譲マンションを購入して2000万円の35年ローンを組んだとき、月の住居費(ローンの返済、管理費、修繕積立金)は8万円くらいになると思う(ここで計算できます)。しかし同じマンションに賃貸で入居しようとすると家賃は12万円くらいになる。月8万円で住める賃貸住宅は狭くて設備も著しく劣っているはずだ。どうせ同じ金額(8万円)を住居費に費やすのだったら広くて快適なところに住みたい。

また賃貸は年をとってからが大変な気がする。70歳とかになって賃貸住宅に住もうとしても、入居の審査が通らないかも知れない。そもそも年金暮らしになったときに、毎月8万円も住居費に充てるのは無理な気がする。国民年金を満額収めている人でも6万6千円しか支給されないのだから、やはり定年退職する前までには住居に関する不安は払拭しておきたい。となると働けるうちに家を購入して返済を終え、老後は家賃がかからない生活を送るのがいいと思う。

本の中で著者はたばこを吸う人を刹那の快楽を得るために寿命を短くすると言っているのだけど、賃貸住宅を好む人達だって、若いときに好きな町にふらふら移り住むために高い家賃を払い、老後に困窮することを選択しているキリギリスにしか見えない。

車について

車については著者は、都市部に住んでいるなら持つ必要は無い、と言っている。車を所持することで年間で必要な維持費は70万円であると試算してある。これは駐車場代が月2万円で、200万円の車を10年乗るとして購入した場合である。車を処分するだけで年間70万円の節約になるので、車は持つべきではない、というのが著者の主張だ。

自分も福岡に引っ越してくるときに車を処分してしまった。確かに福岡市の中央区や博多区などから一歩も出ないと決意するのであれば車はいらないかも知れないけど、市内でも郊外に住んだり実家に帰省したりするときのことを考えると、車がないとなかなか厳しい。福岡は駐車場代が東京よりは安いし車を買うとしても100万円くらいのものにしようと思っているので、維持費は、当初3年間は車のローンの返済があるため年間80万円、完済後は45万円くらいになると試算している。

一方で、車を所有している場合と同じ頻度でレンタカーやタクシーを利用すると仮定した場合(月2回レンタカーを借り、月20回タクシーを利用し、電車やバスも適宜利用すると仮定)、年間の自動車費は98万程度になると予想された。これなら買ってしまった方が経済的だ、ということになる。

またレンタカーやタクシーを利用する場合、いつでも好きなときに自分のタイミングで外出する、ということが難しくなる。金曜の夜10時頃に唐突に久留米ラーメンが食べたくなってしまったとき、自動車を所有しているならマイカーに乗って久留米まで行ってしまえばいい。しかし車を持っていない場合は諦めざるを得ない。レンタカー屋はほぼ閉まっているし、タクシーで久留米まで行くことは不経済だ。電車で行けないこともないけど、ラーメンを食べ終えた頃に上り列車の終電に間に合うかは微妙なところである。

少なくとも地方都市に住んでいる限りにおいては、車があった方が圧倒的に快適な生活を送ることができるのではないかと思うがどうだろうか。

ものを持たない生活について

著者が提唱するなんでもレンタルで済ませるという生活には一理ある。大抵の本は買っても一度しか読まないし、一度しか読まない本のためにスペースを確保するのはバカらしい。また本はかさばるので捨てるとしても大変難儀する。図書館で借りられるならそうした方がいいとは思う。

しかし CD とかもレンタルで済ませろというのには違和感がある。誰も音楽買わなくなったら音楽で食ってる人達が生活できなくなる。そうしたら世に出回る音楽の種類や質も劣っていくのではないだろうか。そういう世の中はつまらない。そもそも自分が聞きたい音楽がレンタルで手に入るとは限らない。

この本全般に言えることだが、著者はファッションや音楽など、俗世への煩悩が控えめな人のようなため、主張が極端な気がする。みんなが著者と同じ価値観でものを考えられる訳ではないし、服が好きな人や、アンダーグラウンドな音楽が好きな人だっている。そういう文化的な趣味趣向は「無価値」と割り切れるのであれば、ひたすら節約生活を極めることができると思うけど、なかなか人間そうはいかない気がする。

そもそものことを言うと、みんなが何でもレンタルで済ませるようになったら、この本だって誰も買わず(買うのは全国の図書館だけ)、筆者だって困るはずだ。

家にしろ車にしろ本にしろ、「ものを買うやつは情報弱者」と言い捨てるのは気分爽快かもしれないけど、みんながそのような消費行動を取り始めると世の中お金が回らなくなってしまう。それはそれで問題だと思うんだけどな。

ともあれ冒頭の「資産残高の月次管理」の部分は参考になったので、自分も実践してみたいと思いました。とりあえず家計簿をつけることやめてたまりにたまったレシートを捨てることにします。

| @技術/プログラミング

社畜なのでVドメインからMドメインにドメインの管理業者を変更した。そしたらDNSの設定やらなんやらを忘れていて、tech.portalshit.net が死んでた。最近は技術っぽい内容も www.portalshit.net に書いてるしここの存在意義が微妙になってきた。Jekyll、便利ではあるんだけど、rbenv で Ruby のバージョン上げるごとに gem install jekyll gsl とかやるのが若干めんどくさく感じられるようになってきてしまった。ただ記事を書くためだけにそこまでやりたくないかも。

| @技術/プログラミング

RSense という Ruby のプログラムを書いているときに、レシーバの型に応じた補完候補を表示してくれるソフトがあります。Emacs とか Vim と組み合わせて使うと便利らしいです。Java で IDE 使って開発すると補完候補がわさわさ出てきて殆ど鼻くそほじってるだけでプログラミングできるという話を聞いたので、Ruby でも鼻くそほじりながらプログラミングしたいなと思ってこいつを導入してみることにしました。春頃やったときはなかなかうまく Vim から使うことが出来なくて諦めてたんだけど 、つい最近できるようになったのでやり方をメモっておきます。

Mac でのお話です

前提条件ですが、Mac で使ってます。環境は Homebrew で構築してます。また RSense を使うには Java Runtime Environment が必要です。あなたと Java

RSense のインストール

JRE のインストールは済んでいるものとします。Homebre で RSense をインストールしましょう。簡単です。

brew install rsense

インストールが済んだら以下のようなメッセージが表示されると思うので、指示に従いましょう。

If this is your first install, create default config file:
    ruby /usr/local/Cellar/rsense/0.3/libexec/etc/config.rb > ~/.rsense

すると ~/.rsense というファイルが作られ、中身は以下のようになっています。

home = /usr/local/Cellar/rsense/0.3/libexec
load-path = /Users/morygonzalez/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby/1.9.1:/Users/morygonzalez/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby/1.9.1/x86_64-darwin11.4.0:/Users/morygonzalez/.rbenv/versions/1.9.3-p194/lib/ruby/site_ruby:/Users/morygonzalez/.rbenv/versions/1.9.3-p194/lib/ruby/vendor_ruby/1.9.1:/Users/morygonzalez/.rbenv/versions/1.9.3-p194/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin11.4.0:/Users/morygonzalez/.rbenv/versions/1.9.3-p194/lib/ruby/vendor_ruby:/Users/morygonzalez/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1:/Users/morygonzalez/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin11.4.0
gem-path = /Users/morygonzalez/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1:/Users/morygonzalez/.gem/ruby/1.9.1

rbenv 使ってる人は load-path にちゃんと rbenv のパスが含まれているか確認して下さい。

Vim の設定

このままではまだ RSense がインストールされただけで、Vim から利用することができません。Homebrew で入れた RSense には rsense.vim がついてくるので、こいつを Vim の plugin ディレクトリにコピーします。

cp /usr/local/Cellar/rsense/0.3/libexec/etc/rsense.vim ~/.vim/plugin/

次に .vimrc で rsenseHome を指定しなければなりません。

let g:rsenseHome = "RSense home"

と書きます。僕はこの rsenseHome が分からなくてハマりました。先ほどの config.rb を実行したときに生成された ~/.rsense に書いてある home をここに指定します。なので rsenseHome は /usr/local/Cellar/rsense/0.3/libexec です。

ここまで済んだところで Vim から RSense が認識されているか確かめます。適当に Vim を起動して :se ft=ruby とし、:RSenseVersion とコマンドを打ってみます。ここで RSense 0.3 のように成功されたら設定完了です。filetype が ruby になっているファイルで 1. と打った後、補完候補を呼び出すコマンド(^X ^U)で候補を呼び出せます。以下のような感じ。

8da56d016a74ebc9d38afcf593bfeadd.png (200×116)

“ネオコン” と連携させましょう

さらに言うと、たいていの Vim ユーザーの皆さんは neocomplcache も使ってるでしょうから、neocomplcache と RSense を連携させましょう。ネオコン作者の Shougo さんのブログ記事を参考にして下さい。

以上で完了です。これで Vim で Ruby な皆さんも鼻くそほじりながらプログラミングできますね。

| @技術/プログラミング

昨日のやつ(Ruby の Enumerable#inject() - portal shit!)、「使い方間違ってるだけだろwww」みたいな感じの言及があったのでもうちょっと調べてみた。やりたかったのは以下のようなこと。日付の範囲をレシーバーにした Enumerable オブジェクトをつくって、日付をキーにグルーピングされたハッシュを作りたかった。

Date.today.beginning_of_month.upto(Date.today.end_of_month).inject({}) do |result, date|
  result[date] = Document.where(:created_at.gt => date).and(:created_at.lt => date)
end

これを実行しようとすると

NoMethodError: undefined method `[]=' for Tue, 01 May 2012:Date

と言われる。

しかし以下のようにしたら意図した通りのハッシュを作ってくれた。

Date.today.beginning_of_month.upto(Date.today.end_of_month).inject({}) do |result, date|
  result[date] = Document.where(:created_at.gt => date).and(:created_at.lt => date)
  result
end

ふむふむ〜、ナルホディウスですぞ〜〜〜〜〜。Enumerable#inject の引数がハッシュではなく配列のときは最後の result はいらないのだけど、ハッシュのときはいるらしい。

ルbyーーー1.9.2-p290 + レールズ 3.2.2 での現象です。