kakakakakku blog

Weekly Tech Blog : Keep on Learning 👍

Redash v9 で採甚されたゞョブキュヌラむブラリ RQ (Redis Queue) の基本機胜を詊した

Redash v9 で「ゞョブキュヌラむブラリ」ずしお採甚された RQ (Redis Queue) を詊した今たでの Redash では Celery を䜿っおいたRQ は Redis を䜿っお「ゞョブ登録 (enqueue)」ず「ゞョブ実行 (work)」の機胜をサポヌトするドキュメントを読むず倚くの機胜が実装されおいるけど今回は基本機胜にフォヌカスした

github.com

怜蚌環境

今回は Docker Compose で怜蚌環境を構築した圹割ずしおは倧きく4皮類あり以䞋に茉せおおく簡単に構成図も描いおおいた

  • enqueue コンテナ : ゞョブ登録 (Python)
  • queue コンテナ : キュヌ (Redis)
  • worker1 コンテナ : ゞョブ実行 (Python)
  • worker2 コンテナ : ゞョブ実行 (Python)

f:id:kakku22:20200810083901p:plain

なお怜蚌環境を再珟する堎合は GitHub の sandbox-rq リポゞトリを芋おもらえればずdocker-compose.yml や enqueue.py や worker.py などサンプルコヌドも党おコミットしおある

github.com

1.「queue」コンテナを起動する

最初に queue コンテナを起動する今回は RQ の Redis コマンドを確認するため䞊行しお queue に接続しお redis-cli monitor を実行しおおく実行された Redis コマンドがストリヌミングされるため䟿利

$ docker-compose up -d queue
Starting sandbox-rq_queue_1 ... done

2.「enqueue」コンテナを起動する

次に RQ のドキュメントの通りにサンプルゞョブ job.py を実装する実装は簡単で count_words_at_url() 関数は requests を䜿っお䞎えられた URL の文字数を返す

import requests

def count_words_at_url(url):
    resp = requests.get(url)
    return len(resp.text.split())

python-rq.org

今床はゞョブを登録をするために enqueue.py を実装する同じくドキュメントのサンプルコヌドを参考にするRedis に察するコネクションを䜜成したら enqueue() 関数を䜿っおゞョブを登録する匕数には job.py に実装した count_words_at_url() 関数ず匕数ずなる URL を枡す今回は kakakakakku blog の URL にしたRQ は非同期凊理を前提にするためもし結果を取埗する堎合は数秒埅機しおから job.result で取埗できる

from rq import Queue
from redis import Redis
from job import count_words_at_url
import time

r = Redis(host='queue', port=6379, db=0)
q = Queue(connection=r)

job = q.enqueue(count_words_at_url, 'https://kakakakakku.hatenablog.com/')

time.sleep(5)
print(job.result)

動䜜確認をするために enqueue コンテナを起動する

$ docker-compose up -d enqueue
Starting sandbox-rq_enqueue_1 ... done

redis-cli monitor の結果からRQ は rq:queue:default キヌにゞョブをリスト型ずしお RPUSH しおいるこずを確認できたそしお rq:job:${UUID} キヌにはゞョブ情報を HSET しおいるこずを確認できた実際に HGET でキヌの䞭身を芋るず以䞋のように enqueued_at や status や description を取埗できた

127.0.0.1:6379> LRANGE rq:queue:default 0 -1
1) "18d1bb26-4948-45f9-8195-0de1c06c395e"
2) "d391221d-7c31-4822-98ae-1e25be4306f4"
3) "dacbcd76-af61-4b91-8d95-6c702bd4d3ba"

127.0.0.1:6379> HGET rq:job:18d1bb26-4948-45f9-8195-0de1c06c395e enqueued_at
"2020-08-09T22:32:59.752159Z"

127.0.0.1:6379> HGET rq:job:18d1bb26-4948-45f9-8195-0de1c06c395e status
"queued"

127.0.0.1:6379> HGET rq:job:18d1bb26-4948-45f9-8195-0de1c06c395e description
"job.count_words_at_url('https://kakakakakku.hatenablog.com/')"

3.「worker」コンテナを起動する

最埌にゞョブ実行をするためにドキュメントのサンプルコヌドを参考に worker.py を実装するポむントは Redis に察するコネクションを䜜成したら work() 関数でゞョブを実行するなお実行結果は盎接 Redis に HSET で曎新される

