ディベロッパー・ +7*/$5*0/ パワー! - oracle · apache maven:...

6
ORACLE.COM/JAVAMAGAZINE ////////// JULY/AUGUST 2012 29 blog 01 02 03 04 05 06 CHOOSE YOUR TOOL JAVA TECH COMMUNITY JAVA IN ACTION ABOUT US 写真: BOB ADLER 日のアジャイル・ソフトウェア開発は、コー ド修正や機能拡張の継続的インテグレー ション(CI)を含む反復型開発プロセスに 基づいています。このようなCIは、地理的に分散し たチームがオープンソースのモジュールやフレー ムワークを利用している場合の複雑なチーム管理 に欠かせません。オープンソースのモジュールやフ レームワークは、時には統制されずドキュメントも ない状態でインターネットから入手されます。 幸いなことに、開発チームがソフトウェア・プロ ジェクトおよびプロジェクトのモジュールの追跡、ビ ルド、統合、管理を効率化できるツールが豊富に提 供されています。本記事では、現時点で入手可能な ツールの多くについて解説します。ただし、本記事 で紹介するツール以外にもさまざまなツールが存 在します。ご愛用のツールが紹介されていない場合 は、Java Magazineまでぜひお知らせください。 これ以降のページで説明するテクノロジーの一 部の配信チャネルは、Java.netにあります。 Steve Meloan 協力: Janice J. Heiss 多様なWebベースの開発ツールを活用し、Java 開発力を強化する 01 ビルド自動化ツール 02 継 続 的インテグレーション・ツー ル 03 オープン・ソース・モジュー ル 04 ソフトウェア構成管理 05 リポジトリ管 理 06 ランタイム解析 ディベロッパー・ パワー!

Upload: others

Post on 02-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ディベロッパー・ +7*/$5*0/ パワー! - Oracle · Apache Maven: Mavenは、Javaで記述 され、Apache Software Foundationから 配布されています。Javaのほか、C#、Ruby、

ORACLE.COM/JAVAMAGAZINE ////////// JULY/AUGUST 2012

29

blog

01 02 03 04 05 06

CHOOSE YOUR TOOL

JAVA TECH

COMMUNITY

JAVA IN

ACTION

ABOUT US

写真: BOB ADLER

今日のアジャイル・ソフトウェア開発は、コード修正や機能拡張の継続的インテグレーション(CI)を含む反復型開発プロセスに

基づいています。このようなCIは、地理的に分散したチームがオープンソースのモジュールやフレームワークを利用している場合の複雑なチーム管理に欠かせません。オープンソースのモジュールやフ

レームワークは、時には統制されずドキュメントもない状態でインターネットから入手されます。幸いなことに、開発チームがソフトウェア・プロ

ジェクトおよびプロジェクトのモジュールの追跡、ビルド、統合、管理を効率化できるツールが豊富に提供されています。本記事では、現時点で入手可能なツールの多くについて解説します。ただし、本記事

で紹介するツール以外にもさまざまなツールが存在します。ご愛用のツールが紹介されていない場合は、Java Magazineまでぜひお知らせください。これ以降のページで説明するテクノロジーの一

部の配信チャネルは、Java.netにあります。

Steve Meloan 協力: Janice J. Heiss

多様なWebベースの開発ツールを活用し、Java開発力を強化する

01 ビルド自動化ツール

02 継続的インテグレーション・ツール

03 オープン・ソース・モジュール

04 ソフトウェア構成管理

05 リポジトリ管理

06 ランタイム解析

ディベロッパー・ パワー!

Page 2: ディベロッパー・ +7*/$5*0/ パワー! - Oracle · Apache Maven: Mavenは、Javaで記述 され、Apache Software Foundationから 配布されています。Javaのほか、C#、Ruby、

ORACLE.COM/JAVAMAGAZINE ////////// JULY/AUGUST 2012

30

blog

01 02 03 04 05 06

CHOOSE YOUR TOOL

JAVA TECH

COMMUNITY

JAVA IN

ACTION

ABOUT US

