新春特別企画

Webhookを活用した開発支援の広がり

この記事を読むのに必要な時間:およそ 3 分

あけましておめでとうごさいます。クックパッド株式会社の松尾です。テストエンジニアしています。

先日,私はアプリ開発の品質底上げ施策をWebhooksでBotが支援する世界というブログを投稿しました。そのブログでは,モバイルアプリ開発における品質の底上げを行った施策について書きました。そこでは,施策を効率的に実施するために行った,GitHubのWebhookとBotを使いプログラム開発を支援することを話しました。

この記事では,WebhookとBotを組み合わせるという話題を中心にまとめます。事例として,クックパッドにおいて取り組んだ内容を紹介します。最後に,今後はWebhookを中心に自分たちの開発プロセスに沿って様々なサービスを組み合わせられることに触れて,さらには今後の展望として開発環境がWebサービスとして広がることを話します。

全体を通して,Webサービスを使った開発の流れと,連携のためにWebhookを使い自分たちの開発プロセスに沿ってサービスをつなげる方法を知ることができます。

GitHubを利用したプログラム開発

GitHubを利用した開発の広がり

GitHubを利用した開発が広がり,Pull Request(以下,PR)を中心とした開発スタイルを広く見るようになりました。GitHubを使ったソースコードの運用形態としてGitHub Flowがあります。GitHubを使った運用では,開発者はだいたいは以下の流れでmasterに修正を取り込むことが多いです。

画像

GitHubに統合されたサービスによる開発支援

GitHubの広がりに合わせて,GitHubと連携する様々なツールが登場し,同様に広く使われるようになりました。例えば,継続的インテグレーションツールであるTravis CIによるサービスがあります。CIツールであるTravis CIとGitHubを組み合わせることで,以下のような開発プロセスを運用することができます。

画像

ここでは,開発者がPRを出した修正に対してTravis CIがそのPRに対してなんらかの処理を行い,その処理が正常に終了したら開発者がmasterに修正を取り込むことができます。Travis CIが行う処理は,テストコードが用意されているようであればテストを実施させることも,任意のツールへの通知することも可能です。このように,GitHubに統合されたサービスによりプログラム開発が支援されます。

Webhookの広がりと,ツールやサービスの統合

最近,様々なサービスにおいてWebhookによる通知サービスが提供されるようになってきました。以前より,トラックバックやコミットプッシュのように,任意の相手に通知を出すという仕組みは存在していました。その仕組みがHTTPリクエストとして汎用化されたものがWebhookと呼ばれます。GitHubはもちろんのこと,Crashlytics(現在はFabricに統合されている)のような不具合集計サービスにおいても提供されるようになりました。

Webhookを利用することで,先ほどのTravis CIのようにあらかじめ統合されているサービスだけでなく,自分たちでWebhookを受信して処理するWebサーバを用意することで独自の処理連携を実現できます。Web APIも合わせて利用すると,様々なWebサービスを,自分たちの期待する形で統合していくことが可能になってきます。

WebhookとBotを活用した開発支援の事例:クックパッド

アプリ開発の品質底上げ施策をWebhooksでBotが支援する世界の事例を紹介します。私たちの開発プロセスにWebhookを契機として処理を行うBotを参加させ,プログラム開発を支援させるという内容です。

Botとは

Botとは,入力に対して人の代わりに作業を行うようプログラムされた処理系の総称です。Botと聞くとWeb crawlerであるGooglebotのような存在を想像する人も多いと思いますが,以降に出てくるBotという言葉は前者の意味で用います。

Botは,単に何らかの入力を契機に処理を実施するだけです。その契機はcronによるプロセスの実行であったり,チャットサービスを介した入力,そして今回着目しているWebhookなど多岐に渡ります。様々な手段でBotへ契機を与えられるため,Botは自分たちの望むサービスやツールをつなぐツールとして活用できます。

モバイル・ファーストへの取り組み

クックパッドでは,2014年に『モバイル・ファースト』への取り組みに力を入れ始めました。これにより,組織的にモバイルアプリやモバイルアプリを使ったサービス開発に力を入れることになりました。これは,モバイル端末を利用してサービスを使用するユーザの増加が背景にあります。

クックパッドの開発者の多くはWebアプリケーション開発に対する知識は豊富でしたが,モバイルアプリ開発に対する知識は一部エンジニアのみが持つ状態でした。モバイル・ファースト以前は,モバイルアプリ開発においてもAndroid・iOS共に数人のエンジニアのみが開発を行う体制をとっていました。モバイル・ファーストの取り組み以降,Webアプリケーションを中心に開発していたエンジニアがモバイルアプリ開発に参加し始め,合わせて10人を超えるエンジニアがモバイルアプリの開発に参加する状態になりました。

著者プロフィール

松尾和昭(まつおかずあき)

1986年生まれ。山口県柳井市出身。現在,クックパッド株式会社に所属。大学院卒業の頃よりソフトウェアテストを学び続け,インフラ・サーバ構築やアプリ開発に触れる。最近はテストエンジニアとしてモバイルアプリケーション開発を主な対象にテスト,テスト自動化,開発プロセス/体制の改善などを中心に品質向上を支援する活動に従事。

Twitter:@Kazu_cocoa

コメント

コメントの記入