DuckDB v1.5.0で刷新されたCLIを試してみる

DuckDB v1.5.0で刷新されたCLIを試してみる

2026.03.19

どうも!オペ部の西村祐二です!

2026年3月9日にDuckDB v1.5.0(コードネーム:"Variegata")がリリースされました。このバージョンではCLIが大幅に刷新されています。

この記事では、DuckDBのインストールから新しいCLI機能の使い方までを一通り試してみます。なお、手元の環境がmacOSのため、本記事ではmacOSをベースに記載しています。

結論

DuckDB v1.5.0では、CLIにカラースキーム、動的プロンプト、.tablesコマンド、DESCRIBE、アンダースコアによる結果再利用、ページャー機能など、対話的なデータ分析を快適にする改善が行われました。
この記事ではインストールから各機能の使い方までを紹介します。

この記事で分かること:

  • DuckDBのインストール方法
  • カラースキームによるシンタックスハイライト
  • 動的プロンプトで接続先データベースを常に把握
  • .tablesコマンドによるテーブル一覧の階層表示
  • DESCRIBEステートメントでテーブル構造を確認
  • アンダースコア(_)で前回のクエリ結果を再利用
  • ページャー機能で大量の結果を快適に閲覧

前提条件

  • macOS
  • ターミナル(コマンドライン)の基本操作ができること

手順

1. DuckDBのインストール

公式のインストールページに記載されているインストールスクリプトを使います。

curl https://install.duckdb.org | sh

2026年3月18日時点では、Homebrewだとv1.4.4(LTS版)までしかインストールできないため、上記のスクリプトを使うのが確実です。

インストール後、バージョンを確認します。

duckdb --version
--
v1.5.0 (Variegata) 3a3967aa81

v1.5.0と表示されればOKです。

2. DuckDB CLIを起動する

ターミナルでduckdbコマンドを実行するとインメモリモードで起動します。ファイルを指定するとそのファイルにデータが永続化されます。

# インメモリモードで起動
duckdb
--
DuckDB v1.5.0 (Variegata)
Enter ".help" for usage hints.
memory D 

# ファイルを指定して起動(データが永続化される)
duckdb my_database.db

3. カラースキーム

v1.5.0からCLIにシンタックスハイライトが導入されました。ダークモード・ライトモードの両方に対応したカラーパレットが用意されており、キーワード、文字列、エラー、関数、数値にそれぞれ異なる色が割り当てられています。

試しにSQLを入力してみると、色分けされて表示されることが確認できます。

SELECT 'hello' AS greeting, 42 AS number, current_date AS today;

CleanShot 2026-03-18 at 10.33.12@2x

カラー設定は.highlight_colorsコマンドでカスタマイズできます。.highlight_colors 要素名 色 スタイル の形式で指定します。

設定可能な要素名:

  • layout - レイアウト要素
  • column_name - 列名
  • column_type - 列の型情報
  • numeric_value - 数値
  • temporal_value - 時間関連の値
  • string_value - 文字列値
  • footer - フッター

指定可能な色: red, green, yellow, blue, magenta, cyan, white, brightblack, brightred, brightgreen, brightyellow, brightblue, brightmagenta, brightcyan, brightwhite など

スタイルとして boldunderline も組み合わせられます。

-- 列名を緑+太字に変更
.highlight_colors column_name green bold

-- 数値を赤+太字に変更
.highlight_colors numeric_value red bold

CleanShot 2026-03-18 at 10.44.11@2x

結果テーブルのハイライト自体を無効化したい場合は以下のコマンドを使います。

.highlight_results off

4. 動的プロンプト

v1.5.0から、接続中のデータベース名とスキーマ名がプロンプトに自動表示されるようになりました。複数のデータベースを扱う際に、今どこに接続しているかが一目で分かります。

インメモリモードで起動した場合、プロンプトには memory と表示されます。

memory D

ATTACHでデータベースファイルを接続し、USEで切り替えると、プロンプトの表示が変わります。

ATTACH 'my_database.db';
USE my_database;
my_database D

スキーマを作成して切り替えると、スキーマ名も表示されます。