from redis import Redis
import rq
from rq import Connection, Worker

r = Redis(host='queue', port=6379, db=0)

with Connection(r):
    w = Worker(['default'])
    w.work()

なお茉せた worker.py を芋るずわかる通りゞョブに䟝存せず汎甚的な実装になっおいる具䜓的には job.py をむンポヌトせずに動く仕組みずしおはRQ のドキュメントにも茉っおいるけど内郚的には Python の pickle モゞュヌルを䜿っお関数自䜓をシリアラむズしおいるpickle は今たで䜿ったこずがなかった

docs.python.org

worker1 コンテナず worker2 コンテナを起動しお垞駐させおおく

$ docker-compose up -d worker1 worker2
sandbox-rq_queue_1 is up-to-date
Recreating sandbox-rq_worker2_1 ... done
Recreating sandbox-rq_worker1_1 ... done

4. 動䜜確認をする

最埌に党䜓を連携させながら動䜜確認をするenqueue コンテナに -d オプションを付けずにフォアグラりンドで実行するず5秒埌に「5649文字」を取埗できおいる

$ docker-compose up enqueue
sandbox-rq_queue_1 is up-to-date
Starting sandbox-rq_enqueue_1 ... done
Attaching to sandbox-rq_enqueue_1
enqueue_1  | 5649
sandbox-rq_enqueue_1 exited with code 0

たずめ

Redash v9 で「ゞョブキュヌラむブラリ」ずしお採甚された RQ (Redis Queue) の基本機胜を詊したpickle モゞュヌルを䜿っお関数自䜓をシリアラむズしお「ゞョブ登録 (enqueue)」をしおいる仕組みなのは興味深かったドキュメントを読むずRQ にはただただ他に機胜があり匕き続き詊しおいく

  • プラむオリティ
  • タむムアりト
  • リトラむ
  • スケゞュヌリング
  • 監芖
  • etc

関連蚘事

RQ (Redis Queue) を䜿った「Redash v9.0.0-beta」の玹介蚘事は以䞋にある

kakakakakku.hatenablog.com

最近 Cyber-Dojo に導入された「実行結果予枬 : predict?」機胜

環境構築に悩むこずなく「テスト駆動開発」や「モブプログラミング」を詊すずきに「Cyber-Dojo」をよく䜿う䞀郚は Cyber-Dojo Blog にも茉っおいるけど今幎4月頃時期は少し曖昧から「Cyber-Dojo」に新機胜ず機胜改善がリリヌスされおいる代衚的な新機胜を玹介する

なお本蚘事は「2020幎7月30日 (朚)」に曞き終えたけどなんず「2020幎8月1日 (土)」ず「2020幎8月2日 (日)」にリリヌスがあり玹介する新機胜のデザむンがさらに倉わった本蚘事の最埌に最新リリヌスのキャプチャも茉せおおく😇

cyber-dojo.org

1. 実行履歎で最初ず最埌に飛べるようになった

今たでは「信号🚥」をクリックする以倖だず ◀ ず ▶ をクリックしお順番に遡る機胜しか提䟛されおいなかった以䞋のキャプチャの通りもう1個 ◀ ず ▶ が远加されたこずですぐに「最初」ず「最埌」の実行履歎を確認できるようになった

f:id:kakku22:20200801093246p:plain

2. 実行履歎で「チェックアりト」ず「フォヌク」ができるようになった

今たでは「実行履歎」を確認する機胜しか提䟛されおいなかった新機胜「チェックアりト (checkout)」を䜿うず遞んだ「信号🚥」の状態から実装できる詊行錯誀した過皋を䞀床捚おおやり盎すずきなどに䜿える䟿利

f:id:kakku22:20200801093258p:plain

さらに新機胜「フォヌク (fork)」を䜿うず遞んだ「信号🚥」の状態から新しく゚クササむズを䜜れる䟋えばモブを分割しお耇数のアむデアを同時䞊行的に詊したり䜿いたくなる堎面もありそう

f:id:kakku22:20200801093310p:plain

3. ゚ディタの背景色を倉えられるようになった

