Carpe Diem

備忘録

Stream Deck MobileでZoomのミュートなどを使いやすく

概要

Stream Deckというスイッチャーのモバイルアプリがあり、それを使うことでZoomのミュートON/OFF、ビデオのON/OFFをやりやすくします。

背景

仕事ではZoomでオンラインミーティングをすることが多いのですが、ミュート等の切り替えが地味にストレスだったりします。

  • 今ミュート状態なのかどうかが分かりにくい
  • ショートカットキーはアプリがアクティブな状態でないと使えない
    • 議事録をとっていたり、ブラウザで調べながらやりとりすることはよくある
    • グローバルショートカットキーという手段もあるが干渉する可能性がある

そういった際に

  • 視覚的に今どういう状態かがすぐ分かる
  • 他アプリを使っている状態でもON/OFFの切り替えが可能

というスイッチャーは無いかなと調べたところいくつか候補が見つかりました。

続きを読む

GoのロギングライブラリzapのTips

概要

zapを使っていて

  • 書き込み先をio.Writerで自由に設定したい
  • テストで時刻を固定値にしたい
  • ログレベルによって標準出力、標準エラー出力を分けたい
  • GCP Cloud Loggingのフォーマットでログ出力したい
  • 独自logパッケージでラップしたらcallerがおかしい

とちょっとカスタマイズしたいケースのTipsです。

環境

  • Go 1.17
  • go.uber.org/zap v1.19.1
続きを読む

OPAでREST APIのAuthorizationを行う

概要

REST APIのAuthorizationをOPAに任せ、ミドルウェアなどで統一した処理にすることで認可処理の運用や柔軟性を向上させることができます。

今回はその実装方法を紹介します。

環境

  • opa v0.32.0
  • go v1.17

アーキテクチャ

アーキテクチャのイメージとしては以下です。
アクセスしたクライアントがその権限を持っているかOPAでチェックし、権限を持っていればアプリケーションサーバ側の処理④を実行します。

f:id:quoll00:20210913065102p:plain

続きを読む

OPA (Open Policy Agent) を使ってみる

背景

Policy as a Code(ポリシーをコードベースで管理する)の汎用的なエンジンとしてOPA - Open Policy Agentオーパ)があります。

用途としては

  • APIの権限管理(Authorization)を汎用化&共通化したい
  • ネットワークの疎通に関するホワイトリストブラックリスト)を汎用化したい
  • Terraformやらk8sのコードに独自のLinterを用意したい
    • TerraformでAWSのtagつけを必須にしたい、等

といった際に利用できます。

またエコシステムも充実しており、すでに多数のツールと組み合わせることが可能です。

f:id:quoll00:20210910071747p:plain

ref: Open Policy Agent | Ecosystem

今回はそのOPAの基本的な使い方を説明します。

続きを読む

bugsnagのWeb UIでスタックトレースを表示する方法

背景

サーバサイドでエラー検知・トラッキングSaaSを利用する場合、bugsnagが候補に挙がると思います。

ただそのままerrorをNotify()してみてもスタックトレースがきちんと表示されない問題にぶつかります。

今回はGoでbugsnagを利用する場合に、bugsnagのWeb UIでスタックトレースを表示する方法を紹介します。

環境

  • Go 1.17
  • bugsnag-go v2.1.2
続きを読む

fmt.Errorfとxerrors.Errorfと独自エラーと

背景

エラーハンドリングでは

  • エラーが発生した箇所を追うことができる
  • エラーの原因によって処理を分岐することができる

といったことが重要です。

Go 1.13から入ったラップする仕組みにより、エラーメッセージにアノテートしていくことができエラーの発生箇所を追いやすくなりました。
またerrors.Isによりエラー原因による条件分岐もしやすくなりました。

今回はそれらと独自エラーの扱いについて説明します。

環境

  • Go 1.16.7
続きを読む

VPC ネットワークピアリングで内部IPで疎通する

概要

前回はCloud VPNによる内部IPでの疎通方法を紹介しました。

christina04.hatenablog.com

今回はVPCピアリングを用いた疎通方法を紹介します。

VPCピアリングを用いて内部IPによる接続を行うとメリットがあります。

  • レイテンシ
    • 外部IPアドレスを使用する接続よりもレイテンシが低い
  • セキュリティ
    • インターネットに公開することがないのでそのリスクを考慮しなくて良い
  • コスト
    • 内部通信扱いされるので、外部IPアドレスを使った下り(外向き)で発生するコストがない
続きを読む