これはカンムアドベントカレンダー2021の6日目です。 昨日は@hiroakisさんの記事でした。
弊社は情報共有ツールとしてesaを使っています。 esaはシンプルで悪くないんですが自分は、前職での情報共有ツールの体験から「この手のツールははてなブログのように記事を展開して表示してほしい」と常々考えています。 一応、esa運営に機能要望としてフィードバックしてみたものの、実装されるかわからない…ので自分でツールを作成してみました。
このyktrというツールはesa APIでesaの記事を取得し、記事を展開して連続して表示されるビューを提供します。 (動画)
これでesaが便利になって一件落着…と思ったんですが、そんなことはなかった。
esaのアクセス制限がですね
現時点では、ユーザ毎に15分間に75リクエストまで受け付けます。 https://docs.esa.io/posts/102
となかなかしょっぱい感じで、yktrをユーザー個人のアクセストークンを使う形でWebサービスとして運用すると、速攻で制限に引っかかることが目に見えています。
幸いなことにesa APIには「OAuthを利用した認可フロー」が用意されているので、oauth2でユーザー個別にトークンを発行するようにすれば、利用制限に引っかかりにくくなります。 oauth2のライブラリとしてはomniauth-esaを使えます。 が、弊社のリンガフランカはGolang。RailsやSinatraを運用できなくはないですが、内部でのメンテナンスが滞りそうなのであまり使いたくはない…
ということで、Golangのoauth2のライブラリを探しました。
- https://github.com/outrightmental/go-omniauth
- そのものズバリなのですが更新が止まっています
- OAuth2 for Go
- 実装はできるんですがもう少し楽をしたい
- https://gitee.com/nilorg/oauth2
- サーバー側の機能もあってやや重たい
最終的に https://github.com/markbates/goth にたどり着きました。
This package was inspired by https://github.com/intridea/omniauth.
とあるようにomniauthにインスパイアされて作られたライブラリで、複数のプロバイダの認証を簡単に行えるライブラリです。 サポートしているプロバイダも多く、また自作のプロバイダも簡単にかけます。
esa用のプロバイダは提供されていなかったのでgoth-esaというライブラリを作成しました。
これを使うとGolangでもかなり簡単にesaのOAuthを利用した認可フローを使うことができます。
さらに上記を利用するようにyktrを修正してyktr2を作りました。 これを内部向けWebサービスとしてリリースして、いまでは最高…といわないまでもまあまあのユーザー体験を得ています。
※ちなみに内部向けのWebサービス公開環境がなかったのでterraformとecspressoとoauth2-proxyで「なんでも雑に公開できる内部向けECS環境」も作りました
以下はなんとなく書きたいから書くおすすめのSFマンガの話です。
野村亮馬は現代SFマンガの最高峰ではないかと勝手に思っています。 2巻の軌道エレベーター(ひも)の話とか、いいですね。 3巻が待ち遠しい。 キヌ六も面白いですが、ひとつあげるならこっちです。
あさりよしとおなので言わずもがなという感じのSFマンガです。 小惑星を開発したり、宇宙コロニーで暮らしたり、宇宙船を開発したりするお話。 1巻目のラストがあれなきがするんですが、打ち切りなのかな…
人類圏というシリーズをまとめたもので、個々の作品はKindle Unlimitedで読めます。 個々の話はすこーしつながりがあるので、順番に読んでいかないとわかりづらいかも。 説明しにくいですけど、初期はSF的思考実験をマンガにした感じで、後期は無限工作社との戦いがメインかな。
古典。攻殻機動隊もそうですけど、読み返すたびに面白いです。 covid-19で「ドミニオンじゃん」とか一瞬思ったり。 もう新作は拝めないんですかね…
好きな台詞は「原理は単純を、構造は複雑を極め、人は最も人らしく」です。
エイリアン9もミルククローゼットも好きですが、ユミハリがいちばん好きかも。 伏線のたたみ方があれですが。 海上浮遊要塞と化した品川駅よいです。
- マンガじゃないけどヴァレリア・ファイル