エンジニアtype - エンジニアのシゴト人生を考えるWebマガジン

ユニクロ「スマホアプリも世界展開」でシステム再構築、その全容がすごい【ファーストリテイリング×ゆめみ座談会】

公開

 

2013年10月8日、ユニクロはスマートフォン向けに提供している『UNIQLOアプリ』をリニューアル公開した。

主な変更点は、着こなし例を表示する「スタイルディクショナリ」機能の新設や、現在地から最寄りのユニクロ店舗を自動表示してルート案内も行ってくれる「店舗検索機能」の強化。そして、ユーザーの日常生活を便利にする各種アプリを提供する「UNIQLO LIFE TOOLS」の新設などだ。

ただ、こうしたユーザーの目に触れる部分のリニューアル以外に、今回はアプリの設計思想から開発プロセス、バックエンドシステムの大転換まで行われたことを知る者は少ない。

この背景には、2001年のイギリス・ロンドンを皮切りに始まった、UNIQLO店舗のグローバル展開がある。中国や韓国、アメリカ、香港、フランス、タイ、フィリピン、ロシア、台湾、インドネシア、シンガポール、マレーシアなどといった既存のマーケットにとどまらず、今後その他の国々も新規開拓していく上で、出店攻勢をかけるユニクロの海外戦略と連動したものなのだという。

《通信環境や普及端末が異なっていても、世界中の老若男女が「普通に使えるアプリ」に》
《UNIQLOアプリを、各国の店舗がそれぞれにO2O戦略を実行する“窓口”に》

つまり、スマホアプリを海外展開を支える基盤とすべく、すべてを刷新したのだ。

今回、この一大構想の開発パートナーとしてプロジェクトに携わったゆめみの開発陣と、一連のシステム刷新を企画・主導したファーストリテイリング業務情報システム部の面々に集まってもらい、リニューアルの内幕について聞いた。

本当の意味で「世界に通用するスマホアプリ」を開発するため、必要な設計思想とテクノロジーとは一体どんなものだったのか。

グローバルプラットフォームの構築で重視した「モジュール化」

―― さっそくですが、今回『UNIQLOアプリ』をリニューアルした背景からお聞かせください。

福田 主な目的は2つでした。1つは、出店計画のグローバル化と連動して、海外のスマートフォンユーザーにも新しいショッピング体験をしていただきたいという点。もう1つは、モバイルアプリ開発のグローバルプラットフォーム化です。

―― グローバルプラットフォーム化とは?

福田 スマホアプリの開発ルールとプロセスを、世界中の拠点とデベロッパー間で共有し、合理性と柔軟性を併せ持つ開発スタイルを確立することを意味します。

ユニクロはこれまでも、『UNIQLOCK』など複数のモバイルアプリを提供してきましたが、手掛けるデベロッパーはもちろん、開発・運用プロセスもバラバラだったため、アプリ間での連動性に乏しくリソースを共有できる環境にありませんでした。

そこで、今回のUNIQLOアプリのリニューアルでは、今後のグローバル展開を前提とした開発環境を確立するため、土台から見直すことにしたのです。

―― いわゆるアプリのローカライズとは何が違うのでしょう?

福田 単純に日本版のモバイルアプリを各国語版に翻訳して提供するのではなく、アプリに搭載する機能をモジュール化し、各国の市場環境にあった機能を自由に組み合わせられるような設計思想を採用しました。そのためには、開発環境から見直す必要があったのです。

―― では、機能開発もそれぞれの国や地域ごとに行えるわけですか?

桑原 そうです。海外展開を前提に考えると、服の売れ筋やアプリに求められる機能は各国で微妙に異なります。ですから、アプリそのものを各国の状況に合わせて柔軟にカスタマイズできるようにするべきだと考えました。リニューアルしたUNIQLOアプリのUIが、「ブロックを組み立てる」ような構成になっているのも、この構想から端を発しています。

UNIQLOアプリの印象的なグリッドデザインには、世界展開を見据えた特別な理由が

福田 バックエンドについても、この設計思想を実現するものに刷新しています。海外出店の地域に合わせてAWSをリージョン(地域)ごとに使い分け、キャンペーンのピークなどに対応しながら拡張性を担保するようなシステムにしたのです。日本国内のサーバですべてをコントロールするより、その方が良いだろうと。

