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

MephistoでGoogle Analytics使おうと思ってググったら Ruby on Rails Plugin: Google Analytics (blue egg edition) - artweb design というのが出てきたので、早速インストールしてみたんだけど動いていないっぽい。

Mephistoは「rails blog」でググって一番上に出てきたので深く考えもせずにインストールしてしまったんだけど、一年近くバージョンアップされてないし、いまはあんまり活発に開発が行われてるわけじゃないっぽいな。

追記

一晩寝て起きたら動いてた。

| @映画/ドラマ/テレビ

しあわせの隠れ場所

評価 : ★★★★☆

あらすじ

家庭崩壊してる貧しい黒人の少年マイケル・オアーが、裕福な白人家庭に養子として迎え入れられ、アメフト選手として大成する話。マイケルが一時的に身を寄せていた自動車整備工場のおっさんが、自分の子どもをカトリックの名門校に入れるために、「マイケルをアメフト選手にしたら将来有望だぜ。だからうちの息子と一緒に入学させてくれよ」と高校のアメフト部のコーチに持ちかけるところから話が始まる。しかし白人だらけの高校にうまくなじめず、下宿先のおばさんにも疎まれマイケルは肩身の狭い思いをする。寒い冬の夜に半袖短パンで路頭に迷っているところに通りかかったリー・アン・テューイ(サンドラ・ブロック)が見かねて家に泊めてあげるところから話は進んでいく。実話がベースらしいです。

ベタな感動作品だけどとても良かったです。『きみに読む物語』とか『私の中のあなた』的な良さがあります。金持ちな白人が貧しい人を助けるっていう話だと偽善っぽさが出てくるんだけど、サンドラ・ブロックが肝っ玉母さんを好演してて、偽善っぽさがあまり漂ってないです。

ぐっと来るのがマイケルが遠慮するところ。サンドラ・ブロックは最初マイケルを家に泊めたときに警戒するんだけど、朝起きてみるとマイケルは礼儀正しくてきれいにふとんをたたんでひっそり屋敷を出ていこうとする。テューイ家で暮らすようになってからも、サンドラ・ブロックのことをミセス・テューイって呼んで「そういうよそよそしい呼び方はやめなさい」って注意されたり。お互いが手探りでじわじわと心の距離を詰めていくところが良かったです。

サンドラ・ブロックが金持ち奥さん達とのランチで、黒人や貧しい地区に住む人たちのことを馬鹿にする連中に向かって "Shame on you" って言うシーンはさすがにやり過ぎというか偽善なオーラが漂ってたけど、最初はマイケルのことを馬鹿にしてた高校のアメフト部のコーチも、試合で白人の審判がマイケルに不利な判定をしたときに「この人種差別野郎!」と食ってかかるところなど、周囲の白人たちの意識が変わっていく感じがさわやかでした。

裕福な白人が貧しいマイノリティーを助ける映画では、去年『路上のソリスト』を見たんだけど、あれは金持ち白人のオナニーストーリーという感じであまりさわやかさがなかった。しかしこの映画はマイケルも白人達も一緒に成長して家族になっていくという一体感があって、そこが良かったのではないかと思います。サンドラ・ブロックの行動力あふれる感じもプラスに作用。

蛇足になるけど、僕が陰ながらいいなぁと思ったのが、一家の大黒柱ショーン・テューイ。リー・アンに黙って、高校にマイケルの緊急連絡先をテューイ家にするなど頼りになるパパぶりが男前でした。やっぱ男は金だなーと見ながら思った。扉をたたく人という映画で、チュニジアからの移民のために大学教授が手をつくすのを見ても思ったけど、人生には金がないとどうにもならない局面がたしかにあって、そういうときにさらっと金を出せるのが男のかっこよさだなと思った。僕もあと15年後くらいにはそういう金を持ったかっこいいおっさんになっていたいです。

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

『RailsによるアジャイルWebアプリケーション開発 第3版』を読んでいます。第10章まで終わったところです。

(Railsに大きく影響を受けている)CakePHPをやったから、Railsをまっさらな状態から学ぶよりも理解は速いだろうと思っていましたが、そうでもない感じです。なかなか苦戦してます。

