ピックアップ記事
52 件の記事
システム思考で読むプラットフォームエンジニアリング
プラットフォームエンジニアリングとシステム思考には親和性があるのではないか。その直感を言葉に落とすために、ストック・フロー・遅延・原型・レバレッジポイントという語彙で、プラットフォームの振る舞いと陥りやすい失敗の構造を読み直してみる。
システム思考の基本 ―世界をストックとフィードバックで捉える
ドネラ・メドウズ『世界はシステムで動く』を土台に、ストック・フロー・フィードバックループ・レバレッジポイントといったシステム思考の中心概念を一般向けに整理する。
偶有的複雑性と意思決定の記録不在
偶有的複雑性が生まれる要因と、ADRやDesign Docがないと「本質」と「偶有」を切り分けられなくなる話
分散トランザクションの代表的3パターン — 2PC・Saga・Outbox
マイクロサービスにおける分散トランザクション設計の代表的パターン、2PC・Saga・Outboxを比較し、それぞれの仕組み・長所短所・使い分けを整理する。
アーキテクチャ設計における共通化の罠
アーキテクチャ設計における共通化の罠 — 技術的関心事とドメインロジックの違い
プラットフォームの成立条件
社内でプラットフォームを作るべきかどうかをどう判断するか。コア/支援/汎用サブドメインの区別、外部サービスとの比較、レバレッジ、体制などの観点から整理し、ドメイン分析でどこまで判定できるかを考える。
プロダクト開発とプラットフォーム開発は何が違うのか
「なぜ小さくリリースして検証しないのか」——プラットフォーム開発の意思決定に向き合うとき、この問いと頻繁に対峙する。判断基準・設計思想・投資観点の3つの観点から両者の違いを整理する。
bmf-tech.comの gobel → gohan 移行記—完全静的サイト化の流れ
自作ヘッドレスCMS(gobel)+ MySQL + Vue.js構成から、gohanによる完全静的サイトへ移行しCloudflare Pagesでホスティングするまでの全工程。700件超の記事、英語スラッグ生成、画像移行、リダイレクト、Go製プリフライトチェッカーまで。
AI時代のエンジニアリングについて考える
AI時代のエンジニアリングを考察。Golden Datasetによる検証、LLM-as-Judge評価、プロンプトインジェクション対策といったプロンプトガバナンスを紹介します。
GitHub Agentic Workflowを使ったLLMプロンプト管理・評価基盤
GitHub Agentic Workflowを使い、LLMプロンプトをコードとして管理する基盤を解説。Copilotによる自動化、golden dataset、評価の仕組みを紹介します。
キャリアポートフォリオ作成ガイド
「キャリアポートフォリオ作成ガイド」のまとめと読書メモ。重要なポイントと実践的な知見を整理します。
良いアーキテクチャ戦略・悪いアーキテクチャ戦略
良いアーキテクチャ戦略・悪いアーキテクチャ戦略について、設計原則とトレードオフ、実践的な適用方法を詳しく解説します。
なぜ・いつアーキテクチャ戦略を書くべきか
なぜ・いつアーキテクチャ戦略を書くべきかについて、設計原則とトレードオフ、実践的な適用方法を詳しく解説します。
アーキテクチャ戦略・戦術・設計の書き分け
アーキテクチャ戦略・戦術・設計の書き分けについて、設計原則とトレードオフ、実践的な適用方法を詳しく解説します。
要件と制約の違い
ソフトウェア設計における要件と制約の違いを、ISO 29148の定義をもとに整理し、アーキテクチャのトレードオフ判断に役立てます。
ADRを書くときに抑えておくべきポイント
ADRを書く際のポイントを解説。アトミックな意思決定、トレードオフの記録、チームでの議論、テクニカルライティングの原則に焦点を当てます。
チームトポロジーとは?エンジニアリング組織の構成方法
チームトポロジーの4チームタイプ(ストリームアラインド・プラットフォーム・イネイブリング・コンプリケイテッドサブシステム)と3つのインタラクションモード、コンウェイの法則・認知負荷を軸にした組織設計を解説します。
ソフトウェア開発チームがMVVを定めるべき理由
ソフトウェア開発チームがMVV(ミッション・ビジョン・バリュー)を定めるべき理由を、目的の明確化やチームの方向性の観点から解説します。
プラットフォームエンジニアリングとは?内部開発者プラットフォームの構築
プラットフォームエンジニアリングとは何か、内部開発者プラットフォーム(IDP)の構築方法と、DevOps・SRE との関係を解説します。
TUI開発で役立つターミナル仕様の理解
TUI開発の基盤となるターミナル仕様、Line Discipline・termios・ANSIエスケープシーケンスの動作原理とGo実装
アーキテクチャアドバイスプロセス(AAP)とは何か?
アーキテクチャアドバイスプロセス(AAP)とは何か?について、設計原則とトレードオフ、実践的な適用方法を詳しく解説します。
技術的な意思決定において制約やトレードオフを明示することの重要性
技術的な意思決定で制約やトレードオフを明示することの重要性を解説。将来の再評価や組織の成長につながる記録の残し方を紹介します。
キャッシュ戦略の基本的なパターンについて
「キャッシュ戦略の基本的なパターンについて」のまとめと読書メモ。重要なポイントと実践的な知見を整理します。
Webアプリケーションの処理モデルについて
Webアプリケーション処理モデル対比、イベントループ・マルチスレッド・マルチプロセスのメリット・デメリットと選定基準
ACID vs BASE:データベースの一貫性モデルを徹底解説
ACID と BASE という2つのデータベース一貫性モデルの違いを比較し、CAP 定理との関係やどちらを選ぶべき場面かをわかりやすく解説します。
CAP定理とは?分散データベースのトレードオフを解説
CAP 定理と PACELC 定理をわかりやすく解説。分散データベースにおける一貫性・可用性・分断耐性のトレードオフを具体例で学べます。
選択と集中を促す振り返りフレームワーク「bmf」
選択と集中を促す振り返りフレームワーク「bmf」。個人的な振り返りとハイライトをまとめます。
凝集度と結合度とは|良い設計を支える2つの指標
ソフトウェア設計の指標である凝集度と結合度を解説。凝集度の7段階(偶発的〜機能的)と結合度の6段階(内容〜データ)を、具体例とともに整理します。
OPAを利用したアクセス制御のパターン
OPAを利用したアクセス制御のパターンについて、設計原則とトレードオフ、実践的な適用方法を詳しく解説します。
RubyとRailsのIO・CPU特性について
理解するRuby・RailsのI/O特性。GVL制約、Pumaスレッド・プロセス設計、見かけのI/O待ちの実態、計測による最適化指針。
OPAにおけるページネーションへの影響と解決策に関する検討
OPAにおけるページネーションへの影響と解決策に関する検討の原因と解決方法について解説します。
設計の賞味期限を考える
設計の賞味期限を考えるについて、設計原則とトレードオフ、実践的な適用方法を詳しく解説します。
スケーラビリティを計測する
スループット・レイテンシ・効率といった指標やアムダールの法則などの数理モデル、実践的なベンチマークで、システムのスケーラビリティを計測する方法を解説します。
アーキテクチャドキュメントを書くときに気をつけること
アーキテクチャドキュメントを書くときに気をつけることについて、設計原則とトレードオフ、実践的な適用方法を詳しく解説します。
自分的システムの仕様書の構成
システム仕様書の9階層構成、概要・アーキテクチャ・データモデル・API・技術詳細をmermaidコード化して運用する方法
境界付けられたコンテキストとは
ドメイン駆動設計における境界付けられたコンテキストを解説。言葉の意味を明確にし、責務を整理してシステム設計を改善する考え方を紹介します。
イベントストーミングとは
ドメイン駆動設計の文脈で生まれたイベントストーミングを解説。付箋を使ったワークショップで業務ドメインを高速に可視化し、開発者と業務担当者の共通理解を作る手法を紹介する。
OPAを使用したマイクロサービスのアクセス制御システムの実装
設計するOPAによるアクセス制御。マイクロサービス権限管理、Rego言語、ポリシーエンジン、リソースレベルの細粒度制御実装パターン
クネビンフレームワークを活用したストーリーポイントの考え方
クネビンフレームワークを活用し、ストーリーポイントの見積もり基準をどう考えるかについてのアイデアを紹介します。
アーキテクチャ戦略について考える
アーキテクチャ戦略について考えるについて、設計原則とトレードオフ、実践的な適用方法を詳しく解説します。
負荷試験を始めるためのスターティングガイド
「負荷試験を始めるためのスターティングガイド」のまとめと読書メモ。重要なポイントと実践的な知見を整理します。
集合について
理解する集合論の基礎。要素・部分集合・和集合・積集合、データ構造・RDB理論、論理表現への応用と問題解決力養成。
自作HTTPルーターから新しいServeMuxへ
自作HTTPルーターgoblinからGo 1.22で強化されたnet/http ServeMuxへ移行。新しいルーティングパターンや他ルーターとの性能比較、ServeMuxで十分なケースを解説します。
MySQLのロック解説:デッドロックの防ぎ方とパフォーマンス改善
MySQL のロック(行ロック・テーブルロック・GAP ロック)を解説。デッドロックの防ぎ方とトランザクション設計のベストプラクティスを紹介します。
データベースインデックスとは?仕組みと必要なタイミング
データベースインデックスとは何か、B-Tree・ハッシュインデックスの仕組み・効果的に使う場面・作り過ぎのデメリットを解説します。
ソフトウェア開発のプロジェクトにおける不確実性への向き合い方
ソフトウェア開発における不確実性への向き合い方を、アジャイルな計画づくりの観点から解説。既知の未知と未知の未知を区別し、リスクを抑える方法を紹介します。
Goで始めるコードのパフォーマンス改善
Goのパフォーマンス改善の実践。pprofによるプロファイリング、ベンチマーク、エスケープ解析、メモリアロケーション削減を、自作HTTPルーターの最適化事例とともに解説します。
MySQLのトランザクション分離レベル:ダーティリード・ファントムリードを防ぐ
MySQL のトランザクション分離レベルを解説。ダーティリード・ノンリピータブルリード・ファントムリードと、それぞれを防ぐ設定方法を学べます。
トランザクション概観
データベーストランザクションの基礎を解説。ACID特性、並行性制御、分離レベルといったデータ整合性の仕組みを紹介します。
システム設計関連の資料を読み漁った
システム設計関連の資料を読み漁ったについて、設計原則とトレードオフ、実践的な適用方法を詳しく解説します。
bmf-techを支える技術
Docker、Golang、Vue.js、Nginx、Prometheus、Grafanaなど、このブログのインフラと監視を支える技術を紹介します。
net/httpでつくるHTTPルーター自作入門
Golangのnet/httpでHTTPルーター自作を解説。ルートマップ、URLパス解析、メソッド別ルーティング、パスパラメータの仕組みをステップバイステップで実装ガイドします。