BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Thoughtworks テクノロジレーダ 2011年7月版

Thoughtworks テクノロジレーダ 2011年7月版

原文(投稿日:2011/08/11)へのリンク

ThoughtWorks は先日,テクノロジレーダ(Technology Radar) という報告書を発行した。これは技術的リーダたちが最新技術を理解して戦略的プラットフォームやツールを選定し,自らの組織の準備をするための資料だ。

ThoughtWorks Technology Advisory Board は,ThoughtWorks に在籍するシニア・テクノロジリーダのグループです。[...] この資料が提供する内容は概要レベルまでで,より詳細な内容が必要ならば,それを追求することは読者に任されています。レーダの目標は,対象とする読者が一目で理解できるような簡潔性にあります。レーダは本質的にグラフィカルで,各項目は技法,ツール,言語,プラットフォームというグループに分類されています。項目の中には複数の象限にまたがるものもありますが,最も適切と考えられる象限にマップするようにしています。さらに,これらの項目を4つのリングにグループ化して,私たちの現在の位置を反映するようにしています。

すべての推奨事項は,次のようなカテゴリ中のひとつに分類されている – 戦略的重要性とリスクについて降順に,採用(Adopt),試用(Trial),評価(Access),理解(Hold),である。さらに報告書は 技法 (Techniques),プラットフォーム (Platform),ツール (Tools),言語 (Languages) という4つの象限に分割されている。報告書によると,調査の結果確認された戦略的プログラムには,次のようなものがある。

  • モバイル Web の効率的な配信およびテストを行うツール
  • パフォーマンスのテストと獲得のためのシンプルな技法
  • ビジネスインテリジェンスに対するいくつかの新たなアプローチ
  • 継続的デリバリ(Continuous Delivery)と web ベースアーキテクチャの継続的重視

技法

継続的デリバリ

継続的デリバリ とは,システムを常に製品レベルに保持するために,コード,環境管理,配信などのインフラの最大限の自動化を意識するものだ。これはフィードバックループを確立するためのものであって,決して何かを先送りすることが目的ではない。

進化的アーキテクチャ (Evolutionary Architecture)

正確な未来予測を試みるという問題を伴わずに,エンタープライズアーキテクチャのメリットを享受するものです。コンポーネントの再利用方法を推測する代わりに,進化的アーキテクチは順応性をサポートします。適切な抽象化,データベース移行,テストスイート,継続的インテグレーションやリファクタリングなどを用いて,ひとつのシステム内で行うのと同じような再利用を実現するのです。

報告書の進化的アーキテクチャのコンテキストでは,RESTful アーキテクチャと従来型 SOA の比較も取り上げて,サービス指向アーキテクチャ構築のガイダンスを提供している。

RESTful API はすでに業界の標準です。優れた REST API は,カスタマイズや統合を達成するためのシンプルで軽量な手段となります。SOA の目標のひとつとして,プログラムパラメータではない,可読性のあるビジネスドキュメントの交換によるサービス同士の分離,というものがあります。[...] 結果的には,ビジネスの柔軟性に何ら寄与しない,複雑なレイヤが加えられてしまいます。SOA の実装者はこれを避けるために,最初にこれらサービスのビジネス上の意味を理解した上で,従来のシステムから独立した,可読性のある制約 (contract) を実装するべきです。
[…] 私たちは以前,ベーシックプロファイルを越えた WS-* を使用する場合には,慎重に物事を進めるようにアドバイスしたことがあります。REST や OAuth のようなシンプルな web-as-platform 技術の進歩と支持,あるいは WS-* に関する既知の問題を考慮すれば,注意して扱わなければなりません。

報告書ではコマンド-クエリ分離やイベントソーシング,データウェアハウス構築のためのビジネスインテリジェンス手法など,開発手法とパターンについても意見を述べている。