一言でいうと、RailsはCakePHPとかなり違う。Cakeは Model->Controller->View の流れというか構造がすっきりしてた。例えば posts というテーブルがあれば、Post ModelがあってPostsController があり、ViewにはControllerのメソッドに対応するものがあるという感じです。

しかし『Railsによるアジャイル…』では平気で同名のテーブルをDBに持たないModelやControllerがあったりする。こういうのが混乱します。CakePHPではDB使わないときはわざわざModelに

<?php
class Hoge extends AppModel {
    var $useTable = false;
}
?>

やControllerに

<?php
class HogesController extends AppController {
    var $uses = array();
}
?>

とか書いてあげなきゃいけないのに。

ほかにも基本的にCakePHPではModelのなかでControllerから参照するメソッドを定義したりはしなかったんだけど、Railsではそういうやり方が多い。ModelはDBとのやりとりを定義するためだけの場所ではないっぽいです。逆になんで全部Controllerでメソッドを定義しないのか分からない。率直に言うと気持ち悪かったりします。全部Controllerに書いて、ModelではValidationとかだけやるようにした方がすっきりして見通しが良いと思うんだけどなぁ。

とここまで書いて気がついたんだけど、ModelでもActiveRecordを継承しないやつがあるわけか。よくコードの一行目を読むと、

class Cart

なやつと、

class Order < ActiveRecord::Base

なやつがある。なるほどそういうことだったのか。

こんな感じで前途多難ですが、Railsが出来るっていうとやっぱなんとなくかっこいいので頑張ろうと思います。

| @読書

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

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

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

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

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

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

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

レシピの増加

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

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

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

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

料理作る人が減ったら

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

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

蛇足

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

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

| @Mac/iPhone

なんか一個前の記事でTextMateマンセーみたいな記事を書いてますけど、Coda悪くはないです。というか素晴らしいです。

特に良いと思うのが、FTPクライアント機能を内蔵してるところ。普通のFTPクライアントでちまちまファイルを上げる作業は結構面倒くさいです。特にサーバーのタイムゾーンの設定がローカルのタイムゾーンと異なってたりすると、FTPクライアント上で表示される最終更新時刻が全然あてにならなくてどのファイルをアップロードすればよいのか分からなくなります。こういうとき、Codaでファイルを編集していると非常に幸せになれます。

Codaには「サイト」という機能があって、ここにFTPの情報を登録しておくとグラフィカルな感じで一覧表示してくれて、非常にシャレオツです。

1120_Coda_1.png

例えばいまサイトからportal shit!を開いたとします。するとこんな感じになる。

1120_Coda_2.png

www.portalshit.net にFTP接続しています。サイドバーに「ローカル」と「リモート」とあるのが分かるかと思います。「ローカル」を選ぶとローカルのファイルを編集でき、「リモート」を選ぶとリモートのファイルを直接編集できます。

1120_Coda_3.png

ローカルの index.php を適当に編集してみましょう。

1120_Coda_4.png

するとこんな感じで編集中のファイルには印がつく。でもまぁこんなのはよくある機能です。Codaが便利なのはここからで、ここでローカルのファイルを保存するとファイル名の横に矢印がつきます。

1120_Coda_5.png

index.php の横に矢印がついています。この矢印をクリックするとローカルで編集したファイルをリモートにアップロードしてくれるのです。これが便利。どのファイルがローカルで更新済みでどのファイルをリモートにアップロードすべきかが一目瞭然です。

加えて、「削除」「すべてを公開」なんてのが index.php の下部にありますが、こいつもすこぶる便利なんです。例えば index.php の他に複数のファイルをローカルで更新したとする。全部アップロードしなければならないのですが、ディレクトリを複数またいでいると面倒くさかったりする。しかしCodaの「すべてを公開」という機能は、矢印付きのファイルをアップロードしてくれるのです(「削除」を押すとすべての「矢印」を削除します)。非常に賢いですね。

こんなに便利なのになぜRails書くときはTextMateを使うのか。Bundles機能が便利だとかいろいろ理由はあるんですけど、このFTPクライアント機能はRails向きじゃないんですよね。Ruby on RailsはWEBrickという開発サーバーをローカルで起動してそこを見ながら開発していくので、HTMLなどの静的ファイルをぽんぽんサーバーにアップロードしていくのとは事情が異なる。CakePHPはPHPが動くなら素のApacheでテストできるので(Passengerとかいらない)、Codaで作業しながらぽんぽんアップロードしていっても問題ないわけです。だからCodaがベストマッチだった。BakeするときくらいしかTerminal.appは使わないし。

