株式会社DTS

株式会社インプレスホールディングス×株式会社DTS

Rubyとクラウドサービスで実現したEC決済共通基盤

共通決済システム基盤の統合という大きな目標

株式会社インプレスホールディングス(以下、インプレスHD)はIT、音楽、デザイン、山岳・自然、モバイルサービスという5つの事業区分を主軸にし、グループ傘下に多くの企業を所有する複合メディア企業である。登山好きなら一度はお世話になるヤマケイ(山と溪谷社)と、Web制作業界御用達の情報サイト「MdN Design Interactive」を運営するエムディエヌコーポレーションの両方が、インプレスHDのグループ企業であるというだけで、同社のカバーする事業領域の広さがわかるだろう。

インプレスHDはその傘下に多くの出版社を抱えており、それぞれが直販ECサイトを持っていた。定期購読、書籍単体の通販、PDFのダウンロード販売など各種の販売形態があり、すべての出版社の足並みが揃っているわけではないが、決済システムを共通化することで、グループ企業全体の決済を見通したいというニーズを抱えていた。

インプレスHDはRuby on Railsで月額会員制システムを内製した経験があり、実際に動くモックアップを作りながら修正していく開発工程に信頼を置いていた。そのため、新決済システムもRuby on Railsで作成することに決めていたのだが、新たな決済システムを作成し、しかもそれを各出版社のEC基盤として統合するというのはやはり重い課題であった。決済代行会社の契約更新が迫っていたこともあり、限られた期間でクリティカルなシステムを構築できるSI企業の力が必要だった。

Web検索などで幾つかのSI企業が候補に挙がったが、結果的に発注することになったのは株式会社DTS(以下、DTS)だった。決め手となったのは、創業40年を超える上場企業という信頼感と、Rubyアソシエーション認定システムインテグレータGoldのお墨付きだった、とインプレスHDのシステム戦略室サブマネージャーである野村雅人氏は言う。

共有される情報の多いRubyの文化

新決済システムの難しさの一つに「外部連携するシステムの多さ」があった。まず、決済システムである以上、決済代行会社のシステムとの連携は不可欠である。また、クラウドサービスとの連携もファイル配信やデータベースといった用途ごとに異なり、さらにその上、インプレスHDが元々持っていた基幹DBとも連携しなければならない。連携時のAPIは複数あり、通信方式もそれぞれ異なる。決済システムにはミスが許されないため、複雑な構成であっても堅牢なシステムを築かなければならなかった。

SI企業であるDTSは、2005年頃からRuby開発の専門チームを持っており、開発経験も豊富だった。Ruby on RailsのPaaSとして有名なherokuでの開発実績もあり、クラウドサービスとの連携・利用に関しては熟知していた。それでも、はじめて接続するサービスに対しては調査する必要がある。この局面でRubyの持つ文化が多いに役立った。

「Rubyの場合、検索するとすぐに情報を見つけられるのが便利なんです」と、DTS ITインテグレーション事業部プロジェクトリーダの大西正太氏は言う。Ruby開発者にはオープンソースの共有文化を親しむ者が多く、ちょっとしたコードをブログやプログラマ向けSNSのGithubに公開することはよく行われている。たとえば、外部に対してSOAP APIを提供しているJavaアプリケーションに対してRuby on Railsアプリケーションから通信を行いたいと考えたとき、「Rails SOAP」と検索をかけたとしよう。すると、検索結果の中には実際にRuby on RailsでSOAP APIからデータを取得したというブログ記事が上がってくる。場合によっては、ライブラリ化されたソースコードが見つかることもあるだろう。もちろん、そのままコードをコピー&ペーストして終わりというわけではないが、とっかかりとなる情報がすぐに見つかることはRubyの重要な資産であり、開発スピードの早さの一因でもある。

Ruby on Railsの持つ拡張性がもたらす開発スピード

Ruby on Railsではある程度のまとまりを持った機能をgemというパッケージで個別に利用でき、これらのgemはBundlerというパッケージ管理ツールで柔軟にセットアップできる。こられの拡張を前提とした様々な機能が今回の開発では多いに役立ち、メールの文字化けが発生した際も、gemパッケージをアップデートするだけで修正することができた。クラウドサービスに接続するケースでも、サービスによっては接続用ライブラリをgemとして配布しており、それをシステムに同梱するだけで簡単に利用できる。決済代行システムはRubyライブラリの提供を行っていなかったが、同システムの持つAPIの接続用ライブラリは存在したため、スピーディに開発を行うことができた。「ライブラリ自体はそれなりに複雑なコードなのですが、それを継承して利用するクラスはとてもシンプルになるのがRubyの特徴です」と、DTS大西氏は言う。

また、システムの外観についてもTwitter Bootstrapを利用するなど、すでに存在するフレームワークやライブラリを使いこなして工数を削減した。実際に動く画面を作りながら改善していく工程では、手戻りが当然発生する。修正が発生する以上、いかに少ないコストで変更を反映していくかが全体スケジュールに影響してくるのだが、バックエンドのシステムからフロントエンドのユーザーインターフェースまでを再利用可能な部品で構成することで、この工数は削減できる。Rubyに通底するDRY原則(Don’t repeat yourself = 同じことを繰り返すな)を徹底することで、スムーズな開発が可能になるのだ。

DTS大西氏は「Rubyでなかったら、スケジュール内に納品することは難しかったかもしれません」と言う。共通決済システムは約3ヶ月という短期間でリリースすることができた。しかも、単にリリースにこぎ着けたというだけではなく、そのさらに3ヶ月後、機能をアップした改修を行っている。当然、今後も様々なメンテナンスを行っていく予定であり、Rubyの高い拡張性があってこそ実現可能なスピード感だ

将来的な拡張を見据えてのRuby採用

インプレスHDは決済システムを共通化することで、ECサイトの決済システムを出版社ごとに作る労力を省きたかっただけではない。その先には様々な構想を抱えており、今回のシステムリプレースメントはその一環でしかない。具体的な構想については「企業秘密」(インプレスHD 執行役員 有田健二氏)ということで公開することはできないが、電子書籍の広まりで激動の時代を迎えている出版業界の一員として意味のある施策となることだろう。

DTS ITサービス営業部部長である中島宏氏は「Railsはクラウドサービスとの連携で特に力を発揮します」と言う。インプレスHD 野村氏もRuby on Railsが持つ拡張性には大きな信頼を寄せている。

変化の多い時代だからこそ、システムも柔軟に機能を拡張していかなければならない。膨大な顧客データの管理や大容量ファイルの配信、膨大なトラフィックへの対処など、システムに求められる要件は日々増えており、それを手軽に利用できるのがクラウドサービスである。クラウドサービスへの接続によってシステムは複雑化しがちだが、Rubyには簡潔な文法で書かれた豊富なライブラリが存在する。時代の要請に応えたシステム開発を行うとき、Rubyはその力を存分に発揮すると言えるのではないだろうか。

参考写真

●共通決済基盤システムを利用した山と溪谷社の決済画面

山と溪谷社の決済画面

※本事例に記載の内容は2013年6月時点のものであり、現在変更されている可能性があります。