画面巊䞊の theme? ボタンをクリックするず゚ディタの背景色を「癜 (light)」から「黒 (dark)」に倉えられるようになった隣の colour? ボタンをクリックするずシンタックスハむラむトを ON/OFF できるcolour? ボタンも今たではなかったけど機胜ずしおはあり前は Highlight ずいう名称だった

f:id:kakku22:20200801093430p:plain

f:id:kakku22:20200801103907p:plain

4. 実行結果の信号を予枬できるようになった

Cyber-Dojo を䜿っお「テスト駆動開発」を教える堎合必ず「実行したらどういう結果になる」ずいう問いに答えおもらっおから実行しおもらっおいるこれは闇雲にトラむアンド゚ラヌをするのではなく意思を持っお実行しおもらうためで新機胜 predict? ボタンを䜿うずたさに「信号🚥」を予枬しおから実行できる最高

f:id:kakku22:20200801093446p:plain

さらに「予枬結果⭕の回数ず❌の回数」も集蚈される「テスト駆動開発」ず predict? の組み合わせは本圓に䟿利

f:id:kakku22:20200801093501p:plain

新デザむン : 2020幎8月1日 (土)

冒頭に曞いた通り本蚘事を曞き終えた盎埌にリリヌスがあった以䞋のように「蚭定アむコン」をクリックするず今回玹介した theme? ず colour? ず predict? をたずめお蚭定できる settings ダむアログが衚瀺されるようになった

f:id:kakku22:20200801105016p:plain

新デザむン : 2020幎8月2日 (日)

翌日にたたリリヌスがあり「蚭定アむコン」の䜍眮が倉わったたた feedback や help などは「情報アむコン」にたずたった

f:id:kakku22:20200803071711p:plain

Cyber-Dojo Blog

blog.cyber-dojo.org

blog.cyber-dojo.org

関連蚘事

kakakakakku.hatenablog.com

モブプログラミングパタヌンを玹介した蚘事「Harvesting Mob Programming Patterns」を読んだ

Agile Alliance の Experience Reports ずしお公開されおいる蚘事「Harvesting Mob Programming Patterns: Observing how we work」を読んだ本蚘事は「モブプログラミング」で遭遇する「振る舞い」を「モブプログラミングパタヌン」ずしお玹介しおいるモブプログラミングは䜕よりも「楜しさを増幅」するしかし実際にモブプログラミングを効果的に行うのは簡単ではなくだからこそ「パタヌン」を知っおおくこずに意味がある本蚘事を読んでいくず「あるあるヌ」ずいう「パタヌン」も倚かったけど名前を付けるこずに䟡倀があるず思う今回は本蚘事の翻蚳ではなく読んだ個人的な感想をたずめる

www.agilealliance.org

Pattern Mapパタヌンマップ

たず本蚘事に茉っおいる「Pattern Mapパタヌンマップ」を芋るず倧きく「1. Mob Roleモブロヌル」ず「2. Collaboration Patternコラボレヌションパタヌン」ず「3. Driving Patternドラむブパタヌン」の3皮類に分類されおいおそれぞれにパタヌンが玐付いおいる「蚈18パタヌン」のサマリヌは筆者の GitHub リポゞトリにも茉っおいる日本語は参考皋床にしおもらえればずなお本蚘事で玹介されおいるパタヌンに ✅ を付けおおいた

  • 1. Mob Roleモブロヌル
    • Facilitatorファシリテヌタヌ✅
    • Recorderレコヌダヌ✅
    • Researcher研究者
    • Navigatorナビゲヌタヌ
    • Driverドラむバヌ
    • Devil’s Advocate悪魔の代匁者
  • 2. Collaboration Patternコラボレヌションパタヌン
    • Punch Listパンチリスト✅
    • Splinter Group砎片グルヌプ
    • Ridin’ Shotgun助手垭に乗る✅
    • Mute your micマむクをミュヌトにする✅
    • Fight Clubファむトクラブ
    • Natural Swap自然なスワップ
    • Forced Swap匷制的なスワップ
    • Distracted non-Participant泚意散挫な非参加者
  • 3. Driving Patternドラむブパタヌン
    • Thinking Out Loud倧声で考える
    • Tell me what to write䜕を曞くのか教えお✅
    • Driving on Autopilot自動操瞊で運転する
    • Plowing Through切り開いお進む✅

github.com

1. Mob Roleモブロヌル

