経済のグローバル化とアジャイル開発の必然性

公開: 2021年10月18日

更新: 2021年10月18日

あらまし

変化への対応

人類は、古代ローマ帝国の時代に大規模な組織を構成し、その大規模な組織を利用して広大な地域を支配し、そこから得られる収穫物を集め、主都ローマに運び、ローマの市民やそこで働く奴隷たちの生活を維持するための物資を効率的に分配する方法を生み出した。世界4大文明が発祥して、わずか3,000年後のことである。古代ローマ人が考案した基本的な方法は、今日、「分割統治」(divide and conquer)と呼ばれている方法である。

分割統治とは、巨大な組織を構成するために、十人から数十人で構成される最小単位の組織をつくる。この最小単位の組織を統率するために、その最小単位の組織を複数束ねることで、最小単位組織の数倍から10倍程度の規模の小組織を構成する。さらに、この小組織をいくつか束ねて中組織を構成し、その中組織をいくつか束ねて大組織を構成する。大組織になると小さなものでも数千人規模の組織が作られ、大きなものになると数万人規模の組織になる 。

この分割統治の手法は、5世紀に古代ローマ帝国(西ローマ帝国)が滅亡した後、ローマに設立されたカトリック教会(ローマ教会)によって踏襲された。5世紀から15世紀までの約1,000年間、ヨーロッパ世界を実質的に支配したローマ教会は、地域内のすべての村に建設した村の教会、それをまとめた教区(地域)の教会、地方の教会、国の教会、それを取りまとめる宗派の教会、そしてそれらを支配するローマ教会と言うピラミッド構造の組織を作り上げた。

このシステムでは、各地域を支配する貴族や、それを取りまとめている国家を支配する国王も、ローマ教会からの承認がなければ貴族や国王の地位に就くことはできなかった。国王を公式に決定する戴冠式では、教会を代表する司教やローマ教皇が国王に冠を授けた。このことは、世俗的な政治組織である国の上に、宗教上の組織であるローマ教会が存在することを示していた

13世紀頃に北ヨーロッパの国々で始まった宗教改革によって、北ヨーロッパにおけるローマ教会の権威は徐々に低下し始め、16世紀になるとローマ教会はこの地域における実質的な権威を失った。このことは、各国の人民を支配するのは、ローマ教会ではなく、その国の国家権力を代表する国王や共和国の執政官になった。国家は、国民に税金を課し、国民を統治するための政治コストを賄うようになった。この新しい統治組織である国家も、ローマ教会の組織を真似た行政組織構造をもつようになった。

北ヨーロッパ諸国では、行政のための組織と、対外的な戦争を実施するための国民軍を整備した。それらもローマ教会が古代ローマ帝国から継承した巨大組織の構成法を軍事・行政組織の構成法として応用したものであり、巨大な組織を作るようになった。さらに、産業革命の時代が終わって、産業化社会(Industrial Society)時代に入り、企業の資本集約が進むと、企業組織の構成に、古代ローマ帝国で開発され、中世のローマ教会によって発展し、近代国家や軍隊の組織構成と運用の方法として確立した分割統治が応用されるようになった。

1980年代末に、米国において産業化社会の時代が終焉し、巨大企業の時代が終わりを迎えた。それに代わって、徐々にではあるが、小規模なベンチャー企業によるインターネットを活用した事業における技術革新の事例が増え、巨大組織の時代も終焉した。例えば、インターネット書店のアマゾンが、従来の書店とは全く異なるやり方で事業を展開し、大成功をおさめ、従来型の大規模書店を経営危機に陥れた

知的な労働を基本とするソフトウェア開発においては、個々の作業者は専門的な仕事を担当するので、肉体労働を基本とする建設現場や製造現場の作業とは本質的に違う。より大規模な成果を得るために、単純に作業者の数を増やし、それを大規模な組織で管理することで、目標を達成しようとする方法が、成功を約束するわけではない。ソフトウェアは、大規模になればなるほど複雑になり、作業者の数を増やすだけでは成功できない

一般的には、ソフトウェア開発の場合、優秀な専門家を集めて、少人数で十分な時間をかけて作業する方が成功の確率を高める 。開発期間が短く、その制約が厳しい場合、納期を守るために作業者の数を増やし、分業の度合いを高める方法を採用することがある。この方法は、ソフトウェア開発のような高度に知的な労働を必要とする分野では、組織管理の問題を複雑化させる結果となり、失敗のリスクを増大させる

ソフトウェア開発における失敗は、既に完了したとされる工程の作業のし直しを原因とする例が多い。その結果として多大な追加作業を発生させることがある。そのような追加作業が増えてくると、結果としてソフトウェア開発は失敗する。約束した納期までに開発を終わらせることができないからである。つまり、大規模な組織によるソフトウェア開発には、欠点が多いにもかかわらず、利点が少ない

アジャイル開発では、1つの開発チームを数名の専門技術者で構成する方法を採用する。小さな規模の場合には4名程度から、大きな規模でも8名程度で構成するようにする。チームに参画する専門家としては、ユーザの代表、要求仕様をまとめる技術者、設計と実現に責任を持つ技術者1名から数名、機能の確認や作成したプログラムの品質を確認する技術者1から2名とするのが、一般的である

このように、開発チームの規模を小さくし、それに合わせて比較的小規模なソフトウェアで実装できる機能にシステムの機能を分割し、小さなチームで小さな機能のプログラム開発を実施することで、失敗のリスクを低減するとともに、開発効率を高めることが可能になる。この方法は、オブジェクト指向技術 が導入される前から、米国のソフトウェア開発組織で試みられていた機能項目別段階的開発の方法を踏襲したものである。

この方法の問題点としては、類似した機能の開発であっても、上位機能が異なる場合は、類似した2つのプログラムが重複して開発されること。個々の機能項目単位でプログラムが設計・実現・試験され、完成するとそれまでに開発されている部分と統合し、試験が実施されるため、煩雑なソフトウェア統合とテストの作業の繰り返しの労力が増大することなどがあげられていた

ただし、最近のソフトウェア開発環境構築技術の進歩によって、ソフトウェアの統合作業や回帰テストの自動化などが可能になったため、実際に人間の肉体労働を必要とする部分は縮小しつつあり、作業の効率化と生産性の向上は、進みつつある。このため、重要な問題はシステム全体の機能を、分割統治法を適用して粒度の細かい小さな機能に分解し、個々の小さな部分の開発を個別のチームに割り当てることに集約される。つまり、知的な作業の重要性が増してきている。この機能分割には、高度に専門的な知識と経験が要求されるため、高度な専門家人材の育成が重要な問題になっている。

(つづく)