Saturday 30 June 2012

Test Double について

TDD, BDDは使い慣れていない用語や普段使っている言語とは異なるソフトウェアサイエンスでの用法があるので、用語の理解が一つのハードルであると感じます。

この辺りはかなりソフトウェアエンジニアリングではなく、ソフトウェアサイエンスの領域に入ってくるんでしょうね。最近はビジネスに関連してソフトウェアエンジニアリングのアプリケーションばかりをしていますが、学生の頃にはサイエンスの方をしていたのが懐かしく感じます。

"Test Double"もその一つではないでしょうか?"Test Double" G. Meszarosという人が考えた言葉なそうです。本人の書いた記事にその内容が書かれています。是非オリジナルを当たってください。個人的に著者の言葉の使い方にはprecisionが欠けている箇所がある気がしますが。



Doubleというのは英語ではいわゆるそっくりさんのことですね。G. Meszarosの原文ではスタントマンを例にとってきています。上の図に表される様にG. Meszarosの定義では、Test DoubleにはTest Stub, Test Spy, Mock Object, Fake ObjectとDummy Objectが含まれます(このDummy Objectは正確にはTest Doubleには含まれないそうですが)。要は"Test Double"とはこれらの用語を総称した言葉ですね。

用語
SUT: System Under Test テスト対象のシステム
DOC: depended-on component 異存しているコンポーネント
indirect output: 公開APIでは見れないが、他のコンポーネントに送られているSUTからのアクション

以下、それぞれの意味というか使い方です。

- Test Stub: SUTから送られてくるメッセージを受け取るために使用。indirect outputを正常に受け取らないとSUTが正常に動作しないなどの場合に使用。

- Test Spy: SUTから送られてくるメッセージを受け取るために使用というのはTest Stubと同様だが、Test SpyはSUTから送られてきたindirect outputの内容を記録して、後でバリデーションに使用できるようにする。

- Mock Object: Test Spyと同様に使用。原著からは私はTest StubとTest Spyの違いが見つけられませんでした。

- Fake Object: 実際のDOCの疑似コンポーネント。実際のDOCと似た動きをするが、まだ実際のDOCが用意できていない時に使用する。また、実際のDOCではデータベースの読み込みに時間がかかりテストに適していないという場合には、Fake Objectのハッシュオブジェクトにデータを収納してテストに用いる。

- Dummy Object: SUTがパラメータにオブジェクトを必要とするときに渡すオブジェクト。中身の無いメソッドを実装したnull object 参照でも問題無い。Dummy Objectは原著では厳密にはTest Doubleではなく、Literal Value、Derived Value、Generated Valueに属するとされている。

Wednesday 27 June 2012

RoR開発環境でのTDD, BDD導入書籍

TDDはとても良さそうだと思い、RoRのDSL (Domain Specific Language) であるRSpecを調べていくうちに書籍の紹介ブログを経てBDD (Behaviour Driven Development) に行き当たりました。TDDに関する書籍はJavaのコードを用いているものが多く、Rubyを主に使っている私にはとても便利です。RubyやRailsを使っている人が書いている本だけに文体もポップです。

BDDとは、もっと人間の目線をプログラム開発に導入していくということなのでしょうか?TDDがプログラムの挙動を予想、テスト、リファクターするのに対して、BDDはあるユーザの行動を予測、テスト、リファクターという視線で開発を進めるということではないかと理解しています。

BDDはプログラム開発のあらゆる過程で便利そうだなという気がしています。ただ学ぶことは多いですね…

”バイオコンピュータ”などという言葉が当たり前になっている頃には、”これをこういうタイミングでやって”と言葉で表現すればコンピュータが実行してくれるので現在のプログラミングという仕事自体の幅がかなり狭く一部の人しか必要とされなくなっているのでしょう。お払い箱になる、もしくはお払い箱になる前に新しい技術についていかなければならないというある意味脅迫観念は起きますね。

Tuesday 26 June 2012

ROR scaffoldで作られる newとcreateアクションの関係

RoRのscaffoldを用いると、index, new, createを含む一連のアクションが指定したモデルに対して自動で作成されます。自動で作成されるため、これまで理解をせずに使用していたnewとcreateアクションに関して調べる良い機会ができたので、今まで恥ずかしながら”謎”に包まれていた scaffold の挙動を例えばpostというモデルに関して作成した場合に関して覚書します。



