SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

価値を生む開発に集中しつづける現場インタビュー(AD)

25名で550社・7万ユーザーの業務アプリを開発・サポートするチームスピリットのCI環境とプラットフォーム

価値を生む開発に集中しつづける現場インタビュー【第5回】

  • このエントリーをはてなブックマークに追加

 勤怠や経費などの入力をスムーズにし社員の生産性を高める業務アプリケーション「TeamSpirit」を開発・提供するチームスピリット。550社が導入し、7万ユーザーが利用するこのアプリを、同社では半年前まで開発7名、サポート10名で運営してきた。バージョンアップを年3回実施。個別問い合わせも多い分野であるのに、なぜ少人数で運営できるのか。同社の取締役技術担当 有本陽助氏とR&Dチーム 製品企画・品質管理担当 エンジニア 倉谷 彰氏にその理由を聞いた。

  • このエントリーをはてなブックマークに追加

本記事の目次 →シリーズの特集ページ

全ての顧客に同じ製品を提供して個別カスタマイズはなし。けれども高い満足度はなぜ?

――TeamSpiritとはどのようなアプリケーションなのですか?

倉谷:TeamSpiritは、Salesforceのプラットフォーム「Force.com[1]」上に構築した業務アプリケーションで、「ERPのフロントウェア」というコンセプトの下、勤怠・就業管理や経費精算、工数管理、電子稟議のためのデータ入力をスムーズにする機能を提供しています。入力されたデータはTeamSpiritで保管し、それからバックエンドにあるERPなどの基幹システムへ渡す仕組みです。

 業務間や外部サービスAPIと連携する機能も提供しています。たとえば最近、TeamSpiritの出張申請画面に、交通や宿泊のチケットを予約する機能を実装したのですが、裏ではJTBビジネストラベルソリューションズの出張手配サービス「J'sNAVI Jr.」のAPIにアクセスしています。また、申請ワークフローで上長から出張の承認が下りると、チケット代が経費精算のデータとして自動的に入力されるんです。そのほか、交通系電子マネーや法人クレジットカードの使用金額を、各サービスのAPI経由で取得して経費精算に回す機能ももっています。

TeamSpiritの出張手配機能はJTBビジネストラベルソリューションズの出張手配サービス「J'sNAVI Jr.」と連携
TeamSpiritの出張手配機能はJTBの出張手配サービス「J'sNAVI Jr.」と連携

――TeamSpiritから基幹システムへデータを渡す仕組みはどうしているんですか?

有本:CSV形式でTeamSpiritからデータを出力し、それを基幹システムに読み込ませるユーザーさんが多いです。Force.comのAPIからETLツールでデータを取り出し、基幹システムに渡すユーザーさんもいらっしゃいます。自動連携にしたいユーザーさんは、その仕組みの構築を別途システムインテグレータさんへ発注されていますね。弊社は、基幹システムへ入力するデータ作成を支援する機能に絞って、TeamSpiritを開発しています。

TeamSpiritのシステムイメージ
TeamSpiritのシステムイメージ

――こうした業務は企業ごとにルールや流儀が異なるように思います。カスタマイズの依頼は来ませんか?

有本:原則的に、個別カスタマイズはしないという方針なんです。同一のソフトウェアを全ユーザーさんに使っていただいています。といっても、全くカスタマイズできないわけではなく、Force.comの標準機能を使っていろいろカスタマイズできます。たとえば、Force.comはデータの入力規則を設定する機能を標準で提供していて、ユーザーさんは「この金額は何円以上でないといけない」といった入力規則を、Excelで数式を入力するような感じで設定できます。

倉谷:ユーザーさんにとっていいのは、TeamSpirit独自の方法ではなく、Force.com上で稼働するアプリケーション共通の方法で設定できる点です。TeamSpiritのために新たに設定方法を覚える必要がありません。つまり、Salesforceに慣れているユーザーさんであれば、ご自身で簡単に設定できるんです。

 我々にとっても、同様の機能を実装しなくて済むというメリットがあります。さらに、ユーザーさんが行った設定は保存され、TeamSpiritのバージョンアップがあっても引き続き適用されます。これもForce.comの機能で、私どものように少人数で運営しているベンダには大変ありがたいですね。

株式会社チームスピリット 取締役技術担当 有本 陽助氏
株式会社チームスピリット 取締役技術担当 有本陽助氏