理想的なビルド自動化ツールでは、単一のコマンドで、プロジェクトに必要なすべてのモジュール、アーティファクト、ライブラリ、コードを収集し、プロジェクトをビルドすることができます。Apache Maven: Mavenは、Javaで記述され、Apache Software Foundationから配布されています。Javaのほか、C#、Ruby、Scalaなどの言語で記述されたプロジェクトのビルドに使用できます。XMLファイルに基づいて動作しますが、Antとは大幅に異なる考え方に基づいています。Antでは一連のビルド・タスクが単純に連結されますが、Mavenでは、依存関係、外部のモジュールやコンポーネント、ビルド順序、ディレクトリ、および必要なプラグインの観点からプロジェクトが定義されます。Mavenのプロジェクトは、Project Object Model(POM)ファイル(pom.xml)で定義されます。JavaライブラリとMavenプラグインは、Mavenセントラル・リポジトリまたはその他の定義されたソフトウェア・リポジトリから動的にダウンロードされます。 大規模なMavenプロジェクトは通常、複数

のサブプロジェクトに分割されます。各サブプロジェクトにそれぞれPOMファイルがありますが、ルートPOMを使用して、マスター・プロジェクトを単一のコマンドでコンパイルできます。Mavenはプラグイン・アーキテクチャによって、.NET FrameworkやC/C++といった他の言語のビルド・ツールと連携できます。代表的なIDEでは、Ec l i pse、In te l l i J、JBuilder、JDeveloper、NetBeansなどがMavenによる開発をサポートしています。Gradle: Gradleは、JavaおよびGroovyで記述されており、AntおよびMavenと同じ考え方に基づいていますが、XMLではなくGroovyベースのドメイン特化言語(DSL)を使用します。

01 ビルド自動化ツール「Apache Ant (Another Neat Tool)は、ビルド・プロセスの自動化において、非常に便利なツールです。XMLを

使用しているためビルド・スクリプトを容易に作成できる点と、JUnitタスクを利用してJUnitテストをプロセスに容易に組み込める点を、特に高く評価しています」フリーランス開発者/教育者、Jeff Friesen氏

「多くの開発者が複数のプロジェクトに取り組む大規模な組織には、Mavenが最適だと考えています。Mavenには、ソフト

ウェア・プロジェクトのライフサイクルに関する高度な考察が何年にもわたって取り込まれています。また、標準への準拠が徹底されているため、混沌とした状況に陥りやすい環境で大きな効果を上げます。開発者は参加しているプロジェクトに関係なく、Mavenのmvn cleanインストール・コマンドでアプリケーションのローカル・コピーをビルド、テスト、パッケージ化、インストールし、すぐにコーディングを始めることができます。 適切なビルド・プロセスとCIプロセスがあれ

ば、コーディング時間を短縮すると同時に、より高い水準の品質を維持できます。ビルドとCIをTDD [テスト駆動型開発]と組み合わせることで、不安要素のない迅速なリファクタリングが可能になります。まるで指導者に見守られているかのような、安全で制御された環境において、影響範囲の大きな変更でもすばやくコーディングして実現することができます」『The Well-Grounded Java Developer』共著者、 Martijn Verburg氏

エキスパートの視点

「Javaプロジェクトが依存するJARファイルの適切なバージョンの特定とダウンロードは、JARファイルをさまざまなオンライ

ン・ソースから入手する場合もあることから、非効率的でミスが起こりやすい作業です。Mavenはこの作業を開発者の代わりに実行し、プロジェクトを効果的に構成して、セットアップ上の問題や構成上の問題を大幅に削減します。Mavenには、単体テスト、バージョン管理、標準化されたリリース・プロセスなどの優れた標準的ソフトウェア実践手法を促進するプラグインがあります。 Mavenのプロセスのように統制のとれたプ

ロセスを利用することで、チームでの開発における効率性とスケーラビリティが大幅に向上します。また、ドキュメントや使用事例報告が存在することも、あらゆる機能を備えたプロジェクト管理および把握ツールとしてのMavenの価値を高めています」オラクル認定DBA/Sun認定Javaプログラマ、Cas Saternos氏

「ツールには、大きく分けて、開発プロセスはこうあるべきだという視点を持ったツールと、そのような視点を持たないツー

