凝集度と結合度
2025年6月25日概要 ソフトウェア設計において品質を測る基本的な指標として、**凝集度(Cohesion)と結合度(Coupling)**がある。これらは、モジュール化、保守性、再利用性などを考慮する際に重要な概念である。 凝集度(Cohesion)とは 凝集度とは、モジュール内の構成要素(関数や変数など)がどれほど密接に関連しているかを表す指標である。 高凝集(High Cohesion) モジュール内の要素...
概要 ソフトウェア設計において品質を測る基本的な指標として、**凝集度(Cohesion)と結合度(Coupling)**がある。これらは、モジュール化、保守性、再利用性などを考慮する際に重要な概念である。 凝集度(Cohesion)とは 凝集度とは、モジュール内の構成要素(関数や変数など)がどれほど密接に関連しているかを表す指標である。 高凝集(High Cohesion) モジュール内の要素...
概要 Open Policy Agent(OPA)は、ポリシーによるアクセス制御を疎結合な形で実現できる強力な仕組みである。Regoという宣言的言語でルールを記述し、アプリケーション側からはシンプルな形式でポリシー評価を利用できる。 本記事では、OPAを利用したアクセス制御の代表的なパターンを整理し、それぞれの特徴や適した用途、実装負荷などを比較する。 以下に、あなたが挙げた4つのアクセス制御アプ...
Go製Git操作ツール「ggc」の紹介 概要 Gitを操作するためのクライアントツールは様々便利なものがあるが、自分はずっと秘伝のタレのようなスクリプトを組んでaliasを用意して使っていた。 aliasを覚えていればCLIで最速のGIt操作ができるのだが、スクリプトの保守性やら柔軟性をずっと気にしていたので自前でスクラッチしてみた。 CLIだけでは操作性の充実に限界があると思ったのでCUIも対応...
概要 Rubyの並行モデルやGVLの役割、Pumaサーバのスレッド・プロセス設計、IO/CPUバウンドの捉え方、計測手法によるボトルネック把握、Rails/Pumaデフォルト設定変更背景などを整理し、適切なチューニング方針を提示する。 Rubyの並行モデルとGlobal VM Lock(GVL) GVLの存在意義 Ruby(MRI/CRuby)にはGlobal VM Lock(GVL)があり、同一...
概要 Go言語は、軽量なgoroutineとランタイム機構により並行処理(concurrency)を強力にサポートし、Go 1.5以降はデフォルトでGOMAXPROCSが利用可能CPUコア数に設定されるため、適切に設定することでマルチコアを活かした並列実行(parallelism)も可能とする。本記事では、goroutineのスケジューリングやCPUバウンド処理でのマルチコア活用の仕組み、OSプロ...
概要 データベースの性能向上や安定運用には適切なメモリ設定が必要である。ディスクアクセスはメモリアクセスに比べ極めて遅く、可能な限りメモリから読み書きすることで応答性能を向上させたい一方、過度なメモリ割り当てはOOM(Out Of Memory、メモリ不足によるプロセス強制終了)リスクを高め、システム全体の停止につながる可能性がある。したがって、安定性を担保しつつ性能を確保するために、Postgr...
OPA の基本と課題背景 OPA(Open Policy Agent)は Rego 言語で記述されたポリシーを用いて、入力(input)や外部データ(data)に基づいて評価を行い、許可/拒否などの判定を行うエンジンである。 実装例については、AWS Prescriptive Guidance のマルチテナント API 認可制御ガイドが参考になる。OPA を活用した SaaS におけるマルチテナン...
概要 システム設計に「間違い」はあっても「正解」は存在しない。あるのは、そのときの状況に応じた“最適な妥協”である。 設計とは、さまざまな制約の中で意思決定を行い、将来に向けて形を与える行為である。 「設計の賞味期限」という観点を通じて、どのように設計の寿命を見積もり、制約と向き合うべきかを考察する。 設計の賞味期限とはなにか? 「いつまで持てばよい設計なのか?」 この問いを意識することで、設計は...
概要 スケーラビリティの計測方法について調べたのでまとめる。 スケーラビリティの基本理解 スケーラビリティとは、ワークロードの増加に対してシステムがどのように対応できるかに関係する品質特性である。 スケーラビリティは、単なるリソース追加ではなく、**効率性(Efficiency)**に直接的な影響を与える。 重要なのは、CPU・メモリ・ストレージ・ネットワークなどのリソースを増減させたとき、シス...
クラウドネイティブ・アーキテクチャ 可用性と費用対効果を極める次世代設計の原則を読んだ。 クラウドネイティブの基本的な考え方について知ることができる。 本書では、クラウドネイティブ成熟度モデル(Cloud Native Maturity Model: CNMM)を軸にクラウドネイティブアーキテクチャの解説を行っている。 クラウドネイティブ成熟度モデルとは、「クラウドネイティブ・サービス」、「アプリ...