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

ポータルシットに前も書いたけど、CakePHPの命名規約ではDBにusersというテーブルがあれば、モデルクラスにUser、コントローラークラスにUsersController、viewsディレクトリにusersっていうのが存在するのを前提とする。これに慣れてしまっているので、Railsのやり方にはなんか慣れない。ModelでPeople、コントローラーでUsersControllerとしてても問題ナッシングなわけだ。むしろRailsではこういうのが普通? Rails使っててCakeをちょこっと触った人のブログにこういう感想があった。

コントロールとモデルが密すぎる。

CakePHPは、コントロール名とモデル名が密接すぎる関連を持っています。PostsControllerというコントロールを作ったら、必ずPostというモデルが存在しないと「モデルが見つからないエラー」になる。

Blog-side CakePHP わかりずらい3点

ふむふむ〜、ナルホディウスですぞ〜!!!

確かにCakePHPはモデルとコントローラーがガチガチになってて、あるコントローラーが他のモデルクラスにアクセスするときはいちいち

$use = array("Hoge");

とかしなきゃいけなかった。

最初の頃はモデル、コントローラー、ビューですべてが一対一に対応してるのですんなりMVCの流れを理解できたんだけど、今にしても思えばこういう考え方はすべてのコントローラーに対応するモデル(つまりDBテーブル)がなければならないというしがらみというか束縛を生じさせる。これでは自由な発想で開発できないし、下手をすると一つのコントローラークラスに大量にメソッドを書いてしまったりして、非常にメンテナンス性の良くないコードを量産してしまう公算がある。本当は機能ごとに細かくクラスは分けた方がいいはずだし、メソッドが一つしかないコントローラークラスがあっても良いはずだ。

そういうわけで、はやくこの辺のCake流の思い込みを排除して皆と同じようにrailsの手術を受けたいです。

| @音楽

Curly Giraffeが熊本に来たので見に行ってきました。4月に出たアルバム『Idiots』のツアーで、主要都市しか回らないのになぜか熊本にもやってきた(しかも人がたくさん入るであろう福岡公演は日曜なのに土曜に熊本でやってくれた)のでここぞとばかりに見てきました。Curly Giraffeは2007年にiTunes Storeの今週のシングルで知って好きになり、いつかはライブを見たいと思っていたので見られて良かったです。

感想ですが、全般的にお客さんに若い人が多かった。20台前半の女の子とか。あとシャレオツな人が多かった。フレンチマリンボーダーシャツとか着てる感じ。もちろん禿げてる男とかいなかったし、道に迷ったため走って向かった僕は一人汗だくで完全に浮いてました。

一人で車を運転して行ったため酒を飲めなかったのが非常に残念でしたが、演奏のクオリティが高かったのが印象的でした。サポートのバンドメンバーが豪華で、堀江博久さん(NEIL&IRAIZAの人でコーネリアスのサポートメンバー)や名越由貴夫さん(CHARAの曲のギター弾いてる人。スワロウテイルとかの曲のギターも弾いてたそう)などなど、知ってる人だったらびっくりするようなメンツだったみたいです。僕は全然知らなくて、家に帰ってからネットで調べて「あー、有名な人たちだったんだー」と知った次第です。とにかく演奏のクオリティが高かったからただもんじゃないなとは思っていた。

Curly Giraffeこと高桑圭さんは割りに良く喋る人で、バンドメンバーと漫談っぽい話を交えながら歌ってくれました。シャレオツ女子たちが狂喜乱舞してた。

iTunesでダウンロードして以来、200回くらい聞いているであろう “Chaos” を生で聞けて感激でした。また機会があったら見に行きたいです。

CHARAとか木村カエラとかCoccoとかLOVE PSYCHEDELICOとかがCurly Giraffeの曲を歌って、(多分)このバンドのメンツが演奏してるセミセルフカバーアルバムがいい感じです。Coccoの歌う “My Dear Firend” や “Tricky Adult” 、平岡恵子(名越由貴夫さんの嫁さん)が歌う “You Just Swept Me Off My Feet” はオリジナルと違った優しさがあってとても良いです。

