Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
システム開発を前進させる
ためのGradle導入法
綿引 琢磨20-B-3
#devsumiB 株式会社デライトテクノロジーズ
自己紹介
•綿引 琢磨(@bikisuke)
•株式会社デライトテクノロジーズ
代表取締役
•日本Grails/Groovyユーザーグループ
(JGGUG)運営委員
•レッツゴーデベロッパー企画/運営
•「Gradle徹底入門」共著
イベント情報
•レッツゴーデベロッパー 2015(仮)
•仙台市市民活動センター
•2015/8/1(土) 13:00 ∼(予定)
•登壇予定スピーカー
•柴田 芳樹 氏
•Kyon_mm 氏
•ほか調整中
「徹底入門」というタイトルにふさわしい内容 (digitalsoul0124)
http://www.amazon.co.jp/product-reviews/4798136433/ref=dp_db_cm_cr_acr_txt?ie=UTF8...
絶賛発売中
はじめに
•本日の講演の想定聴講者
•SIerでシステム開発に携わっている
•AntやMavenに満足していない
•Gradleに興味はあるものの、まだ業務
で使用していない
•退屈な定型作業を減らしたい
アジェンダ
•自動化と開発現場の状況
•Gradleの概要と7つの要素
•Gradle導入法と移行戦略
•導入後の運用
•まとめ
自動化と
開発現場の状況
自動化とは
•何らかの作業を人手を介さず処理すること
•定型的なものほど導入しやすい
•繰り返し行うほどコストメリット高
•手作業による人的ミスの排除
•手順書メンテナンスという苦行から解放
昨今の自動化の流れ
•さまざまなツールの登場や仮想化技術の
普及により、自動化の範囲が広がっている
•テストの自動化
•継続的インテグレーション
•継続的デリバリー
•環境構築の自動化
開発現場での自動化
• ソースコードのビルド
• ユニットテスト
• リポジトリサーバーへのモジュールデプロイ
• 実行環境へのアプリケーションデプロイ
• ソースコードやDDL/DMLの自動生成
• テストデータ投入
• etc.
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー シェルスクリプト, コマンドプロンプト
自動生成 Excelマクロ
ビルド
Ant, Maven
デプロイ
Ant, Maven
CI Jenkins, Bamboo, Team...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー シェルスクリプト, コマンドプロンプト
自動生成 Excelマクロ
ビルド
Ant, Maven
デプロイ
Ant, Maven
CI Jenkins, Bamboo, Team...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー シェルスクリプト, コマンドプロンプト
自動生成 Excelマクロ
ビルド
Ant, Maven
デプロイ
Ant, Maven
CI Jenkins, Bamboo, Team...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー シェルスクリプト, コマンドプロンプト
自動生成 Excelマクロ
ビルド
Ant, Maven
デプロイ
Ant, Maven
CI Jenkins, Bamboo, Team...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー シェルスクリプト, コマンドプロンプト
自動生成 Excelマクロ
ビルド
Ant, Maven
デプロイ
Ant, Maven
CI Jenkins, Bamboo, Team...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー シェルスクリプト, コマンドプロンプト
自動生成 Excelマクロ
ビルド
Ant, Maven
デプロイ
Ant, Maven
CI Jenkins, Bamboo, Team...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー シェルスクリプト, コマンドプロンプト
自動生成 Excelマクロ
ビルド
Ant, Maven
デプロイ
Ant, Maven
CI Jenkins, Bamboo, Team...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー シェルスクリプト, コマンドプロンプト
自動生成 Excelマクロ
ビルド
Ant, Maven
デプロイ
Ant, Maven
CI Jenkins, Bamboo, Team...
その他の定型作業
• リポジトリのタグ付け
• ドキュメントのチェック
• 設計書のバージョン、ヘッダーフッター
• 納品準備作業
• 一覧作成、納品物アーカイブ
その他の定型作業
• リポジトリのタグ付け
• ドキュメントのチェック
• 設計書のバージョン、ヘッダーフッター
• 納品準備作業
• 一覧作成、納品物アーカイブ
割と手作業のままの現場が多い!!
その他の定型作業
• リポジトリのタグ付け
• ドキュメントのチェック
• 設計書のバージョン、ヘッダーフッター
• 納品準備作業
• 一覧作成、納品物アーカイブ
割と手作業のままの現場が多い!!
そこで
Gradle
ですよ!!!
Gradleの概要と
7つの要素
Gradleとは
• OSSのビルドツール
• ビルド専用ツールではないため、意味的には
自動化ツールが正しい
• 他のビルドツールより優れてる(点が多い)
• GroovyベースのDSLでビルド定義を記述
• Apache License, ...
ビルドツール比較
make Ant Maven Gradle
ビルド定義
パラダイム
強み
弱み
スクリプト XML XML スクリプト
手続き的 手続き的 規約ベース 規約ベース
非常にコンパクト
基本機能がシンプル
クロスプラットフォーム
...
ビルドツール比較
make Ant Maven Gradle
ビルド定義
パラダイム
強み
弱み
スクリプト XML XML スクリプト
手続き的 手続き的 規約ベース 規約ベース
非常にコンパクト
基本機能がシンプル
クロスプラットフォーム
...
なぜGradleなのか?
•ビルドスクリプトが簡潔に書ける
•高い柔軟性と拡張性を実現
•適用範囲が広い
•ビルド以外のさまざまな場面で利用可能
•いろいろな言語に対応(中)
•Android の公式ビルドツールとして採用
•2.0以降は C/...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー シェルスクリプト, コマンドプロンプト
自動生成 Excelマクロ
ビルド
Ant, Maven
デプロイ
Ant, Maven
CI Jenkins, Bamboo, Team...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー シェルスクリプト, コマンドプロンプト
自動生成 Excelマクロ
ビルド
Ant, Maven
デプロイ
Ant, Maven
CI Jenkins, Bamboo, Team...
その他の定型作業
• リポジトリのタグ付け
• ドキュメントのチェック
• 設計書のバージョン、ヘッダーフッター
• 納品準備作業
• 一覧作成、納品物アーカイブ
その他の定型作業
• リポジトリのタグ付け
• ドキュメントのチェック
• 設計書のバージョン、ヘッダーフッター
• 納品準備作業
• 一覧作成、納品物アーカイブ
Gradleで自動化可能!!
Gradleの適用範囲
DevOps
Manager
継
続
的
断
続
的
ビルド・デプロイ
納品物作成
開発・運用
支援ツール
ドキュメント
定型チェック
自動化のための7つの要素
1. OSプラットフォーム非依存
2. 自動インストール方式
3. スクリプトによる簡潔な記述
4. Javaライブラリとの親和性
5. 互換性重視のAPI提供
6. 他のビルドツールの資産活用
7. 柔軟なプラグイン...
OSプラットフォーム非依存
• 実行環境にはJavaVMさえあればOK
• JAVA_HOMEの設定は必要
• JDK6以上で動作するが、JDK8を推奨
• ただし、JDK8の場合はGradleは2.0
以上を使用してください
自動インストール方式
• Gradleラッパーにより、利用者に明示的
なインストールや設定をさせずにGradle
を配布可能
• gradlewコマンド一発で、初回実行時に
ダウンロードし、そのまま実行
• 使用するGradleに社内向けカスタ...
スクリプトによる簡潔な記述
• Groovy DSLによる簡潔な記法
• Javaのコードをそのまま書くことも可能
• プログラマに親しみやすい
• ビルドスクリプトの分割や構造化で、
可読性を維持しながら保守可能
• ただし、スパゲッティ化に...
Javaライブラリとの親和性
• Javaと親和性の高いGroovyベースである
ことから、Javaの標準ライブラリやOSS
の豊富なライブラリを利用可能
• ドキュメントのチェックや自動生成など
では、Apache POIが大活躍
• Exc...
互換性重視のAPI提供
•後方互換性に配慮した機能ライフサイクル
ポリシーによって、段階的な機能の追加や
廃止を実現
• 4つのステータス
• 非公開(Internal)、実験的(Incubating)、
公開(Public)、廃止(Depre...
他のビルドツールの資産活用
• Ant
• build.xmlをそのまま実行できる
• タスクレベルでの呼び出しも可能で、
段階的な移行がしやすい
•Maven
• Maven Centralリポジトリを参照可能
• pom.xmlからビルドス...
柔軟なプラグイン導入方式
• プラグインが作りやすい
• Mavenの場合はモジュール作成が必須
• 段階的にプラグインの定義が可能
• 暫定使用:ビルドスクリプトに直書き
• 個別使用:スクリプトファイルの分割、
buildSrcに配置
• ...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
シェルスクリプト, コマンドプロンプト
Excelマクロ
Ant, Maven
...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
Excelマクロ
Ant, Maven
環境によってマクロ
が動作しない !!
...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
Excelマクロ
Ant, Maven
環境によってマクロ
が動作しない !!
...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
Excelマクロ
Ant, Maven
環境によってマクロ
が動作しない !!
...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
Ant, Maven
XML地獄 !!!
ライブラリ管理
が大変 !!!
プラグ...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
Ant, Maven
XML地獄 !!!
ライブラリ管理
が大変 !!!
プラグ...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
Ant, Maven
XML地獄 !!!
ライブラリ管理
が大変 !!!
プラグ...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
Gradle ラッパー
Gradle + GExcelAPI(POI)
Grad...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
Gradle ラッパー
Gradle + GExcelAPI(POI)
Grad...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
Gradle ラッパー
Gradle + GExcelAPI(POI)
Grad...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
Gradle ラッパー
Gradle + GExcelAPI(POI)
Grad...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
Gradle ラッパー
Gradle + GExcelAPI(POI)
Grad...
自動化の実現手段
カテゴリ よく利用されているツール
ランチャー
自動生成
ビルド
デプロイ
CI Jenkins, Bamboo, TeamCity, etc.
Gradle ラッパー
Gradle + GExcelAPI(POI)
Grad...
Gradle導入法と
移行戦略
導入パターン
•管理系支援ツールとして
•データ集計、レポート出力など
•開発支援ツールとして
•自動生成、テスト支援など
•ビルドツールとして
•新規導入 or 既存ビルドツールから移行
導入事例
•事例1
•小綺麗なテストレポートを提供
•GradleでテストするだけでOK
•事例2
•ドキュメントの定型チェック
•設計書IDやバージョン番号などの
記述ミスや更新漏れを検出
導入事例
•事例3
•Excel-JSON変換ツール
•ExcelデータをJSONに変換
•事例4
•クライアント向けテストツール
•JSONを返すHTTPサーバーを
Gradleで起動
ビルドツールの移行戦略
•2つのアプローチ
•フルスクラッチで書く
•ゼロベースの方が効率良い場合も
•既存のビルドスクリプトを利用する
•既存が Ant か Maven かで移行
ステップが異なる
Antからの移行ポイント
• ディレクトリ構造&ファイル名前
• Gradleの規約に合わせるか
• 既存にビルドスクリプトを合わせるか
• 参照ライブラリの管理
• 社内リポジリを立てるか
• 外部リポジトリを直接参照するか
• ファイル管理...
Mavenからの移行ポイント
• プラグイン
• Gradleに置き換え可能なプラグインが
あるか
• プラグインの置き換えが可能なら、
移行は比較的容易
• カスタム系のプラグインはプラグイン
ポータルで確認
プラグイン対応表 1/2
機能 Maven Gradle
コンパイル maven-compiler-plugin
Java Plugin
テスト maven-surefire-plugin
Java Pluginjavadoc maven-jav...
プラグイン対応表 2/2
機能 Maven Gradle
eclipse連携 maven-eclipse-plugin Eclipse Plugin
静的解析
mave-checkstyle-plugin Checkstyle Plugin
静...
http://plugins.gradle.org
導入後の運用
導入後にやるべきこと
•ビルドスクリプトの構造化
•タスクのリファクタリング
•プラグインの抽出
ビルドスクリプトの構造化
•ビルドスクリプトを構造化し、適切な
状態を維持する
•共通的な設定やタスクの抽出
•内容に応じてファイルを分割
•ビルドスクリプトの肥大化防止
タスクのリファクタリング
•複数タスク内に同じ処理があれば抽出
•共通処理はクラス化、タスク化して
再利用性を上げる
•タスクは単一責務を心がける
プラグインの抽出
•他のプロジェクトにも利用可能な汎用
的なタスクがあった場合は、プラグイ
ンとして抽出
•社内リポジトリにリリースして展開
まとめ
•開発の現場は、Gradleを活用すれば
もっと自動化できる
•Gradleの導入は入れやすいところから
•ビルドツールの移行時は、既存のツール
に応じたポイントを押さえて実施
•導入後はビルドスクリプトの肥大化や
スパゲッティ化に注意...
システム開発を前進させるためのGradle導入法
Nächste SlideShare
Wird geladen in …5
×

システム開発を前進させるためのGradle導入法

8.151 Aufrufe

Veröffentlicht am

デブサミ2015 Growth! 【20-B-3】「システム開発を前進させるためのGradle導入法」の講演資料です。

Veröffentlicht in: Software
  • (Unlimited)....ACCESS WEBSITE Over for All Ebooks ................ accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • DOWNLOAD THI5 BOOKS 1NTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

システム開発を前進させるためのGradle導入法

  1. 1. システム開発を前進させる ためのGradle導入法 綿引 琢磨20-B-3 #devsumiB 株式会社デライトテクノロジーズ
  2. 2. 自己紹介 •綿引 琢磨(@bikisuke) •株式会社デライトテクノロジーズ 代表取締役 •日本Grails/Groovyユーザーグループ (JGGUG)運営委員 •レッツゴーデベロッパー企画/運営 •「Gradle徹底入門」共著
  3. 3. イベント情報 •レッツゴーデベロッパー 2015(仮) •仙台市市民活動センター •2015/8/1(土) 13:00 ∼(予定) •登壇予定スピーカー •柴田 芳樹 氏 •Kyon_mm 氏 •ほか調整中
  4. 4. 「徹底入門」というタイトルにふさわしい内容 (digitalsoul0124) http://www.amazon.co.jp/product-reviews/4798136433/ref=dp_db_cm_cr_acr_txt?ie=UTF8&showViewpoints=1 これまで手厚くサポートされたビルドツールの本を 見たことがありませんでした。(grimrose) http://grimrose.blogspot.jp/2014/12/gradle.html これ1冊あればググる必要ないのでは という安心感がある (sue445) http://booklog.jp/item/1/4798136433 Gradle”徹底”入門に恥じぬ、Gradleへの愛を 感じる徹底ぶりで、一読の価値ありです。(lino) http://lino.hatenablog.jp/entry/gradleintroduction 「入門」とあるけど、きちんとアーキテクチャから解説 されているので、十分な知識が得られるだろう。(るいも) http://www.ruimo.com/2015/01/12/1421066460000.html 内容が濃い (木下牛) http://www.amazon.co.jp/review/ R1UIVFAYX4GEVR/ref=cm_cr_dp_title? ie=UTF8&ASIN=4798136433&channel=detail- glance&nodeID=465392&store=books
  5. 5. 絶賛発売中
  6. 6. はじめに •本日の講演の想定聴講者 •SIerでシステム開発に携わっている •AntやMavenに満足していない •Gradleに興味はあるものの、まだ業務 で使用していない •退屈な定型作業を減らしたい
  7. 7. アジェンダ •自動化と開発現場の状況 •Gradleの概要と7つの要素 •Gradle導入法と移行戦略 •導入後の運用 •まとめ
  8. 8. 自動化と 開発現場の状況
  9. 9. 自動化とは •何らかの作業を人手を介さず処理すること •定型的なものほど導入しやすい •繰り返し行うほどコストメリット高 •手作業による人的ミスの排除 •手順書メンテナンスという苦行から解放
  10. 10. 昨今の自動化の流れ •さまざまなツールの登場や仮想化技術の 普及により、自動化の範囲が広がっている •テストの自動化 •継続的インテグレーション •継続的デリバリー •環境構築の自動化
  11. 11. 開発現場での自動化 • ソースコードのビルド • ユニットテスト • リポジトリサーバーへのモジュールデプロイ • 実行環境へのアプリケーションデプロイ • ソースコードやDDL/DMLの自動生成 • テストデータ投入 • etc.
  12. 12. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー シェルスクリプト, コマンドプロンプト 自動生成 Excelマクロ ビルド Ant, Maven デプロイ Ant, Maven CI Jenkins, Bamboo, TeamCity, etc.
  13. 13. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー シェルスクリプト, コマンドプロンプト 自動生成 Excelマクロ ビルド Ant, Maven デプロイ Ant, Maven CI Jenkins, Bamboo, TeamCity, etc. OSごとに必要 !
  14. 14. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー シェルスクリプト, コマンドプロンプト 自動生成 Excelマクロ ビルド Ant, Maven デプロイ Ant, Maven CI Jenkins, Bamboo, TeamCity, etc. OSごとに必要 ! 環境によってマクロ が動作しない !!
  15. 15. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー シェルスクリプト, コマンドプロンプト 自動生成 Excelマクロ ビルド Ant, Maven デプロイ Ant, Maven CI Jenkins, Bamboo, TeamCity, etc. OSごとに必要 ! 環境によってマクロ が動作しない !! 似て非なる マクロが増殖 !!
  16. 16. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー シェルスクリプト, コマンドプロンプト 自動生成 Excelマクロ ビルド Ant, Maven デプロイ Ant, Maven CI Jenkins, Bamboo, TeamCity, etc. OSごとに必要 ! 環境によってマクロ が動作しない !! 似て非なる マクロが増殖 !! ライブラリ管理 が大変 !!!
  17. 17. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー シェルスクリプト, コマンドプロンプト 自動生成 Excelマクロ ビルド Ant, Maven デプロイ Ant, Maven CI Jenkins, Bamboo, TeamCity, etc. OSごとに必要 ! 環境によってマクロ が動作しない !! 似て非なる マクロが増殖 !! ライブラリ管理 が大変 !!! 規約外の対応 が困難 !!!
  18. 18. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー シェルスクリプト, コマンドプロンプト 自動生成 Excelマクロ ビルド Ant, Maven デプロイ Ant, Maven CI Jenkins, Bamboo, TeamCity, etc. OSごとに必要 ! 環境によってマクロ が動作しない !! 似て非なる マクロが増殖 !! ライブラリ管理 が大変 !!! プラグイン 開発が面倒 !!! 規約外の対応 が困難 !!!
  19. 19. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー シェルスクリプト, コマンドプロンプト 自動生成 Excelマクロ ビルド Ant, Maven デプロイ Ant, Maven CI Jenkins, Bamboo, TeamCity, etc. OSごとに必要 ! 環境によってマクロ が動作しない !! XML地獄 !!! 似て非なる マクロが増殖 !! ライブラリ管理 が大変 !!! プラグイン 開発が面倒 !!! 規約外の対応 が困難 !!!
  20. 20. その他の定型作業 • リポジトリのタグ付け • ドキュメントのチェック • 設計書のバージョン、ヘッダーフッター • 納品準備作業 • 一覧作成、納品物アーカイブ
  21. 21. その他の定型作業 • リポジトリのタグ付け • ドキュメントのチェック • 設計書のバージョン、ヘッダーフッター • 納品準備作業 • 一覧作成、納品物アーカイブ 割と手作業のままの現場が多い!!
  22. 22. その他の定型作業 • リポジトリのタグ付け • ドキュメントのチェック • 設計書のバージョン、ヘッダーフッター • 納品準備作業 • 一覧作成、納品物アーカイブ 割と手作業のままの現場が多い!! そこで Gradle ですよ!!!
  23. 23. Gradleの概要と 7つの要素
  24. 24. Gradleとは • OSSのビルドツール • ビルド専用ツールではないため、意味的には 自動化ツールが正しい • 他のビルドツールより優れてる(点が多い) • GroovyベースのDSLでビルド定義を記述 • Apache License, Version 2.0 •最新バージョンは 2.3(2015年2月時点)
  25. 25. ビルドツール比較 make Ant Maven Gradle ビルド定義 パラダイム 強み 弱み スクリプト XML XML スクリプト 手続き的 手続き的 規約ベース 規約ベース 非常にコンパクト 基本機能がシンプル クロスプラットフォーム 規約による標準化 依存関係管理 規約による標準化 依存関係管理 高い柔軟性/拡張性 移植性問題 依存関係管理なし 規約無く再利用に難有り 依存関係管理なし 定義ファイルの柔軟性 規約外の場合が困難 定義ファイルの柔軟性 IDE連携にやや難有り
  26. 26. ビルドツール比較 make Ant Maven Gradle ビルド定義 パラダイム 強み 弱み スクリプト XML XML スクリプト 手続き的 手続き的 規約ベース 規約ベース 非常にコンパクト 基本機能がシンプル クロスプラットフォーム 規約による標準化 依存関係管理 規約による標準化 依存関係管理 高い柔軟性/拡張性 移植性問題 依存関係管理なし 規約無く再利用に難有り 依存関係管理なし 定義ファイルの柔軟性 規約外の場合が困難 定義ファイルの柔軟性 IDE連携にやや難有り 2.3 でWTP サポートが改善
  27. 27. なぜGradleなのか? •ビルドスクリプトが簡潔に書ける •高い柔軟性と拡張性を実現 •適用範囲が広い •ビルド以外のさまざまな場面で利用可能 •いろいろな言語に対応(中) •Android の公式ビルドツールとして採用 •2.0以降は C/C++ にも力を入れている
  28. 28. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー シェルスクリプト, コマンドプロンプト 自動生成 Excelマクロ ビルド Ant, Maven デプロイ Ant, Maven CI Jenkins, Bamboo, TeamCity, etc.
  29. 29. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー シェルスクリプト, コマンドプロンプト 自動生成 Excelマクロ ビルド Ant, Maven デプロイ Ant, Maven CI Jenkins, Bamboo, TeamCity, etc. Gradle だけで実現可能!!
  30. 30. その他の定型作業 • リポジトリのタグ付け • ドキュメントのチェック • 設計書のバージョン、ヘッダーフッター • 納品準備作業 • 一覧作成、納品物アーカイブ
  31. 31. その他の定型作業 • リポジトリのタグ付け • ドキュメントのチェック • 設計書のバージョン、ヘッダーフッター • 納品準備作業 • 一覧作成、納品物アーカイブ Gradleで自動化可能!!
  32. 32. Gradleの適用範囲 DevOps Manager 継 続 的 断 続 的 ビルド・デプロイ 納品物作成 開発・運用 支援ツール ドキュメント 定型チェック
  33. 33. 自動化のための7つの要素 1. OSプラットフォーム非依存 2. 自動インストール方式 3. スクリプトによる簡潔な記述 4. Javaライブラリとの親和性 5. 互換性重視のAPI提供 6. 他のビルドツールの資産活用 7. 柔軟なプラグイン導入方式
  34. 34. OSプラットフォーム非依存 • 実行環境にはJavaVMさえあればOK • JAVA_HOMEの設定は必要 • JDK6以上で動作するが、JDK8を推奨 • ただし、JDK8の場合はGradleは2.0 以上を使用してください
  35. 35. 自動インストール方式 • Gradleラッパーにより、利用者に明示的 なインストールや設定をさせずにGradle を配布可能 • gradlewコマンド一発で、初回実行時に ダウンロードし、そのまま実行 • 使用するGradleに社内向けカスタマイズ を施しておける
  36. 36. スクリプトによる簡潔な記述 • Groovy DSLによる簡潔な記法 • Javaのコードをそのまま書くことも可能 • プログラマに親しみやすい • ビルドスクリプトの分割や構造化で、 可読性を維持しながら保守可能 • ただし、スパゲッティ化にも注意
  37. 37. Javaライブラリとの親和性 • Javaと親和性の高いGroovyベースである ことから、Javaの標準ライブラリやOSS の豊富なライブラリを利用可能 • ドキュメントのチェックや自動生成など では、Apache POIが大活躍 • Excel参照なら、GExcelAPIがオススメ https://github.com/nobeans/gexcelapi
  38. 38. 互換性重視のAPI提供 •後方互換性に配慮した機能ライフサイクル ポリシーによって、段階的な機能の追加や 廃止を実現 • 4つのステータス • 非公開(Internal)、実験的(Incubating)、 公開(Public)、廃止(Deprecated) • バージョンアップによる影響を小さく し、より安定的に機能を提供
  39. 39. 他のビルドツールの資産活用 • Ant • build.xmlをそのまま実行できる • タスクレベルでの呼び出しも可能で、 段階的な移行がしやすい •Maven • Maven Centralリポジトリを参照可能 • pom.xmlからビルドスクリプトを生成
  40. 40. 柔軟なプラグイン導入方式 • プラグインが作りやすい • Mavenの場合はモジュール作成が必須 • 段階的にプラグインの定義が可能 • 暫定使用:ビルドスクリプトに直書き • 個別使用:スクリプトファイルの分割、 buildSrcに配置 • 汎用使用:プラグインモジュール化
  41. 41. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. シェルスクリプト, コマンドプロンプト Excelマクロ Ant, Maven OSごとに必要 ! 環境によってマクロ が動作しない !! XML地獄 !!! 似て非なる マクロが増殖 !! ライブラリ管理 が大変 !!! プラグイン 開発が面倒 !!! 規約外の対応 が困難 !!!
  42. 42. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. Excelマクロ Ant, Maven 環境によってマクロ が動作しない !! XML地獄 !!! 似て非なる マクロが増殖 !! ライブラリ管理 が大変 !!! プラグイン 開発が面倒 !!! 規約外の対応 が困難 !!! Gradle ラッパー
  43. 43. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. Excelマクロ Ant, Maven 環境によってマクロ が動作しない !! XML地獄 !!! 似て非なる マクロが増殖 !! ライブラリ管理 が大変 !!! プラグイン 開発が面倒 !!! 規約外の対応 が困難 !!! Gradle ラッパー OS非依存 !
  44. 44. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. Excelマクロ Ant, Maven 環境によってマクロ が動作しない !! XML地獄 !!! 似て非なる マクロが増殖 !! ライブラリ管理 が大変 !!! プラグイン 開発が面倒 !!! 規約外の対応 が困難 !!! Gradle ラッパー OS非依存 ! 明示的インス トール不要 !
  45. 45. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. Ant, Maven XML地獄 !!! ライブラリ管理 が大変 !!! プラグイン 開発が面倒 !!! 規約外の対応 が困難 !!! Gradle ラッパー Gradle + GExcelAPI(POI) OS非依存 ! 明示的インス トール不要 !
  46. 46. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. Ant, Maven XML地獄 !!! ライブラリ管理 が大変 !!! プラグイン 開発が面倒 !!! 規約外の対応 が困難 !!! Gradle ラッパー Gradle + GExcelAPI(POI) OS非依存 ! 明示的インス トール不要 ! Javaライブラリ活用 !!
  47. 47. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. Ant, Maven XML地獄 !!! ライブラリ管理 が大変 !!! プラグイン 開発が面倒 !!! 規約外の対応 が困難 !!! Gradle ラッパー Gradle + GExcelAPI(POI) OS非依存 ! マクロ非依存 で一元化 !! 明示的インス トール不要 ! Javaライブラリ活用 !!
  48. 48. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. Gradle ラッパー Gradle + GExcelAPI(POI) Gradle + プラグイン OS非依存 ! マクロ非依存 で一元化 !! 明示的インス トール不要 ! Javaライブラリ活用 !!
  49. 49. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. Gradle ラッパー Gradle + GExcelAPI(POI) Gradle + プラグイン OS非依存 ! マクロ非依存 で一元化 !! Maven同様の 依存関係管理 !!! 明示的インス トール不要 ! Javaライブラリ活用 !!
  50. 50. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. Gradle ラッパー Gradle + GExcelAPI(POI) Gradle + プラグイン OS非依存 ! マクロ非依存 で一元化 !! Maven同様の 依存関係管理 !!! 明示的インス トール不要 ! Javaライブラリ活用 !! 優れた 後方互換性 !!!
  51. 51. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. Gradle ラッパー Gradle + GExcelAPI(POI) Gradle + プラグイン OS非依存 ! マクロ非依存 で一元化 !! 規約外でも安心 !!! Maven同様の 依存関係管理 !!! 明示的インス トール不要 ! Javaライブラリ活用 !! 優れた 後方互換性 !!!
  52. 52. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. Gradle ラッパー Gradle + GExcelAPI(POI) Gradle + プラグイン OS非依存 ! マクロ非依存 で一元化 !! 規約外でも安心 !!! 気軽にプラグイン作成 !!! Maven同様の 依存関係管理 !!! 明示的インス トール不要 ! Javaライブラリ活用 !! 優れた 後方互換性 !!!
  53. 53. 自動化の実現手段 カテゴリ よく利用されているツール ランチャー 自動生成 ビルド デプロイ CI Jenkins, Bamboo, TeamCity, etc. Gradle ラッパー Gradle + GExcelAPI(POI) Gradle + プラグイン OS非依存 ! マクロ非依存 で一元化 !! 規約外でも安心 !!! 気軽にプラグイン作成 !!! Maven同様の 依存関係管理 !!! 簡潔なDSL !!! 明示的インス トール不要 ! Javaライブラリ活用 !! 優れた 後方互換性 !!!
  54. 54. Gradle導入法と 移行戦略
  55. 55. 導入パターン •管理系支援ツールとして •データ集計、レポート出力など •開発支援ツールとして •自動生成、テスト支援など •ビルドツールとして •新規導入 or 既存ビルドツールから移行
  56. 56. 導入事例 •事例1 •小綺麗なテストレポートを提供 •GradleでテストするだけでOK •事例2 •ドキュメントの定型チェック •設計書IDやバージョン番号などの 記述ミスや更新漏れを検出
  57. 57. 導入事例 •事例3 •Excel-JSON変換ツール •ExcelデータをJSONに変換 •事例4 •クライアント向けテストツール •JSONを返すHTTPサーバーを Gradleで起動
  58. 58. ビルドツールの移行戦略 •2つのアプローチ •フルスクラッチで書く •ゼロベースの方が効率良い場合も •既存のビルドスクリプトを利用する •既存が Ant か Maven かで移行 ステップが異なる
  59. 59. Antからの移行ポイント • ディレクトリ構造&ファイル名前 • Gradleの規約に合わせるか • 既存にビルドスクリプトを合わせるか • 参照ライブラリの管理 • 社内リポジリを立てるか • 外部リポジトリを直接参照するか • ファイル管理にするか
  60. 60. Mavenからの移行ポイント • プラグイン • Gradleに置き換え可能なプラグインが あるか • プラグインの置き換えが可能なら、 移行は比較的容易 • カスタム系のプラグインはプラグイン ポータルで確認
  61. 61. プラグイン対応表 1/2 機能 Maven Gradle コンパイル maven-compiler-plugin Java Plugin テスト maven-surefire-plugin Java Pluginjavadoc maven-javadoc-plugin Java Plugin アーカイブ maven-jar-plugin Java Plugin maven-assembly-plugin Java Plugin maven-war-plugin War Plugin デプロイ maven-install-plugin Maven Plugin mave-deploy-plugin Maven Plugin
  62. 62. プラグイン対応表 2/2 機能 Maven Gradle eclipse連携 maven-eclipse-plugin Eclipse Plugin 静的解析 mave-checkstyle-plugin Checkstyle Plugin 静的解析 maven-pmd-plugin PMD Plugin 静的解析 findbugs-maven-plugin Findbugs Plugin 静的解析 jacoco-maven-plugin Jacoco Plugin アーキタイプ作成 maven-archetype-plugin initタスク※ Ant実行 maven-antrun-plugin 標準機能
  63. 63. http://plugins.gradle.org
  64. 64. 導入後の運用
  65. 65. 導入後にやるべきこと •ビルドスクリプトの構造化 •タスクのリファクタリング •プラグインの抽出
  66. 66. ビルドスクリプトの構造化 •ビルドスクリプトを構造化し、適切な 状態を維持する •共通的な設定やタスクの抽出 •内容に応じてファイルを分割 •ビルドスクリプトの肥大化防止
  67. 67. タスクのリファクタリング •複数タスク内に同じ処理があれば抽出 •共通処理はクラス化、タスク化して 再利用性を上げる •タスクは単一責務を心がける
  68. 68. プラグインの抽出 •他のプロジェクトにも利用可能な汎用 的なタスクがあった場合は、プラグイ ンとして抽出 •社内リポジトリにリリースして展開
  69. 69. まとめ •開発の現場は、Gradleを活用すれば もっと自動化できる •Gradleの導入は入れやすいところから •ビルドツールの移行時は、既存のツール に応じたポイントを押さえて実施 •導入後はビルドスクリプトの肥大化や スパゲッティ化に注意して、リファクタ リングを心がける

×