BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Gradle Build Scanとは

Gradle Build Scanとは

原文(投稿日:2016/12/23)へのリンク

今年始めに開催されたGradle Summitカンファレンスで,Gradleチームが,Gradle Cloud ServicesとGradleビルトツールのバージョン3.0紹介した。これらのサービスは,“Gradleビルトツールに新たな機能を追加し,あなたとあなたのチームがソフトウェアを開発する方法に新たな洞察を提供することによって,ビルド自動化の有効性と生産性を向上”する。その中で最初に提供されるのがBuild Scanのサポートだ。

GradleのBuild Scanユーザマニュアルによれば,

Build ScanはGradleビルドを開発,維持する上で重要なツールです。ビルドの実行内容に関する正確な洞察を提供することで,ビルドの環境や依存性,パフォーマンスなどに関する問題の特定を支援します。ビルド全般の理解と改善,あるいは開発者間のコラボレーションの促進の面でも有効です。

Build Scan PluginはGradleビルド実行中のデータをキャプチャし,そのデータをBuild Scan Serviceに転送する。サービスは,開発者間で共有可能な有効情報として,ビルドデータへのリンクを返す。提供される情報は2つのカテゴリに分類される。

  • オペレーティングシステムやJavaのバージョン,タイムゾーンなどの環境情報。
  • プラグインやタスク,テスト,依存関係などビルド固有の情報。

ソースコードおよびJARファイルなどのプロジェクト生成物は記録されない。

既存のGradleプロジェクトにBuild Scanを追加するためには,build.graldeファイルに次のようなコンフィギュレーションを追加する必要がある。

    plugins {
        id 'com.gradle.build-scan' version '1.3'
        id 'java'
        }
    
    buildScan {
        licenseAgreementUrl = 'https://gradle.com/terms-of-service'
        licenseAgree = 'yes'
        tag 'SAMPLE'
        link 'GitHub','https://github.com/gradle/gradle-build-scan-quickstart'
        }
    

Build Scanを開始するには,プロジェクトのビルドコマンドにコマンドラインスイッチ-Dscanを追加する。

$ gradle build -Dscan

簡単なアクティベーションプロセスの後,プロジェクトのビルド情報がオンラインで参照可能になり,パーマネントリンク経由で他の開発者と共有することができる。これにより開発者が協力して問題をより早く解決するとともに,ビルドパフォーマンスの評価も可能になる。

ユニットテストで失敗したりソースコードにエラーのあるプロジェクトの場合,Build Scanの結果は次のに示すようなものになる。

反対に,すべてのユニットテストをパスあるいは正常にビルド環境したプロジェクトでは,Build Scanは次のに示すような結果になる。

どちらの例でも,情報はインタラクティブに参照可能だ。Build Scanのさまざまなセクションではビルド時間が報告されるので,パフォーマンスも監視できる。

GitHubリポジトリに,完全なサンプルプロジェクトが提供されている。

HibernateJUnit 5Ratpackなど多数の有名なオープンソースプロジェクトが,それぞれのプロジェクト開発にGradleのBuild Scanを使用している。

GradleのマーケティングディレクタであるChris Beams氏がInfoQに,GradleやGradle Cloud Services,Build Scanについて説明してくれた。

InfoQ: Gradleでのあなたの現在の役割について教えてください。

Beams: 私はここGradle社でマーケティング活動を指揮しています。それまではGradleビルドツールチームのプリンシパルエンジニアでした。

InfoQ: GradleはGradleデーモンや新たなGradle Cloud Services,Build Scanといった機能によって,MavenAntPantsなど他のビルドツールから自身を差別化しているように思われます。他のツールも追随すると思いますか?

Beams: 多分そうはならないでしょう。特にGradleデーモンは長年の開発と洗練の成果ですから,他のビルドツールが“自分たちもやって見よう”といって実装できるような類いのものではありません – 少なくとも実用的なレベルでは。ただしBazelについては,Gradleデーモンと同様なクライアント/サーバモデルに基づいていますので,例外であるとも言えます。

 

Gradle Cloud Services – Build Scanも含まれます – は,これまでのビルドツールの範囲を越えた,もっと大規模な,ビルド自動化プラットフォームに分類されるべき機能です。このようなプラットフォームの構築は野心的なので,他のツールが追従するとは – 少なくともビルドの自動化に積極的な企業による強力なバックアップと,それに大きな賭けをしようという意思がない限り- まず考えられません。

InfoQ: 他のビルドツールに対して,Gradleのユニークな点は何だと思われますか?

Beams: Gradleを他のツールから際立たせている要素はたくさんありますが,機能セットがそのひとつであることは疑いありません。Gradleの最初の技術革新であるインクリメンタルビルドから始まって,コンポーネントビルトのような最新機能に至るまで,Gradleは他のビルドツールの競争から抜きんでた存在であると思っています。Gradleの機能に関する網羅的なリスト – およびそれぞれをMavenと比較したもの – が,https://gradle.org/maven_vs_gradleで公開されています。

 

もうひとつのファクタは,Gradleビルドツールの汎用性が向上していることです。GradleはJavaで記述されていて,Javaベースのプロジェクトのビルドをルーツに持っていますが,現在ではCやC++,Androidなど,さまざまな言語とエコシステムにわたるプロジェクトをサポートしています。このリストに加えて,LinkedInが先日,PyGradleプラグインによるPythonプロジェクトの構築サポートを提供してくれました。最初の真の汎用目的ビルドツールになることは,私たちにとって非常に重要です。あらゆる形式や規模 – まだ存在しないものも含みます – の言語コミュニティが先進的なビルド自動化の基盤としてGradleを使うことで,自らがその役割を担う必要がなくなり,結果としてより早い革新が実現することを意味するからです。

 

