Redash の Rest api をラップするGolang ライブラリを書きました。
GolangからRedashクライアントを使いたいときは使ってみてください。
今後機能追加するとしたら、cli化だと思います。セッション管理機能を持ったcliを作って一般的なDB clientのようにredashを使えればかなり便利だと思います。
https://github.com/ynishi/redash
Redash
今年に入って仕事でOSSのBIツール、Redashを使う機会がありました。
Redashの特徴は、豊富なDB連携と、ほとんど全ての機能がAPI経由でできることです。 (Redashの構成自体そうなっている)
API利用は、オフィシャルに推奨されています。 特にドキュメントはなく、サポートに問い合わせたところ、ソースコードを見て是非使ってくださいとのことでした。
仕事の案件ではサーバにDBクライアントの追加が厳しい環境 だったので、Redashを経由してデータを取得しました。
DB連携が限定的でよければ、Airbnbが作ったツールがあります。画面の作りこみと、権限管理などがRedashよりよさそうです。 superset
Golang
Golangのライブラリはなかったので、作ることにしました。
仕事でもGolangの導入を画策しているので、テスト、ドキュメンテーション、ライブラリ管理なども含めて一通り用意しました。
APIクライアントについて
- GolangでAPIクライアントを実装
- http://deeeet.com/writing/2016/11/01/go-api-client/
開発にあたって
とにかく参考になるのが、本家日本語版ドキュメントです。
実際にコードを書く際には必須のEffective Goですが、本家は英語版のみです。
日本語訳は、有志の方によるものがいくつかあります。少し古いですが日本語で読めるのはありがたいです。
このページにまとまってますGo言語の初心者が見ると幸せになれる場所 #golang
プロジェクトの開始
- 上記のGoの書き方 が参考になります。
- ディレクトリ構成は github.comなどと密接に結びついた構成になってます。
- GOPATHをdirenvのようなものを使って通すより、GOPATHは固定にして、その中にリポジトリを置く方がよさそう。
- $GOPATH内にリポジトリ本体を置いて、他の場所には、シンボリックリンクを張る構成に落ち着きました。
- 自動テスト
- 開発環境の自動コンパイル・テストは標準ツールはありません。
godo
などを使います。
- Goglandなら、コンパイルエラーは随時検知できます。
- travis, werker, CircleCI, droneなど各種CIサービスで公式サポートされてます。簡単に設定できるので、最初にしておく方がいいです。
- リポジトリタグ
- githubのリポジトリタグ => 公式に合わせて
go
に。
ツール
- vim-go
- [Gogland(IDE)](https://www.jetbrains.com/go/)
- 最初は便利
- debuggerが使えないなど一部難あり
- $GOPATH内に置いたリポジトリを取り込む(または、$GOPATH/../自分のアカウントディレクトリ/をとりこむ)
ドキュメンテーション
- godocに合わせて作成。
- 基本パッケージ、公開するものにコメントを書けばOkです。
- ライセンス表記は、ファイルの一番上に書いて空行を入れてからパッケージコメントを書くとgodocに表示されません。
- Exampleテストを書けばそれが表示されます。
- GoDoc hostの登録方法
ライブラリ管理
- 公式ツール dep があります。
- まだ開発中で標準ツールに取り込まれてはいません。
- (2017/7現在)設定ファイルは固まったようでプロダクションuse OKになりましたが、まだAPIは変わる可能性があります。
- glideなど各種ツールがあります。
- パッケージ名でバージョン管理する方法があります(これまで公式依存管理ツールがなかったため)
- Golangの設計として安定する傾向が強いです(mapのキャストが手間で結局構造体とインターフェイスを使うなど)
よきGolang & Redash ライフを!