読者です 読者をやめる 読者になる 読者になる

そんな今日この頃の技術ネタ

本家側に書くほどでもない小ネタ用

もうちょっと真面目にInfluxDBの使い方を調べてみる

以前にデータを可視化する手段の一つとしてInfluxDB+Grafanaについて調べていたけれど、 その時は導入してデータ投入して動いた段階で満足してしまっていた。

blue1st-tech.hateblo.jp

そうこうしている間にバージョンは1.0を回り、ちょうど使いたい案件もあったので、 改めてもう少し真面目に使い方を調べてみた。


そもそも時系列データベースなるものは何ものなのか

もちろん時系列データが扱いやすいらしいことは名前から明らかだけど、 具体的にどう便利なのかという部分を正直なところ理解していなかった。

どこまで時系列データベース一般の話かは分からないが、 InfluxDBを実際に使ってみて「ああなるほど、こりゃ便利だ」と思ったのが

  • スキーマレスなので要素の増減に柔軟に対応できる
  • 時系で変化するデータを集計するのに便利な機能が揃っている
  • 古いデータを自動で削除して容量を削減できる
  • 時間ごとの処理を定義できる

あたりだろうか。

続きを読む

TogelackをDockerで導入してみた

イケてる感じのIT企業で絶賛大流行のSlack。

(残念ながら前職ではもろもろの都合で導入できなかったし、次の職場も今のところ違うツールらしいんだけど・・・)

かくいう僕も、Slackはコミュニケーションツールというよりは個人用のタイムラインとして活用してたりする。

blue1st.hateblo.jp

  • Bitcoinの値動き通知
  • ゴミ出しの曜日の通知
  • サーバの監視アラート
  • 重いスクリプトの完了通知

...etc

あらゆるものを一箇所にまとめられるし、スマホからも確認できるから便利なのだ。


そんな感じでテック系な使い方を挙げてみたけど、もっと単純にスマホからもPCからもアクセスできることを活かして、 例えば技術ネタだったり本や映画の感想だったりの思いついた短文をひょいひょい上げるメモとしても重宝していたりする。

で、そういった使い方をしていると欲求として出てくるのが、 発言を必要なものだけ取り出して並べ替えたりしたいという欲求。

つまりはSlack版のTogetterが欲しい!

APIもあるし自作しようか・・・と考えていたが、そういえばそういうのを既に作ったようなニュースを見かけたこと思い出し、 ググって出てきたのがTogelack。

github.com

qiita.com

qiita.com


Herokuに一発デプロイする手段も用意されているっぽいけど、極めて個人的な代物ということで自宅サーバに入れることにした。

かねてより自宅サーバに関しては出来る限りDockerで導入しようという方針なので、今回もDockerで環境構築することにした。

続きを読む

Re:dashのcohortを使う

ここんとこお馴染みのRe:dashネタ。

blue1st-tech.hateblo.jp

Re:dashには様々な表現方法が用意されていて、 その中には継続率なんかの示すのに便利なコホートもあるんだけど、 ググってもどういうクエリ投げれば良いのかという話が意外と引っかからないし、 デモページも色々いじられてしまったようでそれらしきものが見当たらない。

そんなわけで試行錯誤したりコード読んだりしてみてたんだけど、 結局は

  • 対象日を示すdate
  • 全体の数を示すtotal
  • 対象日からN日後を示すday_number
  • N日後の数を示すvalue

というカラムを設ければ良いようだ。

f:id:blue1st:20160907013805p:plain

f:id:blue1st:20160907013858p:plain


ありがちな新規ユーザの継続率みたいな事例に合わせて表現すると、

  • dateに登録日
  • totalに登録日の新規登録者数
  • day_numberに観測日-登録日の日数
  • valueに観測日に再訪した登録者数

をそれぞれ当てはめれば良い感じ。

うちの場合はRedisに日毎の新規登録とその日のアクセスのsetをそれぞれ保持していて、 毎日バッチでそれらを規定日数分ループで遡って算定した値をレコードとしてインサートしていって使おうかなという所存。

Re:dashの小技いろいろ

職場でも既存の画面を置き換えたりして徐々に布教できてきたRe:dash。

blue1st-tech.hateblo.jp

blue1st-tech.hateblo.jp

クエリを記述するだけなのでスタッフの要望に素早く対応できるし、数値に疑問があった時にもチェックしやすい。

それに、ダッシュボードという形でまとめられることにより、指標間の関係性にも気を向けることができる。

意識高いことを切々と語るよりも実際的なメリットを提示するのが、新しいことをはじめるときには有効ですな。

そんなわけで実際的に使っていく上で必要で色々調べたことをメモってみた。

続きを読む

redashを導入してみた

rebuildで話題に上っていて気になったプロダクト。

Dockerで気軽に導入できそうだったので試してみた。

github.com

redashは大雑把にいえばMySQLなどのデータソースに接続して、 ウェブビュー上からの操作で表やグラフを作成し、 ダッシュボードに並べて表示することができるツールだ。

業務の中では何がしかのデータをウェブで表示したいという案件もあるが、 単にクエリを一発叩いた戻り値を表示しさえすれば良いだけの場合も少なくない。

画面を個別に実装することそれ自体は大した手間ではなくても、 数が増えてくれば後々のメンテナンスコストの増大につながってしまう。

何より、「ここではこう表示されてるけど、どのデータをどう解釈してるんだっけ?」というのを毎回ソースを探して読んで確認するのは意外と大変だ。

そういった現場では、ブラウザ上でのクエリ記述のみで完結するこのredashは非常に有効な解決策になると思う。

続きを読む

envsubstを使ってShellでテンプレートエンジン的なことをする、Dockerコンテナ起動時にファイルを生成する

毎回の起動時に外部から指定された文言を含んだHTMLファイルを生成して、以降はそれを返すようなDockerイメージを作りたいという案件があった。

一度コンテナを起動してしまえば完全にスタティックなページなのでわざわざMySQL等には繋ぎたくないし、 ファイルを置いたボリュームをマウントするという手もあるがホストが複数台なので管理がめんどくさい。

できることならコンテナの起動時に環境変数として値を渡すようなDocker的にお行儀の良い方法をとりたいが、 文字列結合でHTMLファイルを生成するのもかったるい。


要件的には何がしかの言語のテンプレートエンジンを使えばよいところではあるが、 本当に一文だけなんでそれだけのためには大げさだよなぁ何か無いかなぁと思ってググッていたら、 envsubst なるものをみつけた。

どうやら環境変数を埋め込んだ出力ができるらしい。

$ export var1=hoge var2=fuga
$ cat << 'EOF' |envsubst 
${var1}から${var2}
EOF

hogeからfuga

※ブコメに指摘があったのでシングルコーテーションで括る形に修正。確かに単にヒアドキュメントだと環境変数展開されちゃうから例として不適切だっった。ご指摘ありがとうございます!

これを使用して、コンテナ起動時に指定した文言のHTMLを生成するようなイメージを作成することにした。

続きを読む