mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

Gradleプラグイン作ってみた

こんにちは!最近暑すぎて外に出たくなさすぎて家でPCといちゃいちゃしてるリア充のhentekoです!
現在DeployGate開発チームでインターンとして開発に参加させてもらい、色々させてもらっています。
このミクシィのエンジニアブログ、インターンとして参加する前から結構見てたのですが、まさか正社員になる前に書くことになるとは思ってなかったので結構緊張してます。

そんな僕が作ったものがつい先日リリースされました!
GradleからDeployGate APIを簡単に操作できるGradleプラグインです。
GitHubにてソースコードを公開してます。

https://github.com/DeployGate/gradle-deploygate-plugin

今回はこのGradleプラグインについて話したいと思います。

Androidアプリ開発必須ツール、DeployGate

まずは簡単にDeployGateの説明から。
DeployGateはミクシィが新規事業として開発、リリースしたAndroidアプリ開発者向けプライベート配信サービスです。
非常に便利なサービスとなっていて、実際僕も個人アプリを作成する際友人などにテストをしてもらう用にDeployGateを使っています。
さらに、開発端末がOS Xならいいのですが、Windowsだと端末ごとにドライバをインストールしなければなりませんよね。
こういった、本来開発とは関係ないところで時間を使ってしまうのは無駄です。
このDeployGateを使えばそんなことで悩む必要がありません。
つい先日行われた某C社の24時間開発コンテストの時にもとても役立ちました。

正式採用されたGradle

さて、Google I/O 2013でAndroid Studioが発表され、Gradleでのビルドが正式にサポートされました。
詳しくはGradle公式サイトおよびAndroid Gradleプラグイン公式ドキュメントを参照してください。
http://www.gradle.org/
http://tools.android.com/tech-docs/new-build-system/user-guide

このGradle、mavenみたいにxmlを書かなくていいのがとても楽です。
代わりにGroovyのDSLを利用したビルドスクリプトを書かないといけないのですが、普通にjavaのコードも評価してくれるので、最悪javaで書くこともでき、学習コストが低いです。
それでも最低限の学習は必要ですが…

DeployGate APIを使いやすくするプラグイン

めでたく公式にサポートされたGradle、DeployGateでも使いたい!ってことでプラグインを作成しました。

https://deploygate.com/docs/gradle

使い方

基本的には上記ドキュメントを参照していただければ使い方は分かるかと思いますが、ここで簡単に説明をします。

まず、build.gradleに最低限の記述をしましょう。


buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
        classpath 'com.deploygate:gradle:0.2'
    }
}

apply plugin: 'android'
apply plugin: 'deploygate'

dependencies {
    compile files('libs/android-support-v4.jar')
}

deploygate {
    token = "[token]"
    apkPath = "[apk file path]"
    userName = "[owner name]"
    message = "sample"
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

defaultConfig {
    minSdkVersion 8
    targetSdkVersion 16
}

}

Android Studioでプロジェクトを新規作成した時に作成されるbuild.gradleから変更すべき点は以下の通りです。

  • buildscriptのdependenciesにdeploygateプラグインをclasspathとして指定する
  • apply pluginでdeploygateを指定する
  • deploygateの設定を記述する

最低限これらを記述することで、deploygateのGradleプラグインは動作します。

deploygateの設定では、
tokenにdeploygateのAPI Keyを、
apkPathにはapkファイルまでのファイルパスを、
userNameにはdeploygateのユーザー名を入力してください。

タスク一覧を表示して確認してみましょう。


$ ./gradlew tasks

以下のタスクが表示されれば、成功です。


DeployGate tasks
----------------
updateDeployGateDistribution - Apk upload and distribution update
uploadDeployGate - Upload the apk file to deploygate

最後にタスクを実行してみて、確認をしてみましょう。


$ ./gradlew uploadDeployGate

APIの結果のJSONとBUILD SUCCESSFULが表示されれば成功です。

配布ページも同時に更新する場合

配布ページも同時に更新をした場合には、updateDistributionタスクを使用します。
その場合、build.gradleのdeploygateの設定を記述する所を以下のようにします。


deploygate {
    token = "[token]"
    apkPath = "[apk file path]"
    userName = "[owner name]"
    message = "sample"
    distributionKey "[distribution_key]"
    releaseNote "release note sample"
}

distributionKeyには、DeployGateの配布ページKeyを指定してください。

タスクの実行が正常に終了したら成功です。

 
$ ./gradlew updateDeployGateDistribution

まとめ

今回はDeployGate APIを簡単に使うことのできるGradleプラグインについて説明をしました。
このプラグインを使うことにより、jenkinsなどからタスクの実行をしてDeployGateに最新アプリをアップロードするといったことなどが簡単に実現できるようになると思います。
是非活用してみてください!!

また、このプラグイン自体はGitHubにてOSSとして開発をしていますので、自由にforkするなり、不満点をissueに登録してあまつさえpull requestをしたりなど大歓迎です!!

Androidアプリを開発する

githubとかにcommitする

jenkinsとかtravis ciでGradleビルド & DeployGateにアップロードする

最新verのアプリが手元に!!

楽しい!! ✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