記事一覧
技術記事・日々の学びをまとめています。
なっとく!関数型プログラミング
『なっとく!関数型プログラミング』の書評。Scalaを題材に関数型プログラミングを丁寧に解説する良書。途中はScalaの言語仕様に寄る部分もあるが、言語に依存しない関数型のエッセンスを、やさしく学べる一冊。
最新記事
アーキテクチャアドバイスプロセス(AAP)とは何か?
アーキテクチャアドバイスプロセス(AAP:Architecture Advice Process)とは何かについて、調べたことをまとめた記事です。意思決定を中央集権的にせず、関係者からアドバイスを受けたうえで決定者が意思決定を行うこのプロセスの考え方や、ADRとの関係、実践的な進め方を解説します。
specリポジトリを作った
bmf Frameworkやクネビンに基づくストーリーポイント見積もりなど、コミュニティ向けの仕様をまとめたspecリポジトリを作った話を紹介します。
データモデリングでドメインを駆動する──分散/疎結合な基幹系システムに向けて
『データモデリングでドメインを駆動する』の書評。帳簿という概念を軸に、基幹系システムを分散・疎結合化するデータモデリング手法を体系的に解説する一冊。活動系と経営管理系の二分類や「残」という新しい概念を提唱し、DDDやマイクロサービス化の実践的な指針を与える。
Goでプロセス・goroutine・メモリを覗いてみた
Goを使って、プロセスのアドレス空間・goroutineの動作・スタックとヒープの挙動を軽く覗いてみた記録です。子プロセスとの仮想アドレス空間の違いやメモリ領域の独立性を、os/execなどを用いた実装例を通して確認します。
Prologへの入門
『Prologへの入門』の書評。論理型・宣言型言語であるPrologの基礎に触れる一冊。Regoを学ぶ背景知識を得る目的で読んでも、深い思想までは追いきれずとも、宣言型プログラミングのエッセンスを汲み取れる。
カモメになったペンギン|組織変革の寓話を読んだ感想
『カモメになったペンギン』の書評。変化が求められる環境で、どう課題を解決しチームを組成するかを学べる組織変革の寓話。コッターの「変革を成功させる八段階のプロセス」を物語で追体験でき、組織に変化をもたらす立場のリーダーやマネージャーが頭に入れておきたい一冊。
技術的な意思決定において制約やトレードオフを明示することの重要性
技術選定や設計判断を行う際に、制約やトレードオフを明示することの重要性を解説した記事です。意思決定は限られた条件下で複数の選択肢から選ぶ行為であるという前提に立ち、判断の背景を明文化することが将来の再評価や組織の成長につながる理由と、その記録の残し方を紹介します。
キャッシュ戦略の基本的なパターンについて
Webアプリケーションや分散システムのパフォーマンス向上に欠かせない、キャッシュの基本的な活用パターンを整理した記事。Cache Aside・Read Through・Write Through・Write Back・Write Aroundという5つの戦略を、読み書きのフローや一貫性のトレードオフとともに解説する。
ACID vs BASE:データベースの一貫性モデルを徹底解説
ACID と BASE という2つのデータベース一貫性モデルの違いを比較し、CAP 定理との関係やどちらを選ぶべき場面かをわかりやすく解説します。
CAP定理とは?分散データベースのトレードオフを解説
分散システムにおける重要な理論であるCAP定理とPACELC定理を、具体例を交えてわかりやすく解説した記事。一貫性・可用性・分断耐性という特性のうち同時に2つまでしか実現できないというトレードオフを、分散データベースの文脈で整理する。
Webアプリケーションの処理モデルについて
Webアプリケーションの代表的な処理モデルであるイベントループ・マルチスレッド・マルチプロセスの3つを対比して解説する記事です。それぞれのモデルの特徴やメリット・デメリットを整理し、IOバウンド・CPUバウンドといったワークロードに応じてどう選定すべきかの基準を紹介します。
Rego入門
OPA(Open Policy Agent)のポリシー記述言語であるRegoを、入門から実践までひと通り学べるようにまとめた記事です。Regoとは何かという基礎から、宣言型の基本構文とデータ構造、ルールの種類と書き方、制御構造や組み込み関数、内包表記、テストやデバッグの方法までを網羅的に解説します。
選択と集中を促す振り返りフレームワーク「bmf」
振り返りといえばKPT(Keep / Problem / Try)が定番ですが、自分なりのオリジナリティのあるフレームワークを考えてみたくなり、そのアイデアを記した記事です。Build・Miss・Focusの頭文字をとった「bmf」フレームワークで、選択と集中を促す振り返りの方法を紹介します。
システムアーキテクチャ構築の実践手法
『システムアーキテクチャ構築の実践手法』の書評。実務でアーキテクチャ設計に取り組む技術者のための実践ガイド。前著が「なぜ」に焦点を当てたのに対し、本書は「どのように」を扱い、要求定義から論理・物理設計、ビューによる文書化まで、現場で役立つ具体的な手法を紹介する。
Markdownで履歴書・職務経歴書を管理するテンプレートを作成した
Markdown形式で履歴書・職務経歴書を管理できるテンプレートを紹介する記事です。Gitによるバージョン管理や、CIでの自動PDF生成、textlintによる文章校正、環境変数を使った個人情報の安全な扱いなど、レジュメをコードのように扱うための仕組みをまとめています。
x/termで作るTUIアプリケーション開発
Goのx/termパッケージで、ターミナルの状態管理やANSIエスケープシーケンスを扱い、対話的なTUIアプリケーションを開発する方法を解説します。
アーキテクチャ・アーキテクト・アーキテクティングについて
アーキテクチャ・アーキテクト・アーキテクティングの定義を解説。IEEE規格に基づくシステム構造、コンポーネント関係、設計判断、ステークホルダニーズ統合の本質を理解する実践的知見を紹介します。
システムアーキテクチャ構築の原理~ITアーキテクトが持つべき3つの思考
『システムアーキテクチャ構築の原理~ITアーキテクトが持つべき3つの思考』の書評。アーキテクチャ設計に関わるなら必読といえる一冊。技術的な解決だけでなく、アーキテクチャの定義や捉え方、ステークホルダーとの向き合い方、設計テクニックまで、設計のプロセス全体を体系立てて言語化してくれる。
Linux Load Averageとは?読み方とパフォーマンス問題の診断
topやuptimeコマンドで表示される、Linuxの「Load Average」という指標とは何かを実践的に解説する記事です。プロセスの実行待ち状態を表しシステムの混雑度合いを示すこの指標について、3つの値の読み方や高負荷時の診断方法、CPU使用率との違いを紹介します。