CodeZine(コードジン)

特集ページ一覧

若手が「売り込みもやりたい」と言い出したTAMが明かす、BtoBtoCサービス開発に夢中になれるクラウドの条件

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2016/05/10 14:00

 クラウドでBtoBtoCサービスを受託開発。その開発が楽しくて「自分でパッケージソフトウェアを開発し、売り込むところまでやってみたい」と若手が語る会社がある。株式会社TAMだ。本稿では同社でクラウドアプリケーション事業部 テクニカルディレクターを務める中尾達也氏と、同社の子会社で企業のデジタル戦略を支援する株式会社タンバリンのテクニカルディレクター ソリューションアーキテクト 白石尚也氏に、メンバーがそこまで開発に夢中になれる秘密を聞いた。

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

アプリケーションの品質向上に集中できるのがうれしい

――お二人はどんなアプリケーションを開発していらっしゃるのですか?

中尾:例えば、スポーツ選手と競技チーム・団体とのマッチングサイト「ライフルスカウティング」(運営:株式会社Lifull Scouting)や、各銀行の住宅ローン金利情報を使いシミュレーションを行って借り換えを支援する「モゲチェック」(運営:株式会社MFS)などを受託開発しました。老舗カメラメーカーのグループ企業であるライカマイクロシステムズさんのECサイトも作成しましたね。同社が製造している顕微鏡などを販売するサイトです。

株式会社TAM クラウドアプリケーション事業部 テクニカルディレクター 中尾達也氏
株式会社TAM クラウドアプリケーション事業部 テクニカルディレクター 中尾達也氏

白石:スマートフォンアプリも開発しています。モゲチェックではネイティブでAndroid向け、iPhone向けのアプリを開発しました。住宅ローンのシミュレーション結果などをネイティブならではの動きを使ってわかりやすく、かっこよく見せたかったんです。一方で、単純なニュースやお知らせなどは、アプリにWebViewを組み込んでWebブラウジングの仕組みで表示させています。

中尾:モゲチェックでは、銀行100行ぐらいの住宅ローンを計算して「ここに借り換えると安いですよ」といったリコメンドをユーザーに提示するのですが、そこの計算部分、ロジックは大きくてアプリ側に入れられないので、サーバー側で処理を行い、結果だけをアプリに返しています。ローンの金利は毎月変わるので、ローン計算は金利データを管理しているサーバー側で行いたいという事情もあります。サーバー側で処理されたデータをアプリ内で表示させています。

――アーキテクチャはどのように?

中尾:これ(下図)のような形です。プラットフォームにはSalesforceを使っていて、フロントエンドはHeroku、バックエンドはForce.comです。モゲチェックの借り換えシミュレーションはHerokuで実行しています。一方、各銀行の住宅ローンデータやユーザー情報はForce.comで管理しています。

モゲチェックのアーキテクチャ
モゲチェックのアーキテクチャ

白石:モゲチェックのお客様に送るメッセージは、Force.com上に構築した業務アプリケーションで入力する仕組みにしました。借り換えメリットが出る人にだけメッセージを送りたいとか、お住まいの地域を限定して送りたいとか、そういった要望が運営会社側からあったんです。ユーザー情報をもとにセグメント化してメッセージを作成するのは、業務アプリケーションの1つとしてForce.com上に実装するほうが容易なので。メッセージは10分に1回のバッチ処理でForce.comからHeroku上のアプリへメッセージが渡され、ユーザーへプッシュ通知されます。

中尾:モゲチェックの場合、運営会社様のほうでSalesforceプラットフォームの採用を決めていらっしゃいましたが、それ以外の案件でも、弊社では基本的にアプリケーションのプラットフォームとしてSalesforceの採用をお客様に提案しています。サービスを運営・管理するための業務アプリケーションはForce.comで開発し、ユーザーアプリケーションはHerokuで開発する形です。開発生産性が高く、Force.com(業務アプリ側)とHeroku(ユーザーアプリ側)とのデータ連携が容易ですし、サービス運営のための業務アプリケーションについては、そもそも開発しないで済ませることもできるといったメリットがあります。

――開発しないで済ませられるとはどういうことでしょう?

中尾:サービス運営のための業務アプリケーション、例えば「アプリの会員登録が入ったら、それを見込み客(リード)として管理するためのアプリケーション」などは、実際のところ、サービスやビジネスを問わずどれも似たり寄ったりです。Salesforceの場合、標準機能として、こうしたアプリケーションがすでに提供されているんです。簡単な説明で運営会社様も理解してくださいますし、ユーザーアプリケーションの機能の話にすぐ入っていけます。これはありがたいです。

――ビジネスやサービスの種類、企業によって求められる機能は違ったりしないんですか?

