STNSと連携して公開鍵認証し、gRPCでサーバーに定義した処理を実行させるツールalpette

今年の4月頃にgRPCの独自認証周りを調べて、勉強がてらそれを使ってツールを作っていた。ものとしては、サーバー側でタスクを定義しておくとgRPC経由で実行させられるというもの。リポジトリは takaishi/alpette

挙動としては、まずサーバー側で以下のようにタスクを定義する。

そして、クライアント側からタスクを指定するとgRPCでサーバーと通信、サーバーはタスクを実行、実行結果を返すというもの。

サーバーで何かするときにSSHすることが多いと思う。しかし、SSHだと実行者が持つ権限が結構大きい。適切に権限を設定すればよいのだけど、別のアプローチとして定義した処理しか実行できないようにするのはどうかと思い試しに実装した。また、gRPCの認証部分でSTNSと連携した公開鍵認証を実装している。標準で使えるSSL/TLSやGoogleを使ってもいいのだけど、STNSと連携することでユーザー管理をSTNSにまかせたり、将来的には監査などに活用できるのでは?と思いやってみた。

gRPCで独自の認証機構を利用する(SSH公開鍵認証編) という記事に書いているように、WithTransportCredentialを使うことで独自に認証機構を実装できる。基本的にはSSHと同じなのだが、サーバーはSTNSから公開鍵を取得するのでフローとしては以下の図のようになるはず(間違っている箇所があったら教えてくれるとうれしいです)。

なお、これだけだと認証通過後の通信は暗号化されない。そのため、パケットキャプチャすると処理結果が見えてしまう。例えばSSHのように共通鍵を用いて暗号化するという処理が必要である。

テンプレートからテキストファイルをパッと作れるCLIツール、patt

2017年に思いついてガッと書いたもののその後忘れていて、今朝見つけて「ええやん!」と思ったのでリファクタリングしたりリリースまわり整備したりして使えるようにした。リポジトリは https://github.com/takaishi/patt

これは何かというと、普段僕は日報や1on1のメモやその他いろいろなテキストファイルを扱っているのだけど、テンプレートをコピーして日付やらを変えて…というのが面倒と思うことがある。そこで、テンプレートを一括管理して、日付などからファイルを生成して任意の場所に置いてくれるツールを用意したというわけ。

テンプレートはテキストファイルで、Hugoでおなじみのfront-matterを使う方式。テンプレート名と配置先を情報として持たせる。

テンプレートを一覧表示するとこんなかんじになる。

テンプレート名を指定してnewコマンドを実行すると、ファイルができて便利。

ビルドとかリリースまわりの設定をいろいろやったり、Homebrewでインストールできるようにしたりというのをやっていた。ツール名、今朝見たときは「パッと作れる〜」みたいなギャグかなと思ったけど、いろいろコードとかみてるとpatternからとってた気がする。サブコマンドがちょいわかりにくいのでしばらくブラッシュアップしていこうと思う。

AppleWatchのアクティビティ機能で、いかに動いていないかが可視化される話

Apple Watchには立った回数や動いて消費したカロリーなどを記録して、1日にこのくらい動きましょう、あなたはこのくらい動きましたというのを数値・絵で見られるアプリがあるのだけど、全然動いてないなーというのがわかってしまった。ここ1週間強の記録がこれ。

青と緑(青はスタンド、緑はエクササイズ)は割と目標到達してリングが閉じているのだけど赤(ムーブ)が全然ダメ。ジョギングはしてないので、普段歩いた結果なのだけどどんだけ動いてないんだ。600カロリー消費すればOKなのだけど、めちゃくちゃ難しい。今日なんて、0時〜1時くらいに飲み歩いて昼はチリチリまで行ったのに543/600カロリーだった。

まずは極力普段の生活の中で動きを増やしてクリアしたいなと思っている。一駅手前で降りるとか、ちょっと回り道をするくらいで、ジョギングしてクリア!というのはその後にしたい。1時間に1回ウォッチが立て!って言うのでオフィスをぶらぶらするとかね。

普通に会社に行って帰ってきても動いてないのがわかったわけだけど、会社に行かなかった場合はよりひどい。10月5日は家で仕事していたのだけど、スタンドすらクリアしていない。座りっぱなしっていうこと。家に居ると運動してないだろうなーというのは感じていたけど数値になると実感するなあ。

まぁ、歩数だけじゃなく測定できて目標も設定できているので、後はいかに達成するかなのでがんばるぞ。

技術書展に行った

何人か知人が出すということで覗いてきた。昼過ぎに行ったからか、会場にはすんなりはいれた。ブース前ではすごく混んでいたが、身動きとれないほどではない。一通り回って購入して撤収。電子版が半分を占める。物理版がなくても買えるのは便利。