| @WWW

まさか自分がこの手の被害に遭うとは思ってなかったんだけど、日曜日にSkypeアカウントが乗っ取られてログインできなくなり、少額だけどSkypeクレジットが知らない外人に使われてた。

ことの経緯

日曜未明、Skypeからメール送信されてた。メールは以下のような内容だった。

  • Auto-Rechargeを有効にしてくれてありがとう。Skypeクレジットが300円以下になったら自動的に3500円チャージするよ。
  • Skypeクレジットの通貨が円からUS$に変更されたのでお知らせしときます。

Auto-RechargeはSkypeクレジットが残り少なくなったらオートチャージする機能。使いすぎて危ないので普段はオフにしてる。Skypeは数日使ってなかったのでおかしいと思い、日曜の昼間にSkypeにログインしてAuto-Rechargeを無効にしようとした。

が、「パスワードが違う」と出てログインできない。しょうがないのでパスワードの再設定を行おうとしても「内部エラーが起きました」と出る。この時点ではアカウントが乗っ取られたと思いもよらなかったんだけど、どっかの外人が乗っ取ってすでにパスワードを変更してたみたい。

パスワードの再設定トークンの発行回数が上限に達したため、「一時的なエラーでも起きてるのかな」と諦めて翌日もう一度パスワードの再設定を試みることにした。

結局月曜日になっても内部エラーが出続けるので、Skypeのサポートに問い合わせてみた。するとすぐ返事が来て、

It seems that a third party might have gained access to your account. To ensure that you are the only one who can access your account, we advise you to change your password as soon as possible.

この時点で初めて誰かに乗っ取られたんだということに思い至った。サポートの人がアカウントをロック(Skypeクレジットを使えない状態)して、僕がパスワードを再設定をできる状態にしてくれたので、新しいパスワードに変更してログインしてみると、通話履歴にインドネシアへの発信記録が。

1135_skype_account_hacked.png

正直なところ、いつどのタイミングでパスワードを盗まれたのか分からない。Skypeを騙ったメールとか届いてないし、WebからSkypeアカウントにアクセスするのはSkypeクレジットをチャージするときくらいなので、怪しいサイトにIDとパスワードを入力した覚えもない。

しかし「自分は情報弱者じゃないからフィッシングには引っかからないよ」とか「Mac使ってるから安全なはず」みたいな油断というか慢心があったのかも。

金銭的な被害は200円くらいだけど、すごく気持ち悪い出来事だった。と同時に、セキュリティの重要性が身にしみて分かった。Skypeのサポートはオートリプライメールとかじゃなくて迅速に対応してくれたけど、なんかしばらくSkypeは使いたくなくなってしまった。

| @旅行/散歩

病院があったので五月の第二週に関西をうろついてきた。

5月の京都はとても良い。あんまり込んでないし。たしかに秋の京都の紅葉は美しいが、あまりに人が多すぎる。それよりは5月の新緑をゆっくり眺めるのが良い。もみじの新緑が非常に美しく、また気候も暑くもなく寒くもなく、町歩きにちょうどいい。

今回は初めて神戸にも行ってみた。山と海が近くて、九州でいうなら別府に地形が似てると感じた。独特の街並みが印象的で、一度泊まりがけでゆっくり観光してみたいと思った。

神戸はTwitterで知り合った青木ヨーマさんに案内してもらった。三ノ宮から新開地というところまで歩いて、競艇だか競輪だか風俗だか帰りのおじさん達に混じって、昼間から安い飲み屋でビールを飲んだ。若いヤンキーっぽい感じの女の子たちが給仕をしていて、接客されてるっていうより説教されてるみたいな感じ。いちいち恐縮しながら注文した。

この店は基本的におじさん達が友達同士でやってきて(女性客はほとんどいない)、ギャンブルの話なんかをしながら飲んでるんだけど、なかには一人でやってきて、競馬中継をラジオで聞きながら、あるいは文庫本を読みながら独酌するおじさんが何人かいてすごくクールだった。30分くらいいてほろ酔いになったらささっと出ていくの。とてもかっこいい。自分ももう少し歳をとったらこういう酒の飲み方をしたいと強烈に思った。

