アジャイル,Trac,オープンソースなどの話。認定スクラムマスター。Twitterは@ryuzee
僕がやっている案件(PHP)はもともとテストコードのないレガシーなプロジェクトで、それを改善するためにずっと動作を確認するための結合レベルの自動テストを増やしてきた。
そんな中で僕のところではどうやってテスト用のfixtureを管理しているか事例として紹介したいと思う。
みんなが沢山テストを作る前にコアとなるテスト用のfixtureは用意しておく。
さもないと、みんなが好き勝手にfixtureを作ってしまい、あっという間に混乱に陥る。
プログラム本体と同様に、DRYの原則で、同じようなテストデータを繰り返し作ってしまうようなことは避けるべきだ。
最悪なパターンは開発機や本番機のデータを引っこ抜いてきて、それをそのままテストデータとしてごっそり使う方法。流石に居ないと思いたいが、こういうことをやってしまうとテストデータの見通しが悪すぎて、テストが失敗した場合の検証が非効率だし、そもそもデータのロードに時間がかかりすぎる。
マスター系のテーブルとか、ユーザー情報のテーブルのためのfixtureはテストケースごとにバラバラに用意してはいけない。似たようなfixtureがあちこちに造られると、テストの数が増えてからの仕様変更の際にテストデータのメンテナンスだけでえらく時間が取られてしまう。
僕の場合は、共通fixture置き場に基本的なfixtureをテーブルごとに配置した上で、テストケースごとのfixtureを上書きでロードしている。
以下はPHPの場合だけど、基底クラスで、以下のようにCSVの取り込みロジックを作っておいて
if(is_array($this->fixture_path)) {
foreach($this->fixture_path as $path) {
echo "----" . $path . "\n";
if ($dir = opendir($path)) {
while (($file = readdir($dir)) !== false) {
if ($file != "." && $file != ".." && substr($file, -4) == ".csv") {
$table_name = str_replace(".csv", "", basename($file));
echo "===loading $file...";
@$dataSet->addTable($table_name, $path . "/" . $file);
echo " done!\n";
}
}
closedir($dir);
}
}
}
return $dataSet;
}
テストケースのコンストラクタあたりで
なんてやって、fixtureを複数階層に分けてロードしている。
fixtureをYAMLやXMLで持ってても同じことができるんじゃないかな。
僕はPHPUnit+Seleniumで結合試験を自動化していて、fixtureはテーブルごとにCSVファイルを用意している。これらのCSVをsetUp()で読み込むようにしているんだが、fixtureのカラム数があっていないと、すぐテストが落ちてしまう。(XMLでfixtureを保持していると楽かもしれないんだけど)
開発中は、当然カラムの追加や削除はあるが、その度にどのfixtureを修正しなければならないかを考えるのは面倒で仕方ない。
なので僕は、全fixtureをDBのスキーマと照合するツールを作っている。これがあればスキーマの変更の怖さはちょっと軽減される。
手で整合性の取れたfixtureを作るのはなかなか大変なので、Excelでfixtureをつくるようにしている。
予め用意しておいたシートに値を入れてマクロを動作させると、fixtureが自動で生成されるかんじ。
こういうツールもプロジェクトの早い段階で用意できていると効率的だろう。
例えば最終ログインから60日たっていたらAをして、120日たっていたらBをする、というテストケースの場合、fixtureに最終ログイン日時をハードコーディングできない。ハードコーディングしてしまうと、そのテストは実行日によってテスト結果が変わってしまうテストであり、自動テストの条件を満たさない。
このような場合は、fixtureにて識別可能な適当な値を設定しておいて、別途テストの初期化メソッドで値を書き換えるような対応をする。
まぁまだまだ改善の余地はあるなぁと思うけど、大分楽になってきたのは確か。
とはいえあくまで外側の挙動が担保できるようになっただけなので、内部的なリファクタリングと、メソッドレベルのテストはこれから増やしていかないといけない。
紺屋の白袴ということで、試行錯誤中ではあるのだが、自戒を込めてまとめておく。
テストは以下の条件を満たしている必要がある。
レガシーコード改善ガイド (Object Oriented SELECTION)
著者/訳者:マイケル・C・フェザーズ
出版社:翔泳社( 2009-07-14 )
定価:¥ 4,410
Amazon価格:¥ 4,410
大型本 ( 472 ページ )
ISBN-10 : 4798116831
ISBN-13 : 9784798116839
ということでレガシーコードと格闘中orz
超FAQだけど個人用メモ。
GPartedのLive CDを使って仮想マシンを起動し、パーティション情報を修正する。
なお、GPartedはLVMには対応していないので、CentOSのように標準でLVMを使用するOSの場合は、別パーティションを作成し、そのパーティションをLVMに追加することになる。
以下GPartedの操作メモ。
標準でGPartedが起動される。!マークはLVMで編集できないことをさす。ここで拡張したディスクが未割り当てとして表示されているはずだ。

