ホーム

継承より委譲について

アプリケーション

はじめに オブジェクト指向プログラミング(OOP)は「現実のモノをプログラムで表現する」ための考え方である。しかし、現実の分類や言葉の定義をそのままプログラムへ持ち込むと、思わぬ破綻を招く。 本記事では、「四角形と正方形」という具体例を通じて、以下の3つの重要な概念を解説する。 ダックタイピング - 名前ではなく振る舞いで型を判断する リスコフの置換原則(LSP) - 振る舞いの互換性を保証する...

ダック・タイピング リスコフの置換原則 委譲 継承 Golang

テストダブルとは何か

アプリケーション

はじめに 単体テストを書く際、テスト対象のコードが外部のデータベース、APIサーバー、ファイルシステムなどに依存していると、以下のような問題が発生する: テストの実行が遅い テスト環境の準備が複雑 テスト結果が不安定(ネットワークエラーなど) 特定の状態やエラーケースの再現が困難 これらの問題を解決するために使われるのがテストダブル(Test Double)である。 テストダブルとは、テストに...

Golang テストダブル テスト

なぜインターフェースの方が実装より変更頻度が低いのか

アプリケーション

クリーンコードクックブック ―コードの設計と品質を改善するためのレシピ集を読んでいて、インターフェースの実装よりも変更頻度が低いという主張が気になったので、言語化してみた。 インターフェースは「契約(contract)」であり「抽象」 インターフェース(interface)は、 「この機能はこう使える」という"契約"を表すものである。 一方で実装(implementatio...

Golang インターフェース

Singletonパターンはなぜアンチパターンなのか

アプリケーション

はじめに シングルトンパターンは、デザインパターンの中でも最もよく知られ、広く使われているパターンの一つである。しかし、クリーンコードや保守性の観点から見ると、多くの問題を抱えている。 本記事では、シングルトンパターンの主要な問題点について、具体的なGoのコード例を交えながら解説する。 シングルトンパターンとは シングルトンパターンは、クラスのインスタンスが常に1つだけ存在することを保証するデザイ...

シングルトンパターン Golang

TUI開発で役立つターミナル仕様の理解

アプリケーション

はじめに TUI(Terminal User Interface)アプリケーションを開発する際、vimやhtopのような既存のTUIライブラリを使えば簡単に実装できる。しかし、その裏でターミナルがどのように動作しているのか、なぜRaw Modeが必要なのか、ANSIエスケープシーケンスとは何なのかを理解していないと、高レベルのAPIが何をしているのかわからず、問題が起きたときに対処しづらい。 本記...

TUI termios ターミナル UNIX Golang

システム設計面接の傾向と対策

システムアーキテクチャ

システム設計面接の傾向と対策を読んだ。 面接対策というテーマではあるが、システム設計のパターンを学ぶにもちょうど良い。 作問する側にとっても参考になると思う。 システム設計の勘所を抑えた質問のパターンについても参考になる部分があるので、システム設計面接ではない技術面接の面接官にとっても役立ちそう。 この手の本は少ないが、アーキテクチャの設計事例やパターンについて実例に近い形で学ぶことができる本はも...

システム設計 アーキテクチャ

ストリートコーダー

アプリケーション

ストリートコーダーを読んだ。 ストリート(現場)でのtipsをジョークを交えて語っている本。 アルゴリズムやテスト、リファクタリングからセキュリティや性能最適化まで幅広く扱い、現場で遭遇する課題にどう向き合うべきかが具体的に示されている。 初心者には実践のイメージを、経験者には自身の技術や姿勢を振り返る機会を与えてくれる。 ...

コーディング

セッションベースとトークンベースの認証方式について

システムアーキテクチャ

セッションベースとトークンベースの認証方式について 概要 Webアプリケーション開発において、認証方式の選択は システムのスケーラビリティ、セキュリティ、保守性に大きな影響を与える設計判断である。この記事では、セッションベース認証とトークンベース認証について、技術的な詳細から実装上の考慮事項まで包括的に比較・解説する。 認証の基礎知識 認証とは? 認証(Authentication)とは、システム...

認証 認可

なっとく!関数型プログラミング

アプリケーション

なっとく!関数型プログラミングを読んだ。 Scalaで関数型プログラミングの丁寧に解説した良書であると感じた。 途中からScalaの言語仕様の話が多いように感じる部分もあったが、言語に関係なく関数型のエッセンスについて易しく学ぶことができる。 ...

関数型

アーキテクチャアドバイスプロセス(AAP)とは何か?

システムアーキテクチャ

LTで簡単にまとめた資料もあるので、要約を知りたい場合は以下を参照してほしい。 cf. AAPについて調べてみた アーキテクチャアドバイスプロセスとは何か 現代のソフトウェア開発では、チームの自律性と開発速度が重要視される一方で、アーキテクチャの一貫性も求められる。この相反する要求に応えるのが、アーキテクチャアドバイスプロセス(Architecture Advice Process, AAP)であ...

アーキテクチャアドバイスプロセス アーキテクチャレビューボード アーキテクチャ