白石:「この会社ならではの使い方」とか「こういったやり方でやりたい」というのはもちろん出てきて、少しは開発が必要になるんですが、80~90%はSalesforceの標準機能だけでいけます。標準機能にないプラスアルファはVisualforceを使って実装することになりますが、どんな要望もだいたい実現できました。絶対無理っていうことは、あんまりないですね。

 メンテナンスに手がかからない点も、Salesforceの標準機能を使うメリットといえます。Visualforceで独自実装してしまうと、その後のメンテナンスは避けられませんので。それだけに、日ごろからSalesforceの標準機能で何ができるかは把握しておく必要があると思います。

中尾:標準で提供されている機能をわざわざ実装するといったミスを避けるため、開発チームメンバーの間では、お互いのあれがしたい、これがしたいということを共有しておき、「あ、それ、標準でいけるよ」と教え合うといったことをやっています。

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

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

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

SIer勤務時代の寝られない夜とおさらば、野心的な挑戦に気持ちが向かう

――ちなみに、開発に参画されている方は何名いらっしゃるんですか?

中尾:僕らのチームは今17名なんですけど、2~3名除いて、みんなForce.comはある程度触れるようになっています。エンジニアだけでなくデザイナーも含めて。

白石:デザイナーもForce.comのオブジェクトを作ったりしますよ。

――デザイナーさんはどうやってForce.comを学んだのですか?

中尾:本を借りるアプリなどを遊びで作っているうちにですね。ただただ遊ぶ。その中で、「本」オブジェクトみたいなのを作って「こんなんでいいんですか?」とかやり取りしています。Force.comのオブジェクトはいわばデータベースのテーブルなんですが、設定などがすごく簡単にできます。デザイナーの人はおそらくForce.comでリレーショナルデータベースの概念を覚えてますよ。すっかり楽しくなっている人もいます。

 とりあえず、なんか入れたデータがAPIで取れたら「あ、出た!」っていうのがあるじゃないですか。そういうのが作りやすいところがあって、結構みんなでやってますね。こうなると本当に開発が楽です。

 加えて、Heroku側のユーザーアプリケーションを作るためのフレームワークをある程度決めてあり、どのメンバーもそれを扱えるくらいのスキルセットを持っています。キャンペーンだったら、「○○さん、ユーザーオブジェクトちょっと作っておいて」とメンバーの誰にも簡単に頼める。結構いろんな人がよってたかってワーッてやったりもしますよ(笑)

――それは楽しそうですね!

中尾:プラットフォームをForce.comやHerokuに絞り込んでいることによって、長々と説明しなくても、みんな阿吽の呼吸で開発できるようになっています。特に2年半くらい前、Herokuを使い出してから今のように変わりました。それ以前の、AWS(Amazon Web Services)でコンシューマ向けのサイトを作り、APIでSalesforceにつないだりしていたころは、こうはいきませんでした。

――Herokuを使い出して何が変わったのでしょう?

白石:やっぱり、すぐ開発に入れるようになったことですね。Herokuなら、ソースコードをアップすればアプリケーションをデプロイできます。お客様にも早くアプリケーションを見せられますし、サーバー立ち上げの工数もまったくかからない。メンバーの中にサーバーに詳しい者がいないこともありますが、ここはメリットが大きいのかなと。

株式会社タンバリン テクニカルディレクター ソリューションアーキテクト 白石尚也氏
株式会社タンバリン テクニカルディレクター ソリューションアーキテクト 白石尚也氏

――もともとIaaSのAWSと、純PaaSのHerokuの違いはありますよね。

中尾:インフラエンジニアを置くほど会社に体力があるわけではないので、Herokuを使う前には、外部の方にインフラの構築・運用をしてもらっていました。ただ、開発段階でも運用段階でも、ちょっとした問題がいろいろ起こったり、リリース直前で大変なことになったりというのは当然あって。そのときに、外部の人には最初から説明しなければならない。それってやっぱりしんどいんですよ。

 Herokuなら何かが壊れたっていっても、アプリケーションのリビジョンを1つ戻してやれば当座は解決してしまいます。実際にそうして解決したことがあったんですよ、それもリリース直前に。

――大事ですね、それ。

中尾:すごく気が楽ですよ。Force.com+Herokuにする前には、お客様から「ネットワークに障害が発生したのか、画面が見れなくなりました」っていう連絡がけっこうあったんですけど、今はそういうトラブルがほとんどないですね。もう、深夜の電話に起こされることもない。これはすごい幸せなことなんじゃないかな。

白石:以前SI企業に勤めていたころ、サーバーを借りてサーバールームに置いていたんですけど、トラブルがあったときに障害箇所の切り分けができず、しかたなくサーバールームに行って夜通しサーバーの状況を見るなんてことが頻繁にありました。弊社へ移ってきて、夜の呼び出し電話は一切なくなり、人間的な生活が送れるようになりました(笑)

中尾:開発チームには若いメンバーが多く、みな野心的でいろんなことに挑戦してみたいと思っています。それなのに、インフラが原因でトラブルに見舞われたり、メンテナンスにコストがかかるプロジェクトばかりになったりすると、新しい分野に踏み出す時間がなくなってしまう。そうした負の環境をなくせているのもメリットの1つですね。

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

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

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

たった3人でサービス運用を可能にする、すごいDB同期の仕組み

――Heroku上でのアプリケーションはどのような環境で動いているのですか?

中尾:PHPで「Laravel」っていうフレームワークを使っています。正確にいうと、使っているのはLaravel本体というより、Laravelで実装された「Lumen」という軽量フレームワークです。これを社内共通の開発環境として決めてあります。データベースはHeroku Postgresです。

 LaravelやLumenを使う理由は「何でもついてますよ」っていうのではなく、「顧客の要望に柔軟に対応できる」シンプルなフレームワークが必要だったからです。APIを作る部分やビューをコントロールする部分を開発することにおいて、モダンで非常に合理的な設計思想で作られています。後からどうにでもなるっていうのは、Force.comとも共通しますね。

 ただ、Javaが得意なパートナーさんもいるので、Javaも使っています。9割ぐらいがPHPでプラスJava。あと、フロントエンド系のエンジニアもサーバーサイドのプログラムをやるようになってきていて、Node.jsもちょっとやったりとかもしますが、案件はだいたいPHPですね。HerokuですがRubyは全然やっていません(笑)

 あと、Force.comと同様に、チーム全員がフルスタック的なスキルセットを持てたらいいよねといって、フロントエンドエンジニアがサーバーサイドもできるようになろうと取り組んでいます。最近では、フロントエンドとサーバーサイドの両方でJavaSctiptを使い、1人でサービスを作れるようになってきています。

――積極的な取り組みに感服します。ところで、Heroku上のPHPプログラムからForce.com上のデータをどのようにして読み書きするのですか?

白石:2つ方法があります。1つは、Force.comが外部に提供しているSOAP APIを叩いて、Salesforceの中のデータにアクセスするという方法。もう1つは、HerokuとSalesforceがシームレスでつながる「Heroku Connect」という新しいサービスを使う方法です。

