本文へスキップ
コース目次

アカデミーモジュール 6 · Git・コード・地図・デザインの活用

マップキャンバスで場所を分析

全4レッスン中 3番目10分

このレッスンで学ぶこと

  • チャットで空間的な質問をして地図を作成し、専用の地図ボタンがない理由を説明できる
  • 「大きく表示」で地図を全画面表示し、ベースマップを切り替え、凡例を読める
  • 地物を選択して@メンションとしてエージェントへ渡し、ピンからナレッジグラフへ移動できる
  • グラフが場所を記憶した後、最寄り、半径内、実際の経路、所要時間などの追加質問ができる

顧客との打ち合わせ場所、事件記録の住所、旅行日程など、位置が重要な資料は地図で距離や分布を確認できます。

チャットで「顧客との会議を地図に表示して」「オフィスから15分以内には何がある?」と依頼します。エージェントが場所を座標に変換して分析し、移動・拡大・選択できる地図を表示します。

作成した地点、分析レイヤー、ピンの詳細を表示するマップキャンバス。

チャットで地図の作成を依頼

アプリ内に地図ボタンやサイドバーアイコンはありません。地図は、チャットのターンでエージェントがwrite_mapツールを呼び出したときに初めて作られます。地図が必要なら、任意のチャットで依頼します。

地名を座標へ変換している間は、「場所をジオコーディング中」カードが表示されます。続いて「作成された地図」カードが現れ、その直下にライブマップが表示されます。その場で移動、ズーム、クリックを操作できます。

エージェントが地図を作る仕組み

エージェントは、宣言的なJSONの「mapspec」を作成します。タイトル、初期カメラ、ベースマップ、GeoJSONデータに紐づくレイヤーで構成されます。アプリは、作成時と描画直前の2回その仕様を検証し、ネイティブのマップレイヤーへ変換します。

モデルが描画コードを書いたり、形状を推測で作ったりすることはありません。すべての座標は実際のジオコーディングから得られるため、地図上の項目は現実の場所までたどれます。

地図には8種類のレイヤーを組み合わせて重ねられます。

  • scatterplot:ピンやバブルを点で表示(半径に数値を割り当てることも可能)
  • heatmap:密度を柔らかな光で表示
  • geojson:区域境界やコロプレス(値で地域を塗り分ける地図)などのポリゴンと線
  • path:経路
  • text:地図上に配置するラベル
  • hexagon:自動的に六角形へ集計した密度。各セルに実際の値を保持
  • arc:出発地と目的地の組を結ぶ大圏線
  • raster:ライブ気象など、タイル画像のオーバーレイ

大きく開く

インラインカードのフッターにある「大きく表示」をクリックすると、地図の名前が付いたピンアイコンの全画面タブとして開きます。チャットは左サイドバーに収まり、地図を見ながら会話を続けられます。

一般的なジェスチャーを使えます。ドラッグで移動、スクロールまたはピンチでズーム、右ドラッグで回転と傾斜を調整します。開いたときは、すべてのデータが収まるようカメラが自動調整され、3D押し出しのある地図は最初から傾いた状態で表示されます。

操作場所動作
ナビゲーション操作右上ズームイン、ズームアウト、方位と傾きを北向きの平面表示へ戻すコンパスボタン
「地図スタイル」ボタン右上、ナビゲーションの下ベースマップメニュー:「標準」(初期値の3D)、「フェード」、「モノクロ」、「ライト2D」、「ダーク2D」、「衛星」。選択はエージェントが地図を書き換えても保持される
凡例右下、全画面のみカテゴリ、コロプレスの範囲(「50以上」など)、レイヤーごとの色見本とラベル
時間スクラバー下中央、時間軸のある地図時刻付きデータを再生(詳しくは後述)
ホバーツールチップ操作可能な地物地物のフィールドを並べた小さなポップアップ。ヒートマップレイヤーだけはポイントもクリックもできない

インライン地図は意図的に簡潔

会話内の地図には、タイトルや凡例を重ねて表示しません。色の意味はエージェントが返信内で説明するため、地図そのものをすっきり保てます。

凡例をすべて確認するには、大きく開きます。全画面タブでは、すべてのカテゴリと範囲が表示されます。

地図で場所を選んで質問

地図からチャット、グラフへ

  1. 地物をクリックする

    地図上部に「選択中:{label}」というピルが表示されます。「×」ボタン(「選択を解除」)で元に戻せます。地図の空白をクリックしても解除できます。

  2. 入力欄へ引き継ぐ

    チャットの入力欄に@labelメンションのチップが入ります。次のメッセージには、その地物の全プロパティと座標が自動的に付くため、「なぜこれだけ外れ値なの?」と尋ねるだけで意図が伝わります。

  3. その場所について質問する

    メッセージを送信します。エージェントは、クリックした地物とそのすべてのデータを正確に受け取ります。どの点を指しているのか説明する必要はありません。

  4. ナレッジグラフへ移動する

    クリックした地物がワークスペース内のエンティティに紐づいていれば、ピルに「グラフで表示」ボタンも現れます。クリックすると、そのエンティティにフォーカスしたグラフビューが開きます。

距離・経路・分布の分析

地図は可視化だけでなく、実際の分析も行います。アプリが決定論的に空間分析を計算し、移動経路は直線距離の推測ではなく、ライブサービスから得た現実の道路形状を使います。

質問実行される処理
「インシデントはどこに集中している?」六角形の密度集計、または統計的に有意なホットスポットとコールドスポットを見つけるhotspot分析(Getis-Ord Gi*)
「どこへ広がっている?」emergingHotspot:各セルを強まり、弱まり、持続、新規、散発、過去に分類する時空間の傾向検定
「AからBへ行くには?」directions:各経由地を結ぶ実際の車、徒歩、自転車の経路と距離・所要時間
「オフィスから15分以内には何がある?」isochrone:実際の移動時間に基づき、N分以内に到達できる範囲を複数の入れ子の時間帯で示すポリゴン
「各店舗から最短で行ける倉庫は?」travel_matrix:複数の出発地と目的地を結ぶ移動時間マトリクス
「倉庫から2 km以内には何がある?」(地図を開いていない)query_geo:グラフが記憶している場所に対する、最寄り、半径内、境界ボックス内、ポリゴン内の検索

GeoSPARQL:グラフが場所を記憶する方法

GeoSPARQLは、ナレッジグラフで地理情報を扱うためのW3C/OGCオープン標準です。場所は他の事実と同じで、エンティティ上に「POINT(lon lat)」のような座標リテラルとして保存されます。

エージェントがワークスペース内のエンティティを割り当てた点を地図にすると、その座標は専用の派生グラフへ入ります。ノートに記された事実とは分けて管理されるため、機械的に得た座標とノートの記述が混ざることはなく、ノートを再抽出しても座標は残ります。

グラフが場所について記憶する内容
(Kyoto Station)  -located at->  POINT(135.7587 34.9858)

ここに地図の長期的な価値があります。エンティティに紐づく場所を一度地図に表示すると、その後は地図を描かなくても、エージェントが空間的な質問に答えられます。「最寄りの顧客5社」や「この区域内にあるすべての資産」と尋ねれば、以後どの会話でもquery_geoが処理します。

時点ごとの地図データを確認

mapspecに時間フィールドがあると、地図に時間スクラバーが追加されます。インラインカードではフッター、全画面タブでは下中央に表示されます(アクセシブル名は「時間スクラバー」)。初期状態では終点にあり、すべての地物が見えます。

左へドラッグすると、選んだ時点までの地物が累積表示されます。絞り込まれたデータで変換処理も再計算されるため、六角形集計、ホットスポット、コロプレスがドラッグに合わせて動きます。スクラブしてもカメラの範囲は変わらないので、1つの地域を見たまま変化を再生できます。

初めての地図を作る

  1. チャットを開き、「ノートに出てくる場所を地図に表示して」のような空間的な依頼をします。
  2. 会話内で「場所をジオコーディング中」カードが地名を解決し、続いて「作成された地図」カードとライブマップが表示される様子を確認します。
  3. 地図のフッターにある「大きく表示」をクリックし、全画面タブで開きます。
  4. 「地図スタイル」メニューを開き、「衛星」に切り替えてから「モノクロ」へ戻し、右下の凡例を確認します。
  5. 地物をクリックして「選択中」ピルを確認し、「これについて詳しく教えて」と追加で尋ねます。

地図が全画面で開き、左側にチャットが並びます。クリックした地物は@メンションとして渡され、エージェントがその場所について正確に答えます。地物がエンティティなら、ピルに「グラフで表示」ボタンも付きます。

mapspec
エージェントが作る宣言的JSONです。タイトル、カメラ、ベースマップ、レイヤーで構成されます。2回検証された後、ネイティブのマップレイヤーへ変換されます。
transform
アプリがレイヤーのデータに対して実行する、パラメーター化された空間計算です。六角形集計、カーネル密度、バッファ、クラスタ、ボロノイ、ホットスポット統計などがあります。
ジオコーディング
OpenStreetMapを使い、地名を座標へ変換する処理です。順方向・逆方向、1件・一括のいずれにも対応し、すべて実在する解決済みの座標です。
等時間圏
実際の道路網で計算した、N分以内に到達できる範囲を示すポリゴンです。
時間スクラバー
時間軸のある地図で、指定した時点までの地物を累積的に絞り込むスライダーです。ドラッグ中も分析レイヤーを再計算します。
query_geo
ナレッジグラフが記憶したエンティティ座標を使い、最寄り、半径内、ポリゴン内の質問に答えるエージェントツールです。

距離を示すなら到達範囲を依頼する

点の大きさは画面上のピクセルで表します。量の大小には適していますが、地上の距離は示しません。

倉庫から2 km以内、各診療所から徒歩10分圏内など、実際の地理的な範囲が必要なら、そのまま依頼してください。エージェントは、実距離に基づくバッファポリゴンまたは移動時間の等時間圏を描きます。

地図は、会話の中でエージェントが作るキャンバスです。次のデザインキャンバスでは、同じ考え方を画面デザインへ広げます。エージェントが画面を描き、ユーザーが手に取って調整します。

マップキャンバスで場所を分析