GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Mark Levison , 翻訳者 角谷 信太郎 - (株)永和システムマネジメント 投稿日 2009年4月28日
筆者は勤務先で、数多くのチームがテスト駆動開発(Test Driven Development:TDD)[1]の導入に苦戦する様子をみてきた。時おり、何の助けもなしにTDDを身につけられる開発者がチームに1人か2人あらわれるが、ほとんどの開発者はそうではない。この問題をより深く理解するために、チームメンバーを対象とした調査を実施したところ、研修コース以外にも必要なことがたくさんあることがわかった。本記事で紹介するTDDを導入するための包括的な戦略は、TDDを組織に導入しようとしている読者の役に立つことを狙いとしている。しかし、記事中で提示している問題や提案のなかには、中規模から大規模な企業にしか適用できないものも含まれている。
チームメンバー(全員が研修を受けている)を対象とした調査結果から、彼らがTDDについて、次のような障壁を感じていることがわかった。:
こうした現象の根本原因は何だろうか?
テスト駆動開発を学ぶことはとても難しいのかもしれない。一般的に学習フェーズ(しっかりと身についた習慣になるまでの時間)は2ヶ月から4ヶ月は続き、その間の生産性は低下する[2]。しかし、最終的に得られるメリット(リンク)は明らかで、身につけた技法は今後もずっと役に立つ。ところが、ここに疑問がある。どうすればそうなれるのか? 実際には多くの開発者がたった数日でTDDを諦めてしまっているのだ。
筆者がこれまでに見てきたTDD導入戦略のほとんどが、研修コース(あるいはEラーニング)とマンツーマンでのメンタリングを重視していた。うまくやれば、これらはとても有効な道具立てであり、解決策の一部となりうる。しかし、筆者はこれだけでは足りないと考えている。
研修コースでのトレーニングには、大きな問題が2つある。ひとつは、サンプルが簡単すぎて現場の問題とつながっていないこと。もうひとつは、試行錯誤する余地が足りないことだ。
オンライン研修(Object Mentor(リンク)やIndustrial Logic(リンク)などの企業が提供している)は、より深く学べるという点で有利だが、やはり試行錯誤の余地は少ないことに変わりはない。さらに、通常こうした研修コースでは、他の受講生とのあいだでのやりとりがおこなわれない。同じ教室にいる受講生や同僚から出た質問がきっかけとなって理解が深まることもあるにもかかわらず。
マンツーマンのメンタリングは、ひとつのチーム内の数名以上にはスケールしない。とりわけ、助力が必要な開発者が何百も何千もいるのに、熟練者が数名しかいないような大企業ではこれが問題になる。
書籍はすぐれた選択肢ではあるが、好んで自分たちの仕事についての書籍を読みたがる開発者は少ない。しかも、書籍だけでTDDを学ぶのは非常に長くつらい道のりである。また、オンライン研修と同じく、自分ひとりで学ばねばならないという問題もある。
最後に、レガシーコードの存在が問題をややこしくしている。開発者はこう思うのも無理はない。「どうすれば密結合したオブジェクトをテストできるんでしょうか? このコードはとても込み入っています。どうやってこのアルゴリズムをテストしますか?」
では、どうすればいいのだろうか? ここまでに紹介した手法には大きく2つの問題があった。学習に奥行きがなく、他人との会話と協調に欠けている。本記事で紹介するTDDの包括的な導入戦略では、複数の学習モードを引き出すためにさまざまな要素を組み合わせている。
いま紹介した数々の作戦の狙いは、チームメンバー同士でTDDについての会話をさせることと、その会話の量を増やしていくことにある。特に、ペアプログラミング、コーディング道場(リンク)、読書会の3つの作戦は会話を増やすことを重視している。
コーディング道場(での「乱取り稽古」)は、小規模なグループ(最大15人まで)で、TDDを使って課題を解く(Danilo Sato(リンク)のアイデアを取り入れたもの)。進め方はこうだ。:
筆者の経験から言わせてもらうと、最初はとても簡単な課題から始めることをおすすめする。
読書会では良書を読もう。:
普通のチームの読書会なら、1回の読書会で扱う範囲は1〜2章程度にしておこう。これぐらいの速度であれば、仕事以外の時間を使って読み進めるのも重荷にならないはずだ。時間が許せば、単に読み進めるだけでなく、読んだ章の項目のいくつかを取り上げて議論するとよい。
コーディング道場や読書会では、ピザ(か、もっとヘルシーなものでもよい)を用意しよう。チームメンバーには、仕事に関連することに個人的な時間を割いてもらうのだから、何かそれを続けていくための動機づけが必要だ。コーディング道場と読書会とを交互に開催すれば、参加者もマンネリにならずに続けられるだろう。また、同じ顔ぶれが毎回参加してくれるとは限らないことは念頭に置いておこう。
こうしたワークショップとその参加者のコミュニティは、自律的な学習が進むにつれて改善されていく。これはメンバーが会話と協調に関与していくようになるからであり、そうなると、これまでだったら考えもしなかったことを学ぶからだ。
まとめると、TDD導入戦略を成功させるために肝となるポイントは次の通りだ。:
この手法は実際に使われおり、筆者はとある大企業で、これまでよりも円滑にTDDを導入できるようになった。
本記事の草稿のレビューに時間を割いてくれた次の人々に謝意を表したい。Lasse Koskela、Nat Pryce、Dave Nicolette、それからDave Rooney。
[1] 本記事の狙いに沿っていえば、TDDとは製品コードに先立って、テストコードを少しずつ書いて開発を進めていくという習慣のことである。コードを書いた後に、まとめて大量にユニットテストのコードを作成することではない。
[2] http://tech.groups.yahoo.com/
[3] 進捗がゆっくりになっている感覚をおぼえる――すなわち、イテレーションごとに提供できるストーリーの数が少なくなる。とはいえ、品質が改善されるので、当初思っていたほど進捗は遅くはならない。
Mark Levison(メール) はPure Agile consulting社の主席コンサルタントである。同社ではアジャイルとリーン開発を使ったコンサルティングに力を入れており、動作するソフトウェアを2週間ごとに顧客へと提供できるようにしている。Markは2001年からアジャイル開発を実践しており、小さなチームを対象にアジャイル開発手法のプラクティスをいちどにひとつずつ導入している。ここ3年間は、大手独立ソフトウェアベンターに勤務しており、組織へのScrumの導入や、チームメンバーへのコーチングの責任者である。その職務にはTDD戦略を受け入れてもらうための作戦を練ることや、TDDの導入をサポートするプラクティスを使うことも含まれている。MarkはInfoQのAgile Editorを担当しており、彼自身もInfoQのAgileトピックに多数記事を投稿している。彼自身のブログは - Notes from a Tool User(リンク)。 コンピュータの前に座っていないときは、妻や娘と一緒に過ごすようにしている。
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。
Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。
GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式
本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。
前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。
Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。
スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。
No comments
スレッド表示 返信