有本:他にも、Force.comはワークフローやレポート出力といった業務アプリケーションの基本機能を標準で提供しており、TeamSpiritの開発工数を大きく削減してくれています。バージョンアップを一斉実行[2]する仕組みを、やはり標準で提供してくれているのも助かりますね。自前で作ろうとすると工数がかかりますし、仕組みなしではバージョンアップに毎回多くの人手がかかってしまいますから。

――バージョンアップはどれくらいの頻度で行っているのですか?

倉谷:メジャーバージョンアップを4か月に1度、パッチリリースを随時という感じです。メジャーバージョンアップはユーザーさんに適用のためのURLを通知し、クリックして実行してもらう形です。新機能を1~2個は入れるようにしています。一方、パッチリリースは不具合の修正なので、弊社で自動適用しています。パッチリリースの適用も、アプリケーションを一斉にバージョンアップするForce.comの仕組み(プッシュアップグレード)を使って簡単に実行できています。

[1]: セールスフォース・ドットコムが提供するWebアプリケーションプラットフォーム。開発者がサーバーやミドルウェアなどの環境構築を行う必要がなく、ブラウザ上で画面やデータベース、ワークフローなどを定義(あるいはそのソースコードをアップロード)すればアプリケーションが動作するため、インフラの構築・運用の手間がかからない。

[2]: Force.com上のアプリケーションは、ユーザー企業・部署ごとにインスタンスが立ち上がって稼働する。バージョンアップは、稼働中のアプリケーションインスタンスすべてに適用しなければならないが、Force.comはそれを実行する仕組みを提供しており、アプリケーション開発者が個別に用意する必要がない。

Force.comは「無料」で試せます!

 簡単なご登録ですぐにさわってみることができます。ご興味のある方はForce.comの下記ページから。

本記事の目次 →シリーズの特集ページ

550社・7万エンドユーザーのアプリをたった25名で開発・サポート

――ところで、TeamSpiritの開発やサポートはどのような体制で?

倉谷:現在、TeamSpiritは550社に導入いただき、7万人のエンドユーザーさんにご利用いただいていますが、サポート業務は10名で行っています。Force.com上で稼働するアプリケーションは、ユーザーさんから許可をいただけば、リモートアクセスで環境を確認したり設定を変えたりできます。説明も双方が画面を見ながら電話で行えます。10名でサポートができているのは、現地へ行かなくていいことが大きいです。そのほか、サポートチームではTeamSpirit新規導入のコンサルティングもやってます。

有本:Force.comならではメリットは開発面にもあります。まず、インフラ管理が不要です。弊社にはインフラ管理者が1人もいないんですよ。TeamSpiritの開発は、私と倉谷が所属するR&Dチームで行っているのですが、所属する15名全員がTeamSpiritの開発に集中できています。

――Force.comの機能があってのこととはいえ、その少人数で運営できているのはすごいですね。

倉谷:でも、現在の開発環境を構築するまで、テストを担当していた私は辛かったです(笑)。単体テストを実行する仕組みは元々Force.comにありますが、そこから先のテストは私が手作業でやってました。特にリグレッションテストは2年ぐらい前からずっと辛かった。もう、あまりに辛くて、CI(継続的インテグレーション)の環境を1人で整えました。ただ、品質の確保にも関わることなので、1年ほど前から経営陣も「その辺りはチームのメンバーを巻き込んでちゃんとやらないとね」と支援してくれています。今は、Force.comの本番環境へデプロイする前に、CIによるテストをパスすることが徹底されています。

株式会社チームスピリット R&Dチーム 製品企画・品質管理担当 エンジニア 倉谷 彰氏
株式会社チームスピリット R&Dチーム 製品企画・品質管理担当 エンジニア 倉谷 彰氏

Jenkins+GitHub+Docker+SeleniumでSalesforce向けCI環境を構築

――CI環境! 具体的にはどのような構成になっているんですか?

倉谷:この図のような感じです。Jenkinsを使って、GitHubなどのリポジトリからForce.comのソースコードをチェックアウトしてきて、テスト用の開発組織にデプロイし、テストを自動的に回しています。画面操作もSeleniumで毎日テストを自動実行しています[3]

 テストの辛さもありましたが、アジャイル開発を行っているので、CI環境を構築することは自然の流れでした。セキュリティの静的解析や品質を担保するためのテスト自動実行とテストカバレッジの計測は、割と早い時期からできるようにしていました。今は2時間に1回、テストコードを実行するようにしており、テストカバレッジが75%を下回るとChatter(社内SNS)に通知が来るようにしています。

TeamSpiritのCI環境
TeamSpiritのCI環境

――CI環境からForce.comへデプロイする仕組みはどうしているのですか?

