« ユースケースの善し悪し | トップページ | Redmineの親チケット検索機能とCSVインポーター機能 »

2015/08/14

ソフトウェア開発と経済学の類似性

経済学の本を読んでみて、ソフトウェア工学と経済学の類似性について考えたことをメモ。
ラフなメモ書き。
以下はラフなアイデアにすぎない。

【1】経済学の理論は、環境とテクノロジーで規定されているがゆえに、現実と合致しない場合が出る

【1-1】経済学の理論に、「セイの法則」というものがある。
「セイの法則は、「供給はそれに等しい需要を作りだす」という供給重視モデルを説明する理論です。」

金融大学 > 金融用語辞典 > セイの法則

セイの法則 - Wikipedia

いわゆる古典派経済学の理論の一つらしいが、世界大恐慌では、この理論に基いて状況を放置しても市場経済は復活しなかった。
彼らの言い分では、需要と供給は均衡するのだから、高い失業率が続けば労働コストが低下し、やがて労働需要も持ち直すから、恐慌は終わる、と。
しかし、恐慌はいつまで経っても終わらなかった。
それはなぜか?

その理由は、社会科学(たとえば経済学)の定説や理論は、その時代の社会構造やテクノロジーに規定されるという特徴があるため、かなり脆弱だから。

たとえば、社会構造の変化として、労働組合が強くなったために、労働者の報酬の下方硬直性が生まれたために、労働コストは需要の変動に対して簡単に下がらなくなった。
また、化学肥料や工業生産の拡大によって、農産物や工業製品が大量供給されて、かつての時代よりも供給量が大幅に需要を上回る状態になったために、この均衡が成り立たなくなったから。

すわなち、ある時代において現実をよく説明できた社会科学の定説は、社会構造の変化や技術革新によって、次の時代では現実をうまく説明できなくなったわけだ。
つまり、社会科学の理論は、ある時代のある前提に依存した一つの理論に過ぎない。

【1-2】この話は、ソフトウェア工学にもよく当てはまる。
ソフトウェア工学はわずか50年足らずの歴史しかないけれど、その中でたくさんの理論や経験則が編み出されてきた。
それら理論は、当時の開発環境や技術に規定されていたために、今の時代では使えないものもある。
あるいは、新しい現実にソフトウェア工学の理論がついていけず、今そこにある現実を説明できない時もあるだろう。

たとえば、アジャイル開発もそうだろう。
ある会合で「アジャイル開発は試行錯誤の行き当たりばったりの開発スタイルではないか」という指摘を受けた時があり、思わず、そんな発想を持つ人が今もいるのか、と驚くと同時に、古い理論とその当時の体験しか知らない人は、新しい現実を理解できないのだろう、と思った。

アジャイル開発が注目され始めた理由は、二つあると思う。
一つは、アジャイル開発を支える技術が普及したこと。
例えば、テスト駆動開発、継続的インテグレーション、仮想環境、チケット駆動開発など。
そのアイデアは昔もあったろうが、コンピュータの貧弱な性能やコストのために、使いにくかった。
しかし、今はGitHubやCircleCI、AWSなどのように、無料または低コストで、コンピュータ資源を使えるようになったおかげで、富豪的な発想で開発プロセスを組み立てることができるようになってきた。

もう一つは、ビジネスが変わったこと。
例えば、昔はメインフレームが隆盛で、企業の業務システムや基幹システムの開発がメインだったろうが、今は、Webサービス・ゲーム・SNSなどの周辺のビジネスの方が急拡大している。
そして、それらのビジネスでは、PCからスマフォへクライアント端末が変わった状況も後押しされた。
さらに、融通のきかない大企業よりも、少人数のベンチャー企業がどんどん新しい技術や開発スタイルを編み出すようになっている。

すなわち、ソフトウェア工学の理論も、その時代の現実を説明できるように、常にブラッシュアップすべきだし、新しい理論を打ち立てていくべきなのだろう。
ソフトウェア工学が発展するには、新しい現実に即した経験則を生み出していくことが必要ではないか。

では、ソフトウェア工学が新しい経験則を編み出すのに必要な条件は何だろうか?
僕は、新しいメトリクスを生み出すことが一つあるのではないか、と思っている。

【2】社会科学の中で経済学が科学として成功した理由は、各種の統計データが世の中に溢れているからではないか

【2-1】社会科学の中で、経済学が急激に拡大して政治的影響力も増やしている理由の一つは、各種の統計データが世の中に溢れているので、そこから現実を説明する新しい理論を作りやすくなっていたり、今後の経済動向を予測する作業がやりやすくなったからではないか、と思う。

これらの社会統計データは、政府が白書の形でたくさん出版しており、人口動態やGDP・GNPなどをいくらでも集めることが出来る。
また、帝国データバンクなどのように、民間企業が日本の企業の財務状況などを公開してくれているので、そのデータを元に今後の経済動向を統計学を使って予測することもできる。

経済学の発展を見ると、大量の統計データが溢れているおかげで、その統計データを元に、新しい指標(メトリクス)を作り出して、その指標を元に経済規模や幸福などを計測し評価しようとする動きもある。
また、統計学の理論を使って、データの相関性を帰納的に導く手法も使えるようになってきたので、帰納的な結果を元に新しい仮説を経験則として提唱することも可能になってきている。

【2-2】その発想をソフトウェア工学に当てはめてみると、実はソフトウェア工学で使える統計データが異常に少ない。
日本では、IPAが出版しているソフトウェア開発データ白書、IT人材白書、セキュリティ白書くらいしかない。

「ソフトウェア開発データ白書2014-2015」がより便利に使い易く
~PDF版とグラフデータを公開~:IPA 独立行政法人 情報処理推進機構

その理由は、日本の企業がこれだけソフトウェア開発をしているにも関わらず、守秘義務などの諸条件のために、統計データを公開できていないのが一番の理由だろうと思う。
他の公開できない理由には守秘義務もあろうが、個人的には、そもそも統計データを収集しようとする動機もあまりないのでは、と思ったりもする。
設計・開発情報だけでなく、進捗・品質・コストの情報も収集して、再利用できるデータに揃えるには、すごく手間がかかるからだ。

その状況は、今もあまり改善されていないように思う。

だが、一つの希望としては、オープンソースソフトウェアの隆盛と、GitHubの普及によって、それらで公開されているリポジトリ情報やIssue情報を収集することで、ソフトウェア工学の研究に役立てる可能性があることだ。

ソフトウェア・リポジトリ・マイニング~Web2.0をソフトウェア工学に応用する: プログラマの思索

「金曜日のコミットにはバグが多い」という経験則があるが、その研究の対象は、EclipseやApacheのリポジトリ情報だったという話も聞く。
すなわち、オープンソースソフトウェアのリポジトリ情報やIssue情報を元に、ソフトウェア工学の新しい知見を見出して、今の現実に即した経験則を作り出していくことは可能なはずだ。

現在のソフトウェア開発の流れを見ても、技術革新の潮流を生み出す発生源は企業ではなく、オープンソースに移っている。
だからこそ、オープンソースソフトウェアが活発になるほど、ソフトウェア工学が発展できる余地はあると思う。

|

« ユースケースの善し悪し | トップページ | Redmineの親チケット検索機能とCSVインポーター機能 »

Agile」カテゴリの記事

ソフトウェア工学」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« ユースケースの善し悪し | トップページ | Redmineの親チケット検索機能とCSVインポーター機能 »