はじめに
Microsoft Researchは2026年10月22日、ブログで「Flint-interactive」を紹介しました。AIエージェントが、クリックや絞り込みで探索できるグラフを作るための言語です。本稿では、その仕組みと使い方、導入前の確認点を解説します。
参考記事
- タイトル: Flint-interactive: A language for creating interactive data visualizations
- 著者: Chenglong Wang、Yuwei Xiao、Alper Sarikaya、Michel Galley、Chris Quirk、Jianfeng Gao
- 発行元: Microsoft Research(Microsoft Research Blog)
- 発行日: 2026年10月22日(日本時間では10月23日)
- URL: https://www.microsoft.com/en-us/research/blog/flint-interactive-a-language-for-creating-interactive-data-visualizations/
要点
- Microsoft Researchは、AIエージェントが対話型のデータ可視化を作るための言語「Flint-interactive」を紹介している。クリック、絞り込み、ズーム、強調、グラフ間の連動に対応する。
- 低レベルの描画コードの代わりに、意味イベントと更新操作の対応づけで操作を定義する。見た目の更新や依存関係はFlintのコンパイラが処理する。
- 使い方は3つ示されている。チャットでFlint-MCPとMCP Appsを使う方法、Flint Canvasでアプリに組み込む方法、APIで独自の操作を作る方法である。
- グラフの操作は、表や文章、他のグラフ、アプリの状態と連動させられる。元記事に料金や定量的な評価結果の記載はない。
詳細解説
Flint-interactiveとは何か
Microsoft Researchによると、Flint-interactiveはFlintの上に作られた言語です。対話型のデータ可視化を作るためのもので、ダッシュボードやデータストーリー、対話的な成果物を作りやすくすることを狙っています。
想定している操作は、クリック、絞り込み(フィルタ)、ズーム、強調表示、グラフ間の連動です。読み手が自分でグラフを動かし、作者が選んだ見せ方の外側まで探索できるようにすることが目的です。元記事は、高度なデータジャーナリズムに並ぶ品質の対話型記事を、エージェントでも作れる状態を理想として挙げています。
データストーリーとは、文章とグラフを組み合わせ、読み進めながらデータを追える形式を指すと考えられます。著者には、Microsoft Researchの研究者に加えて、UCLAの博士課程の学生とPower BIのデータ可視化エンジニアが名を連ねています。
AIで対話型グラフを作るときの課題
元記事は、AIエージェントのおかげでデータ分析やグラフ付きレポートの作成が容易になったとしています。長い文章を読むより、グラフの方がパターンを効率よく確認できるためです。
一方で、探索したい場面では静止したグラフでは物足りません。細部へのズーム、複数グラフでの比較、グラフで選んだ範囲に対応する本文の強調などが欲しくなります。元記事は、利用者と開発者それぞれの問いを挙げています。
- 利用者として: チャットの中でグラフを直接操作し、選んだ部分をもとに追加の質問ができるか
- 開発者として: 顧客向けに作るAIエージェントに、データ理解を助ける対話型グラフを生成させられるか
答えは「可能だが、実用上の大きな隔たりがある」というものです。高性能なフロンティアモデルでも、次の2つの課題が残るとしています。
- 生成コストが高い: 1回で満足のいく対話型グラフができることはまれで、推論・コーディング・デバッグを繰り返すたびにトークンと時間を消費する
- 信頼性が低い: 表現力の高い対話型グラフはレイアウト崩れや操作の不具合を起こしやすく、修正のたびに新たな問題を生むおそれがある
さらに、一部の可視化ライブラリに組み込まれた操作機能だけでは、凝った対話型グラフを作るには表現力が足りないとしています。元記事は、これらの原因を「表現力がありつつ高水準な、操作を指定する言語」の不在に求めています。
本稿としては、この問題設定はAIによるコード生成全般にも通じると受け止めています。対話型グラフには、カーソル位置の計算や再描画のタイミングなど細かな処理が多くあります。AIに低レベルのコードを書かせるほど、こうした部分で失敗する機会も増えると推測されます。
何が変わるのか: 操作を「意味」で書く
Flint-interactiveの中心は、利用者の操作を「意味イベント(semantic event)」として扱う点です。Flintのコンパイラが操作を変換し、利用者が何を選んだのかという意味をイベントとして取り出します。そのうえで、高水準の「更新操作(update operator)」でグラフを更新します。
これにより、操作と見た目の複雑な依存関係を解く負担がコンパイラ側に移ります。利用者やエージェントは、高水準の仕様として操作を記述するだけで済む、というのが元記事の説明です。
元記事の最初の例は、各国の1人当たりGDPと平均寿命を、1952年と2007年で比べる2つの散布図です。一方のグラフで範囲をドラッグして選ぶと、同じ国がもう一方でも強調されます。これは「linked-brush」というプリセット(あらかじめ用意された操作)だけで実現されています。例では、矩形選択、投げ縄選択、横軸・縦軸方向の範囲選択も切り替えられます。
「ブラッシング」は、グラフ上をドラッグして範囲を選ぶ操作を指す可視化分野の用語です。選択を複数のグラフに連動させる手法はリンクト・ブラッシングと呼ばれ、比較分析で広く使われています。年代をまたいで同じ国の位置を追えるため、時間変化の把握に向いた操作と言えます。
仕組み: 見た目の処理と操作の意味を分ける
Microsoft Researchによると、Flint Canvasは状態機械(ステートマシン)として動きます。キャンバス上の操作を追跡し、描画の状態を管理する仕組みです。Flintは次の2つを分けることで、操作の指定を簡単にしています。
- 見た目の処理(visual logic): コンパイラが担当する。クリック、ドラッグ、キー入力などの生の操作を、グラフ要素とデータを特定する意味イベントに変換する。更新操作を実際の描画変更に変換し、ヒットテストや低レベルの再描画も処理する
- 操作の意味(interaction logic): 利用者が指定する。意味イベントを更新操作に対応づける。更新操作には、データを強調するset style、点にラベルを付けるset annotation、パンやズームを行うset viewportなどがある。意味イベントで外部の表やウィジェット、アプリの状態を更新することもできる
この分離により、描画処理を逆算して読み解いたり、描画エンジン固有の要素を直接操作したりする必要がなくなります。元記事は、操作が指定しやすく、保守しやすくなると説明しています。
また、イベントの生成と見た目の更新は組み合わせ可能(compositional)な作りです。そのため同じ仕組みで、表、文章、他のグラフ、ウィジェットともつながります。対話型の記事やダッシュボードも、この仕組みの上で作れるとしています。
状態機械とは、「今どの状態か」と「どの入力でどの状態に移るか」を定義して動作を管理する考え方です。ヒットテストは、カーソルの下にどの要素があるかを判定する処理を指します。エージェントが書くのは、「何が選ばれたら何を変えるか」という対応表に近いものになると読めます。
出力の形が小さく決まっているほど、生成のぶれや修正の手戻りは減りやすいと考えられます。ただし、元記事には生成コストや信頼性の改善を数値で示した評価は載っていません。効果の大きさは、利用場面ごとに確かめる必要があると思います。
使い方1: チャットの中で対話型グラフを使う
1つ目は、Flint-MCPとMCP Appsを使い、チャットやキャンバス環境で直接使う方法です。元記事は、MCPのセットアップガイドに従って設定するよう案内しています。
最新リリースでは、何をグラフにし、どんな操作を付けたいかをエージェントに伝えます。エージェントはFlintのチャート仕様(chart spec)と一緒に `interaction_spec` を生成し、会話の中に対話型グラフを表示できます。利用者はグラフ上で選んだ範囲を、次の質問の文脈として渡すこともできます。
MCP(Model Context Protocol)は、AIアプリと外部のツールやデータをつなぐための共通仕様です。MCP Appsは、MCPのツールがチャット画面に対話的なUIを表示するための拡張だと理解しています。手元のAIクライアントがMCP Appsに対応しているかを、事前に確認しておくとよいと考えられます。
対応クライアントや設定手順は元記事に書かれていません。詳しくはFlint-MCPのセットアップガイドを参照してください。
使い方2: アプリやダッシュボードに組み込む
2つ目は、Flint Interactive Canvasを使い、ダッシュボードやデータストーリーなどのアプリに組み込む方法です。アプリ側の役割は次の2つです。
- 受け取る: Flint Canvasが発する意味イベントを、イベントハンドラで処理する。例として、表の絞り込み、別のグラフの更新、アプリの状態変更が挙げられている
- 送る: アプリのウィジェットからグラフの更新方法を制御したい場合は、更新操作をFlint Canvasへ送る
元記事の例では、2007年の各国データの表とバブルチャートが並んでいます。表で国の行を選ぶと、グラフの該当する点が強調され、値の注釈が付きます。逆に、グラフ側をクリックして表を強調することもできます。
小規模事業者の場面に置き換えると、商品別の売上表とグラフを連動させる社内ダッシュボードが想像しやすいと思います。表で商品を選べばグラフが反応し、グラフで期間を選べば表が絞り込まれる構成です。ただし、これは本稿による応用の想定で、元記事が示した事例ではありません。
使い方3: プリセットにない独自の操作を作る
3つ目は、Flintのプリセットにない独自の操作(bespoke interaction)を作る方法です。プログラミングAPIで、トリガーと独自の処理関数(handle function)を定義します。この関数が、意味イベントを独自のグラフ更新の手順に対応づけます。
元記事の例は、クリックした国を強調し、国名のラベルを付ける処理です。set-styleとset-annotationを組み合わせるだけで、描画エンジン固有の要素には触れません。
もう一つの例は、DimpVisと呼ばれる操作です。米国5都市の気温と降水量を季節ごとに描き、ある都市の点を時間の軌跡に沿ってドラッグします。すると、全都市の点がその時期の値へ一斉に動きます。元記事は、この種の独自の対話型グラフもエージェントがAPIで作れるとしています。
DimpVisは、時間で変化するデータを点のドラッグで直接たどる手法として、可視化研究で提案されたものと理解しています。元記事にはAPIのコード例が載っていません。具体的な書き方はプログラミングAPIのドキュメントを参照してください。
試すための入り口
元記事は、立場ごとに次の入り口を案内しています。デモ動画も公開されています。
- グラフを使う人: Flint-MCPをチャットに設定し、エージェントに対話型グラフを依頼する。参考になる例は操作ギャラリー(interaction gallery)で探せる
- アプリを作る人: プログラミングAPIで、対話型のダッシュボード、データストーリー、連動ビューを作る。interaction-authorスキルをコーディングエージェントに共有すれば、アプリにプリセットを追加できる
- 操作を設計する人: 独自操作の例を見て新しい操作を設計し、再利用できるプリセットにする。GitHubでプリセットを提案し、試作や実装を共有して、Flintの操作の語彙を広げられる
interaction-authorスキルは、コーディングエージェントに読ませる作業手順のようなものと考えられます。ただし、その中身や対応するエージェントについて、元記事に詳しい説明はありません。全体の入口はFlint-interactiveの公式サイトです。
導入前に確認したい点
導入を検討する際は、公式サイトで確認することをおすすめします。
- 料金、利用条件、ライセンスの種類
- 対応するAIクライアントや描画環境の詳細
- 生成コストや信頼性の改善幅を示す定量的な評価
あわせて、本稿としては次の点にも注意が必要だと考えています。
- データの扱い: チャットでグラフを作る場合、元データはエージェントに渡る。社外秘のデータを使う前に、利用するAIサービスのデータ方針を確認しておくと安心だと思います
- 内容の正しさ: 操作の仕組みが安定しても、集計や軸の選び方の誤りは別の問題として残る。AIが作ったグラフは、元データと照らして確認する運用が望ましいと思います
- 研究段階の成果である点: Microsoft Researchのブログで紹介された成果であり、今後の更新や保守の方針は元記事からは分からない
本稿の見方
本稿としては、Flint-interactiveの要点は「AIに何を書かせるか」の設計にあると受け止めています。低レベルの描画コードではなく、意味イベントと更新操作の対応だけを書かせる発想です。
AIの出力を小さく構造化された仕様にとどめ、難しい処理はルール通りに動く処理系に任せる。この考え方は、グラフの対話機能によく当てはまる領域だと思います。
一方で、効果を示す数値はまだ示されていません。既存の可視化ライブラリやBIツールとの使い分けも、元記事では論じられていません。判断は分かれるところだと思いますが、まずはチャットで試し、自社のデータで手戻りが減るかを確かめるのが現実的な進め方だと考えています。
まとめ
Flint-interactiveは、利用者の操作を意味イベントとして扱い、更新操作との対応づけで対話型グラフを作る言語です。チャットでの利用、アプリへの組み込み、独自操作の作成という3つの使い方が示されました。今後の情報と実際の使い勝手に注目したいと考えています。
