データ IDE DataStation のビルド関連メモ
ちょっと前に DataStation という OSS の IDE を知った。 GitHub の repo はこちら。multiprocessio/datastation: App to easily query, script, and visualize data from every database, file, and API.
データベース・ファイル・HTTP リクエストまで多様なデータソースへの接続をサポートしてたり、簡単にグラフ化、コードで加工したり、とにかく良い。 Notebook みたいといえばそんな感じ。
ちょっとコントリしたいネタがあり、その動作確認のためにビルドして実行する必要があった。その時の手順・つまづきポイントを備忘のために雑メモで記しておく。
DataStation のアーキテクチャについてはこちらのメモにある。そんなに詳しくないので自力で色々読んだり試したりした方がイイか。
datastation/ARCHITECTURE.md at main · multiprocessio/datastation
デスクトップアプリのビルドと実行
datastation/HACKING.md at main · multiprocessio/datastation
手順はこれを参照した。でも試してる途中でよくわからなくなってくるので、package.json
を読んで各スクリプトが何者かは読んだ方がイイかも(実際そうした)。
ビルドと実行には WSL2 を使う。 手順に記載のある通り Windows でもできるっぽい(tdm-gccというのを使う)けど、なんか面倒な気配がしたので Linux で楽をする。いつかチャレンジしてもよいが今ではないと判断した。 GCC は Go の SQLite3 モジュールをビルドするので必要っぽい。
ビルドの事前準備には依存関係のインストールスクリプトが用意されてる(CI 用だけど)。それを使って楽をする。 datastation/prepare_linux.sh
DataStation のデスクトップアプリは Electron アプリの様子。
以下のビルド実行時に権限が必要だったのと、それによって --no-sandbox
が必要になった。
sudo yarn build-desktop --no-sandbox
このビルド実行でライブラリが不足しているのがわかり、以下を参考にパッケージをインストールした。なんのエラーが出たかはメモを失念したが、 lib* が足りない系。 足りない依存関係は皆 Electron のビルドに必要なものばかりだった。
Puppeteer でライブラリ不足 libraries: libatk-1.0.so.0 - ノンカフェインであなたにやさしい
Missing shared libraries · Issue #486 · electron/electron-quick-start
この依存関係のインストール後にビルドが成功するようになったが、実行すると SQLite3 のエラーになった。 内容は SQLite3 が古いと言われるものだった(メモ失念)。エラーログを見る限りこれの解消には Electron の再ビルドが必要なようだった(これあとから見てもピンとくるのかわからん。エラーログをメモらなかったことが悔やまれる)。
↓ の記事を参考にした覚えあり。 npm - Node - was compiled against a different Node.js version using NODE_MODULE_VERSION 51 - Stack Overflow
./node_modules/.bin/electron-rebuild
ここまでやって初めて ↓ のコマンドで Electron アプリを動かして動作確認できるようになった(理解のために結局 package.json
に書かれたスクリプトを直で叩くようになる)。
yarn electron --trace-warning --unhandled-rejection=warn build/desktop.js --no-sandbox
runner の UT
DataStation のデスクトップアプリはいわばフロントエンドで、データソースとの接続やデータ読み取りは Go で書かれた datastation/runner で行われてるようだった。
なので UT の実行に関しては先述のディレクトリで go test
するだけで OK だった。とはいえ前の節で先述した通り、 GCC に依存したモジュールのビルドがあるので WSL2 でやるのが良かろう。
終。