TKC Works

ギジュツ的なメモ、読書感想文など

RedashのAzure Table StorageのQuery Runnerを作った

Redash Advent Calendar 2017 の9日目の記事になります。 作ったのがちょうど12月でまだ空きがあったのでついでに登録してみました。

使えるデータソースが多いことを理由にRedashを導入しようと動いているところですが、Azure Table Storageには対応してなかったので作りました。

作ったのは以下です。しばらくRubyとJSの仕事が続いていて、Pythonは素人レベルですがなんとかなりました。

github.com

Table Storageについて

  • 安く大量にデータが格納できるらしいNoSQL
  • ただのKVSってわけではなく検索クエリも使える
  • 以前はストレージアカウント配下のサービスだったと思いますが、いつの間にかCosmosDB配下になっていました。
  • 廉価版CosmosDBってことでいいのかな?
  • 詳しくはドキュメント見てください

Query Runnerの作り方

アドベントカレンダーの前日の方がQuery Runnerの作り方を書いてくださるようなので簡単に。 それみて後で修正点いろいろ見つかりそう汗

このページと他のquery_runnerとかの実装みればなんとなくわかります。

redash/query_runner ディストリ以下にファイル作って、 BaseQueryRunner を継承して、対応したいサービスやミドルウェアのライブラリを使って必要なメソッドを書くだけです。

忘れがちなのは最後 register(TableStorage) のようにクラスを登録することと、 redash/settings.pydefault_query_runners に作ったQuery Runnerを追記することです。

あと、めんどいのは対応したいサービスやミドルウェアの型とRedashの型を合わせるところです。 TYPE_INTEGER みたいな感じで定義されているので対応付けします。Jsonエンコードもできる必要があります。

今回のTableStorageの場合は azure.cosmosdb.table.models.EntityProperty のオブジェクトで返ってくることがあったりそうじゃなかったり、 datetime.datetimeJson対応でハマりました。

まとめ

RedashはPython Sqriptがあるので何でもできるけど、Query Runner作成もなんとかなる。

GitlabのMySQLをPostgreSQLに移行した

Gitlabの8系までは大丈夫だったと思うけど、9系に上げると4バイト絵文字の読み書きでエラーになるようになってしまった。

文字コードをutf8mb4に変えてみたが、うまくマイグレーションできなかったのでいっそPostgreSQLに変えてみた。

gitlabのリポジトリに移行ツールがあったのでさくっと対応できた。

github.com

やってることは単純で、

  1. MySQLからデータをdump
  2. dumpしたファイルをPostgreSQL用に変換
  3. PostgreSQLにインポート

他のRailsアプリケーションでも使えそう。

Docker for Macのディスク問題への対処

問題

Docker for MacでコンテナをVolumeして使うと辛いですよね。遅いし…。

特に困ったのはイメージビルド時に母艦のディスクは余ってるのにディスクが足りないというエラーがでてDockerfile内のapt-get updateすらコケるようになったこと。

https://github.com/docker/for-mac/issues/371

このへん見てqcow2の圧縮やらイメージ、コンテナの削除やっても解決しませんでした…。

結論

開発環境をLinuxデスクトップに移した。

  • 仕事は主にWebアプリの開発、たまに機械学習の手伝いなので特に困らない。
  • iOSアプリの仕事が来たら困るけど、たぶんこない。

詳細

マシンについて

  • MBP2015を使っていたが会社に使ってないデスクトップ(Dell Vostro470)が眠ってたのでもらった。
  • Ubuntu Mate 16.10を入れて使っている。
  • メモリは8Gあったけどスロットが空いてたので買い足して24Gにした。
  • CPUはi7-3770(3.4GHz8コア)
    • 5年前くらいのマシンでもそれなりに快適。やっぱりデスクトップ用とラップトップ用のCPUは違うなあ。
  • SDDじゃなくHDDなのはちょっと残念。

代替アプリ

  • SlackとかDropboxとか割とLinux版もある。
  • VSCodeとかGitKrakenとかElectronのおかげでLinuxでも使えてありがたい。
  • PostmanとかChrome Appもそのままで助かる。
  • iTerm2→Guake Terminal+tmux
    • 元々iTermもそんなにカスタマイズしてなくてタブとペインの分割があればよかった
    • terminatorもよかったけどGuakeのほうがかっこよかったので。
    • Guakeはペインがないぽいのでtmuxで対応
  • Evernote→NixNote
  • Dash→Zeal
  • Alfred→Albert
  • Clipy→Diodon
  • MS Office→Libre Office or Office Online
  • アプリじゃないけどpbcopy→xsel

感想

  • Macじゃなくても割と大丈夫だった。
  • Dockerのおかげでどの環境でも同じように動かせるはずだったんだけど…。
  • Appleは頑張らないとエンジニアが離れていくかもなあ。

「なぜ、あなたの仕事はおわらないのか」を読んだ

締め切りに慌ててラストスパートを頑張るのではなくスタートダッシュを決めるという仕事のやり方の本。 言われてみればその通りなんだけど、実際なかなかやれてないので気をつけたい。

プロトタイプを高速につくってフィードバックをもらいながら仕事をすすめるというのはエンジニアとしてとても大事だと思うので自分も界王拳をうまく使えるように日々工夫したい。

あと、なぜ集中できなのかという部分で、自分が本当にやりたいと思ってない、切羽詰まってないというのはその通りだなと思った。 今までなんとなくこの先必要そうだなと思って勉強のための勉強みたいな感じで勉強していたので知識が必要なタイミングで高速に学習するように変えていきたいと思った。

LIFE SHIFT(ライフ・シフト)

LIFE SHIFT(ライフ・シフト)

少し前にこっちも読んでいて、いづれ生涯現役社会になるので一生勉強しなきゃなと思っていたけど、今までの自分の勉強の仕方だと、勉強したけど頭に定着しない無駄な時間を過ごしてしまうところだった。本当にやりたい仕事を見つけるのはすごく大事。しかし仕事に追われ続ければ見つける時間がない。まずは目の前の仕事を最速でできるようにしていきたい。

「なるほどデザイン」を読んだ

仕事でWebアプリケーションを何個か作ったりメンテしたりしていて、もっとデザインもできればいいのにと思ってデザインに興味が出てきなので読んだ。

  • 書体
  • レイアウト
  • 画像の使い方
  • 強調のさせ方
  • 要素の足し算引き算

などが具体例でわかりやすく書かれている。 WEBというよりは本やチラシの話だけど、デザイナーの人がどんな風に考えて仕事をしているのかがちょっとわかった気がする。

センスは知識からはじまる

センスは知識からはじまる

こっちも読んだけど、デザインも感性じゃなくてちゃんと理論があるということがわかったので、自分ももっと勉強すればそれなりにできるようになれるかなと思った。

デザインができると、WEBとかアプリだけでなく、資料作成とか社会人としていろんなところでメリットが出るので引き続き勉強していきたい。