アーカイブ 2023
75 件の記事
BFF(Backend For Frontend)とは?メリットと実装ガイド
BFF(Backend For Frontend)とは何か、なぜ必要か、フロントエンドとバックエンドの間に BFF レイヤーを置くことで API 契約を簡素化する実装方法を解説します。
通知基盤構築についてのメモ書き
通知基盤(Notification Infrastructure)の設計についてまとめた記事です。メールやプッシュなど複数チャネルへの配信に対応するための構成要素として、メッセージング、テンプレート管理、ユーザーのオプトイン制御、外部サービスとの連携、そしてスケーラビリティといった設計要素を整理します。
Go言語100Tips 開発者にありがちな間違いへの対処法
『Go言語100Tips 開発者にありがちな間違いへの対処法』の書評。Goで陥りがちなミスを100個のTipsとして網羅的にカバーする一冊。ある程度Goに書き慣れた人が、コードの品質をもう一段上げたいときに手元に置いておきたい。
Goのhttp.RoundTripperについて
http.RoundTripperインターフェースを実装してHTTPクライアント側のミドルウェア的処理を実装し、ログ・認証・キャッシュ・リトライの例を示す。
Goでfan-in/fan-outを実装する|並行処理パターン
Goのchannelとgoroutineを活用したfan-in/fan-outパターンを実装し、複数入力を集約・分散する並行処理設計を解説。
Template MethodパターンとStarategyパターンについて
GoFの振る舞いに関するデザインパターンである、Template MethodパターンとStrategyパターンの違いについてまとめた記事です。大枠の処理を上位クラスで決めて具体的な流れを下位クラスに任せる継承ベースの手法と、戦略を差し替える委譲ベースの手法を比較し、それぞれの実装と使い分けを解説します。
Go言語による分散サービス
『Go言語による分散サービス』の書評。Goを用いた分散サービスの実践を、手を動かしながら学べる一冊。マイクロサービス文脈でのモダンな技術や構成の背景、実装の進め方まで実践的に理解を深められる。
multipassでk3sを動かす
docker-composeで構成していた個人開発のアプリケーションを、Kubernetes(k3s)へ移行しようと試みた際に、仮想マシン管理ツールのmultipassを使ってみたメモです。結局移行はしなかったものの、multipass上でk3sを動かして個人開発に活用する方法を紹介します。
スライディングウィンドウの実装|尺取り法をGoで書く
スライディングウィンドウアルゴリズムの実装を解説。固定・動的ウィンドウサイズ、配列の部分和を検索するユースケース(レートリミッター等)、ウィンドウをスライドさせる処理の流れをGoコードで紹介します。
モノレポとは?メリット・デメリットと適切な使い方
モノレポについてまとめた記事です。複数プロジェクトのコードを単一のリポジトリで管理するモノレポとは何かを、ポリレポ(マルチレポ)との比較を通して説明し、そのメリット・デメリットや適切な使いどころ、導入時に考慮すべきポイントを整理します。
実用Go言語
『実用Go言語』の書評。ある程度Goを書いてきた人でも、知らなかった・忘れていた実務的な知見に気づける一冊。エラー型の命名など細やかな作法から、実務でGoを書くうえで押さえておきたい定石までを幅広く扱う。
2分探索木の探索パターンを図解で理解する
2分探索木の探索パターンを解説。DFS(先行順・中間順・後行順)、BFS、一筆書き法による走査で木構造の走査順序をマスターする実践ガイドです。
認定スクラムマスター(LSM)になった
Scrum Inc. Japanの研修と試験を経て、認定スクラムマスター(Registered Scrum Master)になった際の所感とメモをまとめた記事。研修で学んだことや受験の様子、認定の継続に関する情報などを記す。
尺取り法とは|計算量を落とすアルゴリズムを図解
尺取り法(Two Pointer Technique)とは何か。左右のインデックスを使った探索の仕組み、O(N²)からO(N log N)への計算量改善の仕組みをGoコードの例で解説します。
アルゴリズムとデータ構造 - ハッシュマップ
アルゴリズムとデータ構造を学ぶシリーズの記事。ハッシュマップの仕組みを取り上げ、平均O(1)のアクセスや、衝突解決のオープンアドレス法とチェイン法の違いを、Goでの基本的な実装例とともに解説する。
隣接リストと隣接行列の違い|グラフ表現の使い分け
隣接リスト(O(V+E)の空間・疎グラフに有利)と隣接行列(O(V²)の空間・O(1)の辺判定)を比較。有向・無向グラフのGo実装例とともにグラフの表現方法を解説します。
スタックとキューの実装
Goでスタックとキューをそれぞれ実装してみた記事です。スライスを使ったパターンと連結リストを使ったパターンの2通りで、LIFOのスタックとFIFOのキューを実装し、push・popやenqueue・dequeueといった操作を時間計算量O(1)で構築する方法を、パターン別に比較しながら紹介します。
連結リストのランナーテクニック
連結リストの走査に役立つ「ランナーテクニック」についてまとめた記事です。『世界で闘うプログラミング力を鍛える本(コーディング面接189問とその解法)』で紹介されていて初めて知った、2つのポインタを異なる速度で進めるこの手法の考え方と使いどころを解説します。
再帰処理の苦手なところ
再帰処理を書く際につまずきやすい、return文の扱いやコールスタックの評価について解説する記事です。再帰が得意ではないという筆者自身の視点から、処理がどのように積み重なって評価されるのかを、克服のための考え方とともに整理します。
アルゴリズムとデータ構造の基本の復習
コーディングクイズを解く日課の再開にあたり、アルゴリズムとデータ構造の基本を総復習した記事。配列や文字列、ハッシュテーブル、連結リスト、木、スタック、キュー、ソート、計算量といった基礎を、コーディング問題を意識して整理する。