オープンアドレスハッシュテーブルとスイステーブル
2025年2月27日オープンアドレスハッシュテーブルとスイステーブル go.dev - Faster Go maps with Swiss Tablesを読んでいたら、オープンアドレスハッシュテーブルとスイステーブルについての説明があったので、調べてみた。 1. オープンアドレスハッシュテーブルとは オープンアドレスハッシュテーブル(Open Addressing Hash Table) は、ハッシュ衝突(異なるキー...
オープンアドレスハッシュテーブルとスイステーブル go.dev - Faster Go maps with Swiss Tablesを読んでいたら、オープンアドレスハッシュテーブルとスイステーブルについての説明があったので、調べてみた。 1. オープンアドレスハッシュテーブルとは オープンアドレスハッシュテーブル(Open Addressing Hash Table) は、ハッシュ衝突(異なるキー...
データモデルには、時間軸(履歴や有効期間など)をどのように管理するかによって、いくつかのパターンが存在する。 Nontemporal(ノンテンポラル) Unitemporal(ユニテンポラル) Bitemporal(バイテンポラル) それぞれは「時間情報をどの程度細かく、どのような意味で管理するか」という点で異なる。 これらのデータモデルの特徴や設計例、メリット・デメリットについて解説する。 ...
ストーリーポイントの基準を考える方法についてアイデアが浮かんだので、それについて書き残しておく。 もしかして世界初では!?とは思ったが、Demystifying Story Point Estimation Using the Cynefin Frameworkという記事を見つけたのでそうではなさそう。 ストーリーポイントとは何か ストーリーポイント(Story Points)とは、作業の「相対的...
本記事ではソフトウェアアーキテクチャ・ハードパーツ ―分散アーキテクチャのためのトレードオフ分析の第1章~第4章をベースに、モノリスからのサービス分割を検討するときに役立つポイントを整理する。 すべての組織に当てはまる“銀の弾は存在しないが、「どんなトレードオフを見極めるべきか」を理解することで、より納得感のあるアーキテクチャを設計できるかもしれない。 1. 「ベストプラクティス」は存在しない —...
アーキテクチャ戦略について考える ソフトウェア開発において、必ずしもCTOやアーキテクトといった明確なポジションにいなくても、「アーキテクチャ戦略の必要性」を感じ、考える機会がある。 「現場で技術的な方針をまとめたいが、どこから手をつけたらよいかわからない」 「将来の拡張性や組織の成長を踏まえたアーキテクチャにしたい」 「既に蓄積した技術的負債にどう向き合えばよいか知りたい」 本記事では、こう...
脳に収まるコードの書き方 ―複雑さを避け持続可能にするための経験則とテクニックを読んだ。 タイトルからプログラマ脳を彷彿して認知科学的な話が交えられているかなと思ったが、そうではなかった。 この本は脳内メモリに収まるコードを書くための実践的なプラクティスが語られている。 全体的に自分の経験則から共感を得る部分が多かった。著者はコンピューターサイエンスの学部ではない出身でソフトウェアエンジニアのキャ...
GraphQL federationについて調べたことをまとめる。 GraphQL Federationとは GraphQL Federationは、複数のGraphQLサービスを統合するための方法である。 GraphQLのマイクロサービスのようなもので、単一のGraphQLエンドポイントとして複数のGraphQLサービスを利用することができるようにするアーキテクチャパターンである。 GraphQ...
Rubyにおけるシングルトンパターンの実装方法についてまとめる。 シングルトンパターンとは シングルトンパターンは、インスタンスが1つしか存在しないことを保証するデザインパターンである。 Singletonモジュールを作成する方法 RubyにはSingletonモジュールが用意されており、これを使うことでシングルトンパターンを実装することができる。 require 'singleton&...