2022年にやったこと
こんにちは、@p1assです。
年末なので 2022 年にやったことをまとめようと思います。
『Googleのソフトウェアエンジニアリング』を読んだ
こんにちは、@p1ass です。 最近はどっぷり Splatoon 3 にはまっています。
さて、ここ 1 年近く読み進めていた『Google のソフトウェアエンジニアリング』をようやく読み終えました。 大ボリュームで時間がかかってしまいましたが、学びが多くある本だったので感想をまとめようと思います。
ISUCON 12 本選に参加しました
こんにちは、@p1ass です。
前回のブログに引き続き、ISUCON 12 の本選に @km_conner と @atrn0 で参加しました。
結果は、参考スコア 218,852 点で失格になりました 😭
PASS してたら総合 5 位のスコアのようです。 僕のミスのためとても悔しいし、申し訳ない気持ちでいっぱいです。
この記事ではいつも通りやったことを書こうと思います。
GitHub はこちらです。
なお、スコアグラフはこのようになりました。
ZigでISUCON 12 の予選をCGOクロスコンパイルする
こんにちは、@p1ass です。
先日投稿した記事「ISUCON 12 の予選に参加して、7 位で本選進出を決めました」にて、CGO クロスコンパイルに苦労した話をしました。
その後色々調べたところ、Zig を使うと簡単にコンパイルできることを知ったので試してみました。
ISUCON 12 の予選に参加して、7位で本選進出を決めました
こんにちは、@p1ass です。 先日行われた ISUCON 12 の予選に @km_conner と @atrn0 と参加しました。
結果は 35642 点・7 位で、本選に行くことができました。わいわい 🙌
この記事では、事前準備や本番中に入れた改善について紹介します。 なお、今回はコミットごとのベンチのスコアをほとんどメモしておらず、途中のスコアは概算となる点にご注意ください。
GitHub はこちらです。 master がバグることが何回かあり、コミットや PR 単位で実装を見ても FAIL するコードになっている場合があるので注意してください。 (主に僕の実装)
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 を試してみようと思います。
『ソフトウェアアーキテクチャの基礎』を読んだ
こんにちは@p1assです。 タイトルの通り、『ソフトウェアアーキテクチャの基礎 エンジニアリングに基づく体系的アプローチ』を読みました。
本書はソフトウェアアーキテクチャに関する内容を網羅的にまとめたもので、アーキテクトのようなポジションを目指す人にとっての教科書的な存在です。 自分の今の興味関心にドンピシャの内容で、書籍の発売後にすぐ読み切ってしまいました。
この記事では、本書の感想を書こうと思います。 現在購入を検討している方の参考になれば幸いです。
大規模システムにおけるディレクトリ構成をRDBのカーディナリティを参考に考える
モノリシックなプロジェクトにおいて、トップレベルのディレクトリ構成が異なる 2 つのディレクトリ構成を考え、それらの違いは何で、どちらが優れているか?という問いについて考えた。そして、「複雑な概念をトップレベルのディレクトリ構成にした方が良いのでは?」という結論に落ち着いた話をする。