「Heroku Connect」の学習ページ(リンク)
「Heroku Connect」の学習ページ(リンク

 Heroku Connectは、Force.com上のオブジェクトとHeroku Postgres上のテーブルとを同期させるサービスです。Heroku上のアプリケーションは、Heroku Postgres上のデータにアクセスすることで、透過的にForce.com上のデータにアクセスすることができます。開発者は同期のことを意識する必要はありません。

中尾:もちろん使い分けはあって、マスターデータ系を大量に同期させたいときにはHeroku Connectが使いやすい。設定だけでできてしまいます。一方で、Force.com側にデータをリアルタイムで反映させたいときには、Force.comのAPIを叩いたほうがよかったりします。

 Heroku Connectの一番の使いどころは、Salesforce側の業務アプリケーションで行ったレコードの変更を、Heroku側に反映させるという処理。ここはもう、Heroku Connectでやったほうが断然楽ですね。例えば、クーポンを発行するサービスで、Salesforce側で管理するクーポンマスターオブジェクトに発行する設定を行ったら、Heroku Postgresに自動的に反映されてユーザーはアプリで発行されたことを見られる、といったユースケースでは特に有効だと思います。

白石:以前は、Heroku上のアプリケーションからSalesforceのAPIを叩いてデータを取りにいく実装をしていたんですけど、性能が出ず、UX(ユーザーエクスペリエンス)的にあんまりよろしくなかったんです。仕方なく、SalesforceとHerokuのデータベースで双方向にデータをやり取りするバッチを開発していたんですが、そこにHeroku Connectが出てきた。ありがたいです。

中尾:パフォーマンスを求められるアプリケーションに関しては、もうHeroku Connectでやらないと厳しいかなという印象です。SOAP APIをいちいち叩くのとは格段にスピードが違うので。コンシューマ向けは特にスピードって大事なので、使いどころですね。

白石:あと、Salesforce側からうまくデータが取れないといったケースもなくなり、生産性にもいい影響が出ています。Salesforce側の設定を僕がやれば、Heroku側のアプリケーションを開発・メンテするエンジニアと、デザイナーが1人いればWebサービスを回せてしまう。実際に3人でやってるサービスがあります。

――3人はすごいですね。ただ、Heroku Connectは利用にコストがかかると聞きました。利用することによる生産性向上とのトレードオフを見極める必要がありますね。

中尾:そうですね。ただ、バッチを開発する手間とその後のメンテナンスを長い目で見て考えると、Heroku Connectを使うほうがトータルコストを抑えられるような気がします。連携するデータの量を調整することでもコストを抑えられるんで、使い方次第だと思います。

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

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

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

開発にGitHubなどを使用、Force.com側はバージョン管理などの手間不要

――開発環境はどうされていますか。HerokuではGitを使ってデプロイなどを行うことになっていますが、Force.com側の開発では何を使っていますか?

白石:人それぞれですね。Sublime Textエディターで開発している人もいますし、Salesforceが提供している「開発者コンソール」というVisualforce開発向けのツールを使う人もいます。開発者コンソールは定期的に更新されてますし使い勝手もいいので、僕はそれでやってしまうことが多いですね。

 ただ、ソースコードのバージョン管理の部分に弱点があって、誰かが誤って消してしまったときに簡単に元に戻せない。ソースコードはローカル上で別管理するなどの工夫をしてます。また、テストコードは必ず書いて通るようにはしてはいるんですけれども、それを自動化するところまではやれていないのが現状です。

中尾:一方、Heroku側のアプリケーション開発はソースコードをGitHubに上げたら、ステージングに上がるとかっていう仕組みは作ってあります。CIまではやってないですけど、テストの自動実行などは走ります。

 Force.com側でいうと、そもそもあんまり大がかりな開発をしてないっていう。先ほども述べたとおり、業務アプリケーションにはなるべくSalesforceの標準機能を使う方針にしてるので、バージョン管理的なところやチーム開発みたいなのを、Force.com側もしっかりやらなきゃっていう場面に遭遇していません。必要性をあまり感じないですね。

「Salesforceさんとお仕事をして面白いと思うのは、Herokuや人工知能・機械学習など次々に新しいサービスを提供してくれるところ」(中尾氏)
「Salesforceさんとお仕事をして面白いと思うのは、Herokuや人工知能・機械学習など次々に新しいサービスを提供してくれるところ」(中尾氏)

開発したアプリを自分で営業したくなる環境を作ってくれたSalesforce

――最後に、今後の抱負ややってみたいことなどをお聞かせください。

白石:Salesforceを核にしてパッケージソフトウェアを作ってみたいですね。例えば、オンラインからオフラインへ送客する仕組みとして、会員に発行するオンラインクーポンがありますが、あのシステムをSalesforceとつなげて、お客さんのデータをお店側でもっと上手に使ってもらえると面白いことができるじゃないかと。

中尾:白石とそうしたパッケージソフトウェアを自分たちで作って、自分でアパレル系のお店や会社に売り込みに行こうと話してるんです。アプリを作り、マイ・クローゼットといった仕組みも構築して、そのデータでCRMをやるとか。

――エンジニア自身で顧客にパッケージを売り込みに行くというのは大変な熱意ですね。

白石:前職時代にはそんなこと考えもしませんでした。もう日々、ちゃんとシステムが動くかなっていうことだけを考えました。Force.comやHerokuを使って受託ではありますがいろんな案件に携わっていく中で、自分でもうまく機能使えば面白いものが作れるって実感がわいてきたんです。そして、サービス自体も考えて提供できる側になりたいと。夜の呼び出し電話がなくなって生活も変わりましたし、今やっていることが自分にマッチしているとも思います。

「夜の呼び出し電話がなくなって生活も変わりましたし、今やっていることが自分にマッチしているとも思います」(白石氏)
「夜の呼び出し電話がなくなって生活も変わりましたし、今やっていることが自分にマッチしているとも思います」(白石氏)

中尾:受託での仕事を続けていると「また同じ作業だな」とテンションも上がりづらくなってくる。そうならないように、エンジニアの人もPMもSEも含めて、自分がやりたいことをある程度やってもらう環境を作りたいですよね。それまでに携わった案件の経験を踏まえてやってもらえればいいとは思っているんですけど。

 私は、人工知能や機械学習を今まで作っていた会員向けのアプリケーションやWebサイトにつなげて、「どんなインタラクションがあれば、お客さんは動くのか」っていうところを突き詰めたプロジェクトをやりたいと思っています。人工知能を利用して、お客さん個人個人に最適なクーポンを出すとか、お客さんとのコミュニケーションをもっと快適なものするとか。セールスフォース・ドットコムは機械学習や人工知能の企業を買収してますし、新しいサービスとしてどんどん提供してくれるでしょうから、それらを積極的に活用したいですね。

 曖昧ですけど、テクノロジーとマーケティングの融合によって人を動かす部分は、表現方法も含め、かなりクリエイティブになってきていると思います。そこをもっと突き詰めて、顧客のデータに応じて適切にプッシュ通知したりレコメンドしたり、あるいは自動的に表示が切り替わったりっていう、顧客体験重視したプロジェクトを展開したいと考えています。

――Salesforceをベースにいろんな可能性が広がりますね。ありがとうございました。

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

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

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

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5