まとめると、Codaは非常に素晴らしいテキストエディターだとは思いますが、HTMLのマークアップやJavaScript、PHPなどのプログラミングには向いているものの、ハードにごりごりプログラムを書く用途には現状あんまり向いていないと感じます。もうちょいプログラマー向けに進化したら(Terminal機能を内蔵するのではなく、Terminal.appとの連携やフレームワーク特有のコマンドのサポートなど)、とても良いのではないかと思います。

しかしHTMLやCSS書くのがメインで、ときどきPHPも触るみたいな方には打って付けのエディターだと思います。$99の価値はあると個人的には感じます。

| @Mac/iPhone

CakePHPとかRailsでサイトを作るときはModel View Controllerを頻繁に行ったり来たりします。Vimは確かに素晴らしいのですが、複数のファイルを一括で開いてあちこち編集するのはさすがに苦行に近いものがあります。CodaとかTextMateはサイドにDrawerがあってファイルをブラウズしながらタブでじゃんじゃんファイルを開いていけるのでかなり便利です。Codaの例ですが、こんな感じ。

1119_coda_1.png

CakePHPでなんか作ってるときはCoda一辺倒でした。とにかく使いやすい。タブ機能だけじゃなく、ファイルを「分割ウィンドウで開く」という機能があって、例えばModelを左に、Controllerを真ん中に、Viewを右に開いて各々を突き合わせながらコードを書くことができます。

1119_coda_3.png

この機能は重宝しました。こんな感じ。

1119_coda_2.png

RailsもCodaで書こうかと思ったんだけど、弱点がある。それはRuby on Railsのシンタックスに弱いことです。まったく対応してない訳じゃないけど、.html.erb形式のファイルの色分けがいけてない。メソッドの補完とかは結構やってくれるんだけど、それよか他にやることあるんじゃね? って感じですね。

結局、RailsはTextMateで書くことにしました。

TextMateのなんとも素晴らしいところはBundles機能。これすごいですね。いま開いてるファイルのViewやModelにBundlesメニューから一発で飛んでけたり。

あとTermina.appとの連携とかKey Bindingsとか。これでマルチバイト文字にネイティブで対応してくれてたら言うことなしなんだけど。

| @読書

Ruby on Railsの生みの親、デイヴィッド・ハイネマイヤー・ハンソンの勤務先37シグナルズの本。CEOのジェイソン・フリードとデイヴィッドの共著です。とても共感しながら読むことが出来ました。個人的に響いた部分を箇条書き。

計画をやめる

  • 計画を予想に言い換える。誰にも未来のことを計画するなんて不可能。
  • 計画はあらかじめ立てるのではなく、やりながら立てる。やっていないと情報が集まってこない。

最適な規模

  • 無意味に拡張しない。規模の拡大はコストも増やす。
  • 働きすぎるのは馬鹿。ヒーローになるな。

自分たちが必要なものをつくる

  • 37シグナルズの Highrise は自分たちが必要性に駆られて作った。

まずつくる

  • アイディアは実行しなかったらアイディアのまま。
  • 金がないとか時間がないとか言い訳にならない。ベストな状態で始められることなんてない。本当に実現したいことだったら金や時間は自分で工面をつけるもの。

金を借りない

  • ウェブサービスとかは特に金が必要ない。
  • 他人の金が入ると感覚がおかしくなるし、長期的な視野を持てない。

なんでもまず自分たちでやる

  • 会社の規模はコンパクトに維持し続けるべき。
  • まずなんでも自分たちでやってみる。できなかったら人を雇う。

スタートアップという意識を捨てる

  • スタートアップには甘えがある。
  • 他人の金で好きなことをやるなんて幻想。
  • 最初から利益の出せる企業を目指すべき。
  • exitのことを考えるとユーザー本意のサービスが作れなくなる。

制約を利用する

  • 優れた作家は制約のもとで創作していた。シェイクスピア、ヘミングウェイ、カーヴァー。
  • 一度にサービスに携わる人間は一人か二人に限定し、機能は絞る。
  • 芯から作り、本質的でない細かい部分は後回しにする。

