| @料理/食事

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

Rails の E2E テスト、ずっと Capybara + Poltergeist (PhantomJS)でやろうとしてたけど結局うまくいかなかった。

つらいポイントいろいろあって、 SSL 通信が必要なアクションでリダイレクトが発生してうまく動かないとか、 RSpec の use_transactional_fixtures オプションが利用できなくなるため Database Cleaner とか使う必要あったりとか、Parallel Test するときだけ通らないテストケースあったりとか、高速なマシンを使うときだけ落ちる、 Jenkins でだけ落ちる、といった問題が出てきたりする。

この手の問題、 sleep を入れたりとか mutex 化したりとか場当たり的な対応でテスト通すようにできることはできるけど、 unit テストのようにずーっと通る状態を維持し続けることが難しい(上に書いたように特定の端末でだけ落ちたりする)。おまけに何をやっても RackTest を使う場合に比べてテストが遅くなる。 Pull Request ビルダーでテストが実行し終わるまでに 15 分とかかかったりする。良くない。

かといって JavaScript のテスト書かない訳にはいかない。 JavaScript いっぱい使っててテストがないのはやっぱり不安が大きい。結局、JavaScript のコードを DOM べったりな状態から切り離して、サーバーサイドの Rails アプリケーションの挙動は request spec なり controller spec なりでテストして、 JavaScript のテストは JavaScript で行うのが良いような気がした。どうしてもエンドツーエンドテストやりたかったら Selenium 使うしかない気がする。これはスピードはあきらめて、 Pull Request ビルダーとかでビルドするときはテストやらずに、 master ブランチの定期ビルドとかでぶっ壊れてないか試す、みたいな方法が良いと思う。

もうこれ以上、エクセルにスクリーンショット貼り続ける訳にはいかないんだ。

| @Mac/iPhone

面白かったので便乗して書きます。

iPod 、大学3年の頃に友達が買って見せびらかしてまわってたのが最初の出会いだった。当時は自分は Windows 使ってて Apple 周辺の事情に疎く、特に iPod を欲しいとも思わなかった。

初めて iPod を買ったのは就職活動に失敗して留年していた頃だ。家の近所をぶらついていて、確か発売されたばかりで結構品薄だったのを偶然発見し、就職活動が終わって始めた居酒屋のバイトでもらった初めての給料で買った。第四世代 iPod のモノクロのやつで、ディスクの容量は 20GB だった。

iPod を買った年の冬に精巣腫瘍になって翌年の正月に病院に行ってがんだと分かり入院・手術した。病院はおそろしく退屈で病人生活を始めた最初の頃はパソコンとか持ち込んだりしてなくて、 iPod で音楽を聴くか新聞を読むくらいしか楽しみがなかった。抗がん剤の治療をするようになってからは、点滴されながらじっと iPod で音楽聞いてた。音楽聞いて抗がん剤の吐き気とかを紛らわせようとしてた。

第四世代 iPod は Apple タイマーが正常に機能して、購入からぴったり一年後に壊れてしまった。 HDD が死んだぽかったので開腹してハードディスク入れ替えたら良さそうだったけど当時はハードディスクもそこそこ高く、海外に旅行に行く直前に(飛行機に10時間以上乗るのに無音はつらかったので)第五世代の iPod を買った。こちらは 30GB のディスク容量で、カラー液晶になっていて写真を閲覧したりもできた。

第五世代 iPod は京都で半年入院してるときに重宝した。この頃は抗がん剤の副作用で耳鳴り・高音難聴に苦しんでいたのでよく音楽を聞いた。あと当時付き合っていた女性にふられたのでコールドプレイの "Warning Sign" をエンドレスリピートしながら京都の寺社仏閣を一人でふらふらと歩いて回ったりした。退院して北海道まで青春18きっぷで行ったときもひたすら第五世代 iPod で音楽を聞いていた。

第五世代 iPod は液晶から壊れはじめた。縦方向に筋が入るようになり、最終的には筋が広がって筋の隙間からのぞき見るようにして画面を見る必要があった。iPhone 3G を買ってからは歩くときは iPhone で音楽聞くようになったので、 iPod はもっぱら車の中で音楽聞くとき専用端末になった。最後はオートバックスの駐車場でドアポケットの掃除かなんかしてるときになくしてしまったっぽくて行方不明になった。

実は最初にインターネットに接続したパソコンは弟が音楽製作用に買っていた初代 iMac のタンジェリンのやつで、パソコンの原体験は Apple にあった。大学ではレポート提出とかの都合上 Windows を使っていたけど、数年ぶりに Apple 製品に触れて再び Apple 熱が高まり、 AirMac Express を買って Air Tunes で音楽聞くようになった。

iPod が画期的だったのは、 iTunes のライブラリと iPod を同期して使うところだった。それまでの MD や既存の mp3 プレーヤーは、プレーヤーに入れたい曲を選択してプレーヤーに移す、という作業が必要だった。昔の iPod の CM に、家の Mac で聞いていた音楽の続きを出かけるときに iPod で聞く、というやつがあったけど、そういう発想は他のプレーヤーにはなかったと思う。最初は馴染めなかったけど、曲のレートや再生回数が iPod と iTunes で同期される便利さに慣れると、 iPod 大勝利だなと思うようになった。2ちゃんねるで SONY のプレーヤーの悪口を吹聴して回るほどだった。

しばらく Apple 製品使ってないうちに OS X が出ていることを知り、 OS X の GUI の美しさにびっくりした。当時の Windows XP のフォントはアンチエイリアスがきいておらずシャギーだった。 OS X といい、 iPod - iTunes といい、 Mac/Apple の方が Windows/Microsft よりもだいぶ進んでいるなと感じた。 Windows に無理矢理 Osaka フォント入れたりして Mac 化したりしてた。次パソコン買うなら絶対 Mac だなと思うようになっていた。

大学卒業して入院しているときには病院があまりにも暇でノートパソコンが欲しくなったので、 DELL の安いノートとかにしたらと母親に言われたものの、どうしても Mac がいいとだだをこねて PowerBook G4 の 17 インチのやつを買ってもらった。これを使って病院でブログ書いたりしてた。ブログいじりが楽しくて PHP とか少し触るようになり( Mac は簡単にウェブサーバーを立てることができるので病院とかでも PHP のコードいじったりするのに向いてた)、結果的に Web の仕事がしたいと思うようになって今日に至っているような気がするので、 iPod 買ってなかったら Mac を欲しいとも思わなくてプログラミングをやり始めることもなく、何の能力を身につけることもないまま今も親のすねをかじってニートをしていたかもしれない。

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

Rails のログファイルを tail -f で見たいんだけど余計なものはフィルタリングして表示されないようにしたかった。最初は以下のようにしてみた。

⚡ tail -f log/development.log | grep -v -e ‘asset|Cache|Rendered’

これだと条件にマッチする行は表示されなくなるけど改行が削除されずに空行がたくさん表示される。これでは見やすいとは言えない。以下のように sed で空行を削除するようにしてみた。

⚡ tail -f log/development.log | grep -v -e ‘asset|Cache|Rendered’ | sed -e ‘/^$/d’

しかしこうすると必要な情報まで表示されなくなってしまう。 tail ではなく cat とかでやると望んだ通りになる。 tail -> grep -> sed の流れだとうまくいかないぽかった。

“tail grep sed” でググったら以下のような記事を発見したので試しに grep に —line-buffered オプションを渡してみた。

⚡ tail -f log/development.log | grep -v -e 'asset|Cache|Rendered' --line-buffered | sed -e '/^$/d'

これで望んだ通りの出力になった。便利。