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

作者 Dr. Dave West , 翻訳者 編集部 投稿日 2009年1月15日
大学のプログラムはソフトウェア開発者が今日のビジネス界に備えて適切に準備できるものですか? アジャイルソフトウェア開発が空前の勢いで採用されている今、開発者のスキルの幅を広げることが特に必要です。この記事で、Dave West博士は、形式、制御、工学、および決定論を中心とする価値観が注がれた現在の大学のコンピュータ学科とは対照的に、人間性、技巧、デザイン、創造性、革新、および出現を重視している新生の学科「システム開発」について論じています。彼の考えでは、「システム開発」を「リアリティの構成」 iと呼ぶべきだということです。その理由は、システム開発者が行うことはすべて、既存の複雑なシステム、すなわち私たちがリアリティと呼ぶ、人間的、組織的、社会政治的、かつ文化的なシステムと必然的に一体化し、必然的に変化(再構成)するという基本的な前提に基づいているからです。West氏は経験を基に、今日の教室や研究室の不毛さを、ワークショップ、すなわち「ボッテガ(bottega; 工房)」(彼がサンタフェ大学での自身のプログラムで現在使用しているアプローチ)に切り替えるという、より優れた教育経験を提案しています。
私たちの専門職は崩壊したままです。
確かに、プロセス、品質、および専門的技術の改善において飛躍的な進歩を遂げましたし、時として私たちは、非常に複雑で信頼性のある使用に適したソフトウェアを提供することができます。それにもかかわらず、業界として私たちは未だに30~40パーセントの「成功」率と、さらにそれより低い「期間内、予算内の成功」率を達成できずに苦心しています。
次のような多くの要因が不定愁訴に寄与しています。誤った比喩(工学)、野心(簡単な問題はすでに解決しました)、変化の速度(テクノロジーと世界)、技術システムと人的システム間の境界のぼやけ、などです。
主な原因は、私たちが学校で学ぶこと(および学び方)と、私たち専門家自身に必要とされることとのギャップの広がりです。
実際に行うことにより良く合致する科目を定義したのは、ほぼ確実に過去のことであるため、その科目で個人を教育するための別の手段をつくります。
「ACM-AIS-IEEE Computing Curricula 2005 Overview Report ii」では、次のような重複する複雑な関連学科について概説しています。電気工学(Electrical Engineering)、コンピュータ工学(Computer Engineering)、コンピュータサイエンス(Computer Science)、ソフトウェア工学(Software Engineering)、情報技術(Information Technology)、情報システム(Information Systems)などです。
この6つのうち、最初の3つ(EE、CE、CS)は、マシンおよびマシンの背後にある理論に焦点を当てています。(CSの一部はオペレーティングシステムと言語コンパイラを介した仮想マシンに関与しています)。
「ソフトウェア工学」と「情報システム」は私たちの専門職に近い一方で、「情報技術」はインフラストラクチャ、特にネットワーク、セキュリティ、および管理に焦点を当てています。
ACM文書での出現が、別の学科「システム開発(SD; Systems Development)」の定義の始まりです。
「システム開発」では、コンピュータサイエンスからのプログラミング、ソフトウェア工学からのソフトウェアとプロセスとツール、情報システムからのアプリケーションフォーカスといった、いくつかのACM分類からのスキルを集結しています。
この混合体に、SDでは、(一般、複合、複雑な)システムの広範な知識、コンピュータとサイエンスの歴史と哲学に対する深い理解、ビジネスとマネジメントに対する大きな理解、哲学・数学・人類学・芸術・人文科学などにおける複数のトピック、を追加しています。
6つのACMコンピュータ学科のすべてに、形式、制御、工学、および決定論を中心とする価値観が注がれています。
対照的に、SDは、人間性、技巧、デザイン、創造性、革新、および出現を重視しています。
「システム開発」は、「リアリティの構成」ivと呼ぶべきです。その理由は、システム開発者が行うことはすべて、既存の複雑なシステム、すなわち私たちがリアリティと呼ぶ、人間的、組織的、社会政治的、かつ文化的なシステムと必然的に一体化し、必然的に変化(再構成)するという基本的な前提に基づいているからです。
SDは、変化したリアリティの状態を提供します。
理想的な建築家は、文学者であり、熟練した製図技師であり、数学者であり、歴史研究に精通しており、勤勉な哲学研究者であり、音楽に詳しく、多少なりとも医学の知識があり、法学者の対応に詳しく、天文学および天文計算に精通しているべきである。ウィトルウィウス、紀元前25年
ウィトルウィウスの建築家は博学者でなければなりませんでした。つまり、現存知識のあらゆる分野における著しい能力と特定の領域における十分なスキルがなくてはなりませんでした。
同じことが、プロフェッショナル(マスター)システム開発者にも当てはまります(注意: 誰もすべての現存知識に精通することなどできません)。
習得への道は、いくつかの段階を通ります。
プロフェッショナルは、知識体系全体に関して段階4の能力と、重要な部分集合に関して段階5~7の能力を示すことができなければなりません。
段階1を除いて、習得というのは必ず、簡単かつ受け身に何かを知るのではなく、積極的に何かを行う能力に基づきます。この偏見は、「我々は自分自身がつくったものしか信じない」と主張したジャンバッティスタ・ヴィーコ(1668-1744)の復唱です。
前の2つのセクションでは、システム開発者に関しての、知識分野、および習得度の拡張について示しました。
その知識分野は文字通り「すべての現存知識」ではありませんが、どのACMカリキュラムカテゴリにおいても大学修士卒業に予想される知識の幅を著しく(少なくとも2倍)上回ります。
このスペースでは、知識分野の内容を詳しく述べることはできません。[一部について、現在も、2009年晩春の最初のSDボッテガの開始に備えて定義中および改善中であるためです。] 代わりに、モジュール化と学習環境の議論に移りたいと思います。
一般的な履修単位時間/コース/学期/学年の伝統に従ってモジュール化した場合、システム開発者のために構想される内容の範囲を提供することは不可能です。内容が倍になるということは、学位の取得に要する時間が6年から12年に倍になることを意味します。それは絶対にあり得ないことです。
履修単位時間やコースではなく、私たちは、知識分野をはるかに細かい個別の知識単位に分割することを提案します。これをニューメキシコ・ハイランズ大学で実施したとき(下記を参照)、知識単位を表現するためにコンピテンシーというデフォルト用語を使用しました。
モザイクという比喩は、知識単位(コンピテンシー)およびそれらの間の関係を説明するのに役立ちます。モザイクは、予期される知識の分野全体を意味します。各個別のタイルは個々のコンピテンシーを表します。各「タイル」は知識以上のものを表していることに注意することが重要です。つまり、これには実践(知識の応用)、スキル、経験も含まれるということです。
どのような絵画でもそうですが、モザイクは、モザイクを構成するタイル間のパターン化した関係性を表すテーマを示します。
各タイルには関連付けされた色があり、そのタイルで表される知識に最も関連した学科や分野を示しています。哲学、人類学、文学、数学、歴史、科学などの単位がモザイク全体に分散されており、学科全体にわたる知識の関係が一目で分かるように、そして、コースベースのプログラムでは不可能な学際的統合の学位を取得できるようになっています。
モザイクは、習得すべき分野全体の即座の形態ビューを提供します。テーマ vは焦点を提供し、このときにその焦点以外の要素との関係を犠牲にすることはありません。色付けされたタイルは、すべての学科からの寄与(明らかに学際的な関係があること)を示します。生徒は、Zについて知る必要があることを把握するだけではなく、理由を知り、Zの応用方法を学習して知ります。
このモザイクはどのくらいの大きさで、タイルはいくつあるのでしょうか?
ニューメキシコ・ハイランズ大学で(下記の体験報告)、私たちはSD「専攻科目」に対して500強のコンピテンシーを定義しました。その数には、一般教養課程やその他の必修科目は含めませんでした。
ハイランズ大学での経験とSD用のコンピテンシーセットを定義する継続的な取り組みの両方に基づく、合理的見積もりでは、1,000~1,500タイルで構成されるモザイクになります。
多数のタイルの可能性を否定する人はほとんどいないでしょうが(教育者として私たちはより多くの主題をカリキュラムに追加する必要性と絶えず戦っています)、大半の人が純粋に実際的な異議を唱えるでしょう。それだけの幅と深さをカリキュラムに組み入れて、一般に学士と修士の学位プログラムの修了に割り当てられる6年間という期間でそれを習得することは望めません。
しかしながら、この異議は、個人がどれほどの量をどれほどの速さで習得できるかに関するいかなる知識にも基づいていません。代わりに、週に50分授業×3時限で16週間コースにどのくらいの学習を詰め込むことができるかの仮定に基づいています。
個人やチームがどれほどの速さで一定の知識体系を習得できるかは、個人やチームがどれほどの速さでソフトウェアプロジェクトを完了できるかという問題とよく似ています。アジャイル開発は、モザイク(タイルの集合)を「プロジェクトバックログ」に似通ったものとしてみなすことを提案します。任意の期間が与えられた各生徒は、プロジェクトバックログからコンピテンシーセットを選択し、その期間、つまり「スプリントバックログ」で習得します。ハイランズ大学で、私たちはこのスプリントバックログをILP(Individual Learning Plan; 個別学習計画)と呼び、6週間の期間を採用しました。
習得の第一段階以外のすべてで「行動」が必要となるため、ILPを実際のプロジェクト作業、望ましくは現実世界のプロジェクト作業と結び付けることが不可欠です。
各生徒は、比較的すぐにそれぞれの「学習速度」を決定します。教育を修了するまでにどれくらいかかるかを計画するのは簡単なことです。
学習速度は単に個人差の問題ではありません。適切な環境が大きな違いをもたらすことがあります。
今日の教室や研究室を、ワークショップ ? ボッテガ(bottega; 工房)vi - (レオナルドが仕事や研究を行った場所)に切り替えることを想像しましょう。
ボッテガはアジャイルソフトウェア開発を提唱する理想的なワークスペースを意識して再現しています。オープンな、多数のホワイトボードおよびコミュニケーション要素、活動、共同、社交などを取り入れています。
効果を最大限にするには、生徒は多くの時間、理想を言えばほとんどの時間をボッテガで過ごす必要があります。
ボッテガは「教室が1つだけの校舎」として機能し、習得度に関係なく全員が同じ場所にいて、すべてのものがその環境にさらされます。部屋の一部で起きていることが面白そうな場合や関連性がありそうな場合は、生徒はイスを回転させ、フロアを横切り自由に参加することができます。
この種の環境では、多くの知識が大体は徐々に、無意識に吸収されます。個人が意識して知識を習得し応用するときが来たら、そのプロセスは、すでに習得した無意識の「バックグラウンド学習」の蓄積のおかげで加速します。
個人的責任、最終期限、および顧客を理解し満足させることは、そのすべてがマスターであることの側面です。商品開発は、生徒がこうした習得の側面を達成するために必要な教育的で経験的な機会を提供します。
このような理想的な環境を作成、維持できるでしょうか? 上手くいくでしょうか?
2004年8月に、大学院1年生の34人の生徒がニューメキシコ・ハイランズ大学で「ソフトウェア開発」の独自プログラムに参加しました。
学位プログラムにはコースはありませんでした。生徒は、文学士号を取得し卒業するために、通常の一般教養課程の履修条件に加えて「専攻科目」で500以上のコンピテンシーを習得することが見込まれました。
プログラムは実習ベースでした。プログラム参加者の全員が、現実世界のタイムラインで顧客に提供される現実世界のソフトウェアに取り組んでお金を稼ぐことができました。
生徒の50%が女性で(コンピュータ学位では意外)、60%強が未成年で、80%近くが経済的に恵まれていませんでした。
2人の常勤の教授、Pam RostalとDave Westがプログラムを考案して運営しました。世界的に有名なマスター開発者(Linda RisingやRon Jeffriesなど)がこのプログラムを訪問し、生徒と一緒に取り組み(ペアプログラミング)、実際的な指導を通じて専門知識を提供したり、他のタイプの学習セッションを実施したりしました。
すべての開発作業と教育が、「教室が1つだけの校舎」で行われました。
私たちのスタジオ環境には、アイランドワークエリア、辺り一面のホワイトボード、固い床と車輪付きのイスがありました。ソファー、冷蔵庫、電子レンジなどちょっとしたよく使う設備もありました。
「文化とコミュニティ」を育てることにかなりの時間が費やされました。コミュニティと実習レベルの進歩を人々に伝えるために、セレモニーが利用されました。ポットラック形式の食事(時折、仕出し料理)がイテレーションの反省会やセレモニーに盛り込まれました。いたるところにある実習レベルを示すカラーシャツ、およびプログラムのロゴは、アイデンティティと帰属性を表現するのに役立ちました。

