| @料理/食事

最近、結婚したときにいとこから御祝いとしてもらったシリコンの容器でよく料理してる。いまは嫁さんが実家に里帰りしてて一人なので自炊をする機会が多い。一人だと袋ラーメンとかで済ませがちなんだけど、それでは野菜不足だと思う。かといってサラダを用意したり、野菜で料理を作ったりとかも面倒だと思う。袋ラーメンに熱を通した野菜でものっければ見栄えも良くなるし健康にも良さそうだなと思って、もらったシリコンの容器で野菜を蒸してみた。そしたら意外とうまかったので結構な頻度で利用している。今週は月火水と三日連続利用した。

このシリコンの容器はルクエというメーカーのやつで、製品名をスチームケースというらしい。キャベツとか白菜とか小松菜とかタマネギだとかしめじだとかを適当に切って塩とこしょうを振ってレンジに入れて3〜5分加熱するだけで油を使わない温野菜的なものが出来上がる。油を使っていないのできっと体に良いはずだし、鍋の前についてて火加減を見るというようなことをしなくていいし、後片付けも水洗いするだけなのですこぶる楽。面倒くさがりの諸兄にオススメです。

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

一個前の記事で書いた「記事の更新時に 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 にも色々問題があるのでしょうけどね。

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

Jekyllを使いだしてから気がつくと一年経ってました。いろいろ便利に使えており気に入っております。

PygmentでコードをシンタックスハイライトしたりLSIで関連記事表示したりと結構手を入れてはいたんだけど、いわゆる世間の一般のブログにあるようなカテゴリ一覧表示機能と、カテゴリごとの記事アーカイブ機能がなくて、それを若干不便に思っておりました。

ググってみたところ、プログラマー向けなブログツールなだけあっていろんな方法が出てきました。以下そのまとめ。

カテゴリ一覧

JekyllのLiquid (テンプレート言語) には {{ "{{ sites.categories " }}}} みたいタグがあるんだけど、こいつが意図したとおりに動かない。普通のRuby使いの感覚からすると site.categories ってカテゴリを沢山持った配列になってそうな気がするんだけどこれが違う。

<ul>
{{ "{{ for category in sites.categories " }}}}
  <li>{{ "{{ category.name " }}}}</li>
{{ "{{ endfor " }}}}
</ul>

↑みたいな感じのコード書くと何も表示されない。 site.categoires はHashで、{ "カテゴリ名" => カテゴリ内の記事一覧 } みたいな構造になってる。LiquidでHashのキーを取りだす方法が分からず、どうにもこうにもいかなかったので他の人が作っているプラグインを利用することにした。

↑のファイルを JEKYLL_ROOT/_plugins にコピーする。(_plugins というディレクトリがなければ作る)。そんでテンプレートを変更する。↑のやつを↓みたいにする。

<ul>
{{ "{{ for category in sites.iterable.categories " }}}}
  <li>{{ "{{ category.name " }}}}</li>
{{ "{{ endfor " }}}}
</ul>

2行目のところが変更点です。これでカテゴリ一覧表示ができるようになる。

カテゴリごとの記事一覧

カテゴリごとの記事一覧を表示する方法だけど、こういうのを発見した。

ここの generate_categories.rb を使えばカテゴリ内の記事一覧を作成できる。こんな感じ。

これもさっきのと同じように、JEKYLL_ROOT/_plugins にファイルをコピーする。そんでLiquidテンプレートを書き換えるんだけど詳細はプラグイン内の記事をご確認くだしあ。

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

ポータルシットをLokkaに置き換えたくていろいろやってる。ポータルシットの過去記事をYAMLでエクスポートし、それをLokkaのDBに取り込む作業をやってる。TDD BootCampに参加したので、テストファーストしながらの作業。RSpecでテストコードを書き、ログが正しくインポートできることを確認する。テスト終了時 after(:all) フックで、取り込んだログを削除してる。コードはこんな感じ。ちなみにLokkaはDataMapperをORMに採用してるので以下はDataMapperでの話。

