株式会社サイバーエージェント 内部監査室様 事例紹介

デプロイ作業を劇的に改善、アプリのバージョン管理も容易にkintoneでの業務アプリ開発には欠かせない「gusuku Deploit」

【課題】多くの手間が必要なデプロイ、kintoneアプリのバージョン管理も必要に

1998年の創業以来「21世紀を代表する会社を創る」ことをビジョンに据え、インターネット広告事業やアメーバブログなどのメディア事業、スマートフォンゲームを手掛けるゲーム事業、投資育成事業など、幅広い事業を展開している株式会社サイバーエージェント。広告事業やゲーム事業で収益を拡大しながら中長期的な柱としてメディア事業に投資を進めており、2016年にはスマートフォン向け無料動画サービス「AbemaTV」を開始し、開局わずか3か月で累計600万ダウンロードを突破。インターネットテレビ局という新たなメディアが多くの消費者から支持を集めており、ベンチャースピリッツを持ちながら新たな事業領域の創造にも積極的に取り組んでいます。様々な事業形態に応じて会社を設立している同社では、今ではグループ全体で70社を超える規模にまで拡大しており、迅速な事業立ち上げとグループ全体でのガバナンス強化を目的にサイボウズ株式会社が提供する業務アプリ作成プラットフォーム「kintone」を導入。kintoneをベースに「DOX」と呼ばれるバックエンドシステムを構築することで、販売管理や購買管理などの仕組みを各グループ会社に提供しています。

このバックエンド業務の共通化を推し進めている内部監査室では、kintoneをベースに「ガバナンスコックピット」と呼ばれるリスク管理のプラットフォームを構築しており、各事業におけるリスク情報を自動的に収集し、ガバナンス強化に向けた様々な取り組みを実施しています。DOXを含めて数多くの業務アプリがkintoneによって構築されており、アプリ総数はおよそ1800を超えるほど。その過程で課題になっていたのが、グループ会社に業務アプリをデプロイする作業に多くの手間がかかっていたことでした。また、アプリごとにバックアップを兼ねたバージョン管理を行う必要があったと内部監査室 マネージャー 鹿倉 良太氏は当時を振り返ります。「ガバナンス強化のためには、アプリのコモデティ化が必要です。そこで、バックエンド業務で利用するアプリの共通化を図ってきました。ただし、管理者権限の一部をグループ会社の担当に委譲し、多少のカスタマイズも許可していたのです。当然ながら、何かあればすぐに戻せる環境を用意しておかねばならず、アプリのバックアップを兼ねたバージョン管理が必須でした」と語るのは同室 村上 銀之心氏です。

【選定のポイント】欲しかった機能が備わったgusuku Deploit

しかし、kintoneの基本機能ではアプリのバージョン管理が難しいばかりか、DOXの基本アプリをグループ会社に展開する際には、手作業でデプロイ作業を行う必要がありました。「複雑でないデプロイ作業でも数時間は必要で、新たな環境に移設するとなるとデータ移行も含めて1週間あまりの時間を要していたことも」と鹿倉氏は語ります。「デプロイ作業がスムーズにいけば問題ないのですが、手作業ではミスも起こりやすく、デプロイ後も担当者自身が目で確認するなどの作業が発生していました」と鹿倉氏。kintoneの設計情報とともにJavaScriptで書かれたプログラムを個別にバックアップするなど手作業による運用が続いており、もっと効率的にデプロイできる方法がないか模索していたといいます。

その過程で出会ったのが、アールスリーインスティテュート(以下、アールスリー)が提供する、kintoneアプリの開発を強力にサポートするプラットフォームサービス「gusuku(グスク)」でした。「kintoneのユーザ会でgusukuの話を聞きつけ、我々が求めていた機能が手軽にサービス利用できることを知ったのです。まさに“欲しかったのはこういうもの”が体現されたサービスでした」と鹿倉氏。また、これまでプログラムの改修を行う際には、本番環境の設計情報やJavaScriptで書かれたプログラム、フォームなどの情報を開発用に用意したスペースにいったんコピーし、データも手作業で入れ替えたうえでプログラム改修を実施。改修が終わった段階で、本番環境に手作業で入れていくという手間のかかる作業が必要だったとのこと。「gusukuのステージング機能を使えば、開発環境と本番環境をそれぞれ用意しておくことができ、ステージング作業が容易にできるという点も魅力的だと考えたのです」と村上氏。そこですぐにコンタクトを取ったうえでgusukuの機能について詳細を確認し、実際に自社の運用に適しているかどうかのテストを担当エンジニアに依頼。自社の課題に応えることがわかったことで、さっそくサービスを導入することになったのです。