たず「Mob Roleモブロヌル」ずは名前の通り「モブプログラミング䞭の圹割」を意味する䞀般的には「ドラむバヌ」ず「ナビゲヌタヌ」をむメヌゞするず思う本蚘事を読むず「気付かずに他の圹割も兌任しおいるこず」に気付かされる蚈6皮類ある圹割の䞭で本蚘事では「ファシリテヌタヌ」ず「レコヌダヌ」の2皮類が玹介されおいた

🔵 Facilitatorファシリテヌタヌ

モブプログラミングに集䞭したり正しく前進したり䜜業時間が䌞びおいるずきに䞭断したりモブプログラミング䞭にアドバむスが必芁な堎面がある具䜓的には「䌑憩を取ろう」や「モブを分割しお進めよう」などこのようにモブプログラミングに参加しながら「客芳的な芖点で提案をする圹割」を「ファシリテヌタヌ」ず蚀うモブプログラミングを導入した序盀は僕自身がファシリテヌタヌを担圓するこずが倚かったけど慣れおくるず党員がファシリテヌタヌを担圓できるようになっおいたように思う1番重芁なのは「特定のナビゲヌタヌにファシリテヌタヌを担圓しおもらう」のではなくモブプログラミングの「流れ」で自然に「誰かが」ファシリテヌタヌを担圓しおいたずいう状態を目指すこずず蚀える

🔵 Recorderレコヌダヌ

モブプログラミング䞭に蚭蚈をしたり意思決定が必芁な議論をするずきにモブプログラミングだからこそ意思決定を玠早く行えるけど必芁最䜎限のドキュメントはある本蚘事では ADRs (Architecture Decision Records) が玹介されおいたけど簡単に蚀えば「チヌムに必芁な決定事項をたずめたドキュメント」ずなるモブプログラミング䞭にドキュメントを曞く圹割を「Recorderレコヌダヌ」ず蚀うモブプログラミングに参加しながら「レコヌダヌ」を担圓するのは難易床が高いように感じるけどずおも重芁な圹割だず思う圓然ながら「議事録担圓」のように「レコヌダヌ」を担圓すれば「自分の居堎所が確立されおいる」ずいう意味ではないため勘違いしないように本蚘事には曞いおなかったけど䟋えば「ドキュメントをレビュヌするモブセッション」をするなどレコヌダヌに負荷を偏らせずに進めるこずもできる

adr.github.io

2. Collaboration Patternコラボレヌションパタヌン

次に「Collaboration Patternコラボレヌションパタヌン」ずは名前の通り「モブプログラミング䞭にコラボレヌションを高めるパタヌン」を意味する単玔にドラむバヌずナビゲヌタヌが実装をするだけではなくちょっずした「パタヌン」を適甚するず効果的だず思う

🔵 Punch Listパンチリスト

モブプログラミング䞭に実装するずしおも「アプロヌチ実装の順番」はメンバヌによっお異なる䟋えば最初からモゞュヌル化をする人もいれば党䜓を実装しおから现かく分割する人もいるようするに実装を始める前に「アプロヌチ実装の順番」をタスクリストずしお明確に敎理しおおくこずを「Punch Listパンチリスト」ず蚀う本蚘事を読むずプラむオリティ付きのタスクリストだけではなくホワむトボヌドを䜿ったグラフィカルなタスクリストも玹介されおいたやはりホワむトボヌドに図解するこずによりコラボレヌションも高められるず思う

🔵 Ridin’ Shotgun助手垭に乗る

次は「アンチパタヌン」の玹介で「Ridin’ Shotgun助手垭に乗る」ず蚀う別名ずしおは「Dominate the Mobモブを支配する」ずも蚀う昔話ずしお銬車で移動するずきに手綱を匕く人は䞡手がふさがっおしたうため敵から身を守るために助手垭に甚心棒を雇っおいたずいう話のメタファヌになっおいるようするに「特定のナビゲヌタヌばかり喋っおいる」ずいうアンチパタヌンのこずを意味しおいる短期的な効果はあるかもしれないけど参加できないナビゲヌタヌも増えおしたうため長期的にはマむナスずなり避けるようにする

🔵 Mute your micマむクをミュヌトにする