さらにGradleは,採用率の面でも他のツールを凌駕しています。プロジェクト開始以来,Gradleのダウンロード数は着実に増加していて,現在は月当たり平均約250万のGradleをダウンロード配信しています。GitHubにはGradleビルドのプロジェクトが何千もありますし – 先日GitHub Archiveが公開されたおかげで – 新しいJVMベースのプロジェクトの中で最も人気のある選択肢であることも分かりました。プラグインエコシステムも活発で,Gradle Plugin Portalには現在1,000を越えるプラグインがあります。統合や実行の必要なプラグインは事実上すべて用意されている,ということになります。

 

私たちが誇りに思うのは,単にダウンロードやプロジェクト,あるいはユーザの数だけではありません。世界で最も賞賛されているハイテク企業がGradleの採用を,時には非常に公然と選択しているという事実もそうなのです。Netflixによる素晴らしいGradleプラグインのNebulaコレクション,LinkedInが度々行なっているGradleに関するカンファレンス講演,GoogleがAndroidのビルドツールとしてGradleを選択したこと,などを考えてみてください。これらの企業がGradleを選択した理由には,もうひとつの際立った特性である,最高レベルの柔軟性があります。Gradleはこれら企業の持つ極めて困難な自動化要件を,すべてやり抜くことが可能です。これは構築中のソフトウェア製品あるいはサービスのどの部分よりも,ビルドではコードが重要であるという考え方を,Gradleが包含していることによります。事実としてGradleは他の何よりも,ソフトウェア開発を自動化するライブラリとフレームワークなのです。

 

そして最後に,Gradleがビルド自動化を専門とする資金の潤沢な企業によってバックアップされていることを,何よりも忘れてはなりません。これはつまり,Gradileを最高のものにする作業に毎日集中できるエンジニアを30人以上雇用できるという意味です。他のツールの大部分にはそのようなアドバンテージがないため,将来的に実現できる内容にはおのずと限りがあります。

InfoQ: HibernateJUnit 5といったプロジェクトでGradle Build Scanが使用されていますが,その他の有名なオープンソースプロジェクトにも開発にBuild Scanを使ってほしいと思いますか?

Beams: そうですね!オープンソースのメンテナやユーザなど,コミュニティ全体がBuild Scanにどのような反応を見せるのか,とても興味があります。Build Scanが最も素晴らしいのは,誰でも好きな時に作成して,誰とでも共有できる点です。公開されたBuild Scanは,Stack OverflowやGitHubのイシュー説明,あるいは同僚との会話において,Grandleを使って行なおうとしていることを説明しなくてはならないような,すべての状況において有用です。すべての人たちにBuild Scanを試してもらいたいと思っています。最初はまず,Build Scanのユーザマニュアルから始めるとよいでしょう。

 

Gradle Cloud ServicesのオンプレミスバージョンであるGradle Enterpriseへの関心の高さにも注目しています。これはパブリックなBuild Scan Servicesで使用可能なすべての機能に加えて,特に大規模チームにおいて大きな違いを生み出すような,追加的な管理機能です。詳しくはhttps://gradle.com/enterpriseを参照してください。

InfoQ: Gradleの今後について教えてください。

Beams: Gradle Cloud Servicesの実現やコンポジットビルドのサポートの導入,あらゆる規模を対象としたビルドパフォーマンスの大幅な向上など,2016年は私たちにとって実りの多い年でした。

 

2017年にはさらに期待しています。注目すべき取り組みのひとつは,新旧のユーザがGradleを使って,ビルド自動化の問題を解決する最良の方法を見つけることを支援する,スタンドアロンかつタスク指向のガイドに関するポートフォリオの作成です。

 

ビルドパフォーマンスの最大化に向けた活動は,今後も多方面で続けていきます。年明けには,Gradleタスクアウトプットキャッシュの最初のリリースを発表する予定です。ビルドの中間生成物をストアすることによって,それを必要とする – 任意のマシン上の – 他のビルドからの再利用を可能にする,クロスビルドかつクロスマシンのキャッシュをサポートします。この高度なキャッシュサービスに関しては,私たちが契約を交わしている何社かの世界最大級のテクノロジ企業において,すでに大きな成果を確認しています。それを一般公開できる時が本当に待ち切れません!

 

Gradleが管理する依存関係を対象とした,ライブラリAPIとその実装との自動的な分離に関するサポートもリリースする予定です。これらを分離することで,ライブラリ提供側のAPI(正確にはABI)が変更されていない場合に,ライブラリ利用側の不必要なコンパイルを回避できるため,ビルドパフォーマンスのさらなる向上が可能になります。

 

2017年の初めには,Gradle Script Kotlinのバージョン1.0のリリースも控えています。Gradleのビルドスクリプトを記述するための,タイプセーフかつ究極的にIDEフレンドリなアプローチです。

 

その他にもありますが,今回はここまでにしたいと思います。説明の機会を頂いて,ありがとうございました!

Chris Beams氏はGradle Inc.のマーケティングディレクタで,オープンソースのツールにも開発者として参加している。Gralde開発に参加する前は,Spring Framework開発チームのメンバであった。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT