デカップルドDrupalとReactネイティブ・アプリ

アイスランドの大手食材宅配会社、Eldum Réttは業界のリーダーで年商は700万ドルに達しようとしているそうです。最初のウェブサイトは2014年、Drupal 7で構築されました。ビジネスの成長に連れて、同社には以下のような顧客ニーズに応えていく必要が生じてきました。
・リストからレシピ付きフード・ボックスをカスタマイズできる
・食べる人数に応じて分量を調整する
・配送日を選択
・配送時刻、場所を指定
・長期不在などで契約内容を変更
さらに、スマートフォンの普及により、モバイルからの使い勝手の良さも求められました。こうした要望に応えるには、Drupal 7では柔軟性、拡張性に限界があったのです。
そこで選ばれたのがDrupal 8、Drupal Commerce 2とReactを使ったスマホ用アプリという組み合わせです。アプリはReactネイティブなものが新たに開発されました。
React(React.js)は、Facebookが作ったユーザインタフェースを構築するためのJavaScriptのライブラリーです。

APIファーストの設計思想で作られたDrupal 8は、ブラウザで表示するコンテンツを構成するデータと表示系が分離されています(デカップルドと言います)ので、ウェブサイト向けのコンテンツとアプリ用のコンテンツを分けて考える必要がありません。同じデータベースに格納された同じデータをウェブページでもアプリでも活用することができます。

食材の組み合わせを変更したり、人数を変えたりすると、注文の内容を配送部門に正確に伝えるとともに、料金も柔軟に変更する必要があります。毎日必ず注文するのでもなく、決まった曜日に注文するのでもない顧客が大半なので、契約内容も柔軟に変えられる必要があります。こうした柔軟性に加えて、新しいシステムでは調理方法の説明も大幅に改善しました。

さらに、旧システムから新システムへの移行(マイグレーション)も細心の注意が必要です。旧システムに登録された顧客情報を引き継ぐだけでなく、レシピや食材など120万件のデータをDrupal 7システムからDrupal 8システムへ移行する必要がありました。
Drupal 7とDrupal 8とは同じシリーズでありながら違いが大きかったため、単純なアップグレードを行うことができず、作業としてはDrupal 7を捨てて新しくDrupal 8のサイトを構築するほどの労力を要する場合もあります。この点はDrupal 8からDrupal 9へのアップグレードでは大幅に改善されるはずです。
移行の前に入った注文や契約変更などの情報も間違いなく新システムが引き継がなければなりません。

このプロジェクトは大規模ではありましたが順調に進み、昨年11月から新システムが稼働しています。

<参考情報>