披露宴でスローバラード [diary]
今日は後輩の結婚披露宴.新入社員として入社した時から身近にいて,最初の数年は仕事も同じだった後輩だけに,「あーとうとう結婚するのねー」と感慨深いものがありました.
彼女から,前に な・ん・ど・か 書いた元上司と私に,2人で歌を歌ってほしいと言われて,選んだ曲は RCサクセションのスローバラード.
あらためて,いい曲だなーと.
そしてなにより,おめでとう.
If it's fine rain or shine I don't mind I'll take it anyway
今日は後輩の結婚披露宴.新入社員として入社した時から身近にいて,最初の数年は仕事も同じだった後輩だけに,「あーとうとう結婚するのねー」と感慨深いものがありました.
彼女から,前に な・ん・ど・か 書いた元上司と私に,2人で歌を歌ってほしいと言われて,選んだ曲は RCサクセションのスローバラード.
あらためて,いい曲だなーと.
そしてなにより,おめでとう.
Blog PR のカリスマとして知られるアルファブロガー,Steve Rubel の Micro Persuasion より.
Micro Persuasion: TV: The Next Great Development Platform
曰く,
最初の偉大な開発プラットフォームは PC
- マイクロソフト,アップル,サンなどを輩出した
- 彼等の OS は,コンピュータをより簡単かつパワフルなものにした
- 業界はまだまだ活発
- ムーアの法則も,我々の欲求もしばらく続くだろう
- モバイル端末はコンピュータにどんどん近づいてきている
- まだこの分野の将来は明るい
次なる偉大な開発プラットフォームは Web
- ブラウザ上で動く素晴らしいツールが開発されている
- 個々 (HTML, Javascript, Flash, Ajax など) は変わっても,コンセプトは残る
- ウェブベースのアプリケーションは大きな価値をもたらしていく
- ブロードバンドは普及してきているし,開発環境も簡単に手に入る
- この分野においては,まだインパクトの序章に過ぎない
みたいな話があって,"Think about what comes next (次に来るのは何だろう?)" と続ける.
What hardware will emerge as a fertile ground where developers will want to plant some software seeds? Is there a piece of hardware that many people own that makes this all economically viable?
開発者が仕込みを入れておくべき,肥沃なハードウェアは?
たくさんの人が所有し,経済的に生存できるハードウェアは存在するだろうか?
…で,随分長い前置きの後,彼のパンチラインとしては,
The answer is yes and that platform is your television.
とのこと.
それで,その後
- Apple TV や XBox 360,SlingCatcher を繋げて,テレビの可能性が広がる
- ソフトウェアはそれを可能にするマジック
- ソニーのテレビならサードパーティーすら要らない
- テレビは「ルネッサンス」を経験しているところ
- 5年もすれば,試聴コンテンツの50%はインターネットから来る
- テレビでは,ウィジェットや,他の繋がるアプリが走ることになるだろう
- これらは,PC で動くものとはまた違い,さらにそれを補完するものだろう
- テレビでのデファクト OS を作るのはどこの企業になるだろう?
- Microsoft? Apple? Google? セットトップボックスメーカー?
…みたいに続き,最後はこう締めくくられている.
the Golden Age of Television may be a head of us, not in our rear-view mirror.
テレビの黄金期 (1949 - 1960 年を指す言葉) は,バックミラーにではなく,この先にあるのかもしれない
ところで,この「プラットフォーム」という言葉は非常に曖昧に使われることが多く,人によってハードに近いものを指したり,純粋にソフト (サービス) だったりするのだが,これについては Ning Blog の主張が,個人的に非常に気に入っている.
Ning Blog - What is a Platform?
A platform is typically defined as:
"a software program that makes services available to other software programs through Application Programming Interfaces (APIs)."
This is an accurate definition but to me it doesn't communicate the full power of a platform. Platforms are the cornerstone of software innovation for one reason:
Platforms give everyone the freedom to create what they want.
プラットフォームは,一般的には「他のソフトウェアに対して,API を通して一連のサービスを提供するソフトウェア」と定義されており,これはこれで正確なのだが,プラットフォームの持つ強力さを伝えきれていない.
プラットフォームが,ソフトウェアイノベーションにおいて要であるたった1つの理由は,「プラットフォームは,人々が望むものを創造する自由を与える」からだ.
"It's the software equivalent of Home Depot." とか,「Doom や Second Life はプラットフォームで,MySpace はプラットフォームではない」みたいな例えもおもしろい.
…っと,ちょっと横道に逸れたけど,いずれにしてもテレビに対して大きな可能性を感じるという点では,同感.
今井雅之さん脚本・演出の「産隆大學應援團」という舞台を観てきました.もともと深夜に放送されていたテレビドラマなのだとか.
産隆大學應援團 全国ツアー2007
舞台とかあまり観に行く方ではないんだけど,タケウチコウの「しがらみの向こうに」 の打ち上げで意気投合した松本勝さんを始め,その時に少しお話した最所美咲さんや田崎那奈さんが出演するということで,これは絶対行こうと.
それほどストーリー性がある内容ではないけど,エンターテイメントとして素直におもしろい.
今井雅之さんとか,巧みに客をいじるところなんかさすがだなーと.
松本勝さんの歌は,やっぱりハンパなく上手い.「しがらみ…」の打ち上げの時に少し歌声を聴いてぶっとんだんだけど,この人ニューヨークのアポロシアター (JB やマイケルジャクソンを生み出した黒人音楽の殿堂) のコンテンストで優勝したことがあるんです.
というか,演者さん1人1人のダンスや演技はもちろんだけど,照明とかの裏方さんを含めて,パフォーマンスのレベルがすごく高かった.
本日が東京公演の初日,その後福岡,神戸を始め全国で公演される予定とのことなので,上質のコメディを観に足を運んでみてはいかがでしょう.
前から試そう,試そうと思っていた話題の Plagger を導入してみました.mixi のマイミクの方とかはこれから足あとがつきまくると思いますが,気にしないで下さい.
Plagger をご存知無い方は,この辺りでも.
一足早く「Plagger」の便利さを実感してみよう - @IT
plagger - otsune FreeStyleWiki
要は,「いろいろな」データを入力して,加工して,「いろいろな」ものに出力するフレームワーク.「いろいろな」というところがポイントで,誰かが MacBook を勝手に持ち出したら携帯にメールする とか,Google で「はらへった」と検索してピザを注文する なんて人まで.
Plagger については,既にネット上にインストール方法や設定方法がたくさんあるので,わざわざここで書くことはないんだけど,ひとまず自分の備忘録を兼ねて書いておきます.
- RSS を整理
まずは RSS の整理から.
私は RSS リーダーに Google Reader を使っているが,Bloglines のフィードリストをアップデートしようとして「Google Reader で OPML をエクスポート → Bloglines でインポート」すると,変な名前のフォルダとか勝手にできて上手くいかなかった.
結論としては,livedoor Reader を踏み台にして,「Google Reader で OPML をエクスポート → livedoor Reader でインポート → エクスポート → それを Bloglines でインポート」すると,OK だった.
…って後から考えれば,livedoor Reader にエクスポートした時点で,Subscription::LivedoorReader を使えば十分だったのだが.
- さくらインターネットのレンタルサーバーを契約
Plagger を導入するのは自宅の環境でも良かったのだが,常時稼働環境が望ましいことと,2週間の無料お試し期間があるということで,さくらのレンタルサーバーで試してみる.
SAKURA Internetのレンタルサーバ
SAKURA Internet : レンタルサーバ 概要
さくらのレンタルサーバ非公式FAQ
とりあえずお約束で,vim をコンパイルして $HOME 以下にインストールしたり,"chsh -s /usr/local/bin/zsh" したりと設定に小一時間.
- CPAN の設定
ポイントは,root 権限が無いレンタルサーバーなので,$HOME 以下にインストールすることだが,otsune さんの記事 が非常に参考になった.というかほぼこの通りにしただけだが,一応やったことは以下の通り.
$ mkdir -p ~/local $ echo no | cpan $ vim ~/.cpan/CPAN/MyConfig.pm
MyConfig.pm の内容を以下に書き変える (mbuildpl_argの項目は存在しないので追加する).
'make_install_arg' => qq[SITEPREFIX=$ENV{HOME}/local], 'makepl_arg' => qq[INSTALLDIRS=site LIB=$ENV{HOME}/local/lib/perl5 PREFIX=$ENV{HOME}/local], 'mbuildpl_arg' => qq[./Build --install_base $ENV{HOME}/local], 'urllist' => [q[ftp://ftp.cpan.jp/], q[ftp://ftp.kddilabs.jp/CPAN/]],
必要な環境変数を追加する.
前述の通り,私はシェルを zsh に変更したが,さくらインターネットのサーバーは FreeBSD でデフォルトは csh なので,以下では .cshrc を変更する例を紹介しておく.
$ echo 'setenv PATH $HOME/local/bin:$PATH' >> ~/.cshrc $ echo 'setenv PERL5LIB $HOME/local/lib/perl5:$HOME/local/lib/perl5/site_perl' >> ~/.cshrc $ echo 'setenv PKG_DBDIR $HOME/local/var/db/pkg' >> ~/.cshrc $ echo 'setenv PORT_DBDIR $HOME/local/var/db/pkg' >> ~/.cshrc $ echo 'setenv INSTALL_AS_USER' >> ~/.cshrc $ echo 'setenv LD_LIBRARY_PATH $HOME/local/lib' >> ~/.cshrc $ source ~/.cshrc $ mkdir -p ~/local/var/db/pkg
CPAN を最新に更新.
$ cpan -i Bundle::CPAN $ cpan
質問には全てEnter で.
最後に
cpan> o conf commit
を忘れないように.
- Plagger のインストール
ネット上には,Template,DateTime::TimeZone,DateTime::Format::Mail,Encode::Detect あたりでつまづくとの記事が多く見られたが,今日時点の環境ではどれも問題無かった.というわけで素直に,
cpan> install Plagger
するだけ.ここも質問は全て Enter でデフォルト値を受け入れる.
後から必要になったモジュールは,
cpan> install WWW::Mixi cpan> install URI::Find cpan> install WWW::Mechanize cpan> install Image::Info
のあたり.
assets はどこか適当な場所にコピーしておく (後から yaml の global で読み込む).
cp -r ~/.cpan/build/Plagger-0.7.17/assets ~/plagger
- Plagger の設定
yaml はインデント構造を保持することと,最終行に改行を入れておくことに注意.
メール配信は,Gmail の smtp を使っていたのだが,遊びすぎて
Data failed: 550 5.4.5 Daily sending quota exceeded. v50smxxxxxxxxx
とか怒られてしまったので,さくらインターネットの smtp を使っている.さくらの smtp は POP before SMTP なので,POP のアカウントも記述しておくことに注意.
base.yaml:
全てから読み込む共通設定.
最初はメール送信部分やレシピ定義などをしていたが,結局 global だけになったのであまり意味がない.
global: plugin_path: - /home/<username>/local/lib/perl5/Plagger/Plugin assets_path: /home/<username>/plagger/assets timezone: Asia/Tokyo log: # level: debug level: info cache: base: /home/<username>/plagger define_recipes:
bloglines.yaml:
Bloglines のフィードを Gmail へ.
Bloglines や del.icio.us へのリンクを追加したり,はてブ数や page rank を表示させたり,全文配信しないフィードの全文取得をしたり,余計な広告を除去したり…などなど.メール配信は Bloglines のフォルダ別にアドレスを分けて,後で Gmail でフィルタできるようにしている.
include: - /home/<username>/plagger/.yaml/base.yaml plugins: - module: Subscription::Bloglines config: username: XXX password: base64::XXX mark_read: 1 fetch_meta: 1 - module: Widget::Simple config: widget: bloglines - module: Widget::Simple config: widget: delicious - module: Widget::Simple config: widget: hatena_bookmark_users # - module: Widget::Simple # config: # widget: livedoor_clip_users # - module: Widget::Simple # config: # widget: delicious_bookmark_users - module: Widget::Simple config: widget: google_pagerank # - module: Filter::BreakEntriesToFeeds - module: Filter::EntryFullText - module: Filter::ImageInfo - module: Filter::ResolveRelativeLink - module: Filter::StripRSSAd - module: Filter::TTP - module: Filter::TruePermalink - module: Publish::Gmail rule: expression: $args->{feed}->has_tag('alpha') config: mailto: XXX+plagger_bloglines_alpha@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX - module: Publish::Gmail rule: expression: $args->{feed}->has_tag('ce') config: mailto: XXX+plagger_bloglines_ce@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX - module: Publish::Gmail rule: expression: $args->{feed}->has_tag('music') config: mailto: XXX+plagger_bloglines_music@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX - module: Publish::Gmail rule: expression: $args->{feed}->has_tag('peace-pipe') config: mailto: XXX+plagger_bloglines_peace-pipe@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX - module: Publish::Gmail rule: expression: $args->{feed}->has_tag('personal') config: mailto: XXX+plagger_bloglines_personal@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX - module: Publish::Gmail rule: expression: $args->{feed}->has_tag('topics') config: mailto: XXX+plagger_bloglines_topics@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX # - module: Publish::Gmail # config: # mailto: XXX+plagger_bloglines_ALL@gmail.com # mailfrom: noreply@plagger.com # mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX # via: smtp # host: <domain>.sakura.ne.jp # username: XXX@<domain>.sakura.ne.jp # password: base64::XXX # pop3: # host: <domain>.sakura.ne.jp # username: XXX@<domain>.sakura.ne.jp # password: base64::XXX
mixi.yaml:
mixi の日記を Gmail で読む.メッセージとかも取得できるようだが,ひとまず日記だけ.
include: - /home/<username>/plagger/.yaml/base.yaml plugins: - module: CustomFeed::Mixi config: email: XXX password: base64::XXX fetch_body: 1 fetch_body_internal: 1.5 fetch_items: 10 show_icon: 1 feed_type: - FriendDiary # - RecentComment # - Message - module: Filter::Rule rule: module: Fresh mtime: path: /home/<username>/plagger/.tmp/mixi autoupdate: 1 - module: Publish::Gmail rule: - module: Rating rate: '>= 0' config: mailto: XXX+plagger_mixi@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX
amazon.yaml:
Amazon アソシエイトレポートを Gmail で読む.
include: - /home/<username>/plagger/.yaml/base.yaml plugins: - module: CustomFeed::AmazonAssociateReportJP config: email: XXX password: base64::XXX - module: Publish::Gmail config: mailto: XXX+plagger_amazon@gmail.com mailfrom: noreply@plagger.com mailroute: # via: smtp_tls # host: smtp.gmail.com:587 # username: XXX@gmail.com # password: base64::XXX via: smtp host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX pop3: host: <domain>.sakura.ne.jp username: XXX@<domain>.sakura.ne.jp password: base64::XXX
…と,ひとまず.定番の使い方だけ.
あとは crontab -e して,
PERL5LIB=/home/<username>/local/lib/perl5:/home/<username>/local/lib/perl5/site_perl 0 * * * * /usr/bin/perl /home/<username>/local/bin/plagger -c /home/<username>/plagger/.yaml/bloglines.yaml > /dev/null 2>&1 30 5 * * * /usr/bin/perl /home/<username>/local/bin/plagger -c /home/<username>/plagger/.yaml/mixi.yaml > /dev/null 2>&1 30 6 * * * /usr/bin/perl /home/<username>/local/bin/plagger -c /home/<username>/plagger/.yaml/amazon.yaml > /dev/null 2>&1
とか適当に.
これからレンタルサーバーの無料お試し期間の2週間,遊び倒してみます.
非常にたくさんの情報を残してくれた先駆者の方々に感謝.
東京でしぞーかおでんが食べられる店.
しぞーかおでんは,かつお,さば,いわしのけずり粉と青のりで作られた,だし粉をかけて食べるのが特徴.
厳密に言えば,ここのおでんはこの店なりのアレンジを加えているそうで,本場のしぞーかおでんは牛すじを煮込んだ真っ黒のつゆは飲まないそうだが,ここでは牛すじの代わりに手羽先を使い,つゆを飲めるようにしたのだそう.本家本元のしぞーかおでんが食べれる店は,下北沢にあるのだとか.
私は名古屋出身なので,「おでん」といえばドロドロの赤味噌で食べるものを想像してしまうが,しぞーかおでんもかなり美味い (ところで,名古屋ではコンビニのおでんにも味噌がついてくるって,知ってました?)
この店のもう1つのウリは,3月から12月まで食べられる生しらす.マスターが毎朝湘南の港までとりに行き,小田急線で持ち帰るのだとか.今日はたまたましらすがとれなかったようで,非常に残念.
検索しても,みんなあえて店の名前は伏せてるかんじなので,ここでもあえて書きませんが,キーワードで検索すればすぐ分かると思います.
あ,ちなみに「しぞーかおでん」とは「静岡おでん」のことです.
江口さんの Blog より.
E_GUCCI Daily: 「定曜定時」が決め手だと思う
これはたとえば日曜日の夜6時半はサザエさんとか
金曜の深夜はタモリ倶楽部というように、テレビ番組の編成が
曜日時間で固定されていて、人々の生活パターンの中に
とけ込んでいることを指します。
なんとなく,ボンヤリと,「いつの日か,ライブの放送・ネット上のコンテンツ・記録済みのコンテンツを意識することなく,視聴履歴などから個人の趣向を反映して,自動的に自分の見たい番組が検索されて映し出される」みたいな生活を描いていたけど,確かに放送局の「編成」という概念はあまりに強力だ.
彼の結論には激しく同感.
テレビの強みは
「生」というポイントと、「永遠のワンパターン」で
人々の暮らしをある程度強制することだと思っています。
オンデマンドなどは皆が思うほど求められてはいないのだろうと
私は思っています。
いくらコンテンツが豊富にあったとしても,単純な pull 型のビデオ・オン・デマンドが "life changing" だとは思わないし,例えば Rimo は「編成」まで含めて提案しているところが,なにより素晴らしいのだろう.
いくら番組を探さなくても良い時代が来たとしても,例えば今日の昼食時に同僚と話した「昨日のガキ見た? 山崎やっぱりしょーもねーよなー」みたいな会話は本当に無くなるのだろうか?
というか,最近「将来のリビングルームを支配するのは PS3 や Xbox360などのゲーム機か,PC か,Apple TV か,あるいは家電メーカーが既存のテレビを進化させて新しいライフスタイルを提案するのか」みたいな,ハードウェアの方向に頭が行きがちだったんだけど,やっぱりコンテンツ (中身だけではなく見せ方も含めて) が重要なんだよなーと再認識させてくれたエントリー.
恥ずかしながらまーったく知らなかったのですが,なんとあの Stax が去年末に Concord Music Group により復活していたとのこと.
Concord Music Group: Stax
Stax ってなによ? って方はこちらでも.
Peace Pipe: 選曲に大注目 - ファン泣かせの Stax Profiles [music]
そういえば今年は Stax 創立50周年.それを記念して,50周年記念ベスト盤が今週発売されたり,今月末には復活後のオリジナル第1弾 (Interpretations: Celebrating the Music of Earth Wind and Fire) が発売予定らしい.
さらには,50周年記念特設サイトや,YouTube,MySpace にオフィシャルサイトが設立されている模様.
Stax Records 50th
http://www.youtube.com/Staxrecords
http://www.myspace.com/stax50
こちらは 50周年記念プロモ.んーカッコいい.
彼はその生活の大部分を旅の中で過ごし,そしてその旅のほとんどの夜に,ギターを弾き歌を歌っている.
夜ごとに人々に感動や生きる勇気を与えたりするのだ.それだけではなく,旅の途中で曲を作ったり歌詞を書いたりもしている.
三宅はそんな旅の喜びをとてもよく知っている.
誰もが一度は夢に見た,憧れのバンドマンそのものだ.
-- 忌野 清志郎
Google Testing Blog より,QA と QC とテストエンジニアリングの違いについて.
Google Testing Blog: The difference between QA, QC, and Test Engineering
コミュニケーションを円滑に進める為に「用語の定義」は非常に大切だが,重要なのは世間一般の定義よりも,その組織 (や関連組織間) で定義が統一され,役割が明確になることだと思う.
ということで,これはあくまでも Google Testing Team の見解に過ぎないが,まあなにかの参考にはなるかな,と.
まず QC (Quality Control) はというと…
In the classic definition QC is short for Quality Control, a process of verifying predefined requirements for quality.
(QC は元来 Quality Control (品質管理) であり,品質に関する,決められた要件を確認するプロセスである)
For software the QC function may involve checking the software against a set of requirements and verifying that the software meets the predefined requirements.
(ソフトウェアの世界では,QC の機能は,例えばソフトの一連の要件に対する確認だったり,ソフトが決められた要件を満たしているかの立証だったりするだろう)
そして QA (Quality Assurance) は…
Quality Assurance, on the other hand, is much more about providing the continuous and consistent improvement and maintenance of process that enables the QC job.
(一方で Quality Assurance (品質保証) は,QC を上手くまわす為の,首尾一貫した継続的な,改善・保守活動である)
つまり…
We use the QC process to verify a product does what we think it does, and we use the QA process to give us confidence that the product will meet the needs of customers.
(QC は製品が想定通りの挙動をするかどうかの確認であり,QA は製品が顧客の要求を満たすことができるかどうかの確証を得るためのものだ)
To that end the QA process can be considered a meta process that includes aspects of the QC process. It also goes beyond that to influence usability and design, to verify that functionality is not only correct, but useful.
(その為,QA プロセスは QC の側面を持つメタプロセスと解釈することができる.さらにはそれを超えて,機能要件が満たされているだけではなく,便利であることを確証する為に,ユーザビリティやデザインにまで影響を及ぼす)
さて,ここまでは一般的な話で,ここからが彼らの本題.
Here at Google, we tend to take a third approach that we call Test Engineering. We look at this as a bridge between the meta world of QA and the concrete world of QC. Our approach allows us to ensure that we get the opportunity to think about customers and their needs, while we still provide results that are needed on day to day engineering projects.
(Google では,「テストエンジニアリング」という,第3のアプローチを取っている.これはメタ世界の QA と,実世界の QC を橋渡しするものと捉えている.つまり我々のアプローチは,日々のエンジニアリングプロジェクトで成果を出しながらも,同時に顧客と顧客の要求を確実に考慮入れることを可能とする)
それで,Google Testing Team はソフトエンジニアと QA / QC もやりつつ,テスト容易性を高める工夫をしたり,設計ドキュメントをレビューして test hook の要求をしたりしますよーみたいな内容に続くのだが,目を引いたのはこの一文 (の後半部分,というか訳だと前半部分か).
We put an emphasis on building automated tests so that we can let people do what people are good at, and have computers do what computers are good at.
(人間には人間の得意なことをやらせ,コンピューターにはコンピューターの得意なことをやらせる為に,自動化テストの構築に重きを置いている)
日本でもテストエンジニアの地位が向上しますように.
あ,訳はいつも通り,意訳です.
去年公開された,日本アカデミー賞の最優秀作品賞を含む5冠を始め,数々の映画賞を受賞した,李相日監督の話題作がリバイバル上映されていたので,観に行ってきました.
昭和40年代の福島県を舞台にした,常磐ハワイアンセンター (現スパリゾートハワイアンズ) の誕生にまつわる実話を基に,フラダンスを通じたドラマを描いたストーリー.
「とっても泣ける映画」と聞いていて,確かにまわりでは鼻をすする音が聞かれたし,私自身もグッと来るものがあった.
それは,寒い東北の地に常夏の楽園を誕生させるという,言わば存在しない理想郷を追い求める人間本来の虚しさがあるからなのか,家族や友人に対する情が描かれているからなのか,思春期の少女の人生舞台や東京で夢破れたダンサーの感情変化を目の当たりにしているからなのか,あまりに圧倒的かつ圧巻のダンスのためか,日本が石炭から石油に移り変わるエネルギー革命の時代背景とそれに対する人々の苦悩が垣間見えるからなのか…
正確に言えば,そのどれでもあるし,そのどれでもなかった.
冷静に考えて,ありがちなストーリーだと言ってしまえばそれまでだ.
それでも,ここまで胸に残るものがあったのは,ひとえに「蒼井優の笑顔」に尽きると思う.
正直,個人的には「パッとしない」「あかぬけない」というイメージがあった蒼井優だが,スクリーンの中の彼女の笑顔は,目映いばかりに輝いていた.男が女性に対して感じる愛しさというより,人間が人間に対して感じる愛しさ…とでも言えばよいだろうか.この笑顔だけで払った金額の元は十分に取れる.
そしてその蒼井優に最後まで食われなかった,主演の松雪泰子も見事だった.ダウンタウンのごっつええ感じで頭叩かれてた彼女が,こんな素晴らしい役者になったんですねぇ.個人的には松雪泰子の60年代ファッションもツボだったりしたんだけど.
今週には DVD も発売されるようだが,しばらく各地でリバイバル上映されているようなので,去年見逃した方は,炭鉱に咲く花の笑顔を見に劇場に足を運んでみるのも良いかも.
フラガール オフィシャルサイト
|
|
前回 に引き続き,ドキュメンテーションについて.
前回は「健全なドキュメントを書く7つのルール」を紹介したが,今回は「ドキュメントを書く上での6つのテクニック」を紹介したいと思う.
本シリーズでアーキテクチャドキュメントを扱うのは,今回で最後の予定.
Reference:
Documenting Software Architectures: Views and Beyond,
by Clements, et al. Addison-Wesley 2003
--> Chapter 9, Chapter 11.1 - 11.3
Technique 1: Context Diagrams
(コンテキストを明確にする)
システムやサブシステムを表現するにあたり,何がそこに含まれ,何が含まれないかを読み手に把握させることが重要である.
コンテキストダイアグラムを供給することにより,「システムが相互作用する環境」「外部インターフェース」「対象システムが依存する他のシステム」を明確する.
View によって明確にしたい対象は様々だろう.例えば Layered view (Module viewtype) ならシステムと階層構造,Shared data view (C&C viewtype) なら外部要素とのインタラクションパス,Deployment view (Allocation viewtype) なら同じリソースを共有している他システム,など.
Technique 2: Combining Multiple Views
(複数の view を合成する)
これまで,構造を複数の view に分割し,視点を統一させることが重要だと述べてきたが,こうすることで全体像が掴みにくくなり,構成要素間の関係が捉えにくくなることがあるので,ドキュメントではそこをフォローしておきたい.
複数の view を合成するには,2つの方法がある.1つは combined view (合成 view) を構築するやり方.これには "overlay" と呼ばれる view を重ね合わせる方法と,"hybrid" と呼ばれる複数の view の構成要素を結びつける方法がある.もう1つはそれぞれの view の要素と関係同士を説明する bridging document (ブリッジドキュメント) を記述するやり方.
注意したいのは,combined view を用いて view を合成することは,ドキュメンテーションの上では全体像の把握や view 間の関連性の理解に繋がるが,やはり設計プロセスにおいては1つの視点から問題を分離し,複雑度を軽減させて pattern や tactics を検討することが本質であるということだ.
Technique 3: Using Hierarchy
(階層構造を使用する)
読み手にとっても書き手にとっても管理・理解しやすくする為に,アーキテクチャの説明に階層構造を取る.
具体的には,まずはトップレベルの view を記述し,詳細は別の view を用いて説明する.
Technique 4: Documenting Interfaces and Behavior
(インターフェースとその挙動を記述する)
当たり前のことに聞こえるかもしれないが,インターフェースは2つの独立した要素がどのように相互作用するかの境界であり,コミュニケーションの手段である.
つまりこれを明確にするということは,その要素の特性を,外部に対してどこまで意識させるかという宣言になり,それを意識してインターフェース定義を行う.
Technique 5: Notations
(様々な表記方法)
世の中には UML や ADL (Architecture Description Languages) など,既に定義された表記方法があり,それらを使うメリットも多い.
例えば「view を表現する多彩な記述方法を備えていること」「標準化されており,共通言語として利用価値が高いこと」「関連ツールが充実していること」などがメリットとして挙げられる.
但し,同時にそれらのデメリットも意識しておく必要がある.例えば UML は C&C の様々なコネクタやポートを完全に表現できない点 (UML 2.0 でいくつか定義はされたが),より実装に近いことを表現してしまう点などである.
本書第11章には,UML を始めとする様々な表記方法と,これまで解説してきた view との対応が説明されているので,参考にされると良いだろう.
Technique 6: Choosing the Views
(View を選択する)
最後に一番重要なテクニック.
それは「読み手に適した view と粒度を選択する」ということだ.オーディエンスを意識した内容に仕上げることは,プレゼンテーションでもドキュメンテーションでも同じことである.
本書第9章では,マネージャー,開発担当者,テスター・インテグレーター,他システムの開発者,メインテナー,プロダクトラインアプリケーション担当者,顧客,ユーザー,アナリスト,インフラ担当,新規利害関係者,将来のアーキテクトなど,実に様々な想定読者に対して,それぞれ何をどれぐらい記述するべきかが解説されている.非常に参考になるので,ぜひ一読されることをお勧めする.
日本国民は,正義と秩序を基調とする国際平和を誠実に希求し,国権の発動たる戦争と,武力による威嚇又は武力の行使は,国際紛争を解決する手段としては,永久にこれを放棄する.
前項の目的を達するため,陸海空軍その他の戦力は,これを保持しない.国の交戦権は,これを認めない.
-- 日本国憲法第九条
何週間か前の 放送室 で松ちゃんが「野見さん (「働くおっさん劇場」の名物おっさん) は神だと思う」という発言をしていた.
僕は最近気付いたんです.
あの人はやっぱ神様ですね.
こんなにおもしろくてええんかな?…と思ってね.
とにかくおもしろいからこれは見ましょう!
ちょうどその時の音声が YouTube にアップされていたので,まずは最初の2分ぐらいだけでもそちらを (ラジオなので画像は黒画のままです).
松ちゃんがこんなに興奮しているのも,「働くおっさん劇場」で,ものすごいシーンが録れてしまったから.
松ちゃんに「こんなにおもろいものが録れてしまうと,お笑いインポになる」とまで言わしめたそのシーンがこれ.もうあとは説明はいらない.
働くおっさん劇場 - Wikipedia
私は家でも会社でも,Mutt というメールクライアントを愛用している.
今まで様々なメーラーを試したが,カスタマイズ性が非常に高く,痒い所に良く手が届く Mutt が,個人的には一番手に馴染む.というか,CUI 前提の Vimmer が大量の未読メールを毎日さばく効率を考えると,他に選択肢が無いのが現状だ.
ちなみに "mutt" というのは雑種犬のこと.その名の通り,他の様々な MUA を参考に良い所が取り込まれており,
All mail clients suck, this one just sucks less
という心憎いスローガンを打ち出している.
最近,Mutt の開発リーダーが交代し,長年拒否され続けていたパッチが取り込まれたり,新バージョンの 1.5.14 がリリースされるなど,動きが活発になっている模様.
ぞえ の戯れ言 - BrendanがMuttの開発リーダーに
実際に Mutt を初期導入する場合には,libiconv や glibc 2.2 以降などの iconv,S-Lang などの curses ライブラリ,さらに MTA などが必要になるが,今回はひとまず Mutt を 1.5.14 にアップデートした時の作業記録を残しておく.
まずは ここ からソースコードと日本語パッチを取得.
$ wget http://www.emaillab.org/mutt/1.5.14/mutt-1.5.14.tar.gz $ wget http://www.emaillab.org/mutt/1.5.14/patch-1.5.14.mutt-j.ja.1.gz
$ wget http://www.mutt.ca/patches/patch-1.5.6.dw.maildir-mtime.1 $ wget http://cedricduval.free.fr/mutt/patches/download/patch-1.5.5.1.cd.trash_folder.3.4 $ wget http://cedricduval.free.fr/mutt/patches/download/patch-1.5.5.1.cd.purge_message.3.4 $ wget http://cedricduval.free.fr/mutt/patches/download/patch-1.5.1.cd.pattern_broken.1
$ tar xzvf mutt-1.5.14.tar.gz $ cd mutt-1.5.14 $ patch -p1 < ../patch-1.5.6.dw.maildir-mtime.1 $ patch -p1 < ../patch-1.5.5.1.cd.trash_folder.3.4 $ patch -p1 < ../patch-1.5.5.1.cd.purge_message.3.4 $ patch -p1 < ../patch-1.5.1.cd.pattern_broken.1 $ gzcat ../patch-1.5.14.mutt-j.ja.1.gz | patch -p1
$ CFLAGS="-O2 -I/usr/local/include -I/usr/pkg/include -I/usr/pkg/xorg/include -I/usr/include -I/usr/pkg/include/db4" $ LDFLAGS="-L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/pkg/xorg/lib -Wl,-R/usr/pkg/xorg/lib -L/usr/lib -Wl,-R/usr/lib" $ export CFLAGS LDFLAGS $ ./prepare && ./configure \ --enable-pgp \ --with-regex \ --with-homespool=Maildir \ --enable-external-dotlock \ --enable-pop \ --enable-imap \ --with-ssl \ --enable-flock \ --disable-fcntl \ --enable-nfs-fix \ --enable-nls \ --without-wc-funcs \ --with-mixmaster \ --without-sasl \ --enable-default-japanese \ --enable-hcache \ --with-libiconv-prefix=/usr/pkg \ --with-slang $ make && sudo make installconfigure オプションはお好みで.
set attach_ignore_fundamental set attach_recurse attach-allow */.* attach-exclude text/x-vcard application/pgp.* attach-exclude application/x-pkcs7-.* inline-allow text/plain attach-exclude message/external-body inline-exclude message/external-bodyという記述で起動時にエラーが吐かれていたが,
attachments +A */.* attachments -A text/x-vcard application/pgp.* attachments -A application/x-pkcs7-.* attachments +I text/plain attachments -A message/external-body attachments -I message/external-bodyみたいに書きかえたら動くようになった.
Blog を書いていて良かったと思うことはたくさんあるが,最近一番嬉しかったのは私の大好きなバンド,Big Frog のドラムのトンさんからメールをもらったこと.
こ・の・へ・ん の Big Frog に関する記事に検索エンジン経由で飛んできた彼が,なんと直接メールを送ってくれたのだ.
今日は SuperDeluxe でライブがあり,ひな祭りということで娘を持つ父としては見に行けなかったが,元々ライブ会場でしか売られていない "Boot Frog" というアルバムを買いに顔だけ出そうと思っていたら,トンさんが「残り少ないから取り置きしといてあげる」とのこと.会場につくなり,「トシヤ君だよね?」と声をかけてくれました.
というわけで,トンさんとボーカルのサトちゃんと.
最近,Big Frog は MySpace にページを開設.
http://www.myspace.com/bigfrogjp
私の iTunes の "Most played list" の1位を飾る "zenkey" を含む彼等のナンバーも流れてるので,ぜひチェック,チェック.
ネタを2つほど.まずは1つ目.
[まとめ]あの名作映画をわずか『5秒』で把握できる動画
タイタニックがもう最高.