ルの2種類があると思います。私は、この視点を持つものを『ツール』、持たないものを『メタツール』と呼んでいます。Mavenは、開発者がMavenのライフサイクルや処理方法に合わせることが求められるため、ビルド・ツールです。一方、AntにはMavenのような視点はなく、開発者は各自のプロジェクトのライフサイクルに基づいて目標や手順を組み立てる必要があります。Mavenのようなツールの使用に伴う構造化を好むチームもあれば、Mavenのライフサイクルに合わせる必要があることを嫌がるチームもあるでしょう」『The Well-Grounded Java Developer』共著者、Ben Evans氏

Ant/Ivyの基本 Apache Ant: Apache Antは、数十年の歴

史があるUNIXのmakeに類似している点もありますが、Javaで記述された、Javaプロジェクトのビルドにもっとも適したツールです。Antでは、XMLファイル(build.xml)を使用して、ビルド・プロセスとその依存関係を定義します。このビルド・ファイル内で、ビルド・タスクを他のネイティブ・プログラムやJavaベースの外部プログラムに委譲することも可能です。Antのおもな目標の1つは、makeの移

植性に関する問題を解消することでした。makeでは、プラットフォームごとに異なるスクリプト・コマンドを使用する必要があります。Antには、すべてのプラットフォームで同様に動作するように設計されたビルトイン機能があります。ただし、エラー処理機能が限定されており、また状態の永続化は不可能であるため、おもに従来のビルドおよびテストのプロセスでのみ有用です。 Antは、Eclipse、IntelliJ、JBuilder、

JDeveloper、NetBeans、WebSphereなど、ほとんどの代表的なIDEでサポートされています。Apache Ivy: Javaで記述されたApache Ivyは、Apache Antプロジェクトのサブプロジェクトであり、推移的に依存関係を管理します。XMLファイルを使用して、プロジェクトの依存関係や、そのプロジェクトのビルドに必要なリソースを定義します。Ivyは、必要なリソースを特定し、指定されたリポジトリからダウンロードします。Mavenが依存関係管理を組み込んだ完全なビルド・ツールであるのに対して、Ivyは依存関係管理機能に特化しており、Antと連携して動作します。

Page 3: ディベロッパー・ +7*/$5*0/ パワー! - Oracle · Apache Maven: Mavenは、Javaで記述 され、Apache Software Foundationから 配布されています。Javaのほか、C#、Ruby、

ORACLE.COM/JAVAMAGAZINE ////////// JULY/AUGUST 2012

31

blog

01 02 03 04 05 06

CHOOSE YOUR TOOL

JAVA TECH

COMMUNITY

JAVA IN

ACTION

ABOUT US

エキスパートの視点

Gradleでは、有向非巡回グラフ(DAG)によってビルド・タスクの実行順序を判定します。GradleのDSLは拡張可能であり、新しい言語要素の追加や既存の言語要素の拡張を行うことができます。Gradleは大規模なマルチプロジェクト・ビルドの管理を目的として作成されたもので、ビルド・ツリー内の現在の位置をインテリジェントに判

定するため、すでに最新の状態にある従属ブランチを再ビルドすることがありません。

Gladle既存のMavenやIvyのレポジトリをサポートし、推移的に依存関係を管理できます。また、Maven POMファイルをGradleスクリプトに変換するコンバータも提供されています。

02 継続的インテグレーション・ツール

CIが適切に導入されている場合は、新しいソフトウェアのコミットのたびに、全体のビルドと実行を行い、規定のすべての単体テストに合格する必要があります。このようなコミット時のビルドと実行、およびテストの実施は、CIツールの登場によって、ますます高度化と自動化が進んでいます。CIツールには、CruiseControl、Hudson、Jenkins、Bamboo、Bui ldMaster、Anthi l lPro、Teamcityなどがあります。これらのCIツールに共通する大きな目標は、

バージョン管理、ビルド、テスト、結果のレポートといったプロセスを、設定可能な(そしてプラグインによって拡張可能な)インテリジェンスにまとめることです。本記事では、最近Duke’s Choice Awardを受賞したHudsonやJenkinsなど、代表的なCIツールをいくつか紹介します。H u d s o n: 2 008年にDe v e l o p e r Solutions部門でDuke’s Choice Awardを受賞したHudsonは、CruiseControlの代替ツールとして人気です。Hudsonは、変更内容をプロジェクトに取り込むための、使いやすいGUIベースの設定可能なシステムを実現します。このシステムでは、プロジェクトの新しい明示的なビルドの取得、今後のビルド

のスケジュール設定、リモート・マシン上で稼働するジョブを含めた外部実行ジョブ(cronジョブなど)の結果の監視が可能です。電子メールまたはRSSを使用して結果を監視でき、サード・パーティ製のプラグインで拡張機能を追加することもできます。Huds o nはJa v aで記述されており、

Apache TomcatやGlassFishなどのサーブレット・コンテナ内で稼働します。AntベースのプロジェクトやMavenベースのプロジェクトに加え、単純なシェル・スクリプトやMicrosoft Windowsのバッチ・コマンドも実行できます。また、ビルドおよびテストの負荷を複数のコンピュータに分散させることが可能で、どのビルドでどのJARが生成されたかを追跡することもできます。プラグインにより大半のバージョン管理システムおよびバグ・データベースと統合できるほか、新しい機能の追加やHudson自体の外観の変更も可能です。さらに、ビルドおよびテストのレポートをさまざまな形式で生成できます(JUnitは標準でサポートされています)。オラクルはHudsonの開発をコミュニ

ティ全体とともに継続していますが、一方で2011年1月に、HudsonプロジェクトはJenkinsという名称でフォークされました。

「私が選ぶメタツールはNetBeans(Java EE Edition)です。Maven 3、JUnit、Ant、Hudson/

Jenkins、そしてJava EEにおける無数のヒントやウィザード、拡張機能と統合できるためです。プラグインに煩わされることなく、生産性の極めて高い環境をワンクリックで実現できます」Java Champion、Adam Bien氏

「Jenkinsは継続的インテグレーションのためのすばらしいツールです。エラーを減少させ、品質や生産性を高めながら、

チームのすべての作業を1つにまとめ、同時にテストの状況や実行件数を監視できます。もちろん、JUnitも使用できます。利用可能なプラグインは多すぎるほどです。たとえばSonarを利用すれば、チームのコード品質やテスト・カバレッジ、コードの重複などを検証できます」 Java Bahia、JUGリーダー、Otávio Gonçalves de Santana氏

「Gradleは、AntとMavenの優れた機能を組み合わせた、Groovyに基づくツールであり、デリバリ・パイプラインを扱う

新しい強力な手法を実現します」Java Champion、Michael Hüttermann氏

「私は、ほとんどJavaが誕生したころ(1995年夏)からJava開発に従事し、多数のオープンソース・プロジェクトを立ち上げ、

あるいは現在も管理しています。今は専任の研究者として、そして新米の父親としても、信頼性の高い方法でこれらのプロジェクトを管理し、リリースを実現できるシステムを必要としています。私にとって、そのようなシステムはHudsonです。数年間使用してきましたが、仕事をきちんとこなしてくれるため、とても気に入っています」 Java Champion、Josh Marinacci氏

「HudsonとJenkinsは、CIツールであることから、第一に『テストを実行する』ものだと思われるでしょう。それは確

かに正しいのですが、テスト以外にも数々の機能があります。テストのカバレッジ解析や静的解析などのプラグインを適切に組み合わせることで、開発チームのだれもが、プロジェクトの状態に関する非常に有用な情報を得ることができます。開発者は記述しているコードの品質を自分で検証でき、プロジェクト・リーダーは進捗と技術的な問題の両方を監視しながらプロジェクト全体を管理できます。Hudson/Jenkinsは、Mavenプロファイルを利用できるため、Mavenベースのプロジェクトでもっとも大きな効果を発揮します。Hudson/JenkinsとMavenを組み合わせれば、複数のバージョンのJDKや複数のデータベースといった複数の構成でのビルドが容易になります。さらにMavenでは、ライブラリのバージョンでリグレッションが発生しビルドができなくなる場合に警告が発生します」Tidalwave、上級Javaアーキテクト、Fabrizio Giudici氏

Page 4: ディベロッパー・ +7*/$5*0/ パワー! - Oracle · Apache Maven: Mavenは、Javaで記述 され、Apache Software Foundationから 配布されています。Javaのほか、C#、Ruby、

ORACLE.COM/JAVAMAGAZINE ////////// JULY/AUGUST 2012

32

blog

01 02 03 04 05 06

