Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ADBC最前線?
Search
eitsupi
October 03, 2026
Programming
12
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ADBC最前線?
第122回R勉強会@東京(Tokyo.R)発表資料
eitsupi
October 03, 2026
More Decks by eitsupi
See All by eitsupi
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
480
Other Decks in Programming
See All in Programming
Agents on Rails - Rails at Scale 2026
irinanazarova
0
310
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
450
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
1
110
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.2k
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
210
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
5.2k
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
170
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.2k
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
110
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
330
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
570
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Rails Girls Zürich Keynote
gr2m
96
14k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
510
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
560
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
240
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Technical Leadership for Architectural Decision Making
baasie
3
580
Into the Great Unknown - MozCon
thekraken
41
2.7k
Scaling GitHub
holman
464
140k
Transcript
Tokyo.R 122 · 2026-10-03 ADBC 最前線? Apache Arrow 時代のデータベース接続 @eitsupi
自己紹介 @eitsupi • 本業:手料理サブスク Tsuklio のデータ周り • 副業:Columnar 社で Apache
Arrow ADBC 周りの開発 - 本資料は個人の見解であり所属組織とは関係ありません (※言ってみたかった) • Excel が嫌になり R を使い始めて 7 年 • 近況 - arf 等の R 関連ツール開発 - R コンソーシアムの助成金応募してみた - 停滞していた vscode-R の 3.0.0 リリース関与
Apache Arrow とは
フォーマットの N×M 問題 バラバラの形式を直接つなぐと、変換が N×M に増える。 共通形式なし Apache Arrow が共通形式に
Apache Arrow でやり取りすることで複製・変換処理を減らせる。 図の出典:Apache Arrow 公式 Overview
Apache Arrow が標準化したもの 列指向 列ごとに並ぶメモリ上のデータ形式 言語非依存 言語をまたぐ共通の表現 C Data Interface
異なる言語・実装間でデータを受け渡す仕組み Parquet は保存するファイル形式。Apache Arrow は主にメモリ上の共通表現。 Apache Arrow Overview · C Data Interface
Apache Arrow は 10 周年。R でも当たり前に使える そろそろ R ユーザーも Apache
Arrow で Parquet を使っ 2019 年 てみませんか? 「CSV をやめて人間を続けよう」 2026 年 Apache Arrow は 10 周年。 R では dbplyr から ADBC(後述)が利用可能に。 「使ってみませんか?」から、R でも普段使うデータ基盤へ。 Apache Arrow 10 周年 · dbplyr 2.6.0
Apache Arrow ADBC とは
接続にも N×M 問題がある アプリ・言語 N 個 多様なクライアント N×M データベース M
個 さまざまな接続先 BigQuery · Snowflake · Databricks · PostgreSQL · DuckDB · SQLite … 各アプリ・言語が DB ごとの接続方式を直接扱うと、組み合わせごとに実装が必要。 ADBC FAQ · Apache Arrow 公式: Introducing ADBC · Columnar 社 ADBC Quickstarts
ADBC は接続の共通 API アプリは同じ ADBC API を使い、接続先ごとの差はドライバーが受け持つ。 図中の Flight SQL
は接続先への経路の一例。ADBC が通信方式を決めるわけではない。 図の出典:Apache Arrow 公式: Introducing ADBC
ADBC は何を決める? Arrow Database Connectivity Apache Arrow を共通形式にしたデータベース接続 API 接続
ステートメント クエリ実行 メタデータ トランザクション 一括投入 SQL 方言もクライアントと DB の通信方式も定義しない。 ADBC FAQ · ADBC API Standard
ODBC / JDBC との違い
30 年続く接続 API 1992 ODBC 1.0 が登場 1996 JDBC が登場
2022 ごろ Apache Arrow を土台に ADBC が生まれる Columnar 社のローンチ記事は「接続規格が長く使われる」ことから話を始める。 Microsoft: 1992 年の製品史 · Columnar 社: Announcing Columnar (2025-10-29)
3 つともデータベース接続 API JDBC ODBC ResultSet が基本。行ベースの API。 行単位・列単位のデータ受け取りが可能。Apache Arrow
形式は共 ADBC 通契約ではない。 Apache Arrow をデータ交換の中心に置く。 いずれも通信プロトコルは決めない。ADBC は ODBC/JDBC の全面置換でもない。 ADBC FAQ: Why not JDBC/ODBC?
Flight SQL との違い
Flight SQL とは? Apache Arrow Flight の上で SQL を扱う通信プロトコル。DB 側にも対応が必要。
SQL クライアント ↓ Flight SQL SQL 命令・メタデータ + Apache Arrow のデータ ↓ Flight SQL 対応 DB Apache Arrow: Flight SQL specification · Flight SQL 発表(2022 年)
ADBC と何が違う? どちらも「SQL」と「Apache Arrow」を扱うので、似て見える。 データ表現 Apache Arrow クライアント API ADBC
/ ODBC / JDBC 通信プロトコル Flight SQL / PostgreSQL プロトコル / TDS / Quack ADBC はクライアント側の API。ドライバーが DB と使う通信プロトコルは決めない。 ADBC Glossary · ADBC FAQ: Flight SQL · ADBC? Flight SQL?
Flight SQL は ADBC 経由で利用可能 アプリ → ADBC API ↓
Flight SQL ドライバー Quack ドライバー ↓ ↓ Flight SQL Quack ↓ ↓ Flight SQL 対応 DB DuckDB サーバー ADBC FAQ · Columnar 社: Quack ADBC driver
Flight SQL の設計上のトレードオフ 2022 年登場の Flight SQL。クエリの結果取得には、少なくとも 2 回の通信が必要。 ①
GetFlightInfo SQL を送り、結果の取得先を受け取る ↓ ② DoGet 結果データを取得する 小さなクエリを多数実行する用途では、この 2 往復は効率が悪い。 仕様見直しの issue「Flight SQL evolution」は 2024 年に作成され、現在も open。 Flight SQL specification · DuckDB: Why Not Arrow Flight SQL? · Apache Arrow #41840
Flight SQL がいつも最速とは限らない DuckDB が Quack を発表したときの転送時間の比較。 Quack Flight SQL
/ GizmoSQL 4.94 秒 17.40 秒 TPC-H lineitem 6,000 万行の read。AWS Arm 同一 AZ、5 回の中央値。サーバー実装も異なる特定条件で の比較で、ADBC 自体の性能比較ではない。 ADBC は通信方式を決めない。Quack も Flight SQL も、対応ドライバーを通して使える。 DuckDB: Quack remote protocol (2026-05-12)
ADBC のこの 1 年
ドライバーは言語をまたいで使える Go で実装した Snowflake ドライバー ↓ 共有ライブラリ .so / .dylib
/ .dll ↓ ADBC Driver Manager 動的に読み込む さまざまな言語・アプリの ADBC クライアント ADBC Drivers · 接続例:ADBC 公式ドキュメント / Columnar 社 adbc-quickstarts
ドライバーをどう配る? Driver Manager で使うには、共有ライブラリの配布・インストールが必要。 dbc → ドライバー + 設定情報 →
Driver Manager dbc install sqlite dbc install snowflake dbc はコマンドとして使えるほか、0.3.0 から Go のライブラリとしてアプリにも組み込める。 ADBC Drivers: installation · dbc 0.3.0
2025–2026 年の動き 2025.10 dbc と ADBC Driver Foundry が登場 2026.05
dbc 0.3.0:Go のライブラリとして利用可能に 2026.07 ADBC 24:一部ドライバーの開発が Foundry へ 2026.10.01 dbc 0.3.1 がリリース(一昨日) Foundry は Apache Arrow から独立したコミュニティプロジェクト。Apache Arrow は ADBC の中核と仕 様を維持。 Columnar 社ローンチ · dbc 0.3.0 · ADBC 24 · dbc 0.3.1
dbt v2 も ADBC を採用 dbt v1 dbt v2 adapter
A → 接続実装 A adapter B → 接続実装 B dbt / Rust ↓ ADBC ↓ 各 DB のドライバー Go 実装なども利用可能 言語をまたいで使えるドライバーの仕組みが、製品の共通接続層に使われている。 dbt: Arrow ADBC and dbt v2 · dbt v2 GA
R から使う
いまの R での経路 dplyr → dbplyr 操作を SQL へ翻訳 DBI
→ adbi DBI 互換の接続・実行 adbcdrivermanager ドライバーを読み込む ADBC ドライバー 接続先 DB と通信 adbi のおかげで、既存の dplyr / dbplyr コードから ADBC を利用できる。 DBI にも Apache Arrow API があり、adbi は dbGetQueryArrow() などを実装している。 adbi README: Apache Arrow API · ADBC R client
SQLite で試す 準備:dbc install sqlite。adbi、adbcdrivermanager、DBI、dplyr、dbplyr を使用。 con <- DBI::dbConnect( adbi::adbi(adbcdrivermanager::adbc_driver("sqlite")),
uri = ":memory:" ) DBI::dbWriteTable(con, "mtcars", mtcars) dplyr::tbl(con, "mtcars") |> dplyr::filter(cyl == 6) |> dplyr::summarise(n = dplyr::n(), avg_mpg = mean(mpg, na.rm = TRUE)) |> dplyr::collect() DBI::dbDisconnect(con) 結果:n = 7、avg_mpg = 19.7 ADBC Drivers · adbi README
接続クラスと SQL 方言を結び付ける限界 従来の自然な前提 汎用の接続 API では RPostgresConnection AdbiConnection ↓
↓ PostgreSQL 方言 PostgreSQL / SQLite / Snowflake ODBC/JDBC/ADBC では、接続クラスだけでは接続先の SQL 方言が決まらない。 Posit 社: dbplyr 2.6.0
dbplyr 2.6.0 で SQL 方言を分離 AdbiConnection ↓ ADBC_INFO_VENDOR_NAME ドライバーに接続先の製品名を問い合わせる ↓
sql_dialect() PostgreSQL → dialect_postgres() など dbplyr は接続先の製品名から SQL 方言を選ぶ。未対応なら汎用 ODBC 方言の dialect_odbc()へ。 dbplyr backend-adbc.R · dbplyr sql-dialect.R
接続を作るだけで 3 つのパッケージの関数が必要!? 先ほどの SQLite 例から、接続部分だけを抜き出すと… con <- DBI::dbConnect( adbi::adbi(
adbcdrivermanager::adbc_driver("sqlite") ), uri = ":memory:" ) adbcdrivermanager adbi DBI ドライバーを指定 DBI につなぐ 接続を作る adbi は有用な互換レイヤー。ただ、dbplyr から ADBC へ進む実行経路は複雑。 → 個人的には、dbplyr が ADBC を DBI と並ぶ実行バックエンドとして直接扱えるとうれしい。 adbi README · ADBC R client
R での活用例
Posit 社の 2 つの例 ggsql 0.5.0 汎用のデータベース読み込み手段として ADBC を追加。ODBC とも並んで使える。
skiLift 通常は Snowflake SQL API(HTTPS / JSON)。大量データの転送時は、利用可能なら ADBC / Apache Arrow を使用。 上位の R API と、下で使う接続・転送方式は別々に選べる。 Posit 社: ggsql 0.5.0 · Posit 社: skiLift
まとめ Apache Arrow ADBC この 1 年 データ表現の N×M 問題に共通形式を用意した
接続の N×M を減らす Apache Arrow ベースの共通 API。 通信プロトコルは規定しない ドライバー配布と dbt v2 採用。 念願の dbplyr からの利用が可能に Enjoy! Apache Arrow Overview · ADBC FAQ · ADBC Drivers · dbt v2 · dbplyr 2.6.0