scaffoldはRESTfulなURLを用いて巧みにnewやcreate、indexなどにユーザのリクエストをさばいていることが見えます。こんなことを考えた人はすごいですね。createアクションでpost.saveが失敗したときにnewのテンプレートを表示して、更にformのパーシャルに既にエラーメッセージ表示のコードも書いておくというのにも感心します。

最近 TDD (Test Driven Development) を採用する方向で仕事をしています。プログラムを組む前に必要とされる結果を特定するという作業は、ステップごとに明確な知識が必要とさるため、下調べが必要になります。現時点でこれはとても有益なのではないかと感じています。

RoRのTDD環境は現時点でできるだけインダストリースタンダードに従いたいため、RSpecを基本として組んでいます。リクエストテストはCapybara, メールのテストは Email_Spec, mock とstubオブジェクトはfactory_girlという具合です。Cucumber やSporkも導入検討が必要ですね。

Monday 25 June 2012

クリエイティブの意見とクライエントの要望のバランス

新しいクライエントからサイトをリニューアルして欲しいという要望は一番よく聞く話です。もっと奇麗とかスタイリッシュなサイトとかいう要望で、なぜそのようなサイトにするのか目的が分からない要望があり、そのなぜという所を一緒に組み立てていけない場合は私の場合経験的に依頼は成立しません。漠然とした要望のクライエントに対して、提案をして一緒に組み立てていく作業が一緒にできるというのが仕事が成立する一つのコンディションなのだと思います。

そのプロセスの中で、クリエイティブ側の意見をできるだけ通すことが大事だと考えたこともあります。クライエントの最初の要望とは違う提案をしたほうが、結果的にクライエントも納得する成果ができたということは少なくありません。しかし、クライエントの方でマーケティングの方向性が定まっている場合など、クライエントの要望をかなりそのまま通す方が良いケースもあります。

クリエイティブの意見を通すケースと、クライエントの要望を優先する場合と、コミュニケーションをしっかり取った上で見極めが必要ですね。ただ話をしていて、クライエントのマーケティングの方向性がはっきりしているかしていないかでどちらの比重を高くするかある程度の方向性は見えるのかもしれません。

Friday 22 June 2012

人の心はどの時代、世界、職業で最も優れているか


先日知り合いと話をしていて、現代の人は個人主義であったのに対して江戸時代は人々は個人の利益を目当てにして生きていなかったので優れていたのではないか、という話になりました。

確かに日本の社会も"me"の言葉が一番しっくりくるような時代に入ってきているのかもしれません。しかし、個人的にはどの時代でも世界中どこへ行っても人の本質は変わらないと思います。

人の為にしていると自分が思ってやっていることでも、もっと深く掘り下げて自分を見つめてみると、どこかに利益があったり自分に力があることに優越感を感じていたり、社会的なプレッシャーがあるからしているなど、いろいろな要素が浮かび上がってくると私は感じています。

”愛がなければ全てが空しい”という言葉も聞いたことがありますが、これを実行するのは並大抵ではありません。これは、私はどういう時代にいるからとか、世界のどこに位置しているからとか、どういう職業に就いているかなど一切関係が無いように感じます。

Thursday 21 June 2012

オープンソフトを使ってウェブサイトを作るのになぜお金がかかるのか?

最近知り合いに、オープンソフトを使ってウェブサイトを作るのになぜお金がかかるのか?という質問をされたのですが、自分で納得いくように説明できませんでした。

やや技術的な観点から言うと、オープンソースのツールっていうのはできるだけ多くの人が使える様な仕様で作られているため、個々のケースに合わせてウェブサイトを構築する目標を達成を効率化する為にはカスタマイズが必要です。このカスタマイズをするには人が働くため、ここで多くの場合は人件費が発生します。

もっとビジネス寄りの観点で話をすると、もともとオープンソースのツールの多くはツールを普及させるところに費用を課さないで、他の何らかの地点で費用がかかるというビジネスモデルを採用しています。個人が趣味や慈善でしているプロジェクトももちろんありますが。例えばWordpressもAutomaticという株式会社が利益を目的に開発をしていて、彼らも営利団体であることを隠しているという様子は全くありません。ただ、Automaticがどのような方法でWordpressから利益を得ているのか、現時点で余り興味が無いので今回調査しません。

Word Campなどに参加してなぜこのようなイベントを開催しているのか、ということを訊いたことがありますが、誰もこのイベントでスピーカーをつとめることでクライエントが集まるという理由を挙げませんでした。日本ではストレートに話をしない文化であり、特にお金の話になるとおおっぴらに話をしたくないというのは分かります。しかし、そこまで隠さなくても…と個人的に思いました。

