おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

JavaScript: The Good Partsを読んでる

少しずつ(一日30分〜1時間くらい)読み進めています。

今日は4章を読んだのですが、サイ本だとわかりづらかったクロージャの概念がすんなり理解できました。
サイ本をざっと読んだ後にこの本を読むといいかも。

今週のEdge Rails

Riding Rails: This Week in Edge Rails

上記の記事を意訳したのでメモ。

トランザクションをネスト

  • トランザクションをネストできるように。
  • ネストする時は:require_newオプションが必要。オプション指定がないと親のトランザクションの一部と見なされる。
  • 内部ではsavepointsとかいうのを使ってるらしい
  • このトランザクションはテスト中のfixtureで使われてる?らしい
User.transaction do
    User.create(:username => 'Admin')
    User.transaction(:requires_new => true) do
      User.create(:username => 'Regular')
      raise ActiveRecord::Rollback
    end
  end
User.find(:all)  # => Returns only Admin

MemacheStoreのエンハンス

MemCacheStore使用時のパフォーマンスを改善

callbackを仕様通りに直した

ActiveRecordのドキュメントに「ActiveRecordbefore_*系のcallbackがfalseを返したら、その後の全てのcallbackとそれに紐づいたアクションはキャンセルされる。」と書いてあるけど現行バージョンではそれは動作しなくなっている。もしbefore_updateやbefore_createをキャンセルしても、after_saveは動いてしまう。2.3ではドキュメント通りになっている。

TimeWithZoneで小数秒

  • TimeクラスやTimeWithZoneクラスはxmlschemaメソッドを持つ。
  • xmlschemaメソッドXMLフレンドリーな文字列で時間を返すメソッド
  • 下記のように、xmlschemaメソッド引数で指定した値まで小数点以下を表示するようにした。
Time.zone.now.xmlschema(6) #=> "2009-01-18T14:12:56.935478Z"

jsonのキーを仕様通りに

  • json.orgには、キー値は文字列じゃないとダメと書いてある
  • そしてダブルクォートでくくれと書いてある。
  • なのでその通りにした。

2.2だとこう

{1=>2}.to_json #=> "{1: 2}"

edgeだとこう

{1 => 2}.to_json #=> "{\"1\": 2}"

テストのリファクタリング

テストをいろいろリファクタリングしたらしい

Object#tryを変更

Object#tryはこんなメソッド

def try(method)
  send method if respond_to? method
end

そんなObject#tryのふるまいをちょっと変えた

  • プライベートメソッドではNoMethodErrorに
  • オブジェクトがnilなら常にnilを返す

人力検索は技術系以外の質問した方が面白いのかも

今日なんとなく英語関連の質問をしたら丁寧な回答がたくさんついてびっくりしました。

日本ではとても大きな量を表すのに「東京ドーム100個分!」のような表現がよくされますが、 英米では「○○の何倍」という発想をあまりしないという話を聞きました。 英米.. - 人力検索はてな

僕は技術的なことを調べるのに人力検索を使うことが多いのですが、技術系以外で人力検索使った方が面白いのかもしれませんねー

面白法人カヤック会社案内を読んだ

カヤックが会社案内を書籍として出版しているのを知って、面白そうだなーと思って注文。そして読んだのでいつものようにメモです。

感想

会社の規則や仕組みってすごく大事だなーというのが全体的な感想です。

この本にはカヤックの一見風変わりな規則や仕組みがたくさん書かれています。例えば「旅する支社」と名付けられた臨時の海外オフィスや、「サイコロ給」と呼ばれる給料決定の仕組みなど。ぱっと見の面白さだけではなくて実際に効果もありそうだなーと思います。その中で僕が一番印象に残ったのが「スマイル給」と呼ばれる仕組み。これは、毎月ランダムで割り振られた社員の良いところを「○○給」の名前で評価し、理由を含めて公開する仕組みです。一部引用します。

・仕事直給 0円
「仕事に対してはとてもまっすぐだと感じます。誠実で妥協もなく力もすごく伸びているように見えます。プログラムの実装力が特にぐーんときていると思いますので、これからもいいところを伸ばし、すんごいプログラマーになってください。○○さんの仕事のまっすぐさを見習いたいと思います」

このように「仕組み化」することで、普段恥ずかしくて伝えづらいポジティブなメッセージを伝えやすくすることができますね!すばらしい仕組みだと思います。

会社の規則や仕組みは人間にとっての習慣のようなものですね。人が良い習慣を続ける事で成長できるように、会社は良い仕組みを作る事で成長できるはず。

面白法人カヤック会社案内
柳澤大輔
プレジデント社
売り上げランキング: 2845
おすすめ度の平均: 5.0
5 世の中、捨てたものじゃない。
5 こんなご時勢だからこそ「チャレンジする」価値がある!
3 漫画っぽい会社です
5 爽やかな「会社案内」
5 面白く働きたい!

文章をダメにする三つの条件を読んだ

僕のブログを定期的に読んでいる方は分かると思いますが、僕はおもしろい文章を書くことがかなり苦手です。既にある情報をまとめたりするのはそこそこ*1自信があるので、それを反映してか僕のブログのエントリは「なんとかを勉強した」「なんとかを読んだ」系のものばかりです。でも今年はもう少し気の利いた文章を書きたいなーと思っています。

そんなわけで「文章をダメにする三つの条件」という本を読んでみました。初心者が陥りがちな下記の三つの「文章をダメにする」 条件について、悪い実例と良い実例を交えながら、良い文章を書くためにはどのようにしたらよいかが書かれています。

  • 文章の意図がつかめない事実や印象の羅列
  • 読み手が退屈する理屈攻め
  • 読み手が興味を引かない一般論

気になったことのメモ

基本
  • まず書くことが大事。書きなれないとダメ。
  • お題から連想される事をメモに書き、それを眺めながら何を書きたいかの方向性を明確にする。
  • 真に書きたいことを書く。ポイントをぼやけさせる事は、たとえ面白い事であっても捨てる。
  • 私を前に出す。作文では主観を最優先すべき。
  • 読み手が求めているのは書き手の特異体験 -> 日常の鋭い観察が文章を面白くする。
応用
  • 異質な二つの物事を付け合わせて、巧みに第三の味を出す事で、読み手に「ちょっと変わった」感じを抱かせる
  • 書く対象との間に距離を置き、客観的に捉える。
    • 「花は美しい」と主観的に説明する代わりに、「なんの花がどのような状況の中で咲き、花の色と香りがどんな風にうまく調和しているか」などを細かく客観的に描写すればするほど、花の美しさは、読者に伝わってくる。

参考

文章をダメにする三つの条件 (丸善ライブラリー)
宮部 修
丸善
売り上げランキング: 152115
おすすめ度の平均: 4.0
2 「一夜漬け文章教室 (PHP新書)」のネタ本
4 全く同感です
5 むしろ、読み取り
3 文章?
5 【まずい文章書かないための、文章テクニック】

*1:おもしろい文章を書くのにに比べればですが・・・