ぷらすのブログ

Category 開発

Web Speed Hackathon 2024に参加して2位になりました

続きを読む

最近のGoのOpenAPI Generatorの推しはogen

はじめに

OpenAPI の yaml ファイルから Go のコードを生成する OSS ツールは何種類か存在します。 よく使われるのはOpenAPITools/openapi-generatordeepmap/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 のセットアップ等が面倒な人におすすめです。

Bufのロゴ Buf のロゴ(公式サイトより引用)

続きを読む

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 を試してみようと思います。

続きを読む

Gradle にしっかり入門する

1 章 はじめに

こんにちは、@p1assです。

最近、Gradle を使ったプロジェクトを 1 から構築することがありました。 以前から Gradle を使ったことはあったのですが、ほとんど雰囲気で触っていたため、いざ諸々をセットアップしようとすると戸惑ってしまうことが多々ありました。そのため、改めて Gradle について学んだほうが良かろうということになりました。

この記事では、改めて Gradle を学んだ際に自分のためにまとめたドキュメントを再編集して公開します。

続きを読む
1