CHOOSE YOUR TOOL

JAVA TECH

COMMUNITY

JAVA IN

ACTION

ABOUT US

Jenkins: 2011年1月に作成されたJenkinsプロジェクトは、もともとは前述のCIツールのHudsonとして開始されたものです。HudsonとJenkinsの双方が、互いを開発組織の異なるフォークとみなしています。2008年にDeveloper Solutions部門で

Duke’s Choice Awardを(Hudsonとして)受賞したJenkinsは、変更内容をプロジェクトに取り込むための、使いやすいGUIベースの設定可能なシステムを実現します。このシステムでは、プロジェクトの新しい明示的なビルドの取得、今後のビルドのスケジュール設定、リモート・マシン上で稼働するジョブを含めた外部実行ジョブ(cronジョブなど)の結果の監視が可能です。電子メールまたはRSSを使用して結果を監視でき、サード・パーティ製のプラグインで拡張機能を追加することもできます。 Jen k i n sはJa v aで記述されており、

TomcatやGlassFishなどのサーブレット・コンテナ内で稼働します。AntベースのプロジェクトやMavenベースのプロジェクトに加え、単純なシェル・スクリプトやWindowsのバッチ・コマンドも実行できます。また、ビルドおよびテストの負荷を複数のコンピュータに分散させることが可能で、どのビルドでどのJARが生成されたかを追跡することもできます。プラグインにより、大半のバージョン管理システムおよびバグ・データベースと統合できるほか、新しい機能の追加やJenkins自体の外観の変更も可能です。さらに、ビルドおよびテストのレポートをさまざまな形式で生成できます

(JUnitは標準でサポートされています)。CruiseControl: CruiseControlはJavaで記述されており、カスタムCIプロセスのための拡張可能なフレームワークを実現します。CruiseControlには、現在および過去のビルドを監視できるWebインタフェース、さまざまなソース管理、ビルド・テクノロジー、通知スキームのためのプラグイン、AntやMavenといった代表的なビルド自動化ツールおよ

び標準的な実行可能ファイル・ビルダーとの連携などの機能があるほか、.NET向けおよびRuby向けのCruiseControlの移植版

(.NET版はCruiseControl.NET、Ruby版はCruiseControl.rb)も用意されています。 ToolsCloud: ToolsCloudは、ほとんどそれ自体を1つのカテゴリとみなすことのできる、クラウド・ベースのハイブリッドIDEです。プロジェクト管理、(ビルド自動化と自動テストを含む)CI機能、メトリクスと分析、広範な開発ツールなどが提供されています。月々のサブスクリプション・プランで利用でき、Amazon Elastic Compute Cloud(EC2)でホストされています。ToolsCloudには、Git(ソフトウェア構成管理)、Redmine(プロジェクト管理/バグ追跡ツール)、Nexus(アーティファクト管理)、Hudson/Jenkins(CI)などが含まれます。また、管理カレンダーや、追跡、レポート、統計のための各種ツール、メトリクス履歴や分析ツールも利用できます。任意のIDEと容易に統合できます。

03 オープン・ソース・モジュール

最近のソフトウェア開発では、地理的に分散したチームが、それぞれにインターネットから入手した多種多様なオープンソースのモジュールやフレームワークを利用するため、プロジェクトのセキュリティ、一貫性、信頼性が少なからぬリスクにさらされています。Sonatypeが実施した調査によると、一般的なソフトウェア・アプリケーションの80%以上がオープンソースのコンポーネントおよびフレームワークで構成されています。一方で、脆弱性があり、安全性に欠け、ドキュメントのないオープンソース製品が驚くほど利用されていることが、多くの調査でわかっています。Sonatypeによれば、開発スタック内のオープンソース・コンポーネントについて詳細な「部品表」レコードを管理しているチームは、32%しかありません。また、同調査によると、オープンソース・ソフトウェアに関するポリシーが社内にあると回答した開発者はわずか50%です。コード/アーティファクト・リポジトリ: 多くの企業が、拡大と複雑化を続けるオープンソース・エコシステムに対応するために、コード・リポジトリおよびキャッシュ・リポジトリ管理システムを採用し、プロジェクトのビルドと管理に必要なアーティファクトのためのセキュアな集中管理型コード・リポジトリを構築するようになっています。コード・リポジトリによって、特定のプロジェク

