00年代のIT業界というと、2000年問題に始まった。西暦を数字2桁で管理していたがために桁あふれするだなんて、今になって思えばなんとメモリをケチッていた時代だろうと思うところだが、当時のマシンスペックを思えば仕方無くもある。
2000年初頭のマシンスペック
2000年2月17日に発売されたWindows2000の要求スペックは、Pentium 133MHz以上、メモリ 32MB以上、ハードディスク 850 MB以上の空き容量であった。
1996年にリリースされたJavaは2000年5月8日をもってJ2SE 1.3がリリースされ、かなりこなれてきていたし、Java VMのパフォーマンスもほどほどだった。当時の19200kbpsほどのモデムではJavaAppletのダウンロードには時間がかかったし、当時のJREの起動の遅さもあってJavaといえば遅い、というステレオタイプが根づいていたが、ビジネス用途ではすっかり定着していた時代だった。
00年代初頭と言えば、JSPによる低レベルでのWebシステム開発がまだまだ行われていたし、テキストエディタでJavaを書くようなこともまだ当たり前に行われていた。IDEと言えばForte for Javaとかの時代で、100% Pure JavaのIDEというと遅くてイマイチという意見が主流だったし、当時の入力の自動補完も弱かったし、リファクタリング機能なんてなかった。IDEよりテキストエディタという意見がまだそれなりに説得力があった時代だった。
00年代前半から次第に低レベルのWebアプリ開発から、フレームワークを用いた開発へと移行が進んでゆく。Apache Struts は 2001年 6月のリリース。MVCモデルでのWebアプリ開発が盛んに叫ばれたのは00年代前半だった。
富豪的プログラミング
マシンスペックがどんどん向上していく00年代では、パフォーマンスよりメンテナンス性を重視した設計をするようになっていく。エンジニアに月当り100万払ってパフォーマンスチューニングするより100万でサーバを新しくする方が効率的だ、みたいな時代だ。*1パフォーマンスチューニングは著しくメンテナンス性を損なう。だから、パフォーマンスチューニングは最後にやる、というセオリーで今までの価値観の置換えを迫られたわけでもある。
バベッジ的分業効果とフレームワーク
このころ、肥大化していくシステム開発をより低コストで開発するために、バベッジ的分業効果を狙ったフレームワーク設計や、あるいは開発体制というのが台頭してきたように思う。安価で未熟なプログラマと呼ぶのも憚られる集団でどうにか開発をやり遂げるというノウハウがSIerに蓄積されていった時代だ、と僕は分析する。
ある程度、枯れたフレームワークにコアの難易度の高いところは任せてしまって、簡素なところだけプログラムすればいい、そういうレベルのプログラムなんて誰にでもできる、という思想が出てくるのも仕方が無いだろう。
また、システム開発ってのは常に高度な最新のプログラミング技能を必要とはしない。別に現代に流通している製品がみな最新の技術で生産されているわけじゃない。伝統工芸品は江戸時代ぐらいの技術で作られていることが多いし、刀みたいに1000年前の技術で作られる製品もある。なんでもかんでも最新技術が必要というわけではないのだから、ITもそのような分化が進むのも道理だと言えよう。
PHPや、あるいはRuby on Railsなどが流行ったのもそうした分化のひとつだと言えるんじゃないだろうか。
IDEの発達とプログラミングの産業革命
00年代中盤ぐらいから、IDE(統合開発環境)というものが凄く発達した。ハードウェアの進歩もあって、今までは重くて利便性と秤にかけたとき、軽快さをとっていたような機能性を躊躇なく利用出来るようになってきた。Eclipseが3系になったのは2004年6月。2系までは構文解析を伴なうシンタックスハイライトはオプションだったが、3系からは標準化されたのだったと記憶している。昔はstaticフィールドとインスタンスフィールドの色分けなんて出来なかった。
こうなると、プログラミングという作業にも機械をうまく使って生産性を上げようという、まるで産業革命を彷彿とさせる動きが出てくる。高度に機械化された開発環境で、自在に安全にリファクタリングできる時代になったのが00年代後半。TDDなんかが脚光を浴びるようになったのも、リファクタリングの敷居が下がり、安全性も上がり、リファクタリングのコストが劇的に低下したからではないだろうか、と思うのだ。
自動テストの普及も忘れてはならない。しかし、この辺りはプロジェクト運営上のノウハウ不足もあって本格的な普及にはまだいたっていないように思う。
プロジェクト管理ツールとアジャイル開発
00年代後半にはTracやRedmineといったプロジェクト管理ツールも普及してきた。こうしたソフトがアジャイル開発を助けてくれる。2000年代初頭に登場したXP(エクストリームプログラミング)がやっと現実的になってきた。
10年代になってこれらのツールはより洗練されていくだろうし、こうしたプロジェクト運営のノウハウも蓄積し、実践できる技術者が増えていくことになると考えている。
2010年代もずいぶんと面白そうじゃないか。