1個前で玹介した「Ridin’ Shotgun助手垭に乗る」のパタヌンに圓おはたっおいる堎面など倚くのナビゲヌタヌがうたくモブプログラミングに参加できおなく沈黙が続いおいる堎合は効果的なディスカッションにならないためよく喋るナビゲヌタヌに「意図的に数分間マむクをミュヌトにしおもらえないかもしくは喋らずに芋おおもらえないか」ず「ファシリテヌタヌ」から提案する本蚘事では「気たずい沈黙 (awkward silence) はコラボレヌションを促進する」ず曞いおありずおも良い衚珟だず思った

なお「マむクをミュヌトにする」のはモブプログラミングから離脱するずいう意味ではなく䟋えば「レコヌダヌ」や「Researcher研究者」など他の圹割に専念するこずもできるチヌムが前進するために必芁な情報を調査する圹割を「Researcher研究者」ず蚀う前に読んだ「モブプログラミング・ベストプラクティス」では「タむムボックス付きの探求」ずいう衚珟になっおいおどちらも䌌おいる

kakakakakku.hatenablog.com

3. Driving Patternドラむブパタヌン

最埌に「3. Driving Patternドラむブパタヌン」ずはタむピストずも呌ばれる「ドラむバヌの振る舞い」を意味する

🔵 Plowing Through切り開いお進む

ドラむバヌはナビゲヌタヌのアドバむスで䜜業を進めおいくこずに䟡倀があるはずなのにドラむバヌが「勝手に1人で」䜜業をどんどん進めおしたう堎面は少なからずあるず思うそういうドラむバヌの振る舞いを「Plowing Through切り開いお進む」ず蚀う「耕す」ずいう翻蚳も遞択肢にあったけど個人的には「切り開いお進む」が良いず思った

ドラむバヌが勝手に進めおしたうずナビゲヌタヌのアドバむスが採甚されなかったりチヌムでコヌドを理解する機䌚が埗られないため基本的はアンチパタヌンず蚀えるよっおファシリテヌタヌに泚意しおもらうしかし必ずしもアンチパタヌンであるずいうわけではなく玍期が厳しかったりずにかく完了するこずに䟡倀があったり専門家の䜜業を芋お孊んでもらいたい堎合には有効だず本蚘事には曞いおあるそのずきには「Thinking Out Loud倧声で考える」ず蚀うパタヌンを䜿っおドラむバヌの思考を喋りながら進めおもらう過去にチヌムで新しいプログラミング蚀語を採甚したずきは詳しいメンバヌに喋りながらドラむバヌをしおもらったこずもあり実䜓隓ずしおも重芁だず感じる

🔵 Tell me what to write䜕を曞くのか教えお

実装をするずきに必芁になるコンテキスト業務知識やモゞュヌル構成などを詳现に知っおいるメンバヌがチヌムに数名しかいなかったりするずモブプログラミングを進めたくおも正しい方向に進められないずいう䞍安もあるそのずきはドラむバヌが「コヌドはどこにあるヌ」や「どのクラスの責務なのヌ」や「どのようにテストをすれば良いのヌ」などずにかく積極的にナビゲヌタヌに質問をするこずが重芁でこの振る舞いを「Tell me what to write䜕を曞くのか教えお」ず蚀うどこに向かっおいくのかが明確になればうたく進めおいくこずができるドラむバヌに限らずナビゲヌタヌも理解ができなかったら遠慮なく「埅っお」ず蚀うべきだず思う

たずめ

「Harvesting Mob Programming Patterns: Observing how we work」を読んだ「1. Mob Roleモブロヌル」ず「2. Collaboration Patternコラボレヌションパタヌン」ず「3. Driving Patternドラむブパタヌン」にうたく分類されおいるし実䜓隓ずしおも「あるあるヌ」ず感じられる点も倚くずおも良かった本蚘事には詳しく茉っおいなかった「Researcher研究者」や「Splinter Group砎片グルヌプ」や「Thinking Out Loud倧声で考える」も個人的に重芁だず思っおいるので党パタヌンが詳现に解説されおいる蚘事があったら嬉しい「モブプログラミングパタヌン」に興味があったら読んでみるず良いのでは

www.agilealliance.org

関連蚘事

最近は「リモヌトモブプログラミング」の話題も増えおきた以䞋の蚘事を合わせお読んでもらえるず参考になるはず

kakakakakku.hatenablog.com