Xバー*10は、平均より10倍優れたプロフェッショナルの卒業という目標をほのめかしています。Software(ソフトウェア)は私たちの媒体であり、Craft(技巧(修得))は私たちの目標であり、People(人々)は私たちの焦点であり、Systems(システム)は私たちの観点であり、Agility(アジリティ)は私たちのプロセスです。
大学の1学期から2学期の間の1年生の在籍率は、同じ期間で平均して50%未満だったのに対し、100%でした。さらに40人の生徒(大半が1年生)が、2005年秋のプログラムに参加することを決めていました。
第一期生のうち7人が1年目の終わりまでに正社員として雇用され、2人が大学院への入学が認められ、1人がコンピュータサイエンスにおける修士号に必要な条件を同時に満たすことができました。
8人の生徒が学術論文を共著し、査読付学術会議、ロサンゼルスのOOPSLA、デンバーのAgileでプレゼンテーションを行いました。
プログラムが実施された最初(かつ唯一viii)の年から得た教訓には、次のことが含まれます。
このプログラムが中止されたとき、生徒は手紙書きキャンペーンを組織化し、ニューメキシコ知事のリチャードソンのスタッフとの面会を手配し、彼らが会議で会った全国的に著名な何人かの人の支持を求めました。これは無駄に終わりましたが、プログラムを続行すべきであるという確信を強固にし、別の大学で再現するための取り組みが開始されました。
WestのNMHUプログラムに関するより詳細な報告は、2006年にInfoQで公開されました: Experience Report: Agile Development Apprenticeship at NMHU (参考記事・英語)
Transcendence Corporationはハイランズ大学の体験中に形成されました。実習プログラムの契約エージェントになるためでした。(大学はその種の仕事の契約を結ぶことを州法によって禁じられました。)
サンタフェ大学(College of Santa Fe)は、美術・芸術において非常に強力なプログラムを持つ小規模の(生徒が2,000人に満たない)リベラルアーツカレッジです。
Santa Fe Complexは、ボッテガ環境、数学、科学、視覚化、エージェントベースのモデリング、複雑系応用、および「芸術と科学の接点」に関する専門知識を提供します。専門的技術に適用された複雑さ、および「芸術と科学の交差点」を提供します。
上記に説明したプログラムに似た最初のものが、2007年秋にサンタフェ大学で確立されました。
2008年秋には、現在のプログラムが5年間のコンピテンシーベースの科学修士プログラムとして再定義される予定です。
2008年秋から2009年春の間に、この3つの組織は協力して次のことに取り組みます。
私たちと共にこの取り組みに参加することに興味のある方は(特に、カリキュラムワークショップ、プロジェクト作業の契約、スポンサー関係)、著者にご連絡ください。
Dave Westは、プログラマーからITディレクターに及ぶ職務において、数えられないほど長年の経験を積んでいるプロフェッショナルなソフトウェア開発者です。過去15年間、彼はコンサルタントと学界のそれぞれに時間を割いてきました。現在はサンタフェ大学のビジネス、革新、技術の教授であり、以前はニューメキシコ・ハイランド大学とセント・トーマス大学の教授でした。彼自身の学歴は、アジア哲学(マカレスター大学の学部)、コンピュータサイエンスと文化人類学(ウィスコンシン・マディソン大学の学位)、および認知人類学での博士号(ウィスコンシン・マディソン大学)を含んだ折衷的な組み合わせです。彼は、『Object Thinking』(MS Press Professional、2002年)の著者であり、「ソフトウェア開発の改革」に関する2作目の本の完成が間近です。彼が有する専門知識はすべて、オブジェクト、アジリティ、デザイン、革新、および変化の領域に焦点が当てられています。
i 私がこのフレーズと考えに出くわしたのは、Christiane Floydその他が共著した本『Software Development as Reality Construction』(Springer-Verlag、1992年)が最初です。
iiComputing Curricula 2005 – The Overview Report. Copyright © 2006 by ACM and IEEE.
iv 私がこのフレーズと考えに出くわしたのは、Christiane Floydその他が共著した本『Software Development as Reality Construction』(Springer-Verlag、1992年)が最初です。
v私はこのモザイクを表象芸術ではなく抽象芸術の観点から見ています。テーマは、全体へのつながりを排除せずに焦点を描写したタイルの有界集合です。
viボッテガ(bottega)の私の説明の中核は(多数の出版物に登場)、Fritjof Capraの素晴らしい著書『The Science of Leonardo』(Doubleday、2007年)から来ています。
viiギリシャ人は、パイデイア(教育)が貴族階級によって行われると考えました。彼らは文化や考えを理屈で説明していたとされています。文化と若者は理想に「形作られます」。古代から、ほとんどの都市の成人貴族は彼らが指導した若者と恋に落ちることを奨励されたため、愛はこのプロセスにおいて重要な役割を果たしていました – Wikipedia.
viiiプログラム終了がプログラム自体とは関係なかったということをはっきりさせるために、なぜプログラムの実施が1年間だったのかについて簡単に話すことが不可欠です。これは面白い話ではありませんし、責任がある個人の背信行為を適切に説明することは困難です。プログラムが理事会(Board of Regent)によって承認され予算が組まれた2カ月後に、同理事会は学歴も専門的技術もない政治家を理事長として雇いました。理事会の議事録によると、この理事長の主目的は、教授陣の民族構成を変えることでした。このために、理事長は、終身在職権のある「カーペットバガー」の教授陣に退くよう圧力をかけることに手を尽くし、教授陣への終身在職権を不当に拒否し、管理者を不法に雇うなどしました。彼の行動により、AAUP(米国大学教授協会)によって大学は制裁を受け、多数の敗訴が大学に数百万の損失を与えました。彼は最終的に解雇され、現在、州議会議員の時に連邦建築プロジェクトからリベートを受け取ったとの疑いで告訴されています。新しいプログラムを導く教授陣が、理事長のヒットリストに載っていました。プログラムを破壊するための現行対策の失敗が明白になったときに、彼は、教授陣や理事会や生徒の同意も相談もアドバイスもなく、プログラムの終了を命じました。
原文はこちらです:http://www.infoq.com/articles/systems-development-discipline
(このArticleは2008年9月12日に原文が掲載されました)
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
スレッド表示 返信