開発のボトルネックはどこだ?―迷えるマネージャのためのプロジェクト管理ツール再入門

第8回SUUMOスマホサイトの開発裏話③ HipChatを軸にした自動化への取り組み

不動産/住宅情報を簡単に検索できるサービス「SUUMO」の開発に携わるリクルート住まいカンパニーの吉田拓真氏写真1と山下芳生氏写真2は、開発効率の向上を目指してさまざまな取り組みを進めています。今回は、中でも大きな鍵となる「自動化」についてお話を伺いました。

多数のツールをHipChatで連携

――開発プロジェクトにおける生産性の向上は、多くの企業が課題としてとらえています。SUUMOのスマホサイト開発では、生産性を高めるためにどのような工夫をされているのでしょうか。

吉田氏:大きなポイントは自動化です。開発/運用/保守といった業務の中で、開発というクリエイティブな時間を増やすためには、やはり運用や保守の時間を削減しなければなりません。そのために自動化に取り組んだのです。

――自動化を進めるにあたって障壁はありましたか。
写真1 吉田拓真氏
写真1 吉田拓真氏

吉田氏:1つめは技術的な問題です。社内に自動化の事例は少なく、言語も普段使用しているPHPではなくJavaやCoffeeScriptを使わなければならなかったり、セキュリティの担保や保守・運用についても考慮する必要があったため、いろいろと苦労しました。ここは専任のチームを立ち上げ、自動化を推進するという形で解決しました。

2つめは運用の問題です。自動化した後の話ですが、イレギュラーが発生したときにすぐに対応できなかったりして、結局旧来の手法を回すということが多々ありました。根気強く小さな改良を加えながら、少しずつ自動化を進めましたが、こうした地味な作業の積み重ねが大変だったなと印象に残っています。

――保守作業の効率化や自動化を進めるために、どのようなツールが使われているのでしょうか。

吉田氏:基本的にはHipChatとJenkinsを中心に、いろいろなツールを使っています。コードの静的解析にSonarQube、自動テストを実現するRemote TestKit、リソースモニタリングのZabbixといったツールが挙げられます。既存のツールや、自動化を進めるにあたって新規に作成したツールもすべて、Hubotをベースに作られたボットを使って、チャット上から操作が行えるようにしています。社内ではチャット(Chat)で保守作業(Ops)を行うことからChatOpsと呼んでいます図1⁠。

図1 自動化の全体像。コードの静的解析からテストの実施、リリース作業、サーバリソースのモニタリングなど、さまざまな作業がHipChatを起点として自動化されている
図1 自動化の全体像。コードの静的解析からテストの実施、リリース作業、サーバリソースのモニタリングなど、さまざまな作業がHipChatを起点として自動化されている

HipChatの導入効果と運用/保守作業の変化

――さまざまな作業の起点としてHipChatが使われているわけですね。

吉田氏:はい。開発に関わる重要な作業のすべてがチャットを中心に回るようになっています。具体的にはコードレビューが終わった後に開発・検品にリリースする作業、そしてEnd-to-End(E2E)テストを行い、サーバのリソースをモニタリングする作業、これらすべてがチャットで行えるようになっています図2⁠。

図2 チャットで実行するモニタリングの実例。サーバリソースの確認やリリース/テストの実行、各種開発に必要なコマンドはHipChatから実行している。これにより、作業履歴も見える化できる
図2 チャットで実行するモニタリングの実例。サーバリソースの確認やリリース/テストの実行、各種開発に必要なコマンドはHipChatから実行している。これにより、作業履歴も見える化できる
――HipChatを導入して、開発や運用/保守作業にどういった変化が生まれたのでしょうか。

吉田氏:以前より保守・運用作業のレベルが向上したという実感があります。ChatOpsを実した結果、日々の運用における小さな手間が省けたことで、以前よりもきめ細かく運用・保守作業が実施されるようになったと感じています。それとHipChatに情報が集約されるため、見逃しがあまりないこともポイントです。各アトラシアン製品と連携できるだけでなく、自分たちが好きなように通知をカスタマイズできる柔軟性があり、とくに通知時の宛先(メンション)を細かく設定できるのが便利ですね。必要な人だけに情報を届ける設定が簡単なのは大きなポイントだと思います。その結果、⁠HipChatでメンション付きのメッセージが届けば、自分にとってアクションが必要な重要な情報がある⁠とわかる状況を実現できました。

山下氏:リリースや開発作業への意識向上が見られたこともHipChatの導入効果だと考えています。とくにSUUMOのスマホサイトはリリース回数が多いため、その自動化だけでも年間約360時間以上の削減につながっています。

――エンジニア同士のコミュニケーションにもHipChatは使われているのでしょうか。
写真2 山下芳生氏
写真2 山下芳生氏

山下氏:社内や開発チームごとの情報共有にもHipChatを活用しています。バグ報告や実装に関わる質問、コードレビューやQAのメンバーへの作業依頼などです。また「今日は○○さんが休みです」⁠お菓子が入荷しました」など、軽い情報共有や雑談もHipChatで行っています。わざわざメールを使うまでもない、ちょっとした連絡が気軽に取れるのはいいですね。開発コミュニケーションの観点で言えば、ChatOpsと併用することで、ほかの人が何をやっているのかが見えるため、今まで見えづらかった作業が透明化し、属人化していた保守運用業務が誰でもできるようになりました。さらにチャットの履歴がそのまま保守作業の履歴になるので、チャット起点でトラブル対応などのコミュニケーションが可能になったことも大きな変化です。

技術的負債を解消するためにコードチェックまで自動化

――CIツールとしてJenkinsを使われているとのことですが、具体的にどのように利用されているのでしょうか。

吉田氏:主な用途として⁠技術的負債⁠の見える化に利用しています。技術的負債とは、設計のまずさやコーディング規約に反するコードなど開発を妨げるような課題の総称です。それらが生まれる背景には、一時的な開発速度を求めるため保守性を捨てて実装することなどが挙げられます。借金は放置すると雪だるま式に増えていきますが、技術的負債も同じで、年数が経てば経つほど加速度的に大きくなっていきます。すると当然、開発速度もどんどん遅くなりますから、結果としてカスタマーの期待に応えるまでの時間が延びていくことになります図3⁠。この技術的負債を放置すると、数年後には手が付けられなくなってしまいます。そこで、技術的負債を減らす努力が必要になるわけです。技術的負債を減らすためには、まず見える化が必要ですが、ここで利用しているのがJenkinsとSonarQubeです。これらを利用することで、コーディングルールの違反数や好ましくないコードを集計・定量化し、技術的負債の大きさを把握できるようにしています。

図3 技術的負債を放置したまま時間が経てば、プロダクトの改修にかかる時間も長くなり、結果としてカスタマーへの価値の提供が遅くなる
図3 技術的負債を放置したまま時間が経てば、プロダクトの改修にかかる時間も長くなり、結果としてカスタマーへの価値の提供が遅くなる

山下氏:これを導入したことで、リリース後に担当チームが技術的負債をどの程度増やしたのか、あるいは減らしたのかをモニタリングする動きが生まれました。その結果、以前よりもソースコードの品質をできる限りきれいに保とうとするような取り組みが開発メンバー内で自主的に行われるようになりました。

吉田氏:Jenkinsの活用はまだあります。自動テストとページ表示速度のモニタリングです。前者はRemote TestKitというASPを用いることで、エミュレータではなく実機を用いた自動テストを実現しています。後者は、独自のしくみを用いて主要ページの表示速度を毎日集計しています。このようにJenkinsは幅広い応用が利き、開発効率化を目指すうえで欠かせないツールになっています。

SUUMOスマホサイトの開発環境のこれから

――JenkinsとJIRAは連携させているのでしょうか。

山下氏:JIRAのチケットに工程ごとの予実情報を入力しているのですが、これをJIRAのREST APIを用いてJenkinsで取得&集計しています。集計後のデータはTSVになっていて、以前から使っている工程管理用Excelにそのまま取り込めるようにしています。このように、JIRAは少し工夫することで既存のツールとの連携もできるため、非常に重宝しています。

――SUUMOのスマホサイトの開発環境に対して、今後取り組んでみたいと考えていることがあれば教えてください。

吉田氏:CIをもっと洗練&活用したいと考えています。たとえば、Pull-request時にSonarQubeの解析結果をコメントさせたり、簡単なアクセスログの解析・集計に活用することも検討しています。

山下氏:実機を用いた端末互換性チェックも実現したいと考えています。Remote TestKitを用いて、デバイス×OS×ブラウザといった組み合わせによる互換性チェックを自動的かつ網羅的に実現できれば、テストの負担をかなり軽減できるのではと見込んでいます。

吉田氏:JIRA Captureも試してみたいツールです。QAによる検品の際、何か問題があるとスクリーンショットを全部やりとりする必要がありますが、その作業がスムーズに行えそうです。

――表計算ソフトを使って課題管理や工程管理を行うなど、旧来のやり方で開発しているプロジェクトはまだまだ多いと思います。そうした人たちがJIRAなどを使い始める際、どういった点に注意すべきでしょうか。

吉田氏:まず、ツールを導入することはあくまで手段であって、目的ではないことに注意する必要があります。我々はアトラシアン製品を導入するときに、最初に開発としてどうありたいかの理想像を描き、新しいツールを手段として何を実現したいのかまで決めたうえで導入を行いました。また旧来のExcelを使っているからダメということはありません。Excelを使うことで発生するムダや作業者ごとのムラが大きすぎるような課題感のときに、はじめて移行を考えればよいと思っています。また移行に関しても、我々のようにJIRAのAPIとExcelをハイブリッドに組み合わせるだけでも十分だったりするので、新ツールへ移行するときのバランスは考えておくとよいと思います。とはいえ、理想は1日では実現できないので、小さく始めてノウハウや成功事例を作り、そのあとに大きく展開するという形でやれば、リスクもコストも抑えつつ導入できるかなと思います。

3回にわたってSUUMOのスマホサイトにおける開発環境についてお話を伺ってきました。開発チームのパフォーマンスを高め、より良いサービスを実現するために新たな開発手法に積極的にチャレンジする、それを支援するJIRAをはじめとしたツールを活用し、自動化に取り組む姿勢は大いに参考になるでしょう。

Atlassian Expertsの盾には
アジアパシフィック市場において
トップセラーを証す刻印が…
Atlassian Expertsの盾にはアジアパシフィック市場においてトップセラーを証す刻印が…

日本だけでなく、アジア圏でもアトラシアン製品販売のトップエキスパートであるリックソフトのWebサイトでは、各アトラシアン製品の体験版を提供しているほか、アトラシアン製品専用のコミュニティも運営しています。まずはアクセスしてみては!

リックソフトJIRAデモ環境
https://www.ricksoft.jp/demo/

おすすめ記事

記事・ニュース一覧