倉谷:ここは開発メンバーそれぞれですね。Eclipse(Force.com IDE)から行う人もいますし、Force.comマイグレーションツールっていう、Apache Antベースのコマンドラインツールで上げるっていう人もいます。

――バージョン管理はどのように?

倉谷:メジャーバージョンごとにブランチを切って管理しています。新機能開発やバグ修正はmasterブランチで行っていて、適用すると判断した変更はバージョンごとにまとめて更新パッケージにします。各バージョンのブランチに更新パッケージの内容をマージすることで変更が適用されます。ただし、動作が変わるような変更は、ユーザーさんの作業に影響を与える恐れがあるので、適用をオンに設定しないと有効化されないようにしてあります。

[3]: セールスフォース・ドットコムのイベント「Salesforce World Tour Tokyo 2015」で、倉谷氏が行ったセッション「2年で400%成長、50,000ID突破の業務アプリ『TeamSpirit』を支える継続的インテグレーション」のスライド資料がSlideShareにアップされている。倉谷氏によるCI環境(Apexコードのユニットテスト、静的解析、スモークテスト/シナリオテスト、機能テスト、およびChatOps)の構築方法や使用したツールなどがまとめられた貴重な資料だ。

Force.comは「無料」で試せます!

 簡単なご登録ですぐにさわってみることができます。ご興味のある方はForce.comの下記ページから。

本記事の目次 →シリーズの特集ページ

さらなる拡張性・柔軟性のために全面的な改修・リファクタリングを計画中

――アジャイル開発を行っているとのことですが、開発プロセスには何を?

倉谷:「スクラム」です。スプリントを2週間ぐらいで回しています。ビジネスモデルを含めて、その辺りはセールスフォース・ドットコムさんを真似ています。開発方法論自体もほぼ似たようなものを使っていますし、アプリケーションプログラムをワンソースで管理したり、アイデアを集めてきて製品に反映したり、バージョンアップもタイミングを合わせてForce.comのバージョンアップの1か月後に設定しています。サブスクリプションで販売するというビジネスモデルも、セールスフォース・ドットコムさんを見習って取り入れました。

――タスクや進捗の可視化もスクラムでは重要になりますが、どうしていますか?

倉谷:可視化というと、R&Dチームの座席の近くの壁に「かんばんボード[4]」があります。その前で毎日朝会をして、それぞれ何やってるんだっていうのを共有しています。メンバーは15名なのでその形でやれています。

有本:実は半年前まで、メンバーは7人だったんですよ。倍増です。急速にメンバーが増えているので、情報共有に試行錯誤している部分もあります。

――え? それでは半年前まで、数百社の対応を7人プラスサポートチームでやっていたってことですか?

有本:そうですね(笑)

――じゃあ、メンバーが増え、テストの仕掛けも入ったということで、倉谷さんをはじめ、R&Dチームの皆さんの負荷も減っていると。

倉谷:やりたいことがたくさんあるので、楽にはならないですね。やりたいことが、ちょっとはできるようになってくるかな。

有本:おかげでやっと、新しいことも少しやろうと考えられるようになったっていう感じですかね。実は今、TeamSpiritのプログラムや構造を全面的に見直そうとしてまして。現在でもJavaScriptで記述したロジックをかなり持ってるんですけど、完全にJavaScriptをメインにした、流行りの構造に直そうとしてるんです。

 というのも、何年間も開発を続けてきたので、ここらでリファクタリング的なことをしてみたくなっているんです。あと、アプリケーションやシステムに対していろいろ要望が来ていて、それらを全部入れるには全体的に見直さないといけないだろうというと。技術的負債の解消ですね。

――開発者として、腕の振るい甲斐のある楽しみな仕事がこれから待っているんですね。本日は貴重なお話をありがとうございました。

R&Dチームはチームマネージャと、プロダクトを担当するマネージャ、その他は一般開発者というフラットな組織になっているという。そうした自由で風通しの良い環境はお二人の話ぶりからも伝わってきた
R&Dチームはチームマネージャと、プロダクトを担当するマネージャ、その他は一般開発者というフラットな組織になっているという。そうした自由で風通しの良い環境はお二人の話ぶりからも伝わってきた

[4]: ソフトウェアを開発する際、タスクの担当や進捗などを可視化するために用いられるボード。スクラム開発プロセスでよく利用される。

Force.comは「無料」で試せます!

 簡単なご登録ですぐにさわってみることができます。ご興味のある方はForce.comの下記ページから。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9464 2016/06/15 09:14

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング