GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。

作者 Gernot Starke , 翻訳者 松本 清一 投稿日 2007年12月3日
「ガバナンス」という言葉は、ここ暫くの間、IT系の出版物やカンファレンスの中で普通に使われるようになってきました。しかし、技術的な輪の中において、そのような議論は良くてあくびを引き起こすものであることがしばしばです。この記事では、デベロッパーフレンドリーなSOAガバナンスのガイドを提供し、設計段階から次の段階の運用時のガバナンスに至るまでのITガバナンスの一般的な考え方から話を始めています。
SOA イニシアティブが進行中の組織を想像して下さい。皆がいきいきとし、イニシアティブによって豊富な予算も組まれ、新しいビジネスや技術を生み出す機会があります。変化しているような感覚はあるものの、皆がいくらかのプレッシャーを持っています。この状況下の中心に、「S. Governess夫人」がいます。彼女にはサービスに関する全てのことをスムーズに動かさなければならないという責任があります。さらに、SOAが目指す大きな目標や組織の利益にも注意を払わなければなりません。私たちのGoverness夫人は、日々のビジネスや技術の詳細には関与しないでしょう。しかし、戦略を準備し、責任を明確化し、定期的にイニシアティブを監視しています。彼女は、SOAの経費を最高のROIを達成するように使用し、ビジネスサービスがサービスの実装によって可能な限りベストなサービスをサポートしなければなりません。結局のところ、彼女が最高の管理レベルと会社の資本金を握っていることになります。それ故、彼女の意見が非常に説得力のあるものとなります。言い換えれば、S. Governess夫人が権限を行使し、少なくとも会社のSOAに関与しているということです。
しかし、待ってください。それは、経営陣の役目ではないのでしょうか? 経営陣はSOAの成功に関心を持つべきではないのでしょうか? 理屈では「Yes」となります。(ご存知のように大抵は理屈とは異なるのですが、)現実問題として、マネージャは大抵自身の検討課題(時には隠された課題さえもある)を持っていて、それらのほとんどが組織の長期目標に反するものです。例を挙げれば、プロジェクトマネージャが戦略的な目標よりも自身のプロジェクトのスケジュールに重きをおいたりします。それ故、S. Governess夫人は、組織自身のためだけに向けられたある種のスーパーマネジメントを行います。彼女の仕事は、コントロールしたり、規範を定めたり、命令したりといったことであり、丁寧や紳士的におこなうものではないということです。
彼女の仕事の説明は、新しい規範である「SOAガバナンス」の青写真として役に立ちます。それは、仕事中に楽しみを作ったり、開発者の手で最新技術を持つといった類のものではありません。むしろ、SOA予算の使用やそこから得られるものの関連といったものです。そういうわけで、ガバナンスは私たちソフトウエア開発者やアーキテクトといった人たちにとってあまり人気がありません。おそらく、(私もそうなのですが)ガバナンスプログラムが始まった後でささやかな楽しみを得ているのだと思います。しかし、安心して下さい。それにより組織や企業が適合し、将来的には健全な状態となるでしょう。それに関しては少し議論する価値があります。
SOAガバナンスの詳細に入る前に、S. Governess夫人の広大な知識の中のお気に入りの原理の1つを説明させて下さい。それは、「企業と組織は、2つの一見矛盾したものを必要とする」というものです。:
まず始めに、「命令とコントロール」が必要です。そして、規範、判断、治安維持、執行する人・・・といったものを必要とします。これらによりガバナンスが動き始めます。しかし、注意して下さい。ソフトウェア開発者やアーキテクトは、そういったものが好きではありません。しかし、絶対にやらなければならないものなのです。
次に、特に頭脳労働者のために、クリエイティブかつポジティブに作業できる環境を用意するといった、いわゆる自由を必要とします。「アジャイル」全体のムーブメントは、そういった作業の側面を改善するものの対象となります。
特にITの組織においては、命令とコントロールといった側面は、頭脳労働者の生産性を妨げるものと考えられることがしばしばです。私は、ここで全体主義者の話をしているのではありません。ガバナンスでは、(よく言われるが滅多に達成されることのない)ビジネスとITの調整を最適化しようとする考えのもと、適切な量のコントロールを行おうとします。よく、ITの人はビジネスに関心が無く、ビジネスの人はITの人に関心が無いと言われます。しかし、密接な協力によってのみ企業の成功を確かなものとすることができるのです。
故に、ガバナンスはとても必要なものです。適切にガバナンスを行うことで、企業が成功へと導かれるのです。ハーバードの教授であるWeill氏とRoss氏は、[Weill-Ross]の中で、成功したITガバナンスがより大きな収益をもたらすことを立証しています。ガバナンスの欠如は、長期の失敗のリスクを高い確率でもたらします。
より深い詳細に立ち入る前に、ガバナンスの仲間全体を見てみましょう(図「ガバナンスの階層」を参照)。S. Governess夫人は、より大きな家族の中で生活しています。彼女にはコーポレートガバナンスと呼ばれるお姉さんがいて、「コンプライアンス夫人」というニックネームがつけられています。彼女のゴールが世界平和の中で少しだけ達成されます。つまり、企業内で起こる全てのことが収益へと向かうようにします。要するに、彼女は企業の価値と資産を行っている人なのです。
図1:ガバナンスの階層
次に、妹のIT Governessの登場です。彼女の仕事は、ITとビジネスの関係に注力することです。沢山のオンラインや紙の出版物に、彼女の仕事(ITガバナンス) がとても細かく記載されます。例えば、[ITGovBB] の「IT ガバナンス研究所」(ITGI)や、Peter Weill氏とJeanne Ross氏[WeillRoss]による優れた書籍「ITガバナンス」があります。彼女の責務とタスクは、彼女の妹(我々が先ほど会ったS. Governess夫人)のガバナンスを決定することです。
下図は、[ITGovBB]から抜粋した「ITガバナンスの分野に注力する」です。ITガバナンスの作業の結果です。非常にハイレベルだと思いませんか?
図2:ITガバナンスの分野に注力する
IT ガバナンスは、SOAガバナンスの基礎を作ります。つまり、SOAの組織において共に手を携えなければなりません。ITガバナンスによって、全てのIT関連の活動が長い期間満足の得られるような組織の目標に向けられます。ITガバナンスの第一人者であるPeter Weill氏とJeanne Ross氏が、「ITにおける価値のある行動をとるための正しい判断と責任ある体制」を鮮やかに定義しています([WeillRoss]より)。もう一度言います。ガバナンスにより価値のある行動を促進します。ガバナンスは、適切な「命令とコントロール」の骨組を提供します。それは、ビジネスが繁栄するために必要となる十分な自由を残し、アナーキーで混沌とした状態を避けるために、個人とプロセスをコントロールするのに必要なレベルを適用するのです。
私がガバナンスを始めたとき、実践するための理論を要約するのが本当に難しいということがわかりました。故に、価値のある行動に関する実際の例を見てみることにしましょう。以下は、[Ashar+07]からの抜粋です。:
「何故多くのハイブリッド車が、カリフォルニア州においてこの12ヵ月で登録されたのでしょうか? それは、ハイブリッド車の所有者に与えられる連邦税額控除が1500ドル以上だからでしょうか、あるいは、通勤時間の間、相乗り専用レーンを一人乗車で運転する贅沢を味わうためでしょうか? あるいは、カリフォルニアの人たちの環境への意識の高まりからでしょうか? 本当の理由がどうであれ、現実には政策によって価値のある行動(即ち、低燃料車の購入)が促されるようになったということです。これがガバナンスの一例です。政策によって価値のある結果がもたらされたのです。」
簡単ですよね? しかし、あなたはまさにこのような質問をするのではないでしょうか? 「ITガバナンスによってどのようにしてゴールを達成することができるのでしょうか?」、「ITにおいて、"価値のある行動"を成し遂げるにはどうしたらよいのか?」
その答えは、ITGovernesse夫人が答えるべき4つの問題に潜んでいます。:
あまりにたくさんの作業のようには聞こえませんね? 図「鍵となるガバナンスの問題」で、それらの鍵となるガバナンスの問題をまとめます。:
図3:鍵となるガバナンスの問題
しかし、あなたは「何故そんなに騒ぐのか?」と尋ねるかもしれません。ITガバナンスから得られるメリットは何でしょうか? 私は、非常に印象的なメリットの一覧をお見せします。(ためらうことなく、あなたのマネージャーにフォワードして下さい)
あなたの組織または会社が、未だITガバナンスを適切に行えていない場合に備えて:SOAイニシアチブによって、今日、ITガバナンスとSOAガバナンスを始めるための十分な理由が与えられます...
では、ITガバナンスの簡単な概要を説明します。「SOAガバナンス」が本当に意味するところは何でしょうか? あなたが一般的なサービス指向アーキテクチャ(SOA)に精通していると仮定します。SOAを採用して運用している組織は、サービスのライフサイクルにある多くの問題について注意を払う必要があります。いくつか挙げてみましょう。:
これらの問題全てに多くの人が関係しているでしょう。サービス実装のためのビジネス要求からサービスが提供されて運用されるまでの長い期間にわたり、文字通り、多くのドキュメント、モデル、ログファイル、その他のアーティファクトといったものが作られています。
本稿の始めに、私はコントロールの必要性について述べました。ここで、その言葉をふり返ります。SOAでは、ドキュメントとアーティファクトに関して厳しいコントロールが必要になります。いつでも利用できるサービスを取得・維持するために必要となる全てのものは統治される必要があります。それは単に、自社開発主義症候群を避け、最大限再利用することです。(アジャイルの)ソフトウェア開発者のように、あなたはそれが好きではないかもしれません。私は、冒頭でそれを予測していました... しかし、もしあなたの組織が長い目で見たときにSOAを成功させたいと考えているのならば、あなたはそのコントロールを必要とするのです!あなたが私の言うことを信用していない場合に備えて:ガートナーグループの技術に友好的な人々でさえ、SOAイニシアチブのほとんどが技術的な理由よりもガバナンスの欠如により失敗している可能性が高いと予測しています。(参考[Gartner])
すぐに、必要な行動にとりかかりましょう:あなたがSOA(もしくは、一般的なIT)をコントロールする必要があるとき、2つのはっきりと区別できるフェーズがあります(Lori MacVittie氏は、彼女の素晴らしい記事[MacVittie06]の中でそれらを「timers」と表現しています)。第一に設計段階あるいは開発段階です。第二に運用あるいは実行段階です。どちらも共通した重要な側面(つまり、メタデータです!)を持っていて、互いに影響を及ぼし合っているので、両方に注意を払う必要があります。それらを順を追って議論しましょう。
設計段階のガバナンスでは、ソフトウェア開発サイクル全てのフェーズと活動をコントロールします。それは、要求管理の早い段階から始まり、アーキテクチャ、実装、テスト、品質保証、ドキュメント化からサービスが利用できるまでに至ります。ビジネスあるいは要求を想像して下さい。アナリストが次世代のビジネスサービスに関する要求機能を書き留めています。設計段階のガバナンスによって、アナリストが既に利用可能であるものに関する情報の全てを見つけられるようにしなければなりません。そうすることで、彼の仕事に必要な時間を削減することができます。暫くの後、ソフトウェアアーキテクトかサービスアーキテクトが適切なソリューションアーキテクチャの設計を開始します。再度言います。ガバナンスによって既存のアーティファクト、ドキュメント、(UML)モデル、さらにはサービス契約までもがすぐに利用できるようになっていなければなりません。(検索がより早くなると同時に再利用性も促進されます)
設計段階のガバナンスの形式は価値のあることです。つまり、開発サイクル全体で作成・利用された全ての資産(ドキュメント、モデル、プレゼンテーション、バグレポート、評価、コンセプト、特に、サービス記述やサービスインターフェースといったものなど)をコントロールします。多くの開発者は、こういったことをサポートではなく、阻害の類のものであると見なすでしょう。しかし、組織は、長期展望で考え、行動しなければなりません。よって、開発者をしかるべく教育し、このコントロールによるインパクトが最小になるべく、適切なツール(下記参照)を与えて下さい。
最後に、サービス実装が完了したときには、サービスレベルアグリーメントが取り決められ、全てが適切に文書化されテストされます... これで、あなたのサービスが実行される準備ができました!では、次のフェーズのSOAガバナンスの話を始めます。
運用段階のガバナンスは、サービスの実行と動作に関する全てをカバーします。あなたは、どのサービスが、誰によって、どういった種類のパラメータで呼ばれているのかを認識する必要があります。実行環境では、潜在的なパフォーマンスのボトルネックが起こる前に発見されなければなりません。プロバイダとコンシューマの両方に対し同意したサービスサービスレベルに注意を払い、ログファイルや例外の監視をおこなわなければなりません。要するに、サービスの実行に関する全ての側面を継続的に監視しなければならないのです。それとは対照的に、設計段階のガバナンスでは多くの人を巻き込まずにそういったことを行うでしょう。そういった人々、特にS. Governess夫人は、結果を要約したレポートを評価しなければなりません。彼らは、次のサービス設計やイテレーションによる実装(あなたの作業はイテレーションですよね?)に対する多くのフィードバックを受け取るでしょう。
SOA ガバナンスのツール群はどのような機能を提供するのでしょうか? その答えのために、前のパラグラフを再読して下さい。あなたは設計と運用のサポート両方を必要とするでしょう。あなた固有の機能リストのために、あなた固有のSOAライフサイクルを見て下さい(もちろん、それはあなた固有のものとなるでしょう)。全ての役割と活動が適切なサポートを受けなければなりません。書くのは簡単ですが、達成するのは困難です!それでも、私はS. Governess夫人をサポートするためのツールを評価することを強く提案します。さもなければ、あなたのSOAはエントロピーが最大化し、ROIがゼロの混乱したサービスへとなってしまうでしょう。
ところで、あなたは次のように考えるかもしれません。「SOAガバナンスは簡単。ちょっとしたクールなツールを取得して、ガバナンスを始めれば良いのだから。」それは誤りです。全くの誤りです。もう一度、S. Governesse夫人の言うことを最後まで聞いて下さい。彼女は、効果的なSOAガバナンスのためのステップとして次のことを提案しています。:
これらのいくつかのステップで、あなたは非常に効果的なSOAとITガバナンスプログラムを始めることができます。もしかしたら、S. Governesse夫人が、そちらに伺うかもしれません:)
Gernot Starke氏は、ソフトウェアアーキテクチャとアジャイル開発の実践において独立したコンサルタントとコーチを行っています。様々な産業(金融、ロジスティクス、通信、製造、行政)の顧客をかかえ、ソフトウェアアーキテクチャの開発、マネジメントにおける20年以上にわたる実践経験によって支えられています。彼は、ソフトウェアアーキテクトのためにarc42 ポータル(サイト・英語)を共同で設立し、主にソフトウェアアーキテクチャに関する多くの記事と本を執筆しました。彼は、(ドイツ語の)書籍「SOA Expertenwissen」(サイト・英語)の著者の一人です。彼は、素晴らしい妻Cheffe Uliと2人の子供たちと共にドイツのケルンに住み、ヨガをやったり、たまに(テノール)サックスをたしなみます。より詳しいことは、http://www.gernotstarke.de(英語)にて。
原文はこちらです:http://www.infoq.com/articles/governance-gernot-starke
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
スレッド表示 返信