CREATE SCHEMA my_schema;
USE my_database.my_schema;
my_database.my_schema D

CleanShot 2026-03-18 at 10.49.07@2x

プロンプトのカスタマイズ

.promptコマンドで括弧コードを使ってプロンプトをカスタマイズできます。macOSでのデフォルト設定は以下のようになっています。

{max_length:40}{color:38,5,208}{color:bold}{setting:current_database_and_schema}{color:reset} D
  • {max_length:40} - プロンプトの最大文字数
  • {setting:current_database_and_schema} - 接続中のデータベース名とスキーマ名
  • {color:38,5,208} - ANSIカラーコードによる色指定(オレンジ系)
  • {color:bold} / {color:reset} - 太字の開始・リセット

詳細はFriendly CLI ドキュメントを参照してください。

5. .tablesコマンドでテーブル一覧を表示

.tablesコマンドを使うと、カタログ、スキーマ、テーブル、列を階層的に表示できます。

まずサンプルデータを作成して試してみます。

CREATE TABLE ducks (name VARCHAR, color VARCHAR, weight DOUBLE);
INSERT INTO ducks VALUES ('Mallard', 'Green', 1.2), ('Mandarin', 'Orange', 0.6);

CREATE TABLE ponds (pond_name VARCHAR, location VARCHAR);
INSERT INTO ponds VALUES ('Central Pond', 'Tokyo'), ('West Lake', 'Osaka');

.tablesコマンドを実行します。

.tables

CleanShot 2026-03-18 at 10.52.47@2x

カタログ、スキーマ、テーブル、列が階層的に表示されるので、データ構造が視覚的に把握しやすくなっています。

6. DESCRIBEステートメントでテーブル構造を確認

個別テーブルの列情報を確認するにはDESCRIBEステートメントを使います。

DESCRIBE ducks;

CleanShot 2026-03-18 at 10.53.39@2x

列名、型、NULL許可などの情報が一覧で表示されます。

7. アンダースコア(_)で前回の結果を再利用

v1.5.0では、前回のクエリ結果をアンダースコア(_)で参照できるようになりました。長時間かかるクエリの結果を再利用したい場合に便利です。

SELECT * FROM ducks;
-- 前回の結果を再利用して、weightが1.0以上のレコードを絞り込む
SELECT * FROM _ WHERE weight > 1.0;

CleanShot 2026-03-18 at 10.54.50@2x

クエリを何度も実行し直す必要がなくなるため、探索的なデータ分析に便利で活用できそうです。

8. ページャー機能

v1.5.0からCLIにページャー機能が追加されました。結果が50行超または5列超の場合に自動起動する設定(automatic)がデフォルトになっています。

ただし、デフォルトの表示モード(.mode duckbox)では.maxrows(デフォルト40行)で結果が切り詰められるため、automaticモードではページャーが起動しません。

ページャーを使うには、.mode boxに切り替えます。

.mode box
SELECT range AS id, 'row_' || range AS label FROM range(100);

ページャーの操作方法:

  • / でスクロール
  • 終了: Qキー

.pagerコマンドでページャーの動作を制御できます。

-- ページャーを無効化
.pager off

-- 自動モードに戻す(デフォルト)
.pager automatic

-- ページャーが起動する行数の閾値を変更
.pager set_row_threshold 100

-- ページャーが起動する列数の閾値を変更
.pager set_column_threshold 7

まとめ

DuckDB v1.5.0のCLIは、カラースキーム、動的プロンプト、.tablesコマンド、DESCRIBE、アンダースコアによる結果再利用、ページャー機能など、対話的なデータ分析を快適にする改善が多く入っています。シンタックスハイライトや接続先の表示など、見やすさ・使いやすさが向上していて、CLIだけでもデータを気軽に触れる環境になったと感じました。

CLI以外にも、VARIANT型GEOMETRY型の組み込み化、パフォーマンス向上など注目すべき変更が多いリリースになっています。気になる方は公式リリースノートもチェックしてみてください。

誰かの参考になれば幸いです。


参考リンク:

この記事をシェアする

FacebookHatena blogX

関連記事