概要
前々から興味を持っていたが、特に触ってこなかったチャットbotを作った。
主な機能はSlack上で発言すると、発言内容を解釈してDeployGateにAPKをアップロードして動作確認することができる。
今回の成果物はhubotを使用しているが、使い勝手や環境構築といった手順は他の記事でいくらでも出てくるので割愛する。
経緯
そもそもDeployGateにアップロードすること自体はGradleのコマンド一発で実行できるので、開発者的には特に必要無かった。
ただチームで開発していると、企画・デザイナーの人が開発環境向きのAPKが必要になったり特定のバージョンのAPKを試したくなったりと言ったケースがたまにあったりする。
そういう時にAndroidの開発環境を用意して、さらにコンソールからコマンドを叩くのは敷居が非常に高い。
なので特に環境を用意する必要もなく、手軽に特定バージョンのAPKビルドを実行できる仕組みをSlackを用いて実現することにしてみた。
成果物
レイ
アプリケーション開発支援bot 元ネタ
なぜレイズナーなのかというと、まずサポートコンピューターで劇中でも色々な戦闘支援を行っていたので、今回のような開発を支援するbotの名前としては合いそうだった。
あとは単純に好きな作品だった。
ただ原作と同じような感じでキャラ付けしてしまうと、全部セリフがカタカナになって読みづらくなるのでキャラ崩壊は起こしてる。
機能
ざっと実装した機能を紹介
詳しくはREADME.md参照
https://github.com/chuross/lay#コマンド一覧
設定の初期化
レイに設定している内容を初期化
@lay_bot initialize
この後対話式でY/nをSlack上で発言すると設定ファイルを初期状態に戻す
設定ファイルはjsonで管理されている
初期化項目
command | description |
---|---|
repository_remote_path | レイがリポジトリをcloneしてくるためのオリジナルのリモートパス |
deploygate_default_flavor | デフォルトで指定するDeployGateのBuildFlavor |
originリポジトリのclone
上で設定したrepository_remote_pathの値を使ってDeployGateの処理をしたいリポジトリをcloneさせる
@lay_bot repository refresh
DeployGateへのアップロード
※あらかじめbuild.gradleにDeployGateの設定を定義しておく必要がある
このbotはあくまで./gradlew uploadDeployGate
にあたるコマンドを整形して実行するだけなので、
リポジトリそのものの設定や準備はセルフサービス
APKの生成コマンドはこんな感じ
リモートパスを追加してやれば自由なブランチやBuildFlavorで生成したAPKをDeployGateにアップロードできる
origin
の向き先は上の項目で設定したrepository_remote_pathの値
# origin masterのuploadDeployGateDebugコマンドを実行
@lay_bot deploygate upload -
origin masterのAPKを作るだけだったらこれだけでいける
BuildFalvorは上で設定したdeploygate_default_flavorが利用される
ハイフンが最後に付いてるのは単純にbotの起動ルールに何らかのオプションもらうようにしてるからで、
気が向いたらオプション無しでも起動できるように修正する。
他の人のブランチからDeployGateにアップロードする
# レイが管理してるgitに参照先を追加してやる必要がある
@lay_bot repository remote add hoge git@github.com:fuga/piyo.git
# ブランチと向き先をオプションで指定してやる
@lay_bot deploygate upload -remote hoge -branch {:対象のbranch}
BuildFlavorを指定してDeployGateにアップロードする
@lay_bot deploygate upload -flavor {:対象のBuilFlavor}
タグを指定してDeployGateにアップロードする
@lay_bot deploygate upload -branch tags/refs/{:タグの名前}
コマンドは日本語の方が企画やデザイナーさんにとっては楽じゃね!?みたいなのはありそう。
一番の目的である環境構築を企画・デザイナーさんがやらなくて良いとこはクリアできてるのと、
今のチームではこれくらいであれば普通に覚えて使ってもらえるので今回は良かった。
結果
APKが簡単に作れるようになったので、必要に応じた動作確認がやりやすくなった。
新規機能を企画やデザイナーの人達にいち早く触ってもらうことで、認識合わせやリリースまでの品質向上に役立てていきたい。
今後の予定
hubot-scriptsで機能を切り出す
今のままだとDeployGateだったり、Android開発に特化してしまっているので幅広い開発に使えるような改修を加えたい。アプリケーション開発支援botだしね
なのでDeployGateでのAPKアップロード機能はhubot-scriptsに切りだして、TestFairyが利用されているプロダクトなどの環境の違う場合でも対応できるようにしたい。
感想
hubotによるbot開発は思ったより簡単で良かった。あと楽しい。
現状オプションの入力値のチェックなどは厳密ではないので、すべての人は善の人であることを期待して運用しましょう!後々対応するかも。
何か便利そうな機能要望あればissueにて随時検討。