残念ながら現状では,作業を分離して統合を遅らせる方向に分岐する,機能ブランチ (Feature Branch) の実施を受け入れてしまう開発チームが後を絶つことはないでしょう。機能ブランチは一般的に,大きな苦痛と後のマージにおける予測不能性を伴います。しかしそれよりも重要なのは,高品質のソフトウェアを維持するために必要な,継続的な設計改善が阻害される点にあるのです。機能ブランチに代わるものとして私たちは,継続的統合と抽象化としてのブランチを推奨します。

ツール

報告書では迅速性,品質,性能を指向する様々な組織の目標が紹介されている。コードとしてのインフラ,コードメトリックスを評価するツールなどだ。

[...] テストスイートの実行速度が遅くなり,なおかつアプリケーションに大きな問題が残っていないことを確認済であるなら,まずはテストの高速化を図り,次に並列化を検討するのがよいでしょう。Test Load Balancer (TLB) プロジェクトは,並列テスト実行の世界における大きな開発成果です。

Javascript が今日のソフトウェア開発で担う役割は増え続けていますが,プログラム構造をクリーンにするにはまだ多くの問題があります。Backbone.js は,JavaScript の大型アプリケーションに MVC (モデル/ビュー/コントローラ) フレームワークを提供するライブラリです。これによって,より管理とテストの行いやすい方法で JavaScript コードを記述することが可能になります。

報告書では,GIT などの一般的なツールにも注目している。また ALM ツールについては,現代的なアジャイルソフトウェア開発には不向きな “暗黙的ワークフロー” を備えたツールとして警告を発している。その他レーダーに取り上げられているツールとしては,Query Mobile (モバイル javascript ライブラリ),Selenium 2 (Web アプリケーションのテストツール),MongoDB,Riak,Neo4J,Cassandra などのテクノロジ,その他 NoSQL 関連のメリットを活用するツールなどがある。

プラットフォーム

プラットフォームに関しては,この調査では,モバイルデバイスにコンテンツを取得する最良の手段としてモバイル web を推奨し,特に HTML5 サポートの増加とそれに付随するオフライン機能を強調している。さらに Amazon Web Service (AWS) などのクラウドプラットフォームについても,その製品ポートフォリオの発展が継続している,と認めている。

Cloud Foundry は,自身のデータセンタへの展開および MWare によるホストが可能な,オープンソースの PaaS (Platform as a Service)です,現時点では Cloud Foundry は Java / Spring アプリケーション と RailsSinatraGrailsNode.js をサポートします。追加サービスとして MongoDBMySQLRedis などがあります。[...] Cloud Foundry は PaaS ソリューションの成長リストに新たに加わった,興味深い製品です。vFabric と Cloud Foundry の関連が今後どのようになるのかは,明らかになっていません。

Heroku は美しくシンプルな PaaS です。もともと Ruby on Rails プラットフォームとして始まりましたが,様々な言語と Web フレームワークをサポートするように進化しています。最も近いところでは Clojure が対象に加わりました。Heroku は標準的なスタックを使用して,アプリケーションをシンプルな Git プッシュでデプロイします。Heroku は先日 Salesforce.com に買収されましたが,サービス品質に低下は見られません。

言語

報告書では,活気のあるコミュニティを持った興味深い言語として,ClojureCoffeescript を取り上げている。

Clojure は JVM 上で動作する,動的な関数型言語です。ルーツである Lisp はもっとも古いコンピュータ言語のひとつですが,遅延評価や高度な並列処理抽象化など,近代的なプログラム概念を数多く取り入れています。

JavaScript は強力かつユビキタスなプログラム言語ですが,トリッキーでエラーを引き起こしやすい構文を持っています。Coffescript は JavaScript の多くの問題点を解消した,クリーンでシンプルな構文を持ち,可読性の高い JavaScript を生成します。例えば,JavaScript でプライベート変数を作成するのは構文的に悪夢ですが,CoffeeScript は技術的には正しい,ただし恐ろしいほど複雑な構文を生成します。

この 報告書 には一読の価値がある。

この記事に星をつける

おすすめ度
スタイル

BT