セカイノカタチ

世界のカタチを探求するブログ。関数型言語に興味があり、HaskellやScalaを勉強中。最近はカメラの話題も多め

ソフトウェア開発における海の民と山の民

ソフトウェアを行っている会社は世に数多ありますが、これらの会社はその出自により「海の民」と「山の民」に分けられると思っています。


山の民

山の民は、先祖をたどると恐らくIBMに行き着きます*1

彼らは、スーツを着てプログラムを書くことで知られており、SIerを中心としたピラミッドを形態のコミュニティを築き、長らく純粋に企業向けに請負契約でビジネスシステムを構築することを生業としてきました。

かつては、COBOLC/C++VisualBasicなどという言語が好まれておりましたが、今ではほぼJavaC#に置き換わりました。

彼らは、枯れたシステムを好みます。新しく便利な機能よりも、古くてバグが少なく*2、利用実績の多いプロダクトを利用することによって、自分たちの仕事がうまくいくと思っています。

伝統的にウォーターフォール型のプロジェクトを好み、勘定系や物流系など、企業の基幹を担うシステムを構築するため、巨大プロジェクトを立ち上げます。
これらのプロジェクトは、納期予算品質(QCD)といった指標で管理されますが、しばしば、そもそもそんな必要がないぐらい誰の目にも明らかに炎上します。

とはいえ、長らくシステム開発を本業としてきているだけあって、システム開発とプロジェクト管理の歴史は長く、幾多の戦場を生き残った歴戦の兵士たちもそれなりに有しています。

山の民の歴史

古くは、メインフレームとダム端末で構成される、中央集権的なシステムを作っていました。

メインフレームは、彼らの誇り高き神であり、飯の種でありました。

そして、黒い端末と緑色に発光する文字は彼らの聖典でありました。

彼らは、この端末に向かい、長い長い経典を一心不乱に打ち込み、黒い画面とけたたましく帳票を吐き出すドットインパクトプリンターからなるシステムを構築していました。

彼らは幸せでした。巨大なマシンと司祭達は、絶対的な安定性と神のようなパワーを提供しましたが、同時にそれに見合ったコストを要求しました。

時代が下ると、高額のお布施に耐えられない不遜な人々が「ダウンサイジング」という言葉を口々にして、クライアント・サーバーシステムが誕生しました。

ワークステーションがもてはやされ、メインフレームオフコンは時代遅れとして隅へ追いやられました*3

ここでは、小型のサーバー*4とパワフルなワークステーションによって、システムを構築する必要があり、サーバー上では新たな神としてオラクルがもてはやされ、クライアントでは、VisualBasicDelphiC++などが使われました。

彼らは幸せでしたが、クライアント・サーバーシステムは、構内のネットワークに限りその力を発揮しました。複数の拠点をまたいだシステムや、屋外からのアクセスに対しては、あまり門戸を開放しませんでした。

更に時代が下り、インターネットが産声をあげます。HTMLとブラウザによって新たな地平がもたらされ「ホームページ」と言う言葉を口にする人々が現れました。

当初、山の民は、これらのテクノロジーに懐疑的でした。HTMLとCGIは、あまりにプアで、ブラウザの切り替えは遅く、JavaScriptは方言だらけでした。

これを元に業務システムを構築することは不可能だと誰もが思っていました。

しかし、GMailの登場や、Web2.0が叫ばれる頃になると、彼らもWebに心奪われます。バグが出るたびに、ワークステーション一台一台にexeファイルを配って回ることの飽々していたのです。

当初、屋内で使うインターネットとして、イントラネットなどと呼ばれ、少しずつ利用されていましたが、その後のJavaの普及で爆発的に広がり、今ではほぼすべてのシステムが、Webベースのシステムに置き換わりつつあります。

こうして、山の民は、主戦場をWebとJava/C#に移していったのです。

海の民

海の民は、先祖をたどると、恐らくシステム屋ではなく、広告や出版のデザインを生業とする業者になります。

彼らは、自分がリラックスできる自由な服装でプログラムを書くことで知られており、大きな組織を持たず、個別に独立した組織と、数多くのクライアントを抱えて仕事をします。

