サービスの核となる名刺入力システムを「Ruby×アジャイル開発」で構築

永和システムマネジメントに依頼して開発したシステムについて教えてください。

Eight

当社では、スマホのカメラやスキャナで撮影するだけで「名刺」の情報をデータ化し、クラウド上に保存された名刺情報にスマホやPCからいつでもどこでもアクセスできる「Eight」という名刺管理サービスを提供しています。「Eight」は2012年のリリース以来、50万人を超えるユーザ様に登録いただき、順調にサービスの規模を拡大しています。

永和システムマネジメントには、「Eight」において名刺情報をクラウドソーシングで入力するためのシステム「Eight GEES」を開発してもらいました。「Eight」はOCRを用いず、人力による正確なデータ化が大きな特長となっておりますが、名刺の画像イメージをそのまま入力オペレータに公開してしまうのはセキュリティ上問題がありますので、「Eight GEES」によって1つの名刺をいくつかのパーツに分割して、それぞれを別々のオペレータが入力する仕組みを実現しています。

「Eight GEES」

「Eight GEES」の入力画面のサンプルイメージ」の作業フロー概要

「Eight GEES」のシステム概要イメージ図

なお「GEES」は次の略となりますが、通常、利用者様に公開しているものではなく社内で使用している名称となります。

  • G:Global、より世界中のリソースを利用できるように
  • E:Efficiency、より効果的な方法(マイクロタスク×マルチソーシング)で役割配置ができるように
  • E:Elastic、より伸縮自在な体制が組めるように
  • S:Scalable、よりスケーリングできるように

「Eight GEES」のシステム環境について教えてください。

システムはAWS(Amazon Web Services)上に展開し、データフローの各工程を独立したRails Applicationとして構築しています。各Application APIで会話し、各工程をSWF(Amazon Simple Workflow)で定義をして管理しています。

構築は、 Rubyによるアジャイル開発で実現しました。

「Eight GEES」のシステム概要イメージ図

「Eight GEES」のシステム概要イメージ図

自由度が高く、メンテナンスや運用が容易なRubyはアジャイル開発との相性も良好

プログラミング言語にRubyを採用した理由を教えてください。

「Eight GEES」は「Eight」の入力を担うコアシステムです。今後、処理する名刺の枚数が増加していっても、効率的かつ迅速に大量の名刺を処理できるパフォーマンスや機能を維持していかなければなりません。

また、将来的には法人向けのサービスである「Sansan」との入力システムとの統合などもめざしており、とてもきめ細やかで、かつ大胆な変更要求にも柔軟かつ迅速に対応していかなければなりません。

そういう意味で、開発の自由度が高く、メンテナンスや運用が容易なRubyは魅力的です。また、変化への対応力が高く、従来の手法よりも短期のリリースが可能なアジャイル開発と極めて相性が良いということも大きな採用のポイントであり、「Rubyによるアジャイル開発」というのはセットで考えました。

機能面以外でも、現状、優秀なエンジニアがRubyを好んで使う傾向にあるということから、Rubyによる開発に積極的に取り組むことが、優秀な人材の確保にもつながると考えていますし、Rubyの先進性も「世界を変える新たな価値を生み出す」という当社のポリシーに合っていると思っています。

もちろん、盲目的にRubyが良いということではなく、各種エンジンなどC++/C#などの言語を適材適所で使い分けしています。

「常樂氏」

「きめ細やかで、かつ大胆な変更要求へ、柔軟かつ迅速に対応できる開発環境を求めていました」

明確な現実解を示してくれる永和システムマネジメントを信頼

今回、永和システムマネジメントに開発を依頼した経緯を教えてください。

当社では基本、システムの開発は社内のリソースで対応するケースが多いのですが、今回はタイミングが悪く、社内で十分な開発リソースを確保できませんでした。

リソースを確保できるまでプロジェクトを止めておく余裕はなかったので、海外でのオフシェア開発や国内でのニアショア開発も検討しました。しかし、中心となるプロジェクトメンバにRubyによるアジャイル開発の経験がなく、メンバが離れた場所で作業を続けるのはアジャイル開発に向かないこと、コミュニケーションコストがかかることなどから、首都圏で開発を請け負ってくれる委託先を探すことにしました。

永和システムマネジメントへ依頼をした理由を教えてください。

Rubyのコミュニティで永和システムマネジメントのエンジニアの方と知り合いとなり、「Eight GEES」の開発プロジェクトの件を相談に乗ってもらったことがきっかけとなりました。

正直なところ開発費の見積額は安いものではありませんでしたが、Rubyによるアジャイル開発に関する知識や経験、実績が豊富なこと。さらに、「できること」、「できないこと」、「どうすればできるようになるのか」を明確に示してくれたことで、プロジェクトの道筋が明確になり安心して開発を任せられると判断しました。

また、初期開発が一段落した段階で、基本的には社内のリソースのみで機能の追加や変更、メンテナンスを実施していく心づもりでいました。そのため、丸投げで作ってもらうのではなく、当社をリードしながら一緒に開発してもらえる所にお願いしたいと考えており、その点でも当社の意向を理解して、積極的に対応してくれる姿勢を見せてくれたことも、永和システムマネジメントへ依頼した要因となりました。

最終的には社内の説明会において、永和システムマネジメントの開発リーダに開発計画をプレゼンしてもらいました。限られた時間の中で簡潔に要点を伝えてくれたことや、質問に対して明確に答えくれたことに対して、社長や役員からの評価がとても高く、正式に開発を依頼することになりました。

「宍倉氏」

「当初は、プロジェクトメンバにRubyによるアジャイル開発の経験がなく、十分なリソースも確保できませんでした」(宍倉氏)

保守性に優れた「美しいコード」で動作するシステムを実現

「永井氏」

「プロジェクトメンバ全員がサテライトオフィスで2週間、合宿をして、集中的に作業をしました」(永井氏)

永和システムマネジメントへシステムの構築を依頼したことによる成果やメリットなどがあれば教えてください。

実現可能なゴール、すなわち手順とスケジュールを示してくれた上で、要求通りに動作するシステムを提供してくれたこと。それが最も重要な成果です。

さらに、動作するきれいなコードを提供してもらえたので、メンテナンスや機能改変がしやすく、運用コストも抑えられることも大きな成果だと捉えています。コードレビューは、妥協せず、ぶれず、厳しい内容でしたが、結果として技術力や意識の向上を図ることができ「美しいコード」を作成することにつながりました。

その点も踏まえ、永和システムマネジメントの知識や手法を惜しげなく伝えてくれたので、当社ならではのアジャイル開発体制を確立する道筋をつけることができたことも、成果の1つだと捉えています。

開発を進める上で、苦労したことなどはありましたか?

アジャイル開発の場合、開発に対するコスト計算や契約の考え方が従来と異なる部分がありましたが、概ねスムーズにプロジェクトを進めることができました。

また、苦労ということではないのですが、事前に『アジャイルサムライ』(オーム社)をプロジェクトメンバ-全員が読むことで、アジャイル開発に関する共通理解を持ってプロジェクトに望めたことは良かったと思います。

さらにこれも苦労話ではなく申し訳ありませんが、プロジェクトメンバ全員が当社のサテライトオフィス(Sansan神山ラボ)のある徳島県神山町に集まって、2週間ほど集中的に作業する機会を設けました。当初は、当社のメンバだけで行う予定だったのですが、永和システムマネジメントのメンバも快く参加してくれたことで、以降、一体感が生まれてメンバのモチベーション向上につながったと考えています。

永和システムマネジメントならではのノウハウや技術の提供に期待

今後の展開などがあれば教えてください。

現在はすでに「Eight GEES」に関する永和システムマネジメントとの契約は終えて、自社でメンテナンスや運用をしています。当初は、永和システムマネジメントにお任せする部分が多かったのですが、上手く引き継いでいただき感謝しています。

永和システムマネジメントへの要望や期待があればお聞かせください。

今回のプロジェクトの内容をコミュニティで発表する際など、開発に直接関係しない場面でも永和システムマネジメントのみなさんとはお付き合いさせていただいており、とても感謝しています。また、新しいバージョンのシステムがリリースされた際、個人的にお祝いのメッセージを送ってくれる方もいて、契約が終了してしまった後でも開発プロジェクトのメンバとはとても良い関係を築けています。

今後も勉強会などを共同で開催するなど、ビジネス・ビジネス以外の場面においてもお付き合いいただければと思います。今後ともよろしくお願いいたします。