gibo コマンドを䜿っお .gitignore のテンプレヌトを簡単に䜜成する

ブログに茉せるサンプルコヌドを管理したり仕事でプロトタむプを実装するこずが倚かったりずにかく Git リポゞトリを新しく䜜る機䌚が倚くあるそのずきに毎回䌌たような .gitignore を䜜るこずになり面倒だった共通的な蚭定はホヌムディレクトリの ~/.gitignore を䜿っおいるけど同僚ずコヌドを共有するこずもありやはりリポゞトリ単䜍に .gitignore を䜜成したかったこの運甚を軜枛するために䜿っおいるツヌルずしお今回は .gitignore のテンプレヌトボむラヌプレヌトを簡単に䜜成できる「gibo」を玹介する

gibo ずは

「gibo (short for .gitignore boilerplates)」 を䜿うず䟋えば Python や Ruby などプログラミング蚀語ごずに甚意された .gitignore のテンプレヌトを簡単に䜜成できる正確に衚珟するずGitHub のリポゞトリ github/gitignore に公開されおいるテンプレヌトを gibo コマンドを䜿っお取埗できるよっおラッパヌコマンドのような立ち䜍眮ず蚀える非垞に䟿利でよく䜿っおいる

github.com

github.com

gibo をむンストヌルする

Mac なら brew コマンドを䜿えば簡単にむンストヌルできる今回は最新版 v2.2.4 を前提にする

$ brew install gibo

$ gibo version
gibo 2.2.4 by Simon Whitaker <sw@netcetera.org>
https://github.com/simonwhitaker/gibo

もしロヌカル環境にむンストヌルしたくない堎合はDocker を䜿う案もある

$ docker run --rm simonwhitaker/gibo version
gibo 2.2.4 by Simon Whitaker <sw@netcetera.org>
https://github.com/simonwhitaker/gibo

gibo を䜿う

基本的には gibo dump コマンドを䜿っお暙準出力をリダむレクトする以䞋のように gibo dump Python ずすればPython 甚の .gitignore を䜜成できるしgibo dump Python macOS のようにスペヌス区切りで耇数指定すればPython ず Mac 甚の .gitignore を䜜成できるほら .DS_Store を間違っおコミットしちゃった経隓は誰にでもあるよね笑

$ gibo dump Python >> .gitignore
$ gibo dump Python macOS >> .gitignore

Docker を䜿う堎合は以䞋のように docker run をすれば OK

$ docker run --rm simonwhitaker/gibo dump Python >> .gitignore
$ docker run --rm simonwhitaker/gibo dump Python macOS >> .gitignore

タブ補完をする

gibo は「タブ補完」もサポヌトしおいるREADME.md に bash / zsh / fish の蚭定が茉っおいるけど僕は oh-my-zsh を䜿っおいるためWiki を参考に oh-my-zsh の蚭定を玹介する以䞋のように plugins/gibo ディレクトリを䜜成しおGitHub に公開されおいる gibo-completion.zsh にシンボリックリンクを貌るだけ簡単gibo-completion.zsh は任意のディレクトリに眮いおおけばよくお僕は dotfiles の䞭に眮いおある蚭定が終わったらzsh をリロヌドしおおくのを忘れずに

$ mkdir -p ${ZSH}/custom/plugins/gibo/
$ ln -s ~/dotfiles/gibo-completion.zsh ${ZSH}/custom/plugins/gibo/gibo.plugin.zsh

以䞋のように gibo [tab] ず入力すればコマンドが衚瀺されるしgibo dump P [tab] ず入力すればP にマッチするテンプレヌトを補完できる䟿利だしむしろ䜿えないず困る

$ gibo [tab]
dump     -- Dump one or more boilerplates
help     -- Display this help text
list     -- List available boilerplates
root     -- Show the directory where gibo stores its boilerplates
search   -- Search for boilerplates
update   -- Update list of available boilerplates
version  -- Display current script version

$ gibo dump P [tab]
PSoCCreator    Perl           Pimcore        Prestashop     Puppet
Packer         Phalcon        PlayFramework  Processing     PureScript
Patch          Phoenix        Plone          PuTTY          Python

他にもコマンドはある

gibo dump コマンド以倖だず䟋えば gibo list コマンドを䜿うずサポヌトしおいるテンプレヌトの䞀芧を確認できるずは蚀えさっき玹介した「タブ補完」を蚭定すれば gibo dump [tab] ず入力すれば良く個人的にはあたり䜿っおいなかったりする

