ruby
Python
nosql

ソフトウェア開発の技術は今確実に良くなりつつある–未来は明るい

次の記事

ジャフコから10億円調達したベガコーポレーションは家具屋を営むゲーム企業

gets-better

“嫌いなソフトばっかしだね、ほとんど。あらゆるレイヤ(layer, 層)が、そもそも不必要だし、複雑でややこしい。…どんなにひどいか、きみには分からないかもね”、こうぼやいているのは、Node.jsの作者として(当然ながら)尊敬されているRyan Dahlだ。”ソフトって、ほんとにそうだよね。全部がらくただ。そう思っていない人が多いだけさ”、と相づちをうつのはZack Morrisだ。彼はさらに別の記事で、こう言う: “業界は自分で自分を窮地に追い詰めている。前を見るためにはその箱から出るべきなのに、それが連中には分かんないのさ”。

投資家や管理職の人たちは理解できないかもしれないが、実際に現場で仕事をしているプログラマたちは、ほぼ全員が怒り狂っている。今日のソフトウェアエンジニアリングの現状をめぐる不平は、どこを見ても加速度的に増えている。たとえば、最先端のプロジェクト管理手法と言われるScrum(スクラム)が攻撃されている: “Scrumが死んでAgile(アジャイル)だけ生き残ってほしいね”、と言うRobert Martinが憎むのは、そのエリート主義と、’Scrum Master’と称する無意味な資格制度だ。Pawel Brodzinskiは、こういった一連の資格認定制度を唾棄してこう言う: “資格証明は人間を公正に客観的に評価するように見えるが、でも、それはそもそも、何の役にも立たないよ”。

テスト駆動開発も、批判されている。それは、目的のソフト本体を書き始める前に、より重要な自動化試験を先に書け、という考え方だ。この考え方は一時は神聖視された(ただし、口先だけでテスト駆動開発重視を言うところも多かったようだが)。しかし今では、Pieter Hintjensがこう主張する: “試験をすればするほど、そのソフトは悪くなる”。Peter Sargeantも同意見だ: “テスト駆動開発は、その概念そのものが欺瞞だ。あんなものを信奉するなんて、犯罪行為だ”。

これらの主張は、どれも間違いではない。iOSのアプリ開発工程をやり玉に上げているMorrisの説明は、細部まで正しい: AppleのXCode環境と、言語としてのObjective-Cは一見とてもすっきりしているが、しかしそれを下から支えているものは、プリプロセッサマクロや、コンパイラ/リンカのための謎めいたフラグやパスのジャングル、スキーム/プロジェクト/ターゲットといったややこしい概念、などなど、1980年代の恐怖劇の舞台装置だ。Androidの開発はややましだが、しかし使用を推奨されているEclipse環境は、醜悪で、ガチガチと武骨、しかも分かりにくい。その資格認定は、ぼくから見れば(一部の例外を除いて)、暗記主体の受験勉強みたいに空しい。テストは、デベロッパが抱えている問題に合わせてカスタマイズできるべきであり、画一的にやるのはナンセンスだ。

でも、上に引用した怒りやフラストレーションの言葉は、ぼく自身の最近の体験からは出てこない。ぼくはこの20年間、プログラマを職業としてきた。2003年から2009年までの6年は小説を書くために中断し、再びプログラミングの世界に戻ってきた2年前には、いろんなものが相当良くなっていることにびっくりした。PerlやC++のようなぎごちない言語に代わって、エレガントなRubyPythonが、少なくともスタートアップの世界では主流になっている。プログラマが抱える問題の多くは、それらが重症化する前にStackOverflowが解決してくれる。サーバの構成やJ2EEといった、がれきの山に手こずらなくても、今では誰もが、App EngineHerokuなどのクラウド上でコードを容易に展開〜実行できる。しかも、無料で!

Javaはどうか(ちょっとだけ話につきあって!)。Javaはその初期から、批判にさらされてきた。14年前にJamie Zawinskiが書いたJava批判は、その好例だ。でも彼はJavaを、これまでの言語に比べるとずっと良いとほめてもいる。そして今週Herokuは、Javaの最有力の後継候補であるScalaをサポートする、と発表した。この記事の前半で紹介した不平や不満は全部正しい。確かに、技術の現状は完璧ではない。でも、これまでに比べればずっといいことも、認めるべきだろう。もちろん、良い技術の中でも、テスト駆動やアジャイルなど、一部の方法論は今後の改良がまだまだ必要だし、また、費用効率が悪くて現状では採用できない技術もあるが。

エネルギーの分野における、風力や太陽光を考えてみよう。これらは未来のエネルギーだ。そのことは誰もが知っているが、しかしわれわれはこれまで、化石燃料のためのインフラに巨額の投資をしているから、すぐには移行できない。移行のためには、つらい凸凹道を何十年もかけて歩かなければならない。でも、移行のための路線にわれわれがすでに乗っていることは明らかだ。それと同じく、関数型プログラミング言語NoSQLデータベース、などなどのイノベーションは、それらが確かにソフトウェアの未来であっても、全員がたった一日で全面移行できるものではない。今日のソフトウェア開発技術は総じて混乱をきわめているが、でもわれわれが未来に向けての正しい路線に乗って前進していることも確かだ。少なくともその旅路の上では、「最良(the best)」は「良い(good)」の敵であることをおぼえておこう〔==あせって拙速は禁物、一歩々々確実に漸進すべき、という意味〕。

画像クレジット: Dana Robinson, Flickr (やや加工)

[原文へ]
[jpTechCrunch最新記事サムネイル集]
[米TechCrunch最新記事サムネイル集]
(翻訳:iwatani(a.k.a. hiwa))