トやアプリケーションに必要なバイナリ・ソフトウェア・アーティファクトおよびメタデータの保管、取得、管理を行うプラットフォームが確立されます。MavenやAnt/Ivyなどのビルド・ツールで効果的に検索し処理できるように、情報がアーカイブされて整理されます。 一般的なMavenリポジトリの場合、バイ

ナリ・アーティファクトはJARファイルですが、

FlashライブラリやRubyライブラリも同様に管理できます。MavenのPOMファイルにプロジェクトの依存関係が記述されており、その依存関係にリポジトリに基づくエントリが含まれている場合は、当該エントリのPOMがダウンロードされてから、依存関係で必要とされるライブラリやモジュールがダウンロードされます。このようにプロジェクトの依存関係と推移的依存関係を特定するためには、リポジトリの標準と構造が必要です。Sonatype/セントラル・リポジトリ: Mavenのデフォルト設定では、ソフトウェア・アーティファクトはセントラル・リポジトリから取得されます。セントラル・リポジトリは、Sonatypeが管理する公開リポジトリです。年間40億件のリクエストを受信し、30万件のコンポーネントを含み、世界中の6万に上る開発組織からアクセスされているといわれています。また、平均的な大企業は、毎月1,000を超えるコンポーネントをセントラル・リポジトリからダウンロードしているといわれています。

