MRI 検査をしてきた話

6月の上旬頃から謎の首の痛みに悩まされ、いったん治まってきたと思いきや再びぶり返して、歩くだけで痛いという状態異常になってしまったので、仕方なく病院に行った。

整形外科での診断は、ストレートネックと強い肩こりという話だったのだけど、数日たっても良くならなかったので再度行ったら MRI 検査をしますかと言われた。

こちらとしては、痛いのを直して欲しいのもそうだけど、原因が何なのか知りたかったのでぜひにとお願いした。

MRI 検査は予約制らしく、検査可能な時間が提示されたので、翌日の10時頃をチョイスした。
看護師さんは、iPad(だった気がする)でポチポチ予約登録をしていた。

この時点で値段のことは一切教えてくれなくて(聞くのも忘れていた)、帰ってからそういえばMRIって高そうだなと思い調べたところ、大体一部位につき8,000円くらいが相場のようだった。
何箇所やるのかも分かっていなかったので、2~3万くらいを覚悟したけど、結果的に7,800円くらいで済んだので安くて良かった(アンカリング効果)

翌日、病院で受付をすませると、とにかくパンツだけになってコレを羽織ってくれと指示され、ありがちな病院服に着替えさせられた。

予約制なだけあって、すぐに名前を呼ばれ MRI 検査室に連れていかれた。

説明によると、3分~5分間撮影してちょっとインターバルを挟むといったことを何回か繰り返し、検査完了まで30分程度かかるそうだった。
もっと早く終わると思っていたので、すこし面食らった。

特に僕の場合は、首の検査だったので、ツバを飲み込まないでくださいと言われたのがキツかった。
3分~5分のあいだ必死に我慢して、わずかなインターバル中に飲み込むしかなかった。

そういえば MRI 検査の前に、検査中は音が猛烈にうるさいのでヘッドフォンの着用をどうぞと言われた。
Jポップ、洋楽、ラジオから好きなのを選んでくださいと言われたので、「じゃあももクロで」と言いかけたけど止めた。
好きにしてくださいと言ったところ、洋楽が流れだした。

検査機械の中は想像通りせまかった。
分かってることだし平気だろうと思ってたけど、入った瞬間はなかなか怖かった。
狭いところが得意ではないのか、一般的にそう思うのかは分からない。
目をつぶっている方が恐怖を感じたので、あえて開けていた。

しばらくすると落ち着いてきたので良かった。

その後はとにかく退屈な検査が終わるまでの時間を耐えた。
音ゲーをよくする影響で検査中のドコドコドコという音が8分の連打に感じたりした。

検査が終わると結果を郵送するか、手渡しで整形外科まで持っていくか選択できた。
郵送にすると1週間くらいかかると言われたので、手渡しで持っていくことにした。
それでも結果を教えてくれたのは、3日後ぐらいだった。(画像データの確認とかしてるのか?よく分からない)

検査の結果は、軽度のヘルニアだった。
おとなしくしていれば痛みも治まるでしょうという話をされて終わった。

下手に首ポキポキ系の整体に行かなくてよかったかもなと思った。

ヘルニアは対策があんまりなさそうだけど、数日間おとなしくしていたら痛みは引いた。

いまは変な寝相をしないように気を使ったりしている。
とくに本を読みながら寝落ちしたりすると非常に危険ということが分かった。

今後は些細なことに気を使い、もうすこし丁寧に生きていこうと思う。
(なんだか歳を感じる結びになった)

database_cleaner と use_transactional_fixtures = true の競合について

競合するというか合わせて使うと不毛なことにしかならない。

capybara で selenium driver など(rack_test driver以外)を使うと別スレッドでサーバが立ち上がり DB コネクションが共有されなくなるため、トランザクションを張ってテストデータを作ると、別スレッドからテストデータにアクセスできなくなる。

下記リンク先の記事(図)を参考。

The One True Guide to database transactions with Capybara - Ian's Tech Notes

例えば、roles テーブルを参照する users テーブルがあり、下記のように roles にテストデータをつくるとき use_transactional_fixtures = true としていると、テストデータが commit されないので別スレッドで立ち上がってるサーバ側から roles のレコードにアクセスできず users のレコードの作成に失敗する。

...
  # use_transactional_fixtures = true

  before do
    FactoryGirl.create(:role) # uncommited transaction
  end

  it "新規作成できること", js: true do
    visit new_user_path
    fill_in "name", with: "Taro"
    click_button "Create User" # 必要な role が見当たらずエラー
    
    expect(page).to have_content 'Taro'
  end
...

解決として use_transactional_fixtures = false にすると良いということだった。

ただし、すると今度は spec/fixtures/*.yml が毎度作りなおされるようになる(delete & insert)。

これが気に食わないと思って避けるためにパッと思いついた案が use_transactional_fixtures = true として、DatabaseCleaner.start, clean しないことだったけど、それでどうにかなるのは DatabaseCleaner.strategy = :transaction で selenium driver 等を使わない場合に限られてきそう。

そうすると clean_with(:truncation) のために database_cleaner を入れたみたいになるので、素直に use_transactional_fixtures = false とした方がよかった。

おわり

database_cleaner を使うときは、fixtures の作りなおしを受け入れて、 use_transactional_fixtures = false としたい。(結果、ドキュメント通り)

あと aamine/activerecord4-redshift-adapter の場合、:truncation, :deletion 共に動かないので、database_cleaner を使うメリットがなさそうだった。

jpstock & jsm の公開をやめました

株価取得云々の目的でつくっていた jpstock と jsm の公開をやめました。

jsm を公開したのが2011年の9月。
もともと怒られたり、やめてと言われたらやめようという気持ちで公開してましたが、本日下記のヘルプ画面を知るにいたり、公開をやめる運びとなりました。

Yahoo!ファイナンスヘルプ - Yahoo!ファイナンス掲載情報の自動取得(スクレイピング)は禁止しています

当時はなかった記載と思いつつ、ざっくり調べると2013年中頃に追加された…?気づくの遅すぎですね。

定額制API | JPXデータクラウド

こういったAPI(中身は知らないけど…)が、制限付きでいいので、もっとお安く提供されるといいのだけど。