Web解析ツールの開発を加速させる3つのサービス連携 | SiTest (サイテスト) ブログ

メニューボタン閉じるボタン

Web解析ツールの開発を加速させる3つのサービス連携

前回の記事でエンジニアチームが日々使用しているWebサービスやツールをご紹介させていただきました(リンク)。主にプロジェクトやチームでのタスク管理系のツールのご紹介をさせていただいたのですが、それらのサービスはそのまま使用しているだけでなく、それぞれを自動的に連携させることにより、更に効率的に日々の業務を行えるような仕組みを構築しています。今回はそれらの仕組みの中から一部をご紹介させていただきます。

サービス同士を連携するには?

サービスの連携方法はいくつかあります。

  • ・もともと他サービスとの連携がサポートされている
  • ・サービス同士を連携させるサービスで連携する
  • ・連携部分を自分たちで作ってしまう

同じ会社で複数のサービスを提供されている場合は、連携出来ることが多いように思います。
新しいサービスを選定するときに、今使っているサービスとの親和性が高いかどうかも考慮したいところです。

まずはエンジニアチームがどんなサービスを連携に使っているかをご紹介させていただき、その後連携部分のご紹介をさせていただきます。

Jenkins + hubot

◆ Jenkins

logo-title
Jenkinsといえば代表的なCIツールの1つです。ご存じない方に少しだけ説明させていただきますが、定期的に(もしくは何かの動作をきっかけとして)予め登録しておいた動作(ジョブ)が実行されるツールです。
弊社では

  • ・ソースの取得〜javascriptビルド
  • ・ソースの取得〜javascriptビルド〜Dockerビルド〜dockerhubへのPush
  • ・ソースの取得〜テスト
  • ・不要なビルドイメージの削除
  • ・hubotの再起動

等のジョブを登録しています。
これらはもちろんJenkinsにブラウザでログインし、画面操作からジョブを実行することも可能ですが、他のツールと連携し動作せるようにしています。

◆ hubot

hubot とはgithub社製のbot作成フレームワークの1つです。chatツールに常駐し、特定のメッセージに反応して予め作成しておいた動作を行います。エンジニアチームではチーム内のチャットにSlackを導入しているので、今はSlackとhubotを連携しています。
このchatbotにはSlack上では「k-taro」という名前がついています。関西を代表するとある人形からインスパイアされているのですが、固有名があると親近感が湧いてきますね。今ではk-taroもエンジニアチームの立派な一員です。

お待たせしました ここから連携のお話です。
*Jenkins* と *hubot* を使ってエンジニアチームがどのようなサービス連携で効率化しているのかをご紹介します。

◆ jenkins + hubot + Slack

Slackから 

@k-taro: build [プロジェクト名]:[gitブランチ名] [dockerタグ名]

と送信すると、hubotがJenkinsに対して

  • ・最新ソースの取得
  • ・必要なライブラリの取得
  • ・ソースコードのビルド
  • ・Dockerビルド
  • ・dockerhubへPUSH

までを行うジョブを動作させることができます。

Blog用画像_1
図1:hubotからソースをビルド

便利ですね。
hubotが導入されるまでエンジニアのPC内でビルドを行っており、PCによってはエラーとなってしまうケースが報告されていました。Jenkinsにビルド環境を統一することにより、そのようなエラー報告がなくなり、またSlackを通してビルドすることで、チーム全員でビルドの状況を共有することができます。

◆ hubot + Bitbucket + Slack

Bitbucketに関しては前回の記事でご紹介させていただきましたが、普段はプルリクエスト機能を使って開発を進めています。
プルリクエストが作成された後、ソースコードレビューを行い、元のブランチにマージするのですが、マージの動作をフックしていろいろな動作が連携されるようになっています。

フック①

  • ・hubotへマージされたことを通知
  • ・hubotがSlack用の通知に変換し、Slackにマージされたことを通知

フック②

  • ・Jenkinsが自動的に最新のソースコードを取得
  • ・ソースコードのビルド
  • ・テストの実行

Blog用画像_2
図2:BitbucketからSlackへ通知

Bitbucketのプルリクエスト画面からボタン一つでマージできますので、ボタン一つでソースコードのマージ+上記の動作 を行ってくれる事になります。
そう考えるとなんかすごいボタンに感じますね。
本来手動で行っていた作業を自動的に行うようになったことで、かなり効率化に繋がったと言えます。効率化で余った時間はクリエイティブな作業に集中でき、よりシステムが発展していくということに繋がります。

Zapier + Bitbucket + Trello

◆Zapier

zapier-logo

Zapier は今回の記事のテーマでもありますアプリケーションの連携に特化したサービスです。500以上のアプリケーションが連携可能で、無料でも一部制限付きですが使用することが出来ます。類似サービスにIFTTTというのがあります。どちらも面白い価値を生み出すサービスだと思いますし、エンジニアとしてはいろいろな妄想が膨らむサービスの1つです。

◆Zapier + Bitbucket + Trello

弊社ではgitのcommitコメント内にTrelloのカードIDを入れておくと、BitbucketへのPush時にTrelloの対象チケットのコメント欄にCommitへのリンクが追記されるようになっています。

Blog用画像_3
図3:Zapierを使ったBitbucketからTrelloコメントへの追記

これにより、Trelloを見るだけでこのチケットの対応したコミットがわかるようになっており、後から振り返りやすくなります。
コミットコメントにカードIDを追記するという一手間が必要ですが、Trelloに情報を集約できるのでとても便利です。活躍する機会はそう多くはないですが、いざという時に簡単にわかるので探す手間が省け、結果的に効率的になると思います。

まとめ

今回はサービス同士の連携というテーマでした。世の中にはいろいろなサービスが存在しており、それ1つでも大変便利ですが、自分達の業務に合った運用を行うためにサービス同士が連携して自動的に動作するように環境を整えてしまうと、より効率化され、自分達はクリエイティブな作業に集中することが出来ますね。次回は SiTest のシステムを動かすためのサービスをご紹介したいと思います。