彼らの好きな言語は、PHPJavaScriptで、理由を尋ねるのなら「動くページを作りたくて、そしたらPHPがいいって言うから」と答えるはずです。

山の民よりも遥かに新しもの好きで、好奇心旺盛なので、次々と新しいテクノロジーに食いつきますが、プログラミングやシステム構築に興味が有るわけではないので、対象は見た目が派手なjQueryプラグインやブログツールに限られます。

伝統的に、単発の仕事*5が多かったため、プロジェクト管理という概念があまり発達していません。
毎度炎上していますが、仕事の規模が小さかったことと、保守を求められないことによる手離れの良さ、若さと好奇心で、何とか乗り切っています。

マインドは、ビジネスマンというよりアーチストに近く、作品を仕上げる事に情熱的な戦士たちによって、UIの洗練されたバグが多いシステムを作り出します。

海の民の歴史

彼らは、長らく紙の上にキラキラと素敵な模様や線を引いて暮らしていました。

彼らがコンピュータを使い始めるのは、マッキントッシュの誕生とDTPの発達を待たなければなりませんでした。

彼らにとって、コンピュータとは紙のデザインをサポートするツールであり、ちょっと高価なアクセサリーでした。

マッキントッシュが彼らの神であり、神は爆弾を以って下々の者を恐怖させ、懲らしめていました。

彼らにとっても、インターネットは大きな時代の転換点となります。

紙の上のデザインは、いつしか「ホームページ」という名の、コンピュータ上に表示されるページのデザインに置き換わります。

そして、創作意欲と顧客の要望により、次第に「ホームページ」を動かす必要が出てきます。

そこで、初めて彼らの中にプログラマと呼ばれる人種が現れます。

山の民が毛嫌いしていた、JavaScriptFlashなんかにも彼らは臆せず果敢にトライします。

海の民によるシステム開発の始まりです。

そして、山を降ってきた山の民とインターネットという戦場を共にすることとなるのです。

現代のプログラマ

奇しくも、海の民、山の民ともにインターネットを主戦場とすることになり、しばらくたちました。

当初は、あまり競合することもなく、微妙に案件や顧客によって住み分けていた両者ですが、時とともに境目がはっきりしなくなってきました。

山の民は、SI案件の衰退とインターネットのさらなる発達に伴い、より広告出版に近い分野まで「システム構築」の範囲と捉えています。

海の民にとっても、システム開発はより、本格的に主たる業務になっていっています。

スマートフォンの普及によるアプリの開発やソーシャルゲームの開発など、「大規模で継続的」という本来海の民が苦手とする部分と、「デザインやUI/UX」「マーケティング」などの山の民が苦手とする部分を併せ持つ開発案件がドンドン増えています。

これらの民が、もっと積極的に融合することによって、ソフトウェア開発の世界はより発展するのではないかと思います。

何が言いたかったのか

昔から、これらの文化の違うシステム屋のことを俺用語で「山の民」「海の民」と呼んでいたんだけど、当然ながら普通に通じないので、用語の説明を兼ねて流行るといいなと思って書きました。

僕は、山の民の出身なので、海の民のディテールに関しては想像と偏見で書きました。間違ってたらごめんなさい。

森の民

蛇足ですが、最近、森の民というのが発見されました。

彼らは、主に大学の研究室で、コンピュータ・サイエンスの研究のためにプログラムを書いています。

出来上がった成果を、さらなる研究のために利用するという無限再帰を行っており、世俗とは切り離された世界でスタックの奥深くにもぐりこみ、自らをドンドン先鋭化していっています。

あまり、世の中と接することがないので、長らくその存在をスルーされていたのですが、昨今の関数型プログラミングのブームによって、世間に知られることとなりました。

今後の調査結果が待たれるところです。

*1:ご先祖様生きてますが^^;

*2:古ければ十分にバグが潰されていると考えている

*3:しかし、その後も長く生き続けます

*4:と言っても結構でかい

*5:キャンペーンサイトのデザインなど