after(:all) do
  Category.all.destroy
  Entry.all.destroy
end

しかしこれでは AUTO INCREMENT の値がリセットされず、テストを繰り返す度に AUTO INCREMENT の値が増えていってうざかった。

DataMapperの機能で AUTO INCREMENT 値をリセットするのってないのかなと5秒くらい探してみたけど見つからなかったので、SQLを直接実行する方法を採用した。

ちなみにRDBMSに採用してるのはSQLite3。SQLiteでは UPDTE sqlite_sequence SET seq=0 WHERE name='テーブル名'; みたいなコードで AUTO INCREMENT 値を任意の値に設定できるみたい。

最終的な after(:all) フックはこんな感じ。

  after(:all) do
    Category.all.destroy
    Entry.all.destroy
    Entry.repository.adapter.execute('update sqlite_sequence set seq=0 where name="entries";')
  end

テスト実行後にはすべてのデータがデータベースから削除されて、AUTO INCREMENT の値もリセットされる。人畜無害なテストコード万歳。

| @雑談

福岡では学生の頃アルバイト先が一緒だった友達(イギリスに語学留学していて帰ってきたばかり)とも会ったのですけど、この友達から聞いたイギリス人というか留学生も含むグレートブリテン島の男女交際の話が面白かったです。僕に直接イギリス人の友達がいるわけではないし、留学していた日本人から聞いた話なので実情と違うところもあるかも知れないけど面白かったので書きます。

イギリス人の女の子(含イギリスに留学してるヨーロッパ人)はなかなかデートに誘っても応じてくれないらしい。デートに行くときは相手と懇ろな関係になってもいいと思えるときだけらしい。日本人だと別に付き合うとかそういうんじゃなくて、とりあえず一回食事に行くか、みたいなことはあるけど、イギリスではそういうのはないらしい。

だからイギリスに留学してる日本人の女の子が気軽な気持ちで外タレに誘われてデートして帰り際に「僕んち寄ってかない?」みたいなこと言われて困ったちゃんな状態になるらしい。

この話を聞いてびっくりした。だってデートとかしてみないと相手がどんな人だか分からないじゃん。なのにいきなり関係を迫られても困るよね。そもそもどうやって相手のことを知ればいいの?

そういう役割を果たしているのがパブとかパーティらしい。大人数で集まる社交場で良さそうな相手を見つけて、それからデートするらしい。なるほどねー。

これから外国に留学する日本人女性の皆さんはこの辺の文化の違いにお気をつけください。あと日本人女性は韓国と中東の男性にもてるらしいです。

| @雑談

OSTERIA Fridge

先週用事があって福岡に行ったんですけど、Twitterで知り合った方に OSTERIA Fridge というレストランに連れて行ってもらいました。カウンターの席に座り目の前で料理を作ってるのを眺めながら食事しましたが、大変おいしかったです。料理について質問するとお店の人がとても楽しそうに説明してくれるので、なんかこっちまで楽しくなってきた。こういうお店は大変良いと思います。僕はジャンクフードとか学食のカレーとかが好きだし全然グルメ野郎ではないのだけど、また行ってみたいと思えるお店でした。時間の都合でデザートとコーヒーを注文できなかったことが残念でした。

| @読書

『六〇〇万人の女性に支持される「クックパッド」というビジネス』という本をようやく読み終えたので感想を。

まず正直な感想を言うと、書いてる人がクックパッドを持ち上げすぎてて気持ち悪い。むかし湯布院についての新書を読んだときもこんな感じで、提灯記事ならぬ提灯新書なるジャンルがあるのかと錯覚するほど。

Amazonのレビューを読んでいると、ちょうどこの本が出版されたときにクックパッドはマザーズに上場したそうで、まぁいろいろ大人の事情があったんでしょう。

