興味の赴くままの研究の旅
はじめに
コンピュータサイエンスの分野は非常に幅広く、ここ数年はフロントエンド以外にも、様々な分野を探求するのが好きになった。このシリーズ記事では、僕が探求してみて面白いと感じたトピックや、これから探求してみたいテーマをいくつか共有したいと思う。
僕はファーストプリンシプル(第一原理)、つまり物事を本質から観察することがとても好きだ。特にコンピュータのような人類文明の結晶であり、様々な抽象化が組み合わさった産物に対してはなおさらだ。僕が書くコードは主にブラウザ上で動作するが、ブラウザはOS上で動くソフトウェアであり、OSはCPUや各種ハードウェアの上で動作している。僕にとってこれは非常に魅力的だ。すべてのテーマを語り尽くすことはできないが、探求する中で面白いと感じた領域をいくつか共有したい。
僕たちはテクノロジーが絶えず進歩することを、まるで当たり前のことのように捉えがちだ。しかし、あらゆるテクノロジーの背後には、一人あるいは無数の人々の心血が注がれており、彼らが当時直面した問題を解決するために発展してきたものであって、中には偶然によって発見された技術すらある。
テクノロジーは勝手に良くなるわけではない。泥臭く手を動かし、難題に立ち向かう誰かがいてこそだ。影響力のある貢献をするために、必ずしも高学歴や並外れた頭脳が必要なわけではない。誰もがテクノロジーを発展させ、改善する一員になれる可能性を秘めている。
よく「日常生活で三角関数や線形代数なんて使わないのに、どうして数学を学ぶ必要があるのか?」という疑問を耳にする。
この問いに対して、僕には2つの少しロマンチックな答えがある。
今のテクノロジーは、数学を学ばなくても不自由なく生きていけるほどに進歩したからだ。
もう1つの答えは、僕が『フェルマーの最終定理』を読んでいたときに出会った、ハーディ(G. H. Hardy)の言葉だ:
私の数学理論には実用的な用途はない。数学の世界を離れれば、それが世界を少しでも快適にしたわけではない。だが、それが何だというのだ? 答えを追い求めるのは、ただ自分自身の欲求から出たものに過ぎない。
僕は他の物事に興味を持ちやすい一方で、三日坊主なところがある。あまり良いことではない気もするが、そのおかげでここ数年、以前なら思いもよらなかった多くの領域を探求することができた。今回の鐵人賽を通じてそれらをシェアし、同時に自分自身の理解も深めたい。
このシリーズの記事は、互いに無関係な(それでいてどこか繋がっているような)30編のエッセイとして読んでもらえればと思う。もしそのトピックに詳しいなら、コメントで意見を共有し、ぜひ一緒に交流してほしい。
テーマの概要
これらがこの30日間で書く予定のテーマだ。状況に応じて増減するかもしれない。テーマはすべてITに関連するもので、フロントエンド/バックエンド、幅広いコンピュータサイエンスのトピック、数学、ハードウェア、低レイヤーのプロトコルなど、とにかく多種多様で雑多な内容になっている。
関連記事
- 測定が目標になるとき:窓税からPull Request数まで かつて僕は小さなツールを自作し、四半期で自分がどれだけPRに貢献したか、レビューコメントをどれだけ残したか、チケットをどれだけ消化したかを集計して、上司にアウトプットを証明しようとしたことがある。上司は淡々と、評価はアウトプットだけで見るものではないと言った。数年後、僕はようやく理解した――測定が目標になるとき、それはもはや良い測定ではなくなるのだ。英国の窓税、ハノイのネズミ駆除の報奨金から、現代のPR数による開発者評価に至るまで、そのメカニズムはまったく同じだ。
- Cloudflare Images を画像ストレージ・変換ソリューションとして使う ウェブページに画像を1枚置くのはフロントエンドにとって最も簡単なことだが、リサイズや各種フォーマットの生成、さらにはトラフィックの負荷に耐えることまで完璧にやろうとすると、実際には一つの包括的なソリューションが必要になる。僕はその後、すべて Cloudflare Images に任せるようになり、オリジナル画像1枚だけを渡すようにしている。
- もう AWS Access Key を使うのはやめよう Access Key は AWS において見落とされがちなセキュリティリスクだ。OIDC と IAM Role を組み合わせることで、GitHub Actions にシークレットを一切保持させることなく、安全に AWS リソースを操作できるようにする。
- データベース主キー:AUTO_INCREMENT、UUID、そしてUUIDv7 バックエンド開発で度々直面する主キーの決定。auto incrementを使うべきか、それともUUIDか?衝突への懸念は?UUIDv7とcreated_at + インデックスの性能差はどれほどか?実際に2,000万件のデータで検証したベンチマークと設計上の意思決定を解説する。