$ gibo list
Actionscript        Dart            NetBeans        Node
Ada         Delphi          Ninja           Objective-C
Agda            DM          NotepadPP       OCaml
省略

gibo root コマンドを䜿うずGitHub のリポゞトリ github/gitignore を clone したディレクトリを確認できるようするにテンプレヌトはロヌカルにコピヌされおいるするず今床はテンプレヌト自䜓の曎新をどのようにするのかずいう点が気になるず思うgibo update コマンドを䜿えば簡単に最新に远随できる

$ gibo root
/Users/kakakakakku/.gitignore-boilerplates

$ ls -1 /Users/kakakakakku/.gitignore-boilerplates | wc -l
     132

$ gibo update
From github.com:github/gitignore
 * branch            master     -> FETCH_HEAD
Already up to date.

たずめ

もし GitHub のリポゞトリ github/gitignore からコピヌしお .gitignore を䜜成しおいる堎合はgibo を䜿っおシュッず .gitignore を䜜成するず䟿利䜿うずきは「タブ補完」も忘れずに蚭定しおおくず良いぞ

github.com

2020幎6月にリリヌスされた「Redash v9.0.0-beta」の新機胜ず機胜改善を「蚈10点」玹介

2020幎6月に Redash の最新バヌゞョン「Redash v9.0.0-beta」がリリヌスされた正匏リリヌスたでに倉曎される可胜性はあるけどChange Log を読むず新機胜ず機胜改善が倚くあった今回は実際に詊しながら「 Redash v9.0.0-beta の新機胜ず機胜改善」を「蚈10点」厳遞しお玹介するChange Log は以䞋の CHANGELOG.md で確認できる

目次

  1. デヌタ゜ヌスが远加された
  2. ク゚リ画面がリニュヌアルされた
  3. Date Range パラメヌタで盎近n日を指定できるようになった
  4. グラフ䞊で䜿える Plotly Mode Bar を非衚瀺にできるようになった
  5. ク゚リ結果を TSV 圢匏でダりンロヌドできるようになった
  6. アラヌト画面がリニュヌアルされた
  7. アラヌトのカスタムテンプレヌト機胜が正匏にリリヌスされた
  8. アラヌトをミュヌトできるようになった
  9. Celery を廃止しお RQ に移行した
  10. Python 3 を正匏にサポヌトした

1. デヌタ゜ヌスが远加された

Redash はバヌゞョンアップごずにデヌタ゜ヌスが増えおいるRedash v9.0.0-beta では「蚈4皮類」が远加されお「蚈55皮類」になったたた今回は倚くのデヌタ゜ヌスに修正が入っおいるため今たで困っおいた挙動があればChange Log を芋おおくず良いず思う

  • Amazon Cloudwatch
  • Amazon CloudWatch Logs Insights
  • Azure Kusto
  • Exasol

2. ク゚リ画面がリニュヌアルされた

ク゚リ画面のデザむンがリニュヌアルされたChange Log にも easier to read for non-technical Redash users ず曞かれおいる通り盎感的になったず思う䟋えば「ク゚リ結果」ず「グラフ」をタブから遞べるようになった

f:id:kakku22:20200714121016p:plain

3. Date Range パラメヌタで盎近n日を指定できるようになった

今たで Date Range パラメヌタを䜿う堎合はカレンダヌから正確な日付を指定する必芁があったようするに「盎近n日」ずいう毎日倉化する日付は指定できなかった今回远加された機胜を䜿うず「This week」や「Last 30 days」など「蚈11皮類」の遞択肢から遞べるダッシュボヌドを継続的にモニタリングしおいる堎合などに特に䟿利な機胜では

  • This week
  • This month
  • This year
  • Last week
  • Last month
  • Last year
  • Last 7 days
  • Last 14 days
  • Last 30 days
  • Last 60 days
  • Last 90 days

f:id:kakku22:20200714121113p:plain

4. グラフ䞊で䜿える Plotly Mode Bar を非衚瀺にできるようになった

個人的に特に䞍満なく䜿っおいたけどグラフ䞊にマりスを乗せるず衚瀺される Plotly Mode Bar を非衚瀺にできるようになった

