世界を動かす技術を、日本語で。

Show HN: Duck-UI – DuckDB用のブラウザベースのSQL IDE

概要

Duck-UI は、 DuckDB をWebAssemblyで完全にブラウザ上で動作させるSQLエディタ。 バックエンド不要 で、CSVやParquetなどのファイルを即座に分析可能。 データは常にローカル に留まり、プライバシー重視。 OPFS対応 でブラウザリフレッシュ後もデータ保持。 学習・即席分析・プロトタイピング など多様な用途に最適。

Duck-UI: ブラウザ完結型SQLエディタ

  • DuckDBWebAssembly でブラウザ内にコンパイル、サーバー不要
  • CSV/JSON/Parquet/Arrow ファイルをローカル・リモートからインポート可能
  • SQLエディタ には オートコンプリート構文ハイライト 搭載
  • クエリ履歴キーボードショートカットテーマ切替 機能
  • OPFS(Origin Private File System) による 永続ストレージ 対応
    • ブラウザ再読み込みでもデータ保持
  • 外部DuckDBサーバー への接続もオプションで対応
  • Dockerワンライナー または Node 20+開発サーバー で即デプロイ
  • Apache 2.0ライセンスChrome 88+ / Firefox 79+ / Safari 14+ 対応

Duck-UIが解決する課題

  • Jupyter notebookCLIホスティングサービス の起動不要
    • 煩雑なセットアップ・アップロード作業からの解放
  • CSVやParquet のクエリ分析が 数秒 で完了
  • データは完全にローカル で処理、 プライバシー重視 のワークフロー

主なユースケース

  • SQL学習 :データベース構築なしで即学習
  • アドホック分析 :CSVからSQL分析まで数秒
  • プロトタイピング :本番導入前の素早い検証
  • プライバシー重視 :データが外部に流出しない安心設計

技術詳細

  • DuckDBWASM でブラウザ実行
  • OPFS によるローカル永続化
  • Apache 2.0 ライセンス
  • 主要ブラウザ に対応

導入方法

  • Dockerdocker run -p 5522:5522 ghcr.io/ibero-data/duck-ui:latest
  • Node 20+開発サーバー でも起動可能

リンク集

フィードバック募集

  • 新たなユースケース の提案
  • パフォーマンス課題 の指摘
  • 「これがあればデフォルトSQLスクラッチパッドにしたい」 という機能要望

Hackerたちの意見

https://github.com/finos/perspective

でも、これはセルフホスティングじゃないよ。デフォルトのUIはオフラインでは使えないし、データの安全性も保証できないからね。

でも、チャートは作れないんだよね(つまり、カラムの統計ヒストグラムはできるけど、OPのソフトみたいなカスタムチャートは無理ってこと)。

DuckDBの未来にすごくワクワクしてる! 1. DuckLakeは最高のデータレイク仕様で、彼らのチームはその拡張を急速に改善してる。 2. DuckDB WASMを使えば、通常はネットワーク呼び出しで2〜3秒の遅延が出るアプリも動かせるよ。 https://ducklake.select/ 1 - https://www.definite.app/blog/ducklake

誰かDuckDBをプロダクションで使ってる人いるかな?

同意!ベクターサポートが完全にサポートされてたらいいのに。ずっと実験的なままだよね。

DuckDBが大好きだけど、あなたの2つ目のポイントが理解できない。DuckDB wasmがアプリのネットワークコールのレイテンシをどう減らすの?

DuckLakeの仕様、めっちゃ好き!グラフ用の似たようなものもあるよ。 https://adsharma.github.io/graph-archiving/ https://adsharma.github.io/beating-the-CAP-theorem-for-graph... カタログは、今はアーカイブされたkuzuグラフDBプロジェクトに基づいてるんだ。ここで開発が続いてるよ: https://github.com/LadybugDB/ladybug

これいいね、ありがとう!埋め込み型のUIを使ってるけど、君のも試してみるつもり。DuckDBはキャリアの中で使った中で最も印象的なソフトウェアだよ。毎日テラバイトのパーケットを扱ってるけど、全然問題なく処理してくれるし、バインディングもちゃんと書かれてる。