桑原 この方針転換に合わせて、開発手法も大きく変更しています。今回の開発では、機能モジュールがある程度でき上がった段階でチェックとフィードバックを行い、その都度手直ししていく、いわゆるアジャイル開発にも挑戦しています。

慣れるまでには、情報のすり合わせなどに多少時間を要したものの、スピード重視の開発が功を奏してグローバルプラットフォームの土台となる最低限の開発とアプリリニューアルを、約3カ月間で成し遂げることができました。

重視したのは継続的インテグレーションの実現

―― 3カ月でそこまでの大刷新を行ったとなると、緻密な開発計画が必要だったと思われますが、開発を担当したゆめみさんはどんな体制で臨まれたのですか?

大関 わたしがプロジェクト全体のまとめ役と調整役を担当し、柳瀬がフロントサイドの開発を、そして森下がバックエンド側の開発を務めました。今回のプロジェクトにかかわった開発メンバーは、全部で15名ほどになります。

―― アプリケーション側とバックエンド側それぞれの開発で、どのような苦労がありましたか?

柳瀬 福田さんの説明にあった通り、今回のリニューアルではアプリの機能と同様、UIの要素もモジュール化、共通化を進めていきました。

しかし、インターフェースをモジュール化するという開発思想はまだ一般的ではないせいか、現時点で出回っているライブラリやSDKでは流用できないことも多かったんです。だから、APIも含めてゼロから設計・開発を進める場面が少なくありませんでした。

森下 バックエンド側では、ゆめみとしても初めて十数台におよぶサーバ構成でCI(継続的インテグレーション)ツールやCD(継続的デリバリー)ツールを導入し、開発プロセスと基盤を構築したことが一番の山場になりましたね。

社内のプロジェクトではChefやJenkinsといった自動化・効率化ツールを使っていたものの、お客さまのプロジェクトで実施するのは今回が初めて。でも、ユニクロさんのグローバルプラットフォーム構想そのものがチャレンジングな内容だったので、新しい取り組みをやってみる良い機会となりました。

福田 少人数で、複数の国に向けて(AWSの)インスタンスを立ててサービスを回すには、サーバ環境の構築やテストを自動化するツールの活用はマストになります。Redmineのようなプロジェクト管理ツールの利用を含め、当初から合理化に資するツールの利用を積極的に進めなければ、スピーディーなグローバル展開は難しいと考えていました。

そのため、ゆめみさんにも、プロジェクトが始まった段階でこうしたツールをぜひ使いたいと要望させていただいたんです。

「3カ月で刷新」を可能にした、テストフローの確立

―― 両社が協業しながら開発を進める上で、どのようなポイントに気を使われましたか?

福田 今回のプロジェクトでは、まずユニクロ全体のビジネス戦略の中でスマホアプリをどう定義し、どんなアーキテクチャを採用すべきかをわれわれ自身で検討した上で、ゆめみさんに相談するという形を採りました。

大関 福田さんが最初にゆめみのオフィスへいらした時は、「そこまで大規模なリニューアルを本当に3カ月でやるんですか?」と思いましたね(笑)。

福田 (苦笑)。でも、UNIQLOアプリをユニクロのグローバル戦略の核として考えるなら、アプリのリニューアルのみならず、フレキシビリティと拡張性に富んだプラットフォームづくりも必要不可欠だろうと。ゆめみさんには、それを一緒に実現してほしいとお願いしました。

―― その3カ月での突貫作業を想定して、ゆめみさん側はどんな開発計画を練ったのでしょう?

大関 開発期間が限られていたので、まずは優先順位を決めて最低限必要となるコアモジュールの開発に集中すること、そしてできるだけ開発の効率を上げることが大事だとお話しました。

森下 実際、今回のプロジェクトでは機能要求のレベルも高く、数も多かったため、柳瀬たちアプリケーションエンジニアの負荷が最も高くなることはあらかじめ想定されていました。そのため、アプリケーションエンジニアにはなるべく余計な仕事をさせないよう、省力化と合理化にはかなりの力を割きました。

柳瀬 アプリケーション開発の立場で一番こだわったのは、UIのクオリティをいかに上げるかという点です。このこだわりを貫くには、バックエンド側の開発と同じく、フロントサイド側の開発も効率よく進めなければなりません。

そこで、開発環境によって変わる設定ファイルを自動で書き換えるような仕組みの構築や、サーバと通信するモジュールの共通化、コードジェネレータを使った自動化などに取り組みました。

―― 協業することで生まれた機能はあったのですか?
(次ページへ続く)