セントラル・リポジトリなどのリポジトリおよびMavenなどのツールでは、通常、グループ、アーティファクト、バージョン(GAV)からなるアドレス体系(http://repo1.maven.org/groupID/artifactID/version/)を、アーティファクトの保管と検索の手段として使用します。たとえば、A p a c h e S o f t w a r e

FoundationのMavenプロジェクトによって生成されたコンポーネントは、groupIDをorg.apache.mavenとして保管または検索されます。artifactIDは、コンポーネントの識別子です。groupIDとartifactIDの組み合わせによってプロジェクトが一意に識別され、バージョン識別子によってプロジェクトのバージョ

エキスパートの視点

「Jenkinsを使用することは、開発チームにメンバーを1人加えるようなものです。ソフトウェアを何度もビルドおよびテストし、ミスを防いでく

れます。それにより、これらの作業に費やしていた時間が節約されるため、チームは優れたソフトウェアを開発することのみに集中できます」LogicStyle、創業者兼CTO、Juliano Viana氏

Page 5: ディベロッパー・ +7*/$5*0/ パワー! - Oracle · Apache Maven: Mavenは、Javaで記述 され、Apache Software Foundationから 配布されています。Javaのほか、C#、Ruby、

ORACLE.COM/JAVAMAGAZINE ////////// JULY/AUGUST 2012

33

blog

01 02 03 04 05 06

CHOOSE YOUR TOOL

JAVA TECH

COMMUNITY

JAVA IN

ACTION

ABOUT US

ンが特定されます。また、パッケージ識別子によってバイナリ・ソフトウェアの形式が特定されます。セントラル・リポジトリ上でアーティファクト

にリリース番号が割り当てられた後は、ファイルの内容を変更できません。セントラル・リポジトリには暗号学的ハッシュとPGP署名も含まれており、これらを使用してアーティファクトの信頼性と整合性を検証できます。Mavenは、世界中に数多く存在しているセ

ントラル・リポジトリのミラー・サイト(または任意の外部リポジトリ)からソフトウェア・アーティファクトを直接取得するように設定できますが、一方で、より高速かつセキュアで管理しやすい方法を採用するケースが増加しています。この方法とは、セントラル・リポジトリやその他の

(オラクル、Red Hat、Codehausなどが提供する)アーティファクト・リポジトリに対するローカルで制御できるプロキシとして、リポジトリ・マネージャを導入するという手法です。

04 ソフトウェア構成管理

05 リポジトリ管理

ソフトウェア構成管理(SCM)では、ソフトウェアに対する変更内容を厳密に管理し追跡する必要があります。下位機能として、リビジョン管理(バージョン処理)が含まれます。前述のHudsonやJenkinsなどの開発ツールでは、Clearcase、CVS、Git、SubversionなどのさまざまなSCMツールがサポートされています。 Git: Gitは、規模の大小にかかわらずあらゆ

る開発プロジェクトの処理に適した、分散リビジョン管理およびSCMシステムを実現します。GitHubは、公開と非公開の両方のGitリポジトリを管理するためのWebベースの共有サービスです。GitHubはRuby on Railsで記述されており、もっとも普及しているGitのホスティング・サイトとして、共同開発に特化したソーシャル・ネットワーキング機能や利用状況データを提供しています。

リポジトリ管理システムは、ローカルにキャッシュされるプロキシとして、開発チームと外部リポジトリとの間に配置されます。ダウンロード時間を短縮できるほか、外部のアーティファクトと内部で作成されたモジュールの両方に対するアクセスを確実に管理し設定できます。また、タグ付けされたメタデータの検索も可能です。Sonatype Nexus: Nexusは、外部リポジトリに接続するための管理された一元的なアクセス・ポイントであり、アクセス許可の設定やユーザー定義メタデータのカスタマイズ/検索が可能です。図1に、一般的な開発プロセスにおけるリポジトリ・マネージャの位置付けを示します。Nexusは、組織内のリポジトリと公開リポ

ジトリの間で、設定可能なプロキシとして動作し、オープンソースのソフトウェア・コンポーネントとその従属コンポーネントに対する管理された一元的なアクセスを実現します。Nexusでは、コンポーネントのキャッシュによりダウ

ンロードが高速化されるほか、すべてのユーザーが同じモジュールにアクセスすることが保証されます。また、社内で開発するコンポーネントをセキュアかつ統制可能な方法でデプロイでき、パートナー別のアクセス権限を設定することもできます。同時に、ユーザー定義のメタデータにより、高機能でカスタマイズ可能な検索機能も実現します。J F r o g A r t i f a c t o r y: 2011年にInnovative Tool for Developers部門でDuke’s Choice Awardを受賞したJFrog Artifactoryは、バイナリ・ファイルのリポジトリを管理するJavaベースのツールです。無償のオープンソース版、有償のPro版、クラウド・ベースのSoftware as a Service(SaaS)版(Artifactory Online)があります。図2に、ArtifactoryがMavenクライアントと外部との間でプロキシとして動作する様子を示します。JFrog Artifactoryは、Maven、Ant、Ivy、

Gradleなどの複数のビルド・ツール間でプロ

エキスパートの視点

「Nexusは非常に堅牢なバイナリの保管庫であり、Mavenベースのビルド・プロセスに合わせて作られています」

Wakaleo Consulting、CEO、John Ferguson Smart氏

「ArtifactoryはDevOpsに最適なツールです。Jenkinsと統合されることで複数のビルドにわたる完全なトレーサビリティを実現し、チケットに

対する関連付けを行って、ビルドを容易にします。Jenkinsは、設定が容易で、オープンであり、拡張性が高いため、継続的デリバリとDevOpsのためのインフラストラクチャの中心的なサービス・ハブでありスマートなバックボーンとなります」Java Champion、Michael Hüttermann氏

図1

Nexus OS

Central Repository

Build/CISystems

Developer Teams

Page 6: ディベロッパー・ +7*/$5*0/ パワー! - Oracle · Apache Maven: Mavenは、Javaで記述 され、Apache Software Foundationから 配布されています。Javaのほか、C#、Ruby、

ORACLE.COM/JAVAMAGAZINE ////////// JULY/AUGUST 2012

34

blog

01 02 03 04 05 06

CHOOSE YOUR TOOL

JAVA TECH

COMMUNITY

JAVA IN

ACTION

ABOUT US

各種ランタイム解析ツールは、ソフトウェアの共同開発および管理を明示的な目的としてはいませんが、アプリケーションを実際に実行する際に不可欠なデバッグおよびチューニングの手段が提供されるため、開発ライフサイクルにおいて利用されることの多いツール・クラスです。VisualVM: VisualVMでは、直感的なグラフィカル・インタフェースを使用して、実行中のJavaアプリケーションの監視およびトラブルシューティングを行うことができます。VisualVM自体の実行にはJDK 6が必要ですが、JDK 1.4.2以上で稼働するアプリケーションはすべて監視できます。VisualVMは、jvmstat、Java Management Extensions

(JMX)、Serviceabi l i ty Agent(SA)、Attach APIなどのテクノロジーを利用して、ローカルおよびリモートのアプリケーションについてのCPU利用率、ガベージ・コレクション(GC)アクティビティ、ヒープ・メモリやPermanent Genarationメモリ、ロードされたクラス、実行中のスレッドなどに関するデータを視覚的に示します。また、コア・ダンプのオフライン解析や、取得済みのスレッド・ダンプ、ヒープ・ダンプ、プロファイラ・スナップショットの解析も実行できます。さらに、VisualVMはNetBeansプラットフォーム上に構築されているため、VisualVMプラグイン・センターから入手できるプラグインを使用して容易に拡張できます。最後に、VisualVMはEclipseやNetBeansなどのIDEと統合できます。JRebel: ZeroTurnaroundのJevgeni Kabanov氏とToomas Römer氏が開発したJRebelは、Java仮想マシン(JVM)用のプラグインであり、Javaクラス・ファイルの変更時に、その変更内容を即座に取り込むこと

ができます。2011年にJAX Innovation Awa rdのMost I nnova t i v e Java Technologyを受賞し、JavaOne 2011ではInnovative Compiler for Java Code部門でDuke’s Choice Awardを受賞しています。JRebelは、Javaベースであり、Javaをサポートする任意のオペレーティング・システムで使用できます。IDEに依存せず、さまざまなJava EE標準やJavaアプリケーション・サーバーと統合できるように設計されています。オープンソース・ソフトウェアのプロジェクトおよびScalaを使用する開発においては、無償で利用できます。JRebelを使用することで、コード変更を再デプロイなしで即座に反映でき、クラス構造、フレームワーク、Java EEに対する変更が処理されます。また、主要なすべてのJavaアプリケーション・サーバー、IDE、フレームワークがサポートされています。開発時には、メモリ・リークが解消され、ビルド時間が短縮します。さらに、Apache AntおよびApache Mavenがサポートされています。 </article>

06 ランタイム解析 エキスパートの視点

Steve Meloan: 元C/UNIXソフトウェア開発者。Wired、Rolling Stone、Playboy、SF Weekly、San Francisco Examinerなどの各誌にWebやインターネットに関する記事を執筆している。近著はサイエンス・アドベンチャー小説の『The Shroud』。また、The Huffington Postに定期的に寄稿している。 Janice J. Heiss: オラクルのJava編集者兼Java Magazineのテクノロジー編集者。

キシとして動作し、リモートのアーティファクトをローカルにキャッシュしてすばやくアクセスできるようにします。また、リポジトリに対するアクセス権限の設定と管理や、ユーザー定義メタデータのカスタマイズと検索も可能です。Artifactoryは、Java Content Repository

(JCR)上に構築されており、標準的なJava EE Webアプリケーションとしてパッケージ化されているため、任意の標準サーブレット・コンテナ(Tomcat、WebSphere、JBoss、GlassFishなど)にデプロイできます。2012年4月にフランスのパリで開催され

たJenkinsユーザー・カンファレンスにおいて、Jenkins CI Artifactory Onlineリポジトリ・サービスが発表されました。Jenkins CI Artifactory Onlineは、JenkinsとJFrogが共同で提供するクラウド・ベースのアーティファクト・リポジトリ・ソリューションであり、Jenkinsコミュニティ向けに開発されています。

「VisualVMは、すべてのJava開発者が利用すべきツールです。最近のJava SDKには必ず付属しており、

実行中のアプリケーションの内部を視覚化できるため、どんなに困難なパフォーマンス上の問題でも診断できます。さらに、BTraceと統合されているため、実行中の本番システムに対する複雑な調査も、エンドユーザーの操作に影響を及ぼすことなく実施できます」LogicStyle、創業者兼CTO、Juliano Viana氏

「VisualVMは多くのJava開発者に過小評価されていると思います。メモリの使用状況やスレッドを監視で

きるだけでなく、メモリの解析に非常に役立ちます。私はこれまで、VisualVMを利用して、数々の顧客のプロジェクトにおけるメモリ・リークの原因を容易に特定してきました」Tidalwave、上級Javaアーキテクト、Fabrizio Giudici氏

Artifactory

Maven Clients

Remote Repositories

図2