以上、とりとめがないけど五月に関西に行った話。

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

この前大阪で第二回アメ村ブルゾンの会をやったんですけど、そこで日夜ネットストーキングプログラミングにいそしんでおられる皆さんとお会いして、TwitterのStreaming APIの使い方を教えてもらいました。なんか自分でやろうとしてたんだけど、全然見当違いなところを見ていたみたいで、僕もStreaming APIでネットストーキングできるようになりました。pokutunaさんにもらったコードと "Twitter Streaming APIをRubyで試してみる - しばそんノート":http://d.hatena.ne.jp/shibason/20090816/1250405491 を参考に、以下のような感じにしてみました。

#!/usr/bin/env ruby
# coding: utf-8

require 'net/http'
require 'uri'
require 'rubygems'
require 'json'

USERNAME = 'morygonzalez'
PASSWORD = '***'

uri = URI.parse('http://chirpstream.twitter.com/2b/user.json')
begin
  Net::HTTP.start(uri.host, uri.port) do |http|
    request = Net::HTTP::Get.new(uri.request_uri)
    request.basic_auth(USERNAME, PASSWORD)
    http.request(request) do |response|
      raise 'Response is not chunked' unless response.chunked?
      response.read_body do |chunk|
        #空行は無視
        status = JSON.parse(chunk) rescue next
        #eventを含まないものは無視
        next unless status['event']
        source = status['source']
        if status['target_object']
          target_obj = status['target_object']
          target_user = target_obj['user']
          puts "#{status['event']}: #{source['screen_name']} -> #{target_user['screen_name']}: #{target_obj['text']}"
        elsif status['target']
          target = status['target']
          puts "#{status['event']}: #{source['screen_name']} -> #{target['screen_name']}"
        end
      end
    end
  end

rescue Timeout::Error => ex
  p "<-----!!!! Timeout::Error!!!!----->"

  retry
end

教えてもらったコードではTweetの内容を垂れ流しにするやつだったんですけど、自分でちょこっといじってTweet以外のステータスを表示するようにしてみた。しかしなんか調子悪いっぽくて、完全にはStreamを取れてないっぽいです。

でもまぁ一歩前進したことは確か。Rubyがんばるぜ。

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

ちょっとCakePHPで作ってるサイトでRSSフィードを配信したいと思ったのでやってみたんだけど、思いの外面倒くさくてびっくりした。『RailsによるアジャイルWebアプリケーション開発』を読みながらRails 2.3.5でRSSフィード作るときは結構簡単だった気がするので、正直これはないわと思った。

『Railsによる〜』で作ってるデモプロジェクトのdpeotのコードを見てみると、RSSを配信するときはControllerに以下のように記述し、

respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :xml => @products }
end

config/routes.rb

map.connect ':controller/:action/:id.:format'

と書いたあと、RSS用のViewを用意してやるだけだ。ものすごくシンプルで簡単だった。

CakePHPで同じことをやるためには以下の手順が必要。

ちょっと面倒くさすぎてやる気にならなかった。どうせいま僕が作ってるサイトなんてRSSリーダー使うような人が見るサイトじゃないし、フィード配信機能の実装はそんなにプライオリティ高くないので他にやることがなくてどうしようもなく暇なときにでもやろう。

Railsは最初のとっかかりのハードルは高いけど、使い方を覚えていったらやっぱりCakePHPとかよりも全然簡単かつ高速に開発できる気がする。レールに乗ってる感強い。このMephistoの設置もすごく楽だった。ただTerminalを使い慣れた人や、サーバーにSSHでアクセスできる環境じゃないとRailsアプリケーションを使うのは難しい。CakePHPは反面、全部FTPでアップロードすれば良いのでサーバーに標準的な構成でPHPがインストールされてりゃ環境構築でつまずくことはない。どっちをとるかって話ですよね。

僕はファッションの観点からRailsを選びたい。

| @雑談

OSTERIA Fridge

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