Wednesday 20 June 2012

RoRとmongoidとRSpecでTDDことはじめ

RoRとmongoidとRSpecでテストを動かそうとしたところ、下のようなエラーメッセージが出ました。

undefined method `fixture_path=' for # (NoMethodError)

これに関してはすでに解決している人がいたので、ググって解決です。

Monday 18 June 2012

"GROWING OBJECT-ORIENTED SOFTWARE, GUIDED BY TESTS"覚書

TDD: Test-Drive Development関連の書籍Steve Freeman/Nat Pryce (著) "GROWING OBJECT-ORIENTED SOFTWARE, GUIDED BY TESTS"を読んでいて良いなと感じた言葉がいくつかあるので覚書です。

What if a software wasn't "made", like we make a paper airplane - finish folding it and fly it away? What if, instead, we treated software more like a valuable, productive plant, to be nurtured, pruned, harvested, fertilized, and watered?

↑こんな具合にソフトウェアをオーガニックに扱うとソフトウェアを作る・メンテナンスする視点が違ってくると思います。

We should be taught not to wait for inspiration to start a thing. Action always generates inspiration. Inspiration seldom generates action. - Frank Tibold

↑何らかの考え・計画無しで動き始めることはできませんが、良い考えが浮かんだら行動に移してそのフィードバックを活かしていきたいです。行動をするのは私は怖いですが、怖いときはリスクを数字にしてみるとここまでのリスクなら許容できる、このラインを越えたらやめようという怖がりならではの対応ができます。

Saturday 16 June 2012

ロングステイって知ってますか?

海外に長期間(1ヶ月や数年、人生の残りの全ての期間など様々)滞在するロングステイという動きがあります。昨日読んだ「定年前から始めるロングステイ実践講座」という書籍で紹介していました。

定年後の人たちが現在多くを占めているのではないでしょうか?年金だけで生活できる生活費の安い国を選んだり、気候の良いところをメインで選んだり、数ヶ月だけ海外に生活する人や、もう一生国を決めて移動する人など様々です。私はロングステイというと以前は凄く大きな資産を持った人が海外に資産を移動させる手段の一つとして使っているという勝手なイメージがあったのですが、むしろそういう人たちはごく一部なんでしょうね。

ロングステイ財団が情報を提供していますし、知人が経営しているシンガポールの会社でもロングステイのサポートをしています。

興味があれば覗いてみてください。

Friday 15 June 2012

ドキュメンタリー映画 "Art & Copy" とデザインの仕事



"Art & Copy"というドキュメンタリー映画を観ました。またiTunesからのレンタルなので、日本で通常の経路でどうやってみるかは分かりません。

アメリカのadvertisement 業界はいろんな奇抜なアイデアが試されるが、日本の社会ではあまり奇抜なアイデアでデザインを作ることはできないという話は聞いていました。いろんな発想で面白いコマーシャルができていくプロセスは楽しそうです。

映画の構成はどちらかというと起承転結に欠けるという意味では退屈でしたが、とてもinspirationalでした。

私は自分でデザインをするということは最近は少ないのですが、デザインをする人と一緒に仕事をする機会は多くあります。こんな風にデザイナーが自由にアイデアを出してそれをコーポレートアイデンティティーに反映させられるような仕事ができればと思います。”日本の社会”という壁もあると思いますが、それ以上にクライエントと一緒にこんなものを作っていこうという持って行き方によってもっと仕事の幅が広がるものかもしれません。自分の仕事は結局自分で切り拓いてくしかないのでしょう。

ウェブの制作にしてもウェブの制作という仕事にとらわれないで、インターネットやインターネットにとらわれない集客をもっとパートナーとして一緒に仕事をしていきたいです。

Thursday 14 June 2012

主力商材への導線

今日は少しカフェで仕事をしました。

このカフェではオンラインショップがあったので、オンラインショップがメインですかというかまをかけてみたのですが、実は店頭で売っているコーヒー豆や雑貨が主力商品だそうです。カフェの方は味見をしてもらうのがメインでしているということでした。別に隠している訳ではないのでしょうけど、ああ、そうなのかと思いました。

このカフェは私の住んでいるところでは一番気に入っているのですが、カフェをメインの事業としている所より全然私は雰囲気が好きです(WiMAXが使えるという偶然の要素もありますが…)。

ウェブでの集客のメインはやはり一見さんに来てもらうことだと思っていますが、もっと一見さん獲得からその先の主力への導線を見つめて組み立てる流れを作っていきたいですね。

Tuesday 12 June 2012

Helvetica:フォントについてのドキュメンタリー映画



かれこれ1年以上は前から観たいなと思っていたHelveticaというドキュメンタリー映画を観ることができました。映画を作ったのはGary Hustwitという人で、映画の作成やファンド集めなどとても多様なことをこなしていて、凄いなと思います。

Helveticaはベトナム戦争辺りの時代に生まれて、その時代にユビキタスに何にでも使われる様になり、MacやWindowsでも標準フォントとして取り入れられる様になったらしいです。その後のデモクラシーや表現の自由を求めるという時代になるとそんな何にでも使われるフォントを使うことに対する動きは活発になってきているという話もありました。

フォントは日常生活では私はあまり気にしないで生活していますが、その歴史的背景などを掘っていくと(他のどんなサブジェクトでもですが)とても興味深いです。この映画では歴史的背景より現代の社会でフォントがどのように作られて使われているかという切り口でした。どんな切り口で扱っても面白いですね。フォントに関係のある仕事をしている人、今まで無かった人でもこの映画を観てフォントに興味を持ったら他にも書籍などたくさんフォントについて学ぶ機会があるので、試してみてください。

私にとって、ストレートに制作者が意図した内容を理解することに加えて、日本というある意味特殊な文化圏に住む一人として、面白さを感じました。まずHelveticaが現代の社会ではあまりにも広くのシーンで使用されているという話ですが、それは日本ではPCの世界を一歩出れば関係の無い話です。また、日本では中国の流れを受けて発展した漢字や独自のひらがな・カタカナがありフォントの開発が面倒なだけに市場がほぼ独占状態になってしまっている現代的な社会・文化背景があります。

残念ながらこの映画は日本のiTunes Storeでは入手できません。正規で入手しようと思えば、直接映画制作者に問い合わせてDVDを送ってもらうしか一般的に手が無いのではないでしょうか?

日本でiTunes Storeにドキュメンタリー映画という項目が無いことなど、ドキュメンタリー映画を観る機会がとても少ないことについてはいつもぼやいています。今回は最近導入したiPad3を用いてiTunes Storeにちょこちょこと細工をしてやっとレンタルすることができました。別にお金を払ってもよいので、もっと公優れたドキュメンタリー映画に日本でも触れられる時がくるのを楽しみにします(私もできる限り貢献します)。

Friday 8 June 2012

スーツとコンテクストと個人の裁量

昨年香港に行った時にLonely Plant Hong Kong でおすすめの中国のShenzen(深圳)で作ってもらってきました。あれからかれこれ半年が経ちますが、全然スーツを使う機会が無いまま今日に至り、やっと使う機会が訪れました。良い服です(というか私は好きです)。

私はスーツ自体はなんだかかっこいいので好きなのですが、そのコンテクストがあまり好きではないので、できれば使いたくないというのが現状です(状況が許す限りですが…)。

こんなのも良いですが、



個人的好きか好きでないかというとコンテクストとしては

こんな町並みや

こんなパーティーなどの特別なイベントで

使う機会があればもっとスーツをかっこ良く使うということが楽しくなるのになと思います。

個人的な希望としては、良く言われている日本での戦闘服としての使い方ではなく、場所にもっと合ったコンテクストで楽しく使われる様になればなあと思います。

というのはコンテクストについての話ですが、社会的な意味でのコンテクストというのは日本だけではなくどこの社会にもあります。ドレスコードというものですよね。このドレスコードにしても、”常識”という言葉で考えもしないで判断するのではなく、ある程度個人の裁量により自由な幅を持って楽しむことができるのではないかと思います。ただ、国の間の差ということを考えるとスーツという服を生んだのは日本という文化ではない為、それを使用する創造性が狭くなるのはある程度仕方が無いことなのでしょうね。


Thursday 7 June 2012

Rails インターナショナライゼーション・ローカライゼーションでの注意点?

Rails プロジェクトのインターナショナライゼーション・ローカライゼーションをしていて、マニュアル

http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-url-params

にそって作業をしているのにurl_forのヘルパーがうまく動きません。メニューから貼っているコントローラ・アクションへのURLリクエストに en や jp などのパラメータがくっついてくれなくてしばらくうろうろしていました。

で、やっと気がついたのはメニューのリンクをhref="/posts"の様にハードコーディングしてしまっていました。これはhref="<%= posts_path %>"のように書き直すことで難なく解決。

私はこういう些細なミスが多くて困ります。そもそも、もっとちゃんとRoRの規約に従ってコーディングをするべきなんでしょうね。

Wednesday 6 June 2012

日本とベトナム企業のマッチング会

日本とベトナム企業のマッチング会に参加してきました。ベトナムの工業団地の視察に参加したときに見た面々もいくらか見れ、懐しかったです。

ベトナムからは資本や製造のオーダーを誘致したい企業がメインで来ていました。現在ベトナムは急激な経済成長から一転して調子の悪い状況にあります。中でも急成長期のあおりで政府が10%の後半という高い金利を設定していました。そのためもっと成長したい企業もお金を銀行から借りるより社債を発行した方が有利であるなどの理由で、投資家を探しています。また、工業の方も工業団地の整備を大規模でホーチミンの近くでも進めているのですが、そこに製造の拠点を持ってきたい日本企業を探しています。いずれの形態にしてもゼロ金利、円高という現在の日本の状況において日本企業にとってもとても魅力的なのでは無いでしょうか?人件費の面でもベトナムは中国より有利だという状況もあります。

明日、明後日はそれぞれ大阪、京都で行われる予定なので、日本とベトナム企業の良いパートナーシップがたくさん生まれればいいなと思います。

大阪は

日時: 2012年6月7日(木) 13301700
場所: 流通科学大学・大阪オフィス(JR大阪駅から西へ徒歩5分)・セミナー室
   (大阪市北区梅田2--25 ハービスOSAKA・オフィスタワー8階  電話06-6345-5002)



京都は

日時: 平成24年6月8日(金) 13:30~17:00 
場所: 京都商工会議所 役員室 (3階)

連絡先は両日ともに下の通り
お問合せ: 日本ベトナム経済交流センター 電話: 06-6359-5071  e-mail:info@j-veec.or.jp

Monday 4 June 2012

スマートフォンの流行と並行してもう少しコンテンツも充実して欲しい…



ニュースを読んでんでいたところ、NookというAmazonのKindleに対抗する製品についての記事がありました。



Kindleはアメリカのebayで購入すれば手に入るのでしょうが、日本ではコンテンツが無いのでKindleを入手する魅力がかなり低くなります。先日ベトナムにいった時にはアメリカ人観光客らしき人がKindleで本を読んでいました。アメリカではかなりKindleは普及しているということでした。確かに軽いし値段も手頃だし、いくつかの面でipadよりも優れていると思います。サーバとクライエントのコミュニケーションの最適化もしっかりされているそうで、とても興味はあります。



日本ではKindleでさえ馴染みがなくて一体どういう風に使うのかピンとこないですが、さらにNookなんていう名前が出てくるといっそう???です。出版物の世界は法律がいろいろとややこしいのでしょうか?スマートフォンやタブレットなどの携帯端末は普及してきましたが、国内のゲーム以外のコンテンツはまだまだの印象があります。どんどん発展して欲しい(させたい)ですね。



Saturday 2 June 2012

コハウジングって知ってますか?

フリーランスの形態で仕事をしていると、最近コワーキングはよく耳にするし、利用する機械も増えてきた気がします。

一方で、家をシェアするコハウジング(もしくはシェアハウス)の方は、状況が変わる兆しがあまだ日本では顕われないですね。

私はイギリスで留学をしていた頃は大学の寮はキッチンがシェアでした。一応ホストのいる家に住んでいたこともありますし、知り合いも数人で一つのフラットを借りてキッチンなどをシェアするというのはよくありました。ドイツでもフラットをシェアするというのは学生の間でも普通のことでした。

日本に返ってきて家族と住めるようなシェアハウスを私が住みたいと思った関西で探したのですが、この近辺では女性専用のものや老人専用、若者のヒッピー的集団が集まる場所など、まだまだ女性でない限り特定のニッチな社会層にのみ利用される場所である印象を受けました。



最新号のCourrier Japonhttp://courrier.jp/ではデンマークで広い社会層で一般に利用されているコハウジングについての記事がありました。しばらく日本に住んでいるとなんだか日本の状況が普通で、他の選択肢は視覚から見えなくなってきていたのですが、久しぶりにコハウジングの状況を目にして嬉しかったです。

個人的にはコワーキングと同様、コハウジングももっと一般的な形態として日本でも受け入れられるようになってくれば良いのになと思います。