Amazon Web Services ブログ

Amazon Location Service を利用した効率的なトラックルーティング

トラックは毎日、何百万トンもの物資を全国に輸送しています。その効率的なルーティングは、物流企業の収益だけでなく、経済全体にも大きな影響を与えます。効率的なトラックルーティングは、輸送・物流業界にとって不可欠な要素であり、トラックにとって最も効率的なルートを戦略的に計画し、物資を輸送することにつながります。その主な目的は、タイムリーな配送と資源の最大活用を確保しながら、移動距離を減らすことです。トラックのルートを最適化することで、物流会社は業務の効率性と収益性を大幅に向上させることができます。本記事では、Amazon Location Service のトラックルーティング機能についてご紹介します。この機能は、HERE Technologies の提供する正確で新鮮かつ堅牢なデータを活用し、物流企業の目標達成を支援します。HERE Technologies は AWS パートナーであり、Amazon Locations Service のデータプロバイダーです。HERE Technologies は、オープン、セキュア、プライベートなロケーションセントリック・プラットフォームを提供する、ロケーションデータおよびテクノロジープラットフォームのリーディングカンパニーです。

効率的なトラックルーティングの中核的な利点の 1 つは、コスト削減です。トラックの移動距離を最小限に抑えることで、物流会社は燃料費を削減し、車両の消耗を抑え、資源の利用を最適化することができます。米国交通研究所(ATRI)の調査によると、トラックのルートを最適化することで、輸送コストを最大 10 %削減でき、大幅なコスト削減と、二酸化炭素排出量の削減による持続可能性の推進につながります。さらに、環境保護庁(EPA)の報告によると、トラックルートを最適化することで燃料消費量を最大 15 %削減でき、持続可能性をさらに促進し、二酸化炭素排出量を削減することができます。

効率的なトラックルーティングは、納期を改善し、顧客満足度を高めることにもつながります。移動時間を最小限に抑え、交通渋滞を回避するルートを計画することで、物流会社は商品を時間通りに、優れた状態で届けることができます。ルーティング技術の進歩により、トラックのルーティングは以前にも増して洗練され、効率的になりました。ルート最適化サービスでは、交通パターン、天候、道路閉鎖などを考慮した高度なアルゴリズムを使用し、最も効率的なルートを決定しています。この技術により、物流会社は時間、資源、コストを節約し、全体的なオペレーションを改善し、優れた顧客サービスを提供する能力を向上させることができます。

Amazon Location Service は、HERE Technologies を通じて、インテリジェントな経路情報とリアルタイムの更新情報を入手します。物理的な制約、トラックのプロファイル(高さ、長さ、幅、重量など)、フェリーや通行料などの回避を考慮したトラック専用のルーティング機能を提供し、トラックドライバーやオペレーターに安全かつ効率的なトラックのルートを提供します。これにより、物流会社は、ドライバーと貨物の安全・安心を確保しながら、トラックルーティングの最適化、コストの最小化、業務全体の強化を実現することができます。

トラックルーティングシナリオ

トラックには独特の特性があり、通常の自動車とは異なるルート計画を立てる必要があります。車高、車体長、重量、車幅、積載物の種類、法規制などの要素を考慮し、トラックに適したルートを決定する必要があります。また、橋が低いなど、目的地に安全に到着できない物理的な障害に遭遇すると、ドライバーはイライラしてしまいます。Amazon Location Service の HERE Technologies によって提供される Routes API を利用することで、企業は安全かつ効率的にルートを最適化でき、高額な罰金や危険な状況、配送窓口の不在を回避することができるようになります。Amazon Location Service の Routes API は、トラックの属性と、低くて狭い橋、危険物、道路閉鎖、急カーブなどのルート制限を考慮したルートを計算することができます。

例えば、よくあるシナリオとして、通常の配送バンと車高が高い長距離トラックのルートを比較してみましょう。ニューアーク空港(ニュージャージー州)からマンハッタンのダウンタウン(ニューヨーク州)に向かう場合、最も近道なのはオランダトンネル(図 1、左)です。しかし、狭いトンネル内では車両の大きさが制限され、可燃性の荷物の積載も禁止されています。そのため、背の高い危険な荷物は、スタテン島まで南下し、ヴェラザノ・ナローズ・ブリッジを渡り、ブルックリンを通ってマンハッタン・ブリッジを渡り、約 2 倍の距離(53 %増)を移動しなければなりません(図 1、右)。

図1. ニューアーク空港(ニュージャージー州)からダウンタウン・マンハッタン(ニューヨーク州)まで、普通のトラック(左)と車高の高いトラック(右)が通るルート

一方、目的地がニューヨークのミッドタウン・マンハッタンの場合、2 つの全く異なるルートが存在する。一つはリンカーントンネルを通る一般貨物用のルート(図 2、左)、もう一つは 40 分ほど時間がかかる車高が高い車用のルート(図 2、右)です。

図2. ニューアーク空港(ニュージャージー州)からミッドタウン・マンハッタン(ニューヨーク州)まで、普通のトラック(左)と車高の高いトラック(右)が通るルート

以下では、HERE Technologies をデータプロバイダとする Amazon Location Service リソースを設定し、トラックのルーティングアプリケーションで使用する方法を学びます。

ソリューションの概要

AWS CloudFormation を使用して必要な AWS リソースを作成し、Amazon Location Service の GitHubリポジトリから入手できる amazon-location-route-planner プロジェクトを使用して Web アプリケーションを構成しデプロイします。Web アプリケーションは、ベースとなるマッププロバイダとルーティングエンジンとして Amazon Location Service、マップレンダリングライブラリとして MapLibre GL JS、UI コンポーネントライブラリとして Tailwind CSS を使用する Vue アプリケーションです。

このアプリケーションには、以下のコンポーネントと機能があります。

  • トラックのルーティングに特化したインタラクティブなマップ。トラックの制限や属性をシンボルやアイコンで強調し、トラックが安全かつ効率的に使用できるルートを簡単に特定できる。
  • 異なる交通手段、出発時間、トラックの寸法、制限、回避など、多くのパラメータに基づいて最も効率的なルートを見つけるルート計算機です。これにより、トラックドライバーやオペレーターは、より効果的にルートを計画し、時間とリソースを節約しながら、トラックが法的および安全な制限内に留まることができます。

図3. インタラクティブな地図とルーティング機能を備えたウェブアプリケーション

チュートリアル

前提条件

このチュートリアルを完了するには、AWS リソースを作成するのに十分な権限を持つ AWS アカウントにアクセスする必要があります。まだ持っていない場合は、AWS アカウントを作成します

AWSリソースの作成

AWS CloudFormation テンプレートを使用して、HERE Technologies をデータプロバイダとする Amazon Location Service マップおよびルート計算機リソースを含む、多くの AWS リソースを作成します。また、Amazon Cognito Identity Pool を作成し、いくつかの IAM ロールとポリシーを作成して、アプリケーションに Amazon Location Service リソースにアクセスするために必要な権限を付与し、誰がこれらのリソースにアクセスし、どのようなアクションを実行できるかを制御するように維持します。

このリンクをクリックして、このテンプレートを AWS アカウントにデプロイします。AWS マネジメントコンソールが開き、CloudFormation テンプレートのデプロイメントプロセスが開始されます。「I acknowledge that AWS CloudFormation may create IAM resources 」(図 4)をチェックし、「Create stack 」ボタンを選択します。

図 4. AWS CloudFormation コンソールを使用して、CloudFormation テンプレートを AWS アカウントにデプロイ

デプロイプロセスが完了したら、「Outputs」セクションで Cognito Identity Pool ID を取得します(図 5)。

図 5. AWS CloudFormation コンソールで CloudFormation スタック出力にアクセス

アプリケーションの設定と起動

Amazon Location Service の GitHub リポジトリから入手できる amazon-location-route-planner のプロジェクトをクローンします。その後、プロジェクトディレクトリに移動し、依存関係をインストールします。

git clone https://github.com/aws-samples/amazon-location-samples.git
cd amazon-location-samples/amazon-location-route-planner/
npm install

次に、src/config.js を開き、スタックの Outputs の値を使って Cognito Identity Pool ID を入力します。

const identityPoolId = "IDENTITY_POOL_ID";
const mapName = "TruckDemoMap";
const routeCalculatorName = "TruckDemoRouteCalculator";

export { identityPoolId, mapName, routeCalculatorName };

プロジェクトを保存し、以下のコマンドを実行してアプリケーションを実行します。

npm run dev

Web ブラウザで http://localhost:8080/ を開くと、ルーティング機能付きのインタラクティブマップにアクセスすることができます。このマップは、図 6 に示すように、HERE Technologies のデータを利用しています。

図6. インタラクティブな地図とルーティング機能を備えたウェブアプリケーション

アプリケーションを使用する

このアプリケーションを使用するには、マップ上をクリックして、出発地、目的地、そしてオプションで途中の停留所(または waypoints)を最大 23 箇所まで指定する必要があります。その後、アプリケーションは HTTP POST リクエストを形成し、Amazon Location Routes API から CalculateRoute オペレーションを呼び出すことになります。以下は、リクエストボディの例です。

{
   "DepartNow":true,
   "DeparturePosition":[
      "-114.15901",
      "51.13882"
   ],
   "DestinationPosition":[
      "-114.16132",
      "51.13349"
   ],
   "DistanceUnit":"Kilometers",
   "IncludeLegGeometry":true,
   "TravelMode":"Truck",
   "TruckModeOptions":{
      "AvoidFerries":false,
      "AvoidTolls":true,
      "Dimensions":{
         "Height":"2.5",
         "Length":"8",
         "Unit":"Meters",
         "Width":"2.5"
      },
      "Weight":{
         "Total":"10000",
         "Unit":"Kilograms"
      }
   },
   "WaypointPositions":[
      [
         "-114.16315",
         "51.13592"
      ]
   ]
}