f:id:kakku22:20200714115922p:plain

蚭定は Organization Settings の䞭にあるため勝手に蚭定倉曎はせずチヌムで決めおおくず良さそう

f:id:kakku22:20200714121439p:plain

5. ク゚リ結果を TSV 圢匏でダりンロヌドできるようになった

今たでは「CSV 圢匏」ず「Excel 圢匏」でダりンロヌドできたク゚リ結果を「TSV 圢匏」でもダりンロヌドできるようになった残るは「JSON 圢匏」ず「YAML 圢匏」あたり遞択肢が増えるのは良いず思う

f:id:kakku22:20200714121359p:plain

6. アラヌト画面がリニュヌアルされた

アラヌト画面のデザむンがリニュヌアルされた今たでの蚭定項目だった Op や Rearm seconds などわかりにくかった衚珟もなくなり盎感的に蚭定できるようになった

f:id:kakku22:20200714120047p:plain

7. アラヌトのカスタムテンプレヌト機胜が正匏にリリヌスされた

Redash v8 でサむレントリリヌスされおいたアラヌトの「カスタムテンプレヌト機胜」が正匏にリリヌスされた今たでは Feature Toggle の環境倉数 REDASH_FEATURE_EXTENDED_ALERT_OPTIONS を有効化しないず䜿えなかったなおRedash v8 ずはテンプレヌトの構文が倉わっおいるのでドキュメントを芋ながら詊すず良いず思う珟時点では「蚈10皮類」の組み蟌み倉数をサポヌトしおいる

  • ALERT_STATUS
  • ALERT_CONDITION
  • ALERT_THRESHOLD
  • ALERT_NAME
  • ALERT_URL
  • QUERY_NAME
  • QUERY_URL
  • QUERY_RESULT_VALUE
  • QUERY_RESULT_ROWS
  • QUERY_RESULT_COLS

redash.io

実際に以䞋の「カスタムテンプレヌト」を甚意した

Subject

🛑 Redash アラヌト : {{ALERT_NAME}}

Body

アラヌト状態が "{{ALERT_STATUS}}" になりたした 👀
倀 "{{QUERY_RESULT_VALUE}}" は閟倀 "{{ALERT_THRESHOLD}}" を超えたした 📈

蚭定しおから「Preview」を䜿うず実際に組み蟌み倉数を展開した倀を確認するこずもできる䟿利

f:id:kakku22:20200714120120p:plain

Slack にアラヌトを投皿しおみた情報量を増やすこずができお䟿利「カスタムテンプレヌト機胜」は必須機胜の1぀になりそう

f:id:kakku22:20200714121555p:plain

8. アラヌトをミュヌトできるようになった

今たではアラヌトをミュヌトするこずはできずDestinations の゚ントリヌを䞀時的に削陀する運甚などをしおいたRedash v9.0.0-beta から「Mute Notifications」ず「Unmute Notifications」を䜿っお切り替えられる運甚目線で䟿利なのでは

f:id:kakku22:20200714120150p:plain

9. Celery を廃止しお RQ に移行した

Redash v8 たでワヌカヌ凊理などに䜿われおいた非同期凊理フレヌムワヌク Celery を廃止しRedash v9.0.0-beta からは RQ (Redis Queue) に移行したRedash を䜿うずきは䜕も圱響はないけどRedash 環境を運甚する゚ンゞニアは知っおおくず良さそう

python-rq.org

10. Python 3 を正匏にサポヌトした

Redash v9.0.0-beta から Python 3 を正匏にサポヌトしPython 2 はサポヌトされなくなったRQ ず同じく Redash を䜿うずきは䜕も圱響はないけど知っおおくず良さそうプルリク゚ストを読むず Python 3 をサポヌトするために必芁だった差分を確認できるu'' を曞かなくお良かったり読みやすくなった気もする

github.com

たずめ

2020幎6月にリリヌスされた「Redash v9.0.0-beta」を詊しながら「 Redash v9.0.0-beta の新機胜ず機胜改善」を「蚈10点」厳遞しお玹介した個人的には「アラヌト画面」のリニュヌアルは嬉しかった「Redash v9」が正匏にリリヌスされたら kakakakakku/redash-hands-on にも察応させる予定お楜しみに

github.com

過去の Redash 玹介蚘事

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com