Category 開発
個人ブログをHugoからHonoに移行しました
こんにちは、@p1assです。 先日、本ブログの静的サイトジェネレーター (SSG) をHugoからHonoに切り替えました。
旧Hugoのブログは2019年に作成したものなので、おおよそ5年間ほど使い続けていたことになります。
この記事では、長く使っていたHugoをやめる決断をしたモチベーションや、Honoを採用した理由、実際にHonoを使っていく上で工夫したポイントについて紹介します。
Web Speed Hackathon 2024に参加して2位になりました
こんにちは、@p1assです。
先日、Web Speed Hackathon 2024 というイベントに参加しました。
最近のGoのOpenAPI Generatorの推しはogen
はじめに
OpenAPI の yaml ファイルから Go のコードを生成する OSS ツールは何種類か存在します。 よく使われるのはOpenAPITools/openapi-generatorやdeepmap/oapi-codegenでしょうか。
ググると日本語の記事もたくさん出てきます。
もちろんこれらの OSS は便利なのですが、生成される interface や型が個人的にあまり好みではなく、モヤモヤしながら使っていました。
そんな中、新しめの OSS であるogen-dev/ogenというツールが良さげだという情報をキャッチし、実際に使ってみたところ自分の好みにフィットするツールだということが見えてきました。
Goのmath/bigパッケージを使ってbase62エンコードをする
こんにちは @p1ass です。
Go で base62 エンコード、つまりあるバイト列を [a-zA-Z0-9]
の範囲の文字を使ってエンコードする方法を調べたのでまとめます。
最終的には、math/big
パッケージを使うことで実現できることを知りました。
Google DomainsからCloudflareにドメインを移管した
こんにちは、@p1assです。
先日、Google から Google Domains を Squarespace に譲渡すると発表されました。 (Edited(2023/06/18): Squarespace のスペルが間違っていました。)
何もせずともドメインを失うことはないですが、良い機会なのでドメインを Cloudflare に移管することにしました。 Cloudflare を選んだ理由は、既にネームサーバーとして Cloudflare を利用していたからです。
Vercel・Cloud Run間の通信をIAMで認証する
こんにちは、@p1assです。 Google Cloud の IAM を使ったテクニックを紹介します。
モチベーション
とある趣味のプロジェクトで、Vercel に Node.js のフロントエンドサーバー、Cloud Run にバックエンド API をホスティングするアーキテクチャを設計しました。 Cloud Run にホスティングしている API は、フロントエンドサーバーが SSR するときに呼び出されます。 一方で、ブラウザから直接 API を叩くことはありません。
このようなアーキテクチャでは、Vercel から Cloud Run にアクセスできるようにするために、Cloud Run のエンドポイントをインターネットに公開する必要があります。 しかし、何も対策をせずインターネットに公開してしまうと、URL が露出してしまった際に第三者から API を叩かれてしまう危険性がありました。
そこで、IAM の仕組みを使うことで、エンドポイントをインターネットに公開しつつも、Vercel からしか Cloud Run の API を叩けないようにする仕組みを導入したいです。
ZigでISUCON 12 の予選をCGOクロスコンパイルする
こんにちは、@p1ass です。
先日投稿した記事「ISUCON 12 の予選に参加して、7 位で本選進出を決めました」にて、CGO クロスコンパイルに苦労した話をしました。
その後色々調べたところ、Zig を使うと簡単にコンパイルできることを知ったので試してみました。
protocの代わりにBuf CLIを使ってスキーマ駆動開発の体験を向上させる
こんにちは、@p1assです。
この記事では、Protocol Buffers に関連した様々なコマンドを実行できる Buf CLI を紹介します。 Buf CLI は、protoc とは異なり、Formatter や Linter、Breaking Change Detector、依存パッケージ管理など、Protocol Buffers を使う上で便利なコマンドが用意されています。 Protocol Buffers を使いたいけど CI のセットアップ等が面倒な人におすすめです。
- 公式ドキュメント: https://docs.buf.build/introduction
- GitHub: https://github.com/bufbuild/buf
- 執筆時のバージョン: 1.6.0
SPA で役立ちそうな OAuth 2.0 for Browser-Based Apps を読んだ
こんにちは、@p1assです。
GW 中に SPA で OAuth を使うときのプラクティスについて調べていたところ、OAuth2.0 for Browser-Based Apps という RFC の Internet-Draft を見つけました。
一通り読んでみたところ、現時点でのベストプラクティスが良い感じにまとまっていたので、興味深かったところを抜粋して紹介します。
Twitter API v2のOAuth 2.0 Authorization Code Flow with PKCEを試した
こんにちは、@p1assです。
Twitter API の v2 が正式リリースされてから数ヶ月経ちました。
Twitter API v2 では様々な API が追加されていますが、中でも注目すべきは OAuth 2.0 対応だと思います。
今までは OAuth 1.0a しか対応しておらず、他の OAuth 2.0 対応の認可サーバーと比較して使いづらいと感じていました。 今回の対応によって、OAuth 2.0 の Authorization Code Flow ( RFC6749 Section4.1)を利用した認可に対応し、より便利に認可をシステムに組み込めるようになりました。
また、スコープを細かく制御できるようになったため、今までのように不用意に多くの権限を要求する必要がなくなりました! 現在対応しているスコープは以下の通りで、非常に細かくスコープを制御できることが分かります。
- tweet.read
- tweet.write
- tweet.moderate.write
- users.read
- follows.read
- follows.write
- offline.access
- space.read
- mute.read
- mute.write
- like.read
- like.write
- list.read
- list.write
- block.read
- block.write
というわけで、せっかく OAuth 2.0 に対応したことなので、実際に Authorization Code Flow を試してみようと思います。