@ledsun blog

無味の味は佳境に入らざればすなわち知れず

ソフトウェア開発手法の歴史 2000年代

前回に続き、2000年代に発達したソフトウェア開発手法を振り返ります。 プログラマ向けです。

2000年代

動的型付け(Dynamic Typing)

2000年代を一言で表すと「動的型付けの時代」です。

Wikipediaより

動的型付け(どうてきかたづけ、英: dynamic typing)とは、プログラミング言語で書かれたプログラムにおいて、変数や、サブルーチンの引数や返り値などの値について、その型を、コンパイル時などそのプログラムの実行よりも前にあらかじめ決めるということをせず、実行時の実際の値による、という型システムの性質のことである。

RubyJavaScriptが有名です。対義語である静的型付け言語の代表はJavaC#です。

より誤解の無いように謂うと「事前型付け」から「実行時型付け」へ移行した時代です。

動的型付けでは、来たものを信用して動かしてダメだったらどうするか考えます。methodを呼んで無ければ追加します。 静的型付けでは、事前(コンパイル時やキャスト時)に期待した型かチェックしてOKだったら動かします。

この「先にチェックするから、先に実行するへ」の変化はソフトウェア開発のあらゆる層で起きました。

歴史

10年間の間にどのような変化が起きたのか、史実に当たりましょう。

1998年

ちょっと遡ります。

  • [idea] Carlo StrozziがNoSQLを提唱
  • [spec] J2EEリリース。EJB1.0とServlet2.1が含まれていました

J2EE、つまり業務システムが時代の最先端です。

1999年

  • [book] Extreme Programming Explained: Embrace Change 出版
  • [spec] SOAP 0.9リリース
  • [product] Tomcat3 公開

Servletに続きアプリケーションサーバが揃い、Webアプリケーションの時代が始まりました。

2000年

この年、RESTが生まれ、またRubyをメジャーにするきっかけとなったDavid Thomas、Andrew Huntによる世界で最初のRubyの本が出版されます。 当時、多くの人は開発技術のメインストリームになるとは思っていませんでした。後で思えば、2000年代の大きな変化の始まりでした。 また、Strutsは最初のメジャーなWebアプリケーションフレームワークです。

2001年

JavaXMLが時代の最先端でした。

2002年

  • [product] Ruby 1.6.8 リリース
  • [product] C# 1.0 リリース。delegateをサポート。関数をファーストオブジェクトとして扱う。
  • [service] GoogleとAmazonのWebAPIが公開される。

WebAPIが公開されました。この頃はSOAPとRESTが両方用意されていました。

2003年

  • [product] Ruby 1.8.0 リリース
  • [product] Spring 1stリリース
  • [product] Memcached 1.0.0
  • [event] アジャイルプロセス協議会 発足

SpringはDIをサポートし、AOPで実行時に既存のクラスに機能を追加することができます。 Webアプリケーションフレームワークによる動的なアプローチが始まります。 最初のメジャーなKey Value StoreであるMemcachedがリリースされました。Memcachedはオンメモリキャッシュです。ディスクへの永続化はしません。

この年からHPやDELLが低価格IAサーバを供給しはじめます。 OSをLinuxにすることで本番環境、開発環境が安価にそろえられるようになり業務システムへのWebアプリケーションが本格化します。

Webアプリケーションには以下のような特徴があるため業務システムの受託開発の分野でアジャイルソフトウェア開発が注目されました。

  1. アプリケーション毎のクライアントインストールが不要
  2. アプリケーションをアップデートする際もクライアントのアップデートが不要
  3. アプリケーションの複数回リリースが用意

2004年

  • [idea] GoogleがMapReduceの論文を発表
  • [product] Spring 1.0 リリース
  • [product] Ruby on Rails 1st リリース
  • [product] Seasar2 1st リリース
  • [service] GMail 公開
  • [service] Google Adsence 公開
  • [service] iTunes Store 公開

MapReduceの論文が発表され分散ストレージとしてBigTableが注目されました。BigTableはNoSQLの一種です。 また、SpringにつづきRuby on Railsがリリースされ動的なWebフレームワークの時代が始まります。 日本ではSeasar2がリリースされDIブームが起きました。当初期待されていたのはS2DAOによるO/Rマッピングでした。

2005年

  • [book] Refactoring 出版
  • [product] Ruby 1.8.3 リリース
  • [product] C# 2.0 リリース
  • [product] Rails 1.0.0 リリース
  • [product] Android 1st リリース
  • [service] Google Map 公開

Google Mapが公開されました。Google Map の画面遷移なしで地図をスクロールする非同期通信技術はAjaxと呼ばれ世界中に注目されました。 急速にJavaScriptが注目されました。 Martin Fowler の Refactoring が出版されます。

2006年

技術的な転換点となる年でした。 J2EE5がリリースされました。J2EE5ではSOAPをサポートしていません。 Spring 2.0がリリースされました。これに含まれるSpring MVCというモジュールはCoCをサポートしています。 「From Java to Ruby」が出版されJavaからRubyへの移行が本格的な流れになる。

また、ビジネスの面においても、twitterFacebook、Tubmlr、AWSと今も発展するサービスが次々とリリースされました。

アメリカでスタートアップブームが起きます。

2007年

  • [book] JavaからRubyへ 日本で出版
  • [product] Ruby 1.8.6 ~ 1.9.0
  • [product] C# 3.0 リリース。LINQでコレクション処理をサポート
  • [product] Rails 1.2.0 ~ 2.0.0 リリース
  • [product] iPhone リリース
  • [product] kindle リリース
  • [event] XP祭り2007

iPhone発売。

XP祭り2007では「アジャイルを導入する方法」が話題になりましたが、受託開発方面でのアジャイルの浸透はこの辺で止まります。 その後、2010年に永和さんの価値創造契約グラス片手にアジャイル開発、2011年にソニックガーデンさん設立と再び動きが出てきます。2012年にアジャイルサムライが出版され、受託開発に限らないソフトウェア開発の全分野へと広がって行きます。

2008年

前縁の iPhone に続き Android OS を搭載した端末が発売。スマートフォンに注目が集まります。 AWSに対抗したWindows Azure が発表されIaaSとしてのクラウドが普及します。 またHerokuにつづきgithubも公開されPaaSも姿を現します。

2009年

  • [product] node.js 1st リリース
  • [product] MongoDB 1st リリース
  • [product] CoffeeScript 1st リリース

日本でもソーシャルゲームが流行し始めました。 大量の細かいリクエストを捌くために、node.js、MongoDB、CoffeeScriptなどの負荷分散に向いた動的なソフトウェアに注目が集まります。

2010年

  • [product] C# 4.0 リリース。dynamic型サポート
  • [product] iPad 1st リリース
  • [product] Rust 1st リリース。Goに似たシステムプログラミング言語。最近の言語の機能を大体持ってる。
  • [product] CoffeeScript 1.0.0 リリース

最初のタブレット iPad がリリースされました。 そういえばHadoop勉強会が流行っていました。

参考

主に

考えをまとめるに当たりTGSで「Webアプリのアーキテクチャの歴史と進化」について話しました | ありえるえりあが凄く参考になりました。

J2EE

Web以外のフロントエンドも考慮

が凄くポイントでした。

その他