未割り当てのパーティションを選択して、Newをクリック。CentOSであれば通常ext3でOK。

まだ設定は反映されていないので、ツールバーのApplyボタンを押す。警告が出るので内容確認してダイアログ内のApplyボタンをクリック

結果として、先ほど未割り当てだった領域がsda3として新設されたことがわかる。

以上が終わったら、CDROMを取り出して、OS再起動。
新たに追加したパーティションはsda3なので、これをLVMに追加する。
追加したディスクパーティションをPV(物理ボリューム)として定義する
追加したPVをVolGroup00という名前のVolume Groupに追加する
論理ボリュームにディスク容量を追加する。
ファイルシステムサイズを再認識させてディスク容量の追加を反映させる。
以上で完了。再起動も不要っぽい。
自動テスト環境をWindowsからLinux環境にしたとたんに、テストが通らないものが頻発して、初めて開発者がhtmlの中に機種依存文字である波ダッシュを埋め込んでくれていたのに気づいた。。orz
以下Wikipediaから引用。
Unicodeの仕様書では、U+301C WAVE DASH(波ダッシュ)に、「JIS punctuation」(The Unicode Standard、Version 2.0より引用、「JIS約物」の意)という注釈を施しておきながら、JIS X 0208の波ダッシュの例示字形(“上がって下がる” 形「」)とは異なる形(“下がって上がる”形「」)を印刷してしまった。
このような間違いが発生した理由は、Unicodeの例示字形を検討するグループにいたメンバーの日本語に対する知識が不十分だったために、縦書きの例示字形「」を90度回転すればいいと誤って判断してしまったためである[4]。
この影響を受けて、Microsoft Windows(XP以前)ではUnicodeの波ダッシュ (U+301C, WAVE DASH) は“下がって上がる”形「」で表示される(MS 明朝、MS ゴシック、MS UI Gothicにおけるもの)。それに対し、Unicodeの全角チルダ (U+FF5E, FULLWIDTH TILDE) は“上がって下がる” 形「」で表示されるようになっており、Shift_JISの波ダッシュ (0x8160、WAVE DASH)「」と同一の文字として扱われる。
このようにWindowsは、Shift_JISの波ダッシュ (0x8160、WAVE DASH)「」を、本来割り当てるべきUnicodeの波ダッシュ (U+301C, WAVE DASH) ではなく、Unicodeの全角チルダ (U+FF5E, FULLWIDTH TILDE)「」に割り当てている。一方、Mac OSやMac OS XではShift_JISの波ダッシュ (0x8160、WAVE DASH)「」を本来のUnicodeの波ダッシュ (U+301C, WAVE DASH) に割り当てており、その字形も一般的な波ダッシュの形である“上がって下がる”形「」で表示される(Osakaフォントやヒラギノフォントにおけるもの)。このWindows独自のUnicode割り当てが産んだ非互換性により、波ダッシュ (U+301C, WAVE DASH) が環境によっては文字化けを起こす機種依存文字となってしまっている。
JAVAだけの話かと思ってたが、そうじゃなかったんだな〜。
よくある質問に適当に答えるコーナー第二回?。
前提は、アジャイル開発を採用しているシステム開発の場合で、ウォーターフォールでの開発や、その他の業界なんかはまったく想定していないし、ターゲットにしていない。
質問:自分のタスクが終わったら、周りを気にせず帰ってしまう人がいて困っています。
質問:メンバーが指示がないと作業が進められないと言って、待ちになってしまい、生産性があがりません。
顧客の価値を実現するために行動していないよね?
こうなってしまうひとつの理由として、その担当者からお客様が見えていな い、ビジネスの価値が分かっていない、という点があげられると思う。従って、とにかくお客様のところに連れて行き、お客様が何を考えているか理解させるようにすべき。
エンジニアはモノを作るのが仕事なんじゃなくて、価値を実現するのが仕事。
そもそも自分のタスクってなんだっけ?というのもある。Scrumであれば、タスクは自分でサインアップすることになるので、チームがコミットしたゴールに向けて、残っているタスクを自分でサインアップしてこなしていかなければならない。
スクラムマスターがタスクの割り当てをしてしまうから、自分のタスクが終わったら帰ってしまうメンバーが出てきたりするのではなかろうか?
なお、付き合い残業しろ、とかいうつもりはサラサラ無い。そんなの糞だ。
あくまで、チームとして(PMが勝手にではなく)コミットしたものがあるのにも関わらず、そのチームのコミットに対して責任を持たない人をスコープにした話である。
帰ってしまう人がいるチームは、往々にしてチームのコミュニケーションがうまくいっていない。
個人としてではなく、チームとして成果を出すんだ!という前提のもとに全員の問題をいつでも気軽に話せるようにしなければならない。話にくい雰囲気が出来ると、隠ぺい、先延ばしが発生してリスクになる。
※評価を行える人にならないと無理な方法だけど、オープンな評価軸は組織の透明性を強化し、組織力の向上につながる。
待ちになってしまう人は、技術力がない、とかチームのやり方が分からない、等といった理由で待ちをしてしまうことも多い。
技術を身につけ、チームのやり方に慣れるためには、その人をひとりにせず、ペアで活動すると良い。徐々に慣れてくるだろう。
日本のほとんどの企業はOJTでは数年上の先輩1人にくっつく形だが、アジャイルなOJTでは、チーム全体で人を育成することになる。
チーム全体がメンバーの能力を向上させる責任を負っている、と考えるべきだ。
残念ながらそういう人がいるかもしれない。チームにずっとそういう人がいるとチームの士気が低下して周りにも影響を及ぼすようになる。上長と相談してメンバーを入れ替える、といった対忚が必要になる場合もある。
いままでアジャイルコーチ稼業をしてきて、よく聞かれた質問があるんだけど、それへの答えを定期的に掲載していってみようかと思う。もし質問があったらコメントでもTwitterでも何でも良いのでいただければ、速攻でブログに私見を書いていきます。
【質問】似非アジャイルって何ですか?
例として以下のようなものがあげられると思う。他にもあるだろうけど代表的なところでは
Top 100 Agile Booksというテーマで、Jurgen氏が書かれていたので、どのくらいの本が日本で翻訳されてるんだっけ?という興味もあり、日本語化されているものはその旨追記してみた。
なお、Jurgen氏によれば、Amazonで、「この本を買っている人は合わせてこれも買っています」みたいな情報によって本の一覧を抽出し、ランキングについては、AmazonとGoodReadsというサイトのデータを参考にして重みづけして集計したとのこと。
本が売れないから邦訳が出るのを時間をかけてまっても仕方ないという気もするので、この本翻訳まだー?みたいな人は英語で読んでしまうと良いのではないかと思う。
アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~
著者/訳者:Mike Cohn マイク コーン
出版社:毎日コミュニケーションズ( 2009-01-29 )
定価:¥ 3,360
Amazon価格:¥ 3,360
単行本(ソフトカバー) ( 336 ページ )
ISBN-10 : 4839924023
ISBN-13 : 9784839924027
著者/訳者:Robert C. Martin
出版社:アスキー・メディアワークス( 2009-05-28 )
定価:¥ 5,040
Amazon価格:¥ 5,040
大型本 ( 528 ページ )
ISBN-10 : 4048676881
ISBN-13 : 9784048676885
レガシーコード改善ガイド (Object Oriented SELECTION)
著者/訳者:マイケル・C・フェザーズ
出版社:翔泳社( 2009-07-14 )
定価:¥ 4,410
Amazon価格:¥ 4,410
大型本 ( 472 ページ )
ISBN-10 : 4798116831
ISBN-13 : 9784798116839
リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
著者/訳者:マーチン ファウラー Martin Fowler 児玉 公信 平澤 章 友野 晶夫 梅沢 真史
出版社:ピアソンエデュケーション( 2000-05 )
定価:¥ 5,040
Amazon価格:¥ 5,040
単行本 ( 423 ページ )
ISBN-10 : 4894712288
ISBN-13 : 9784894712287
アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技
著者/訳者:ロバート・C・マーチン
出版社:ソフトバンククリエイティブ( 2008-07-01 )
定価:¥ 6,090
大型本 ( 720 ページ )
ISBN-10 : 4797347783
ISBN-13 : 9784797347784
著者/訳者:アンドリュー ハント デビッド トーマス
出版社:ピアソンエデュケーション( 2000-11 )
定価:¥ 3,990
Amazon価格:¥ 3,990
単行本 ( 333 ページ )
ISBN-10 : 4894712741
ISBN-13 : 9784894712744
リーンソフトウエア開発~アジャイル開発を実践する22の方法~
著者/訳者:メアリー・ポッペンディーク トム・ポッペンディーク
出版社:日経BP社( 2004-07-23 )
定価:¥ 2,520
単行本 ( 307 ページ )
ISBN-10 : 4822281930
ISBN-13 : 9784822281939
アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング
著者/訳者:James Shore Shane Warden
出版社:オライリージャパン( 2009-02-18 )
定価:¥ 3,780
Amazon価格:¥ 3,780
大型本 ( 464 ページ )
ISBN-10 : 4873113954
ISBN-13 : 9784873113951
アート・オブ・プロジェクトマネジメント ―マイクロソフトで培われた実践手法 (THEORY/IN/PRACTICE)
著者/訳者:Scott Berkun
出版社:オライリー・ジャパン( 2006-09-07 )
定価:¥ 3,360
Amazon価格:¥ 3,360
単行本(ソフトカバー) ( 464 ページ )
ISBN-10 : 4873112990
ISBN-13 : 9784873112992
実践アジャイルテスト テスターとアジャイルチームのための実践ガイド (IT Architects’Archive ソフトウェア開発の実践)
著者/訳者:Janet Gregory Lisa Crispin
出版社:翔泳社( 2009-11-28 )
定価:¥ 5,040
Amazon価格:¥ 5,040
大型本 ( 552 ページ )
ISBN-10 : 4798119970
ISBN-13 : 9784798119977
アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣
著者/訳者:Venkat Subramaniam Andy Hunt
出版社:オーム社( 2007-12-22 )
定価:¥ 2,520
Amazon価格:¥ 2,520
単行本(ソフトカバー) ( 220 ページ )
ISBN-10 : 4274066940
ISBN-13 : 9784274066948
アジャイルプロジェクトマネジメント 最高のチームづくりと革新的な製品の法則
著者/訳者:ジム・ハイスミス 小野 剛 平鍋 健児 高嶋 優子 小野 剛
出版社:日経BP出版センター( 2005-06-09 )
定価:¥ 2,520
単行本 ( 334 ページ )
ISBN-10 : 4822282295
ISBN-13 : 9784822282295
著者/訳者:メアリー・ポッペンディーク トム・ポッペンディーク
出版社:日経BP社( 2008-02-07 )
定価:¥ 2,520
Amazon価格:¥ 2,520
単行本(ソフトカバー) ( 336 ページ )
ISBN-10 : 482228350X
ISBN-13 : 9784822283506
初めてのアジャイル開発 ~スクラム、XP、UP、Evoで学ぶ反復型開発の進め方~
著者/訳者:クレーグ・ラーマン ウルシステムズ株式会社 児高 慎治郎 松田 直樹 越智 典子
出版社:日経BP社( 2004-09-09 )
定価:¥ 2,520
Amazon価格:¥ 2,520
単行本 ( 423 ページ )
ISBN-10 : 4822281914
ISBN-13 : 9784822281915
ユースケース実践ガイド―効果的なユースケースの書き方 (OOP Foundations)
著者/訳者:アリスター コーバーン Alistair Cockburn ウルシステムズ株式会社 山岸 耕二 矢崎 博英 水谷 雅宏 篠原 明子
出版社:翔泳社( 2001-11 )
定価:¥ 3,990
Amazon価格:¥ 3,990
単行本 ( 330 ページ )
ISBN-10 : 4798101273
ISBN-13 : 9784798101279
パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法
著者/訳者:ジョシュア・ケリーエブスキー 小黒 直樹 村上 歴 高橋 一成 越智 典子
出版社:日経BP社( 2005-08-04 )
定価:¥ 4,200
Amazon価格:¥ 4,200
単行本 ( 381 ページ )
ISBN-10 : 4822282384
ISBN-13 : 9784822282387
アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引き
著者/訳者:Esther Derby Diana Larsen
出版社:オーム社( 2007-09 )
定価:¥ 2,520
Amazon価格:¥ 2,520
単行本 ( 184 ページ )
ISBN-10 : 4274066983
ISBN-13 : 9784274066986
アジャイル開発の本質とスケールアップ 変化に強い大規模開発を成功させる14のベストプラクティス (IT Architects’ Archive)
著者/訳者:ディーン・レフィングウェル
出版社:翔泳社( 2010-02-18 )
定価:¥ 3,780
Amazon価格:¥ 3,780
大型本 ( 368 ページ )
ISBN-10 : 4798120405
ISBN-13 : 9784798120409
アジャイルソフトウェア開発スクラム (アジャイルソフトウェア開発シリーズ)
著者/訳者:ケン シュエイバー マイク ビードル
出版社:ピアソンエデュケーション( 2003-09 )
定価:¥ 2,100
Amazon価格:¥ 2,100
単行本 ( 183 ページ )
ISBN-10 : 4894715899
ISBN-13 : 9784894715899
プロダクティブ・プログラマ -プログラマのための生産性向上術
著者/訳者:Neal Ford
出版社:オライリージャパン( 2009-04-27 )
定価:¥ 2,730
Amazon価格:¥ 2,730
単行本(ソフトカバー) ( 284 ページ )
ISBN-10 : 4873114020
ISBN-13 : 9784873114026
著者/訳者:ケント ベック
出版社:ピアソンエデュケーション( 2005-12 )
定価:¥ 2,415
Amazon価格:¥ 2,415
単行本 ( 189 ページ )
ISBN-10 : 4894716852
ISBN-13 : 9784894716858
Manage It! 現場開発者のための達人式プロジェクトマネジメント
著者/訳者:Johanna Rothman
出版社:オーム社( 2008-10-18 )
定価:¥ 3,360
Amazon価格:¥ 3,360
単行本(ソフトカバー) ( 352 ページ )
ISBN-10 : 4274067297
ISBN-13 : 9784274067297
アジャイルソフトウェア開発 (The Agile Software Development Series)
著者/訳者:アリスター・コーバーン Alistair Cockburn
出版社:ピアソン・エデュケーション( 2002-08-30 )
定価:¥ 3,360
Amazon価格:¥ 3,360
単行本 ( 400 ページ )
ISBN-10 : 4894715791
ISBN-13 : 9784894715790
著者/訳者:ケント ベック
出版社:ピアソンエデュケーション( 2003-09 )
定価:¥ 3,150
Amazon価格:¥ 3,150
単行本 ( 217 ページ )
ISBN-10 : 4894717115
ISBN-13 : 9784894717114
継続的インテグレーション入門 開発プロセスを自動化する47の作法
著者/訳者:ポール・M・デュバル スティーブ・M・マティアス アンドリュー・グローバー
出版社:日経BP社( 2009-08-06 )
定価:¥ 3,360
Amazon価格:¥ 3,360
単行本(ソフトカバー) ( 304 ページ )
ISBN-10 : 482228395X
ISBN-13 : 9784822283957
著者/訳者:Allan Kelly
出版社:共立出版( 2010-08-25 )
定価:¥ 3,465
Amazon価格:¥ 3,465
単行本 ( ページ )
ISBN-10 : 4320097599
ISBN-13 : 9784320097599
Ship It! ソフトウェアプロジェクト 成功のための達人式ガイドブック
著者/訳者:Jared Richardson William Gwaltney Jr. でびあんぐる
出版社:オーム社( 2006-08-26 )
定価:¥ 2,730
Amazon価格:¥ 2,730
単行本(ソフトカバー) ( 224 ページ )
ISBN-10 : 4274066568
ISBN-13 : 9784274066566
アジャイル開発の6原則と20のベストプラクティス―オープン統一プロセス“OpenUP”とラショナル統一プロセス“RUP”を集約した実践的ソフトウェア開発指針
著者/訳者:パー クロール ブルース マックアイザック
出版社:エスアイビーアクセス( 2007-08 )
定価:¥ 4,200
Amazon価格:¥ 4,200
単行本 ( 374 ページ )
ISBN-10 : 4434108743
ISBN-13 : 9784434108747
著者/訳者:スコット W アンブラー ピラモド・サダラージ
出版社:ピアソンエデュケーション( 2008-03-26 )
定価:¥ 3,780
Amazon価格:¥ 3,780
単行本 ( 330 ページ )
ISBN-10 : 4894715007
ISBN-13 : 9784894715004
著者/訳者:ケント・ベック Kent Beck
出版社:ピアソンエデュケーション( 2008-12-22 )
定価:¥ 2,310
Amazon価格:¥ 2,310
単行本(ソフトカバー) ( 208 ページ )
ISBN-10 : 4894712873
ISBN-13 : 9784894712874
XPエクストリーム・プログラミング導入編 ― XP実践の手引き (The XP Series)
著者/訳者:ロン・ジェフリーズ アン・アンダーソン チェット・ヘンドリクソン
出版社:ピアソン・エデュケーション( 2001-08-10 )
定価:¥ 2,520
Amazon価格:¥ 2,520
単行本(ソフトカバー) ( 348 ページ )
ISBN-10 : 4894714914
ISBN-13 : 9784894714915
著者/訳者:David J. Anderson
出版社:日刊工業新聞社( 2006-03 )
定価:¥ 4,410
Amazon価格:¥ 4,410
単行本 ( 385 ページ )
ISBN-10 : 4526056162
ISBN-13 : 9784526056161
エンタープライズ統一プロセス (Object Oriented SELECTION)
著者/訳者:John Nalbone Michael J. Vizdos 藤井 拓
出版社:翔泳社( 2006-07-11 )
定価:¥ 4,725
Amazon価格:¥ 4,725
大型本 ( 400 ページ )
ISBN-10 : 4798109347
ISBN-13 : 9784798109343
アジャイルモデリング―XPと統一プロセスを補完するプラクティス (OOP Foundationsシリーズ)
著者/訳者:スコット・W・アンブラー
出版社:翔泳社( 2003-08-06 )
定価:¥ 3,990
Amazon価格:¥ 3,990
単行本(ソフトカバー) ( 473 ページ )
ISBN-10 : 4798102636
ISBN-13 : 9784798102634
アジャイルソフトウェア開発エコシステム (アジャイルソフトウェア開発シリーズ)
著者/訳者:ジム ハイスミス
出版社:ピアソンエデュケーション( 2003-09 )
定価:¥ 4,200
Amazon価格:¥ 4,200
単行本 ( 404 ページ )
ISBN-10 : 4894717379
ISBN-13 : 9784894717374
Sourceforge.jpで公開しているAgilo日本語版ですが、Trac 0.11.6およびTrac 0.11.7でインストールに失敗する件について対応を行ないました。
入手は以下から。
http://sourceforge.jp/projects/shibuya-trac/wiki/plugins/Agilo_ja
なお、インストール後にプロダクトバックログ画面で、UnicodeDecodeErrorが表示される場合は、http://www.ryuzee.com/contents/blog/941を参照して、sitecustomize.pyを作成してください。
Agiloって何という方は以下のスライドを参照ください。
重厚長大なドキュメントなんて、動かないし嘘書いてあったり現実と異なっていたり、その上肝心なこと書いてなかったりということで著しく否定的なんだけど、とある筋からドキュメントをレビューする際のポイントを教えて欲しい、という依頼を受けたので書いてみる。
なお、個人的には、ドキュメントレビューするよりソースをレビューしろ!、という主張。
とはいえドキュメントレビューで肝心なのは、
だと思う。
ひどい現場だと、文書のインデントやフォントのサイズ、誤字脱字ばかりを重箱の隅をつつくようにチェックしているケースがあるようだが、そうではなく中身をレビューする。(ただしあまりに体裁がひどい場合は、往々にして中身もひどかったりするのだが・・・)
中身が分からないから体裁をレビューする、というのもあるようだが、そのレビューの結果は、どんな利益を生んでいるのかよく考えるべきだ。
なお、レビューワーはレビュー前に資料を確認しておくべきであることは言うまでもない。いきなり初見の資料を見てレビューできる項目はたかがしれている。
必要なドキュメントは顧客毎、システム毎に異なる。
常に自社の標準に無理やり押し込めようとするのではなく、案件特性や顧客特性を踏また上で、どのようなドキュメントが必要なのかは最初に考えよう。
そしてドキュメントも常時リファクタリングできるように。
レビューは実施することに意義があるのではなく、そこで問題となりそうなことを早期に検出し、将来のリスクを軽減することに意味がある。
レビューワーの時間、参加者の時間を投資するわけだから、その投資に見合うリターンを生むようにしなければならない。
アジャイルなレビュー。
大量に作ってしまった問題あるドキュメントを修正するのは簡単なことではない。
リスクを早期に検出しクリアにするためには早期レビューと繰り返しが必須である。
次の工程に入る前にとってつけたようなレビューをして、条件付きで承認をする、といったやり方をするチームもあるようだが非効率で、問題の先送りである。
レビューワーは気づいた点を大小問わずすべて指摘するだろうが、それを全て修正する必要が必ずしもあるわけではない。修正にかけるコストと効果を勘案し、優先順位をつけて対応すれば良い。
ついついレビューワーは上から目線で、「こんなことも出来ないのか!」みたいなトーンで指摘してしまいがちである。そういうことをしていると、レビューを受ける側は、レビューを通りさえすれば何でもいいや、と思うか、レビューを受けることすら嫌がるようになる。
レビューをする側も、顧客へ届ける製品の品質の一旦を担っていると考えられるので、同じ土俵の上で純粋に同じゴールに向かってレビューしよう。
同じフェーズの設計書でも、システム内での機能の重要度には差があるはずだ。全部が重要な機能である、というシステムはいまだかつて見たことはない。限られた時間の中で最大の効果を出すためには、アジャイルで構築するフィーチャーに優先順位をつけるのと同様に、レビューする範囲にも優先順位をつけること。
レビューでは100%のレビューカバレージを取ることが目的なのではなく、問題を早期に検出し、将来にリスクを顕在化させないようにするためのものである。
体裁にこだわっても仕方ないが、字面しか見ないようなチェックであれば、perlのスクリプトなんかでも十分チェックできる。それこそソースコードをコミットする際に、自動でCode Snifferかけるようなもので良い。
技術を知らないとアーキテクチャの妥当性や注意すべきポイントの指摘ができない。
業務を知らないと仕様の妥当性が理解できない。
どっちも知らない人がレビューしても字面チェックしかできないので時間の無駄である。
レビューの結果の中で有意義なものがあれば、チームの中で最大限活用すれば良い。指摘項目の中で簡単に自動チェックできるようなものがあれば自動化も検討すること。
なお、ソースコードのレビューもほぼ同じことが言えるとは思う。
http://www.kaltura.org/

