Iwazer Report http://www.iwazer.com/~iwazawa/diary/ プログラミング、書籍紹介、音楽、Webに関するあれこれなどを中心に書いています。 en-us 2007-12-16T02:09:27+09:00 久しぶりの休日 http://www.iwazer.com/~iwazawa/diary/archives/003264.html 本当に久しぶりの休日だった。 次はいつ休めるかといった状況ですが、なんだか延々と仕事をしている時の感覚は、変な高揚感というか、ぶっちゃけ快感を感じる気がするのですが、そんなことはありませんか?そうですか。 高校で中距離の陸上選手をやっていた頃、何度かランナーズハイを体験したことがあり、アレに似てるような似てないような(笑) そういうときに下手に休むと経験上、調子を崩す事も多く気をつけねばなりません。今日も(寝過ぎという説もあるが)、最近止っていた頭痛が復活して、嫌な感じであります。 なのでゆっくり風呂に入って体を温めてから今読ミの開発を久しぶりにやっておりました。やはり楽しい趣味の開発。 また明日から仕事仕事の毎日ですが、アクセル全開で行きます。... 日記 iwazawa 2007-12-16T02:09:27+09:00 MTOS: Movable Type オープンソース・プロジェクト http://www.iwazer.com/~iwazawa/diary/archives/003262.html なんですと! 明日は3週間ぶりに1日休めるというわけで、少々夜更かしを体に許して貰ってRSSを消化したりしていたらら、 MTOS: Movable Type オープンソース・プロジェクト なんだか、いろいろ少しずつかじっては、結局イマイチな雰囲気でブログツールの移行に踏ん切れなかったのだが、やっぱりMTかな。... Blogツール変更作業 iwazawa 2007-12-15T02:38:08+09:00 Ruby on Rails 2.0 http://www.iwazer.com/~iwazawa/diary/archives/003251.html ついにRails 2.0がリリースになったようです。 あぁ、時間が欲しいなぁ。そうしたら今読ミを2.0化するのに。 昨日書いたiTunes Music Storeアクセス不能は直ってました。... Ruby on Rails iwazawa 2007-12-08T02:01:24+09:00 iTunes Music Store http://www.iwazer.com/~iwazawa/diary/archives/003249.html なんか、ログインできなくて、iTunes Music Storeで買った曲が聴けません(死) パスワードを勘違いしているのかと、確認のボタンを押したらApacheがエラー… どうなっているのでしょう? しかし、眠い。最近は忙しすぎだ。そんなわけで寝ます。... iwazawa 2007-12-07T01:55:32+09:00 今の会社の最大の弱点は http://www.iwazer.com/~iwazawa/diary/archives/003236.html 今の会社の最大の弱点を上げるとすると、コーヒーサーバーがないこと。 次点がスーツ着用か。 まぁ、つまらないことだが(笑)... iwazawa 2007-11-25T01:09:32+09:00 これからの機能追加予定です http://www.iwazer.com/~iwazawa/diary/archives/003228.html なるべく急いで・livedoor認証対応 ・OpenID対応 ・タグクラウド、タグ検索 ・RSS配信 ・フッターにもメニューを ・サイドバーにいろいろ出す ちょっと先送り・「欲しい!」状態を携帯ブラウザからチェック&買ったらそのまま「所有」に変更機能 ・入力をもっとかっこよく ・入力をもっと便利に。Greasemonkeyとかブックマークレットとか ・どのページでも自分の表示は編集可能に 将来的に実装したい機能・シリーズ登録機能(だれかがシリーズに登録すると、まだ読んでない人にお知らせ) ・招待機能。なんかSNSぽい。でもいらないかな ・Web2.0らしくAPIの公開。できるかな?... imayomi iwazawa 2007-11-18T03:30:20+09:00 ひっそりと告知してしまおうか http://www.iwazer.com/~iwazawa/diary/archives/003227.html 今年のゴールデンウィークから、ちょっとずつ作ってきたWebサービス「今読ミ imayomi」。URLは超シンプル。imayomi.jp どういうのかというと、「今、こんな本読んでるよ!」とアピったり、最近読まれているのから面白そうな本を見つけたり、そんなサービス。 まだ私の知人に試しに使って貰ってるだけの状態ですが… 最新のimayomi 私の最近読んだ本 これで、ほぼ全機能だったりします。目指すは簡単だけど、なんか面白い。 内部はと言うと Amazon完全異存体質。 うわさの簡単フレームワーク、Ruby on Railsでも初めて作ると大変だった。 DBは普通にMySQL。 デザインはhachimituさん ただし今のところかなり貧弱なインフラで稼働しているので、まだ本当にひっそりとした告知にとどめないと危ないといった案配です。 このエントリーを見つけた、あなた、試しに使ってみていただけないでしょうか。... imayomi iwazawa 2007-11-18T03:24:10+09:00 なぜ、家で勉強がはかどらないのか? http://www.iwazer.com/~iwazawa/diary/archives/003219.html RSSを消化していてなぜ、家で勉強がはかどらないのか?というエントリーが紹介されていた。 なるほど確かに周囲の目があると捗るのは真実だと思う。 勉強というのではないが、私は今、Webサービスを家で一人でコツコツ作っているのだが、途中、全く捗らない時期があった。作り始めた当初は知らない技術(今回はRuby on Rails)を使ってて楽しいというのがあってモチベーションは高いのだが、ある程度分ってくると、一つのサービスを作り上げるのはそれなりにしんどくなる。 9月くらいに、ほんとにとりあえず動くようになった状態で、知人に試してもらったり、仕事の関係で知り合って仲良くなったデザイナー(本職は違うそうですが…)にデザインして貰ったりすると、成果がまだ少人数だが人の目にふれるようになり、俄然やる気が増したわけです。また、ドメインを取ってみたりするのもモチベーションアップに貢献。 Webサービスは簡単に公開できて見てもらえる。直接的な人の目がある環境での作業ではないが、自分の分身であるシステムが見られているわけで、同様の効果があるのだと思った次第なのです。... Webチェック iwazawa 2007-11-11T18:08:43+09:00 Migration中にデータをあれこれ http://www.iwazer.com/~iwazawa/diary/archives/003218.html 先日の条件付きテーブル間リレーションシップの続きであります。 Migrationはこんな感じか。 class CreateComments ["comment is not null AND comment != ''"]).each do |book| cmnt = Comment.create(:book_id=>book.id, :content_type=>1, :content=>book.comment) end remove_column :books, :comment add_index :comments, [:books_id, :content_type] end def self.down add_column :books, :comment, :text Book.reset_column_information Comment.find(:all, :conditions=>["content_type=1"]).each do |cmnt| book... Ruby on Rails iwazawa 2007-11-10T22:55:09+09:00 やっぱりiPodの認識が速い http://www.iwazer.com/~iwazawa/diary/archives/003216.html 数日前に書いたiPodの認識が遅くなったのはmixi stationのせいだったの結論を申しますが、あれ以来、確実にiPodの認識が速くなりました。速くなったというか繋ぐと即座に認識してくれます。 まぁ、本来の姿に戻ったのでしょうが、ずっとiTunesの改悪だと思っていたわけですから、Apple様には申し訳ないことです。 つないでも、なかなかiTunesがiPodを認識せずイライラしている方、mixi stationが入っていたら、そいつが犯人ですよ!... iwazawa 2007-11-10T22:21:52+09:00 条件付きテーブル間リレーションシップ http://www.iwazer.com/~iwazawa/diary/archives/003209.html 関連付けるテーブルは同じなのだが、条件によって別のオブジェクトとして関連付けるレコードを決定する方法がないか探してみた。 具体的に言うと、現在、次のようなテーブルがあって、 create table books ( id int(11) not null auto_increment, title varchar(255) default null, comment text ) 本のタイトル(簡単のために本の情報をタイトルだけとしている)とコメントが格納できます。ここでコメントの種類が増えて、ネタばれコメントを追加したくなったとする。 一番素朴な方法は、booksテーブルにnetabareカラムを直接追加してcommentカラムと同じ様に持てばいいわけだが、そもそもコメントは本の情報ではないし、ネタばれコメントにいたっては更にそうだ。 そこでコメントを別テーブル化したくなる。 class Book とかするわけであるが、これだとモデルクラスとテーブルが2つ増える。 コメントとネタばれは、ユーザの用途は違うがDBに持つ情報としてはほぼ同じであるので、commentsテーブルは共通にできないだろうか。 has_one, belongs_toのリファレンスを見ると、その為に使えそうな:conditionsというオプションが存在した。 commentsテーブルは共通とし、comment_typeというカラムを用意し、これが1の場合、通常のcomment、2の場合ネタばれコメントとして進めてみる。まずはマイグレーションの作成だ。現在コメントはbooks.commentに格納されているので、データの移行も考えた頑張ったマイグレーションを作成する必要がある。 新テーブルcommentsの追加 books.commentからcommentsにcomment_type=1でデータ移行 books.commentカラムの削除 commentsテーブルにbook_id,comment_typeの複合インデックス 続く…... Ruby on Rails iwazawa 2007-11-04T20:09:39+09:00 RailsによるアジャイルWebアプリケーション開発第2版 http://www.iwazer.com/~iwazawa/diary/archives/003207.html ちょっと前になるが、RailsによるアジャイルWebアプリケーション開発 第2版を買った。 Rails本はこの第1版に始まり、いろいろ買ったが、やはり一番参照したのはこの第1版だった。内容が古い分(0.9〜1.0あたりか)、Railsの基本を知るのにとても良かったと思う。 Rails開発のコツもだいたい理解したし、あとはWebの情報でほぼ大丈夫だろうから第2版はいらないかなと思っていたのだが、本屋で手に取ってみると欲しくなる(笑)内容は第1版とほとんど同じで、最初に実際にWebアプリケーションをアジャイルに開発しながらの様子を実況風に説明し(全体の1/4程度)、その後、各機能の詳しい説明となっている。Railsのバージョンも今、最も使われているであろう1.2が中心なので直接コードのサンプルが役に立つと思われる。 ただ現在もRailsは進化の途中なので、新しいとは言っても、すでに古くなっている部分もある。そこは書籍の弱点でいかんともしがたいが、初めてRailsをやってみようという方のための参考書としてはこれが一番と断言できる。 さて私はなんでまた、そんな第2版を買ってしまったのかというと、まず第1版には索引に大きな不満があった。本の内容は非常に素晴らしかったが、索引は全く使えなかったのだ。なにか調べようとしても索引から知りたい事へたどり着けない。それが最も気になっていたので、本屋で第2版を手に取った際も、真っ先にチェックしたのは索引だ。 今回の索引は良くできている(というかこれが普通かも知れないが…)。第1版で索引に割かれているページ数は13ページに対して、第2版では倍増、とまではいかないも23ページ。しかしフォントが小さくなっていることと、余白が少なくなっていることも鑑みると、おそらく倍以上の情報量となっているはずだ。また第1版では技術本としてはあり得ないほど、リファレンス的な使い方ができなかったのが、第2では本文で説明されているほぼ全てのメソッド名や名前がちゃんと載っている。おそらく第1版以降に数多く出版されたRails本の中でも、最も優れた索引だと思う。 また、第1版では付録であったマイグレーションの説明が、ちゃんと1章割かれていたり、概要の1節だったActiveSupportの説明にやはり1章割かれていたり、RJSの説明が増えていたり。 さらに以前(と言っても1年ちょっとしか経ってない)とは流行が変わってしまったRailsの本番環境についての説明も大きく修正されていて使えるものになっている。 全体のボリュームも100ページ以上、繰り返すが余白が少なくなっていることも考えると内容はかなり増えていると思われるが、驚いたことに本の厚さは薄くなっている。これは紙を薄くして実現したようだ。ページの捲り心地やキーボードの手前に開いた状態で置いて参照する際にも安定しやすく、地味だが良い改良点だと思う。値段は\3,800-から\4,200-へ上がってしまったが、内容を考えれば全く不満はない。 長々と書いてしまったが、そんなわけで、新しいRailsによるアジャイルWebアプリケーション開発 第2版はとてもお勧めです。... 書籍 iwazawa 2007-11-03T22:46:28+09:00 iPodの認識が遅くなったのはmixi stationのせいだった http://www.iwazer.com/~iwazawa/diary/archives/003206.html ここ最近、iPodをPCにつないだときに、iTunesに認識されるのが、もう我慢ならないくらい遅かった。 iTunesのアップデートのたびに早くなったかなと期待し、裏切られるという繰り返し。 楽しみなソフトのアップデートで落胆しイラっとさせられる始末。 しかし!悪いのはiTunesのせいではなかった。 mixi stationはiPodで聴いた曲をmixiに送って、私が今まで何を聴いていたかを晒してくれるサービスである。おそらく他にも機能はあるのかも知れないが、私はこの用途にしか使っていない。 先日、強烈に待たされた後にiTunesがiPodを認識した瞬間に、iPodで聴いた曲をmixiに送りますか?というダイアログが出たので、も、もしやとタスクバーに常駐しているmixi stationを終了してみたら明らかに認識が早くなった。 ここしらばくmixi musicも見ていないし、last.fmがあれば十分なので、mixi stationはプログラムの追加と削除より綺麗さっぱり消えてもらった。 iPodの認識が最近遅いと思われていて、mixi stationを入れている方は是非削除してみてください( ̄ー ̄) ちなみに全く同じ用途(音楽のみですが)のlast.fmクライアントは入れていても、遅くなったりしていません。... iwazawa 2007-11-03T02:27:24+09:00 Helperをhelperメソッドで定義するのとincludeするのと http://www.iwazer.com/~iwazawa/diary/archives/003201.html RailsのHelperはController内で include HogeHelper と書くのと、 helper :hoge と書く方法があります。 恥ずかしながらこの違いがよく分らなかったのだが、いろいろ実験してみた結果、やっと分った気がしてきた。 まず前者はRubyの文法のinclude ModuleNameなので、Mixinしているのはすぐ分かる。 つまりHogeModule内に定義されているメソッドはHogeContorollerに定義されているのと同じ意味だ。 従って、views/hoge/*.rhtml内でも使えるし、もちろんHogeController内でも自由に使える。 私は後者について悩んでいたのだが、どうやらView側でだけ使用可能な状態にしてくれるらしい。つまりviews/hoge/hehe.rhtmlでは使用可能だが、HogeController内では未定義な状態。 はたして存在意義は?もちろんセキュリティーのためだと思われる。Controller内のpublicメソッドはアクションとして実行可能なので、Controllerは結構注意して書かなければいけない。 お気楽にHelper内に書かれたメソッドがControllerのアクションとして実行されると、まずい状況になりそうなことが容易に想像できる。逆に言えばHelperに書いたユーティリティーメソッドを気軽にViewだけで使用可能にしてくれるhelperメソッドによる定義は便利なのだろう。 作成中のサービスも、よれよれ動くようになってきたので、そんな事もふまえて危ないことをやっていないか、もう一度見直してみる必要はありそうだ。... Ruby on Rails iwazawa 2007-10-30T00:20:37+09:00 Radiant http://www.iwazer.com/~iwazawa/diary/archives/003189.html 昨日書いたRadiantですが、私、相当出遅れているようだ(汗) 英語のドキュメントを読むのが面倒だなと思ってたら、すぐに Radiant japan があるのを見つけた。 Radiant Handbook もちゃんと翻訳されています。感謝。... Blogツール変更作業 iwazawa 2007-10-20T16:23:04+09:00