副産物

  • 企業は自分たちが気づかないうちに副産物を生産している。木工所はおがくずを売った。37signalsはGetting Realという本を副産物として売った。

すぐリリース

  • 不完全な状態でも最低限な条件をクリアしたらすぐにリリース。

会議をやるやつは馬鹿

  • 会議は時間の無駄。やっても7分。
  • 会議には準備が必要だが、十分に準備することは不可能。
  • 1時間の会議に10人が参加したら、10時間の生産性が犠牲になる。会議にそんな価値はない。
  • 会議は新たな会議を生み出すだけなので不毛。

一人で作業する時間をつくる

  • 電話とかメールとかシャットアウトする時間を作らないと生産性は上がらない。
  • せめて一日の前半か後半のどちらかは一人作業モードに設定すべき。
  • 連絡手段は電話やチャットなど即時対応式のもではなくなるべくメールにする。

そこそこの解決策

  • 完璧な解決を求めようとしない。そこそこの手段で済む問題にはそこそこの解決策を。問題があれば後から良くすればいい。

タスクは分割する

  • 長大なタスクリストは気が滅入るだけ。
  • 100のタスクを10ずつに分解すれば心理的に楽になる。

はまったら人に見てもらう

  • 意固地になって無駄に時間を費やすとコストに見合わなくなる。
  • はまったら他の人に冷静な視点でレビューしてもらう。

寝る

  • 睡眠不足は創造性を損なうし、士気が低下する。間違いも犯しやすくなり、他人に不寛容になる。いいことは一つもない。

真似ない

  • コピペコードは理解が伴わないから、いつまで経ってもオリジナル作者にかなわない。

社員が一緒の国に住んでる必要はない(デイヴィッドは入社当初はまだデンマークにいたらしいです)とか他にも面白いところもあるんだけど、英語がしゃべれないとこの辺は僕らには当てはまらないですよね。あと会議を極力しないってのは理想だと思うけど、受託開発というかホームページ制作みたいなお客さんがいる仕事してたら打ち合わせはしないといけないわけで、なかなか難しいでしょう。

でも電話や会議などは確かに生産性を損ねていると思う。電話なんていきなり日常業務に割り込んでくるわけだから。電話は予約制にして欲しい。何日の何時に電話したいのでお願いしますみたいな感じでメールしろや。

雑談の排除とかも大事ですよね。僕はなるべく仕事中は雑談しないようにしてる。だからといって生産性が高いかと問われれば疑問なんだけど。でも雑談とか会議とか打ち合わせとかやって仕事した気になってる人は多いと思う。例えばこの本では人の雇い方のパートで、仕切り屋を雇うなみたいなことが書いてある。仕切り屋は会議好きで、自分の仕事を作り出すために会議を開きたがる。まったく何の価値も生み出さないのに、会議に参加することで会社に貢献しているふりをするわけですね。こういうのは本当に最悪。

37シグナルズの発想は、ピュアに作り手だけで会社を動かそうという風に読めました。広告とか営業とか意味ないというか、頼りにしないという考え方。本当に良いものを作って自分たちのファンになってもらえたらサービスを使ってもらえるようになる。特にウェブサービスとかはそうですよね。広告とかPRとかは金ばかりかかって効果がないということに気づかないと。有名な雑誌や新聞に取材してもらうことも否定していますが、折角ユーザーと直接結びつけるのがウェビサービスを提供する企業のメリットなんだから、そこにいちいち旧メディアや広告屋を介在させる必要はないですよね。またセールスマンを省きサポートも極力エンジニアが行うことで顧客の要望が直に作り手のところに伝わる(とはいえ本書では逆に顧客の要望には応えすぎるなとも書かれてはいます。その辺は買って読んでみてください)。

シンプルに、極力自分たちで会社を動かそうとすることで、大企業が抱えるいろんな問題が回避できるというのがこの本のエッセンスでしょう。Railsはお触り程度のことしかやってないですが、CakePHP(RailsのPHP移植版)越しにそのすさまじさというかすごさは実感しています。こういうすごいフレームワークがあるいまは、本書で掲げられていることは単なる理想や夢物語ではなく十分実行可能なものであると感じます。自分たちだけでなにかをやることが十分に可能。

とにかくなにかつくってみよう、と思わせられる本でした。Ruby on Railsの勉強を本格的に始めてみたいと思います。