日本語の機能説明は http://www.kaltura.jp/technology/technology.html
kalturaは、PHPで作成された動画配信プラットフオームで、有償版のバージョンと、CEと呼ばれるオープンソースバージョンが存在する。
動作にはApache, PHP, MySQL が必要だが、要求されるバージョンが比較的細かいのでサーバ構築は少々手間である。最新のバージョンはKalturaCE 2.0.2
kalturaの特徴は、あくまで、「動画配信のためのシステム」である、ということが挙げられる。
Youtubeやニコニコ動画のようなユーザーインターフェイスの部分ではなく、配信基盤に重きをおいており、kalturaに保管した動画のプレイヤーを他のサイトに埋め込むという使い方が前提になっている(ように思える)
例えば、kalturaでは、オープンソースのブログエンジンであるwordpressからkalturaの存在を意識せず動画をアップロードできるようなプラグインや、教育用CMSであるmoodleに講義の動画等をシームレスに登録できるプラグイン等、多くの外部連携モジュールが用意されている。
最初にSnow Leopardにインストールしようとしたが、PHPやMySQLのバージョン要求が細かくて挫折したので、CentOS5.5をVirtualBoxにクリーンインストールした。
なお、以下のモジュールとバージョンが要求されるので、rpmだけで何とかしようというのは若干厳しい。
Apache >= 2.2
モジュールとしては
mod_rewrite
mod_headers
mod_expires
mod_filter
mod_deflate
mod_file_cache
mod_env,
mod_proxy
PHP = 5.2.x
MySQL >= 5.1.37
CentOS5.5系のPHPは標準では5.1系なのだが、kalturaはPHP5.2系を要求する(PHP5.3も標準では動作しない)ので、デフォルトでインストールされることが多いapacheとPHPとMySQLは利用せず、XAMPP for Linuxを利用した。
詳細については http://www.kaltura.org/kaltura-ce-setting-prerequisites-centos-55-wxampp に記載があるので、その通りやれば良い。
/opt/lampp/etc/my.confに以下を追記
既にapacheやPHPが導入済みの場合は、一旦apacheを停止した上で
としてリネームした上で、以下のようにシンボリックリンクを作成する
起動スクリプトは、/opt/lampp/lamppにあるので
以上ができたら、XAMPPのインストール結果をブラウザで確認する
アプリケーション内で外部コンテンツを取得するのにcurlを利用しているので、curlをインストールする
キャッシュのために、memcachedを利用している。無くても動作するが以下の手順でインストールする
kalturaはアカウント登録時にパスワードをメールで送信するので、メールサーバは必須。
CentOS5.5であれば標準のpostfixをそのまま利用すれば良い。
※評価の際にどうしてもメールの送信ができない場合は、何も設定せず、リターンメールを頑張って読めばOK
リコメンデーションあたりで、JAVAのBIライブラリを利用しているのでjdkのインストールが必要だ。
Oracleが提供するもので問題ないが、openjdkでも動く。バージョンはいずれの場合も1.6以上。
BIツールらしい。初めてしった。
/etc/sysconfig/selinux を開き、
とする
/opt/lampp/etc/httpd.confを開き、以下の1行を追加
lamppを再起動
/etc/sysconfig/xymon-client1を開き、
としてサーバ名を設定
自動起動の設定を行い、xymonを起動する
kalturaは標準のインストーラーによるインストールでは、バーチャルホストでの動作を想定している。
そのため、ローカル端末での評価の場合は、hostsに適当なホスト名を設定するか、またはDNSの設定を行うことが望ましい。※一応設定せずに、インストーラで動作URLに127.0.0.1を設定しても動作はした。
kalturaのサイトにアクセスしてユーザー登録を行って最新のインストーラーをダウンロードする( http://www.kaltura.org/project/community_edition_video_platform )か、またはsubversionで取得する。
今回はSubversionで以下のように取得した。
上記で入手が終わったら
としてインストーラーを実行すれば良い。あとは指示に従えばインストールは完了する。
インストール完了後はhttp://(host名)にアクセスすると、以下のようなスタート画面が表示される。

標準では動画投稿権限をもつユーザーはいないので、スタート画面に表示されている「Add New Publisher」をクリックしてログインし、投稿者を作成する。
なお、作成した段階でKMCにログインするためのパスワードが登録したメールアドレス宛に通知される。

startページからKaltura Management Console(KMC)にログインする。
動画の掲載や、プレイリストの作成、埋め込み用のタグの取得はすべて、このKMCの中で行うことになる。(API連携しない場合)

コンテンツをクリックすると、プレビューと埋め込み用のタグが表示される。

あとは試しに、適当なhtmlページを作ってタグを埋め込んでみればよい。


Wordpressからkalturaをシームレスに扱うことができるプラグインが提供されている。
All in one Video pack プラグイン をWordpressにインストールしてあげれば良い。
※Wordpressとの連携の設定をする際に、特にkaltura側の認証がなく自動でkaltura側に新たなユーザーが作成されるように見えるが、だとすると誰でも公開されているkalturaを利用できることになってしまい問題がある。kaltura側で外部連携に関する何らかの制限がかけられると思うのだが、現在のところやり方がわからない。
まだまだ色々触ってみないと分からないんだけど、動画配信用のプラットフォームをさくっと作りたい、という場合には良いのではないだろうか。
引き続き、携帯対応のあたりと、アクセスコントロール、APIの仕様について調べていこうかと思う。
日記 PHP オープンソース インストールマニアックス IIS Trac MySQL Perl Linux Agile・生産性向上 wordpress フリーソフト 自宅サーバ 書評 ブックマーク phpMyFaq TraM Plugin 早起き Delphi apache CakePHP Firefox Ruby eclipse セキュリティ プラグイン アジャイル mojavi Subversion Ajax/Web2.0 SQLServer Zope サーバ フレームワーク phpBB 仮想化 PostgreSQL OpenVZ scuttle CMS 文字化け 自宅 翻訳・日本語化 ApacheDS LDAP Excel 生産性向上 CodeIgniter XAMPP hacks taskfreak 修正 言語ファイル Ajax SBM ダウンロード HTML::FillInForm mod_security 情報共有