本当にそうだね!素晴らしいし、他のプロジェクトでも使ってるよ!このアプリをブラウザだけで完結させるアイデアは、前の会社でいろんな人からCSVを扱ってた時に思いついたんだ。エクセルに読み込むのに永遠にかかってたから、これを思いついて、めっちゃ楽になったよ。君も楽になるといいな!

flightsqlやHTTPエンドポイントでArrow IPCを返すのと連携できたらいいな!最後のチャート作成にPerspectiveを使うことを考えた?自分で作るのはかなりの手間だと思うけど、よくやったね!

PerspectiveもDuckDBの直接サポートをすぐに受けるみたい! https://github.com/finos/perspective/pull/3062

俺はずっと「duckdb --ui」をパソコンで動かしっぱなしにしてるんだ。機能は素晴らしいけど、UIがオープンソースじゃなくてmotherduckにコントロールされてるのはちょっと不満。多分、motherduckには改善するインセンティブがないから、簡単にできる改善も実現しないだろうな。これ、duckdbのローカルUIの代わりに移植できないかな?

そうなってくれたらいいな…俺もmotherのduck UIは好きじゃないし…実は、彼らがローンチする2週間前にこのプロジェクトを作ったんだ(だからduckuiって名前なんだよね…)。別の名前にしたかったけど、ドメインはもう買っちゃってたからな、ハハハ…でも、みんなにとって最高のUIになってほしい!足りない部分を実装するためのアイデアや助けが必要なんだ。

デスクトップ版が欲しいなら、qstudioをチェックしてみて!: https://www.timestored.com/qstudio/help/duckdb-sql-editor これはduckdbの機能をparquetやcsv、データのピボットに統合してるよ。

これ、過小評価してるよ。ローカルで動かすと、全てのコアとRAMにアクセスできるからね。Wasmは比較するとかなり制限されてるし、パフォーマンスも全然違うよ。

あなたが提供しているDuckDB Wasmは、DuckDBが提供しているDuckDB Wasmと同じものですか?DuckDBが提供している「DuckDB Wasm」クライアントは、まだすべてのDuckDB機能をサポートしていない印象があるので、これがより多くの機能を実装しているのか、少ないのか、同じセットなのか知りたいです。

これ、5分くらい触ってみて見つけた問題と提案だよ。テストはFirefoxでやったからね。1. DuckDBの内蔵UIで好きな機能の一つは、各カラムのグラフを自動生成するパネル。データセット全体や特定のクエリに対してもね。これのおかげで、簡単なことはクエリを書かずに済むことが多いんだ。これが内蔵のGUIを使わない理由の一つだね。2. グリッドビューで現在選択している値を表示するパネルが見つからなかった。理想は、JSONみたいな一般的なフォーマットを自動検出してフォーマットする機能があればいいな。3. グリッドビューは最大200行しか表示できない。無限リストで行を仮想的にレンダリングできる方法があればいいと思う。内蔵のGUIでは1万行以上選択してIDをコピーしたりすることもあるから、CSVをエクスポートしてそこからコピーするよりも時間を節約できるんだ。4. グリッドビューのカラムフィルタードロップダウンには検索バーがあって便利だけど、文字を入力するたびに自動で選択が解除されるから、使いづらいんだよね…。5. さらに、ドロップダウンフィルターメニューは外をクリックしたり別のドロップダウンを開くと自動で閉じないから、ちょっとイライラする。6. グリッドビューアの右クリックメニューは「マウスアウト」で閉じるけど、「外をクリック」では閉じないし、メニュー自体にカーソルが入ってない状態で開くから、すぐにマウスを右上に移動させるとメニューがずっと固定されちゃうんだ。7. グリッドビューのリサイズ機能は、ページの行数を変更した後にバグっぽく動くことがある。8. チャートビューアの透明なツールチップ背景は、ダークモードで黄色の後ろにあると薄いグレーのテキストが読めなくなる。9. エクスプローラーのサイドパネルはウィンドウサイズのパーセンテージに基づいてサイズが決まってるみたい。これは些細なことだけど、固定サイズにしてくれたらウィンドウサイズを変更してもサイドパネルがリサイズされないから、もっと使いやすくなると思う。サイトを初めて読み込んだときは、ちょっと大きすぎるし。

すごい!全部メモしたよ、ありがとう!あなたは素晴らしい!全部確認するね!

これ、最高!似たような製品があるよ: https://sql-workbench.com/