もちろん面白いところもあります

とはいえ全体がつまんないわけではなくて、興味深い部分もありました。社長さんが学生時代にやってた野菜の販売サイトがうまく行かなかった話とか。僕も一応ネットで物売る系の仕事をやっているので、「学生時代だと、すべてがイベントになってしまう」という部分は共感しながら読むことが出来ました。学生ノリの商売は野菜を出荷してもらってる農家に対しても悪いし、買ってくれる消費者に対しても悪い。中途半端なビジネスが一番最悪。

中でも興味深かったのが、クックパッドはもはや単なるレシピサイトではなくて、流通・小売業者にとっても重要な情報源となっているという話。この季節はどういうキーワードがもっとも検索されているかとか、そういう情報を売っているんだそう。スーパーとかとしたら、商品の発注かけるときにあらかじめ消費者の興味関心が分かれば無駄なく発注できるもんね。

ただ、この先どうなるのかな、っていう疑問も持った。

レシピの増加

クックパッドは毎日どんどんレシピが増えていってる。例えば親子丼とかで検索したら大量にレシピがヒットする。僕はいちど海南チキンライスの作り方をクックパッドで調べたことがあります。海南鶏飯みたいなマイナーな料理だったら大量ヒットみたいなことにはならないけど(さっき調べてみたら全部で28件だった)、親子丼みたいなありきたりな料理だと膨大な数のレシピがヒットする(同1234件)。

プレミアム会員になると検索結果を人気順に並び替えることも出来るけど、非プレミアム会員には使いにくいのは否定できない。初めて来た人は「なんかレシピが探しにくいサイトだなぁ」という印象を持つんじゃないかな。

ぶっちゃけ僕はクックパッドはあまり利用しないです。Googleから直で料理名検索して適当にヒットしたサイトを参考に料理作ることが多い。クックパッドで良いレシピにたどり着くにはそれなりにコストがかかる。Googleで上に出てくるレシピのページははてブなりなんなりでそれなりの評価を集めているサイトだから、クックパッドの中でぐるぐる探し回るより楽。ググった結果、クックパッド内のページが上の方に出てくるんだったらそれを参考にすればよいですしね。

こういうのは日頃パソコンを使い慣れている人間の考えで、クックパッドには主婦に最適化された何かがあるのでしょう。材料で検索できて便利とか。毎日使ってたらはまっていくのかな。

料理作る人が減ったら

で、もう一個思うのが、日本人があんまり料理しなくなったらどうなるんだろうなー、っての。僕はだいたい朝8時過ぎから夜9時前後まで働いてますが、こんな働き方してて一人暮らしだったらまず自炊とか無理です。都会にはこういう生活してる人多いと思います。単身世帯とかあんま自炊しないだろうし、日本でどんどん単身生活者が増えていったら…。核家族化して専業主婦とかもどんどん減ってみんな外食やスーパーの総菜を食べるようになったら…。実際うちは両親共働きでばあちゃんも高齢だから、夕飯はスーパーの半額総菜みたいのが多い。うちがずぼらなだけかな。

ある日いきなり日本人が自炊しなくなるとは考えられないけど、自炊する人が減る可能性があることも考慮しなきゃいけないかもなー、と感じました。

蛇足

実はこの本、発売直後に買ってたんだけど、途中まで読んだところで放置してた。上の方にも書いてますけど内容がヨイショばっかりでアレな感じだったから。最近、37シグナルズの本を読んで感化されたので、「そういえばクックパッドもRailsな会社だったな」と本棚から引っ張り出して読み終えた次第です。

この本、dankogaiがレビューした直後はAmazonで売り切れてたし、37シグナルズの本も発売されてすぐはAmazonで売り切れてたけど、熊本の紀伊國屋では即ゲット余裕でした。地方住まいだとネットでの売れ行きと実店舗での売れ行きにタイムラグがあるので話題の本が楽々買えてた助かります。