API は、出発地と目的地の間の最適なルートを計算し、移動時間、距離、ルート形状を返します。また、輸送モードとしてトラックを選択した場合、輸送モード、測定単位、出発時間、回避、車両プロファイルなどの各種パラメーターを設定することができます。API レスポンスを解析した後、Web アプリケーションは結果を表示します。以下は、API レスポンスの例です。

{
   "Legs":[
      {
         "StartPosition":[
            -114.1590122,
            51.1388477
         ],
         "EndPosition":[
            -114.1632184,
            51.135898
         ],
         "Distance":0.641,
         "DurationSeconds":78,
         "Geometry":{
            "LineString":[
               [
                  -114.159012,
                  51.138848
               ],
               ...
               [
                  -114.163218,
                  51.135898
               ]
            ]
         },
         "Steps":[
            {
               "StartPosition":[
                  -114.159012,
                  51.138848
               ],
               "EndPosition":[
                  -114.16424,
                  51.13778
               ],
               "Distance":0.391,
               "DurationSeconds":35,
               "GeometryOffset":0
            },
            {
               "StartPosition":[
                  -114.16424,
                  51.13778
               ],
               "EndPosition":[
                  -114.163218,
                  51.135898
               ],
               "Distance":0.25,
               "DurationSeconds":43,
               "GeometryOffset":11
            }
         ]
      },
      {
         "StartPosition":[
            -114.1632184,
            51.135898
         ],
         "EndPosition":[
            -114.1614708,
            51.1334579
         ],
         "Distance":0.298,
         "DurationSeconds":19,
         "Geometry":{
            "LineString":[
               [
                  -114.163218,
                  51.135898
               ],
               ...
               [
                  -114.161471,
                  51.133458
               ]
            ]
         },
         "Steps":[
            {
               "StartPosition":[
                  -114.163218,
                  51.135898
               ],
               "EndPosition":[
                  -114.161471,
                  51.133458
               ],
               "Distance":0.298,
               "DurationSeconds":19,
               "GeometryOffset":0
            }
         ]
      }
   ],
   "Summary":{
      "RouteBBox":[
         -114.16462,
         51.1334579,
         -114.159012,
         51.138848
      ],
      "DataSource":"Here",
      "Distance":0.9390000000000001,
      "DurationSeconds":97,
      "DistanceUnit":"Kilometers"
   }
}

クリーンアップ

このチュートリアルで作成したリソースをすべて削除したい場合は、amazon-location-route-planner というCloudFormation スタックを削除します(図 7)。

図 7. AWS CloudFormation コンソールを使用して、チュートリアルで作成したすべてのリソースを削除

まとめ

Amazon Location Service を利用することで、企業は強力なルーティングアルゴリズムとリアルタイムデータを活用して、トラックのプロファイル(高さ、長さ、幅、重量を含む)、物理的制限、交通情報、回避を考慮した効率的なルートを作成し、トラックドライバーとオペレーターに安全で効率的なトラックのルートを提供できます。この記事では、Amazon Location Service を使用して、HERE Technologies の高品質なデータを使用して、トラックのルーティング用に特別に設計されたインタラクティブなマップとルート計算機を Web アプリケーションに追加する方法について学びました。

Amazon Location Service の GitHub リポジトリにはいくつかのサンプルプロジェクトがあり、AWS 上で位置情報と機能を持つアプリケーションを構築する方法を学ぶために探索することができます。Amazon Location Service の製品ページでは、提供サービス、一般的な使用例、およびお客様の成功事例をご覧いただけます。Amazon Location Service の機能をより深く理解するには、開発者向けドキュメントをご覧ください。

著者プロフィール

Abraham Poorazizi

Abraham Poorazizi は、AWS の Senior Developer Advocate です。現実世界の問題を解決するためのデジタルソリューションの作成に情熱を注いでいます。彼は開発者が Amazon Location Service を使った製品を作るのを支援するために、一緒に時間を費やしいます。

Erwin Soekianto

Erwin Soekianto は HERE Technologies の Senior Developer Evangelist です。地図、テクノロジー、人助けに情熱を注いでいます。彼は HERE Technologies の認知度と採用を促進することで、開発者コミュニティを強化することを目指しています。

Anand Vijayan

Anand Vijayan は Amazon Location Service を中心とした Senior Product Manager です。地理空間技術に興味があり、クラウドの力を活用してお客様が複雑な問題を大規模に解決できるよう支援することに喜びを感じています。また、天文学者でもあり、宇宙に関するあらゆることに強い関心を持っています。

本記事は、Efficient truck routing with Amazon Location Service を翻訳したものです。翻訳はソリューションアーキテクトの稲田大陸が担当しました。