【運用と効果】デプロイ作業を大きく効率化、今や欠かせない存在に

「現在はgusukuのエンタープライズプランを利用し、ライセンス制限ぎりぎりの300近くのアプリをgusuku上で管理しています。各グループ会社への横展開はkintoneの標準機能であるスペースのコピー機能を活用し、プログラムの修正・追加などはgusukuを用いて開発環境から本番環境へと容易にステージングできるようになっています。安心してデプロイすることができるようになりました。デプロイ作業の大幅な効率化にもgusukuが寄与しており、kintoneでの開発にはなくてはならない存在になっている」と鹿倉氏は評価します。「我々はグループ会社に基本のバックエンドの仕組みをセットで展開できるようにしており、その数は増殖していく傾向にあります。事業規模が拡大する中で、gusukuで管理できるアプリ数をさらに増やしていきたい」と鹿倉氏は語ります。また、村上氏が高く評価するのは、他アプリを参照して情報が取得できるkintoneのルックアップ機能がきちんとコピーされている点だと力説します。「スペース内で完結しているルックアップを別のスペースにコピーしても、コピー先のアプリ内できちんと成立させることができているのにはとても驚きました。ルックアップするアプリIDを取得するAPIをJavaScript内に仕込んでおけば、プログラム内のアプリIDをコピーするたびにわざわざJavaScriptを書き換える必要がありません」。

 さらに、kintoneアプリの設計情報をExcel形式で出力できる機能も村上氏は重宝していると語ります。「JavaScript記述時にはフィールドコードの情報が必要ですが、以前は覚えておくか、その都度フィールドコードを確認する必要がありました。gusukuを使えば設計情報が一括でダウンロードでき、それを見ながらプログラム作成できます。開発する人によってフィールドコード名がばらばらに設定されているため、設計情報がすぐに確認できるのはとてもありがたい」と村上氏は評価します。アールスリーに対しては、「UI部分の改善要望を出したことがあるのですが、お願いしてわずか1日あまりで対応いただくことができました。こちらからの要望はもちろん、質問に対するレスポンスにも十分満足しています」と村上氏。実は、gusukuを利用している一番のユーザが、開発しているアールスリー自身だということが対応力の高さに大きく起因していると鹿倉氏は考えています。「アールスリー自体が我々と立場が一緒で、同じ悩みを共有していただけます。gusukuはあまり機能の垣根がなく、必要だと思う機能はどんどん盛り込んでもらえています」と語ります。

【今後の展望】ガバナンス上必須のサービス、新たな機能追加にも期待

すでに同社のガバナンス上、gusukuは欠かすことのできないサービスとなっており、今後も内部監査室のアクションと会社全体のアクションに合わせて増殖していくはずだと鹿倉氏は語ります。「定型化するアプリについては、基本的にgusukuが裏に備えているというのが標準的な構成です。gusukuで管理できていないアプリはバックアップも含めてリスクがある状態であり、それでは大規模な展開は難しく、大事な情報も入れることができません。ガバナンスを考えるうえでも、最低限必要な機能と位置付けているほど重要なサービス。我々にとってみれば、マストなサービスなのです」。また、現状ETLを経由してkintone上のデータをExcelに展開し、事業報告書などを経営層に提出していますが、gusukuが持っているExcel帳票プラグインなどを用いて直接報告書の作成ができるような環境にも興味があると鹿倉氏。また、現状はgusukuによる設計情報のバックアップとともにサイボウズスタートアップス株式会社が提供しているkBackupを利用している同社ですが、設計情報とデータ双方のバックアップを同時に行い、これまで以上に素早くデプロイできるような機能にも期待していると語ります。「生態系の同じようなサービスが数多くあり、マスター情報の共有はできる限りシンプルに行いたいと考えています。アプリの情報とともにマスター情報などのデータも一気にデプロイできるととてもありがたい。アプリ展開が終わっても時間がとれずにマスター設定がおろそかになるケースもあるため、デプロイが一気にできれば事業サイドですぐに使ってもらうことができます」。他にも、gusuku側でデータ連携機能を拡充してもらえるような要望もアールスリーに出しており、gusukuに対する要望は尽きないようです。「我々は言語が不要になればなるほどありがたい。手間を掛けず簡単に環境が整備できるのが我々の望みです」と鹿倉氏にgusukuに対する期待を語っていただきました。