大量のテストの並列処理で開発を効率化出版社向けビューワーソフトの価値向上につなげる
高機能マンガビューワー「GigaViewer」をOEM提供
創業以来、一般の利用者がコンテンツを発信し、流通させるUGC(User Generated Contents)サービスを一貫して提供し続けているはてな。ブログサービスの「はてなブログ」や、ソーシャルブックマークサービスの「はてなブックマーク」など、BtoCのコンテンツプラットフォームサービスを提供することで成長を続けてきた。
また現在は、BtoCサービスで培った技術力を生かして多様なBtoBサービスも展開している。「GigaViewer」はその1つだ。
「GigaViewer」は、マンガサービスを運営する出版社向けに提供するビューワーソフト。Web版の「GigaViewer for Web」、アプリ版の「GigaViewer for Apps」があり、これまで10社以上にOEMで提供している。
このソフトウエアの開発に当たり、はてなの「GigaViewer for Apps」の担当チームでは 開発スピードのさらなる向上に力を注いでいるという。「新機能の開発やサービスの改善をアジャイルに行うことで、出版社様、およびその先にいるエンドユーザーに新たな価値を提供し続けることができます。ひいてはそれが当社のビジネス成長につながると考えています」と同社の池田 翔氏は語る。
トライアルでは20~30%の時間短縮を確認
効率的なソフトウエア開発を実現するために、同社が長年、実践してきたのがCI/CDだ。BtoC/BtoBサービスから社内システムの開発まで、あらゆる現場にとって欠かせないアプローチの1つになっていた。
「GigaViewer for Apps」の開発では、Android、iOSのほか、出版社ごとのニーズなどに対応しつつ、カスタマイズやサービスの改善を繰り返す必要がある。日常的に大量のビルド、テスト、デプロイが発生し、この工程を効率化する上でCI/CDは不可欠だった。
「しかし、開発チームの体制が拡大する中で、従来のCI/CD環境では不十分になりつつありました。テストの並列数を増やすには、どうしても追加のコストがかかってしまう状態になっていたのです」と池田氏は振り返る。並列数を抑えた結果、実行待ちが多数発生し、テストプロセスが遅延しがちだった。
そこで同社が、「GigaViewer for Apps」のために新たに採用したのがクラウド版のCircleCIだ。
「並列数の上限に余裕があるプランがあり、これならコストを許容範囲内に納められると感じました。また日本語のドキュメントやサポートが充実していたことも、移行に当たっての安心感につながりました」と池田氏は振り返る。
検討時にはトライアルも実施。ここで、十分なCI/CDパイプラインの並列数を確保できること、および個々のビルド、テストも高速化できることがわかったという。具体的には、以前よりも20~30%程度の時間短縮が可能になったプロジェクトもあった。またキャッシュをチューニングしたジョブでは、従来の半分ほどの時間で実行できたケースもあったという。
CircleCIフォーラムでの素早いレスポンスも評価
こうして同社は、「GigaViewer for Apps」をはじめとするモバイルアプリの開発チームでCircleCIを導入。課題だったビルドやテストの待ち行列を解消し、エンジニアが開発作業に集中しやすくすることで、開発生産性の向上につなげている。もちろん、それまで使ってきたツールとは仕様が異なるため、利用手順の変更も一部で発生したが、充実したドキュメントを活用することで問題なく移行できたという。
「例えば、GigaViewer for Appsはその特性上、提供先となる出版社様ごとにカスタマイズを施す必要があります。CircleCI上で個々のプロジェクトをどう扱い、開発を進めるべきか、当初はわかりませんでしたが、モノレポ対応のセットアップ・ワークフロー、パスフィルタリングなどの機能を活用することで従来同様の柔軟な管理が実現できています」(池田氏)
加えて、このモノレポ対応のセットアップ・ワークフロー機能は、開発作業の効率化にも貢献している。
「単一のGitHubのリポジトリの中でiOS版とAndroid版の両方のコードを管理するとともに、iOS版の1つのコードから複数パターンのビルドやデプロイを自動で実行するといったことが可能です。効率的かつ機動的なアプリ開発が実現できるようになりました」と池田氏は満足感を示す。
CircleCIのサポートやフォーラムも積極的に活用。質問への迅速・的確な対応のほか、発見したエラーをフォーラムに書き込んだ際、素早いレスポンスがあったことを評価している。「Xcodeの最新版で開発する際、CircleCIが動作しない不具合を発見してフォーラムに書き込みました。そうしたところ、翌日には修正した旨の連絡がありました。有償サポートだけでなく、フォーラムでもこのような対応をしてくれるのはユーザーとしてありがたいですね」と池田氏は話す。
CircleCIの活用レベルをさらに高めていく
社会全体でIT人材が慢性的に不足している中、はてなにとっても開発メンバーの増員は簡単なことではない。既存顧客、およびその先のエンドユーザーから高い評価を得て、新規顧客の獲得につなげるには、人手に頼らず、「仕組み」を整備することで開発効率を高める必要があるだろう。
「GigaViewerの開発チームにおいても、既存サービスを改善したり、新たなアイデアを実装したりする際の仮説検証サイクルを、より高速に回せるようにしていく必要があります。その際にビルドやテスト、デプロイのプロセスがボトルネックになるのは避けたい。今後も、CircleCIの使いこなしのレベルを高めていきたいと思います」と池田氏は強調する。
現時点でCircleCIを利用しているのはモバイルアプリの開発チームにとどまっているが、CI/CDを前提とした開発カルチャーそのものは全社に根付いており、多くの知見も備わっている。
CI/CDツールの移行をきっかけに、モバイルアプリ開発の開発プロセスの効率化、開発生産性向上を実現したはてな。今後も、多くの開発現場がそのメリットを享受していくことだろう。
「CircleCIではビルドごとにどのような性能のマシンを使うかを選択できます。」
池田 翔 氏 | アプリケーションエンジニア | 株式会社はてな
株式会社はてなについて
株式会社はてな 公式HP:https://hatena.co.jp/ 「『知る』『つながる』『表現する』で新しい体験を提供し、人の生活を豊かにする」をミッションとして、様々なインターネットサービスを提供する。BtoCサービスに加えて、近年はBtoBサービスも拡大中。