2008年08月22日

VMWare上のitunesでiPhoneのファームを2.0.2にあげたらクラッシュしたの巻。

えー、ゲリラ豪雨ってなんかもうちょっと別な言い方あるだろ。こんばんは何某です。

今朝干した洗濯物が、帰宅したらゲリラ豪雨のせいでずぶ濡れでした。
いつの間にか背後から喉笛をナイフで掻き切られる思いです。

ところで、何某はWindowsマシンを持っていません。
ゲームもここ数年精力的にしてないので、得にLinuxだけで困ることもなかったのですが。
逆に各ディストリのやんちゃぶりがゲームみたいなものとも言えますが。

そんな俺がiPhone持ってちゃいかんよね。

amarokでipod使えるし、iPhoneもなんとかなるだろ。
VMWareでitunesも使えるしなー。

昨日VMWare上のitunesでファームを2.0.2にあげたら見事にクラッシュ。
不明なエラーです。復元してくださいとか出る。

VMWare上では復元もできず、夜中に会社にわざわざ行って会社のWindowsで復元するはめになりました。
VMWareでファームアップのリスクはわかってても実際なるとへこむ。

5万円切るPCもわんさか出てるし、自作のパーツも少なくなってるし。
というわけで、今月は節約して来月Macを買おうって話。

今MacBookかな。10万くらいで買えるのね。
安くなったもんだ。

や、なんでMacかと言うとWindowsが嫌いっていうくだらない理由しかないんですが。
自分の中ではLinuxとMacの2択で、Linuxだけではいろいろ不便なところが出てきたとなればMacしか選択肢はないわけで。

やーでも、使い慣れたaptの環境は捨て難い。
BSDから移植したっぽいMacPortsってのがMacにはあるらしいけど、使い勝手どうなんだろ。

RubyやRailsの開発のSSはMacが多いし、DTM環境は確実に出来ることが増えるし導入も楽なんだろうなぁ。
apt捨てるメリットはやっぱり多そうだなぁ。

使い慣れたubuntuのDockをマウスで行ったり来たり繰り返しながら、結局悩んでいる次第であります。


ラベル:iPhone VMware
posted by 何某。 at 01:40| Comment(0) | TrackBack(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2008年08月08日

なぜうちの会社ではテスト駆動開発が導入できないのか考えてみた。

「Ruby on Railsを扱わせたら世界トップレベル」と自負するチームと最近仕事で会う機会があり、かなりの影響を受けた何某です。こんばんわ。

英語が出来たら、もっとつっこんだ会話が出来たのにと後悔しております。

というか自分の技術力のなさにかなり落ち込んだわけですが、逆に中級者にあがるステップと前向きに考えてみた次第。

彼らは、
「TDDを開発手法として採用しない理由はないし、最も効率のいい開発手法だと考えている。そして、それを一番効率よくこなせるのがrailsだから僕達はrailsを使うんだ。」
と語っておりました。

『うん。わかるよー。』

と、見栄をはってみた。

仕事絡みじゃなければ素直に教えてくださいと言えるのに。。。

とにもかくにも、今後を考えるとある程度知らなければならないので、rspecを最近必死にやっております。
そこで、rspecを利用したなんちゃってTDDをやってみた。

15〜30分程度の開発サイクルを繰り返すため、リズミカルで気持ちいいというが、いきなりは無理。
まずテストの書き方がわからないため、1工程をこなすのに2〜3時間以上余裕でかかる。

テストを書くのが面倒になり、いつも通りいきなりコーディングしたほうが早いことに気づく。

こう書けばこう動くとわかっているところは多少複雑でもテストを書かなくなる。

ある程度の機能が完成。動かしてみると問題なく動く。

別な機能を実装中、以前実装している関連機能に手をいれることになる。

改修した関連機能でデグレーションが発生。
改めて長々としたテストケースを書いてバグを再現させてみる。

テストケースを書きやすいコードを書けばいいことに気づき、1から作り直すことにする。

自然とシンプルなメソッドが増え、可読性と保守性があがった気がする。
また、仕様をテストケースで確認するようになってきた。
でも、他人が書いたテストケースを理解するのにはまだ時間がかかる。

デグレはテストケースをきちんと書いておけば、比較的容易に発見出来ることに気づく。←今ここ

なんで今までちゃんとやらなかったのかと後悔してます。非常に便利。
これはブラウザで動かす前にかなりのバグ減らせるよねって話。
実際に意識してやってみるまでは、どんなに有効かってのはわからないものです。

恥ずかしながら、PHPでプログラミングを覚えた技術者が多いうちの会社では、ユニットテストなどの存在すら知らない人がほとんどだ。
実際、彼らが読んだ本を見ても、テスト手法などほとんど書いていない。
あっても「登録ボタンを押したらDBにデータが入っているか確認しましょう。」くらいのもの。
私もPHPから入ったので、いろんなPHP関係の書籍を読んだが、確かにPHPはその手のことはほとんど書いていない書籍が多い。
でも、こんなに便利な開発手法があるのにやらないのはもったいない。

というわけで、うちの会社でTDDをやってみようと言ってみた。
ほとんどPHPの開発なので、せめてPHPUnitだけでも採用しようと。
javaや.Netをやってきた人は実際やったことがあるらしく、必要とうなずいた。
ところがそういう手法があるということを知らなかった、PHPerの反応がすこぶる悪い。

「テストなんてWebアプリなんだからブラウザでやるものでしょ。」
「プログラムのテストをやるためにプログラム書くなんてダルい。」
「書く前から動くとわかっているコードをわざわざテストする気にならない。」

まぁ大体こんな感じ。

以前、PHPのフレームワークを導入しようと提案した時は、
「フレームワークを使わないのがPHPだ。」
「俺のOOPはフレームワークには負けない。」
とわけのわからない理由で一蹴され激論したが、今回の理由は自分で実際思ったことがあるだけにわからんでもない。

間違っても、PHPをdisっているわけではないが、先に書いた通り、PHPには「こういったテスト方法があります、実際やってみましょう」という書籍が入門書に書いてあることがほとんどないので、この手の話題は理解し難い人がうちの会社では多い。
javaをかじったことがある人は「Eclipseを使ったテスト方法」などの解説が入門書の時点からあったりして、事前に知識があるので特にこういう話題の違和感はないようだ。

確かに単純な開発速度で言えば、ひたすら書いたほうが早い。
テストケースを書かない分早いのは当たり前だ。

問題は保守の時にかなりの差が出るはず。
これは実際に自分でやってみた感想。

先にも書いたが、設計=テストケースとすると、書き方の良い悪いはともかく、自然とコードがシンプルになる。
複雑なコードではテストケースを書く事自体面倒になるから。
もちろん、スキルに左右はされると思うし、私の書いたコードを自信満々に人に見せれる気にはならないけれども、それでも、「テストを楽にする」という意識を持つだけで無駄なコードはかなり減らせる。

今までは、とりあえず動くものを最速で出してきたが、改修が入った時に複雑なコードを追わなければいけない、デグレが発生してないかを手作業で全部見なければいけないなど、とにかく改修作業が大変だった。
逆に、シンプルなコードは見やすい、改修しやすいでいいところしかない。

でも、TDDが導入出来ない。

「とりあえず今まで通り、人に見せられないようなプログラムを一気に書いて、とりあえず動くものを出して、客に怒られながら終電まで残業し、必死でバグを直し続け、直ったと思ったらデグレって死にそう。」

と、

「今までExcelで管理してた人手のテストケースを捨て、テストケースを逐一走らせながらプログラムの動作を確認し、都度バグを直し、品質をかなりあげた状態でリリースして、客が怒らないくらいのバグ改修で済む可能性が今までよりも高い開発。」

では、越えられない壁がある。

それは、「納品までの工数」。

工数を減らすのはさすがに最初は難しい。
慣れるまではリリースまでの作業が格段に増えてしまう、というのがボトルネックになるようだ。
また、バグが出ても納品後なら、もうすでに納品しちゃったんだから気楽という考えもあるようだ。
私は、納品前ならいくらバグが出ても怒られないが、納品後じゃ客に怒られるじゃんと考えるので、いまいち理解は出来ないが、そういう考えで開発している人達にとっては、TDDというのは必要ないと考えるのだろう。
もちろん、バグが出たとなったら、対応しないわけではないし、きっちり改修は行うが、そこにあるのは地獄です。
もうそんな日々は嫌ざんす。

まぁ問題なく開発出来てれば今まで通りやるんだけどね。
出来ないんだから何か対応策考えないとね。

開発手法より説得手法を覚えるべきと思った今日この頃。

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
マーチン ファウラー Martin Fowler 児玉 公信 平澤 章 友野 晶夫 梅沢 真史
ピアソンエデュケーション
売り上げランキング: 8673
おすすめ度の平均: 5.0
4 リファクタリングの勉強するなら
5 オブジェクト指向がなんでいいの。その回答がここにある。
5 体質改善の処方箋
5 可読性向上の特効薬
5 コーディングが変わった
ラベル:TDD develop
posted by 何某。 at 01:34| Comment(0) | TrackBack(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2008年08月07日

google calendarとiPhone、Thunderbirdを連携させる。

google calendarとiPhone、Thunderbirdの連携が非常に便利なのでメモ。

まず、google calendarとiPhoneの連携から。
以下のWebサービスを利用します。

NuevaSync
https://www.nuevasync.com/

解説はこちらのサイトが詳しいです。
iPhone 3G と Google カレンダーを自動プッシュで同期する NuevaSync

非常に簡単に、しかもプッシュで同期がとれるので出先でも重宝します。

Thunderbirdの設定はこちら。
http://wiki.mozilla.org/Calendar:GDATA_Provider

会社のWindowsでは問題なく出来た。非常に便利。
自宅のXubuntuではLightningがうまく動かなかった。。。

##追記

XubuntuでLightningがうまく動かなかったので、Sunbirdで同じことをします。

Sunbird
http://www.mozilla-japan.org/projects/calendar/sunbird/

Linux x86, 日本語版 をダウンロード。


 $ tar xvzf sunbird-0.8.ja.linux-i686.tar.gz
 $ sudo ln -s sunbird/sunbird /usr/local/bin/sunbird


これだけだと、


 $ sunbird
/usr/local/sunbird/sunbird-bin: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory


とエラーが出てしまうので


 $ sudo aptitude install libstdc++5


あとはThunderbirdのLightningと同じように

Provider for Google Calendar
https://addons.mozilla.org/en-US/thunderbird/addon/4631

をインストールして、新規カレンダー作成からgoogle calendarを選択、XMLのURLを指定。
これで問題なく利用できます。

以上です。

SEM:検索連動型キーワード広告 Googleアドワーズ&Overtureスポンサードサーチ対応 Web担当者が身につけておくべき新・100の法則。
大内 範行 岡本 典子 齊藤 康祐
インプレスジャパン
売り上げランキング: 903
おすすめ度の平均: 5.0
5 かなりいいです。
5 現代のネットマーケティングの教科書
5 すぐに実践したい内容が満載
5 出稿担当者を助ける1冊
5 PPCと呼ぶか、SEMと呼ぶか。
ラベル:thunderbird iPhone
posted by 何某。 at 20:58| Comment(1) | TrackBack(0) | iPhone | このブログの読者になる | 更新情報をチェックする

2008年08月01日

rails 2.1 へselenium on railsインストール後、rspec実行でエラーが出る。

rails 2.1 へselenium on railsをインストールしてみる。


この後rspecでテストを行うと下記のようなエラーが出る。

 .../​vendor/​ plugins/​selenium-on-rails/​lib/​selenium_on_rails/​selenese.rb:3: undefined method `register_template_handler' for ActionView::Base:Class (NoMethodError)

エラーメッセージで調べてみると下記のページに原因が書いてあった。

http://indraneelc.wordpress.com/2008/07/04/selenium-on-rails-breaks-on-rails-21/

ようは、ActionView::Base.register_template_handlerじゃなくてActionView::Template.register_template_handlerだよってことらしい。

直接変更してみてもエラーが直らないので、どうやらここだけではないらしい。
さらに調べるとパッチ公開されていることがわかった。

http://clearspace.openqa.org/docs/DOC-1072

rails_2.1.patchをダウンロードしパッチをあてる。

 $ patch < rails_2.1.patch

途中パッチをあてるファイルのパスを何度か聞かれるので、都度入力。
完了後、再度rspecを実行すると問題なく実行出来た。

以上です。

WEB+DB PRESS Vol.35
WEB+DB PRESS Vol.35
posted with amazlet at 08.08.01

技術評論社
売り上げランキング: 139443
ラベル:Rails Selenium
posted by 何某。 at 01:24| Comment(0) | TrackBack(0) | Ruby on Rails | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。