プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

設計

TDDとファクトリ系のデザインパターン

ファクトリ関連のデザインパターンに関するポエムです。 まともな技術情報は含まれていません。 ファクトリ系のデザインパターン ファクトリ系のデザインパターンには複数種類があります。 GOFのデザインパターン本で紹介されているのは下記2つです。 Facto…

Singletonパターンは使わなくてもいい?

Singletonパターンに関するポエムです。 長文です。 Singletonパターン GOFデザインパターンの中でも最もわかりやすのがSingletonパターンです。 初心者が一番理解しやすいパターンだと思います。 私自身、初めてデザインパターンの本を読んだとき、唯一理解…

例外処理の設計

例外処理の構造について調べる機会があり、以下の3点について考えてみました。 例外が発生した場合の処理の仕方 エラーを検知したときの例外の発生させ方 例外のcatchの仕方 階層をまたぐ例外 1. 例外が発生した場合の処理の仕方 呼び出したメソッドが例外…

pipの呼び出し部分の設計を調べてみた

main関数からどのように機能を呼び出すべきなのか考えています。 参考になりそうな、有名で、かつそんなに難しくなさそうなツールはないかな?と考えていたら思いついたのがpipです。 おそらくPythonで最も有名で、そこそこ高機能だけど、そんなに複雑でなさ…

cleancodersのJava Case Studyの(私的)UML図を作った

cleancoders.comというサイトのプログラミング動画を見て勉強しています。 英語で、日本語字幕はなく、高価ですがシニアクラスのプログラマーから直接、教えを受ける機会がない自分には貴重な教材です。 Java Case StudyというシリーズではWebサービスをスク…

SOAとMicroserviceアーキテクチャ

SOAとMicroserviceの違いについて調べると様々な答えが出てくる。 「ESBとSOAPとWSDLを使うのがSOAだ」 「サービスの粒度が大きいがSOAで小さいのがMicroserviceだ」 「MicroserviceはSOAだ」 これは話し手の視点が異なることが原因だ。人によって「SOA」の…

DIとDIPとIoC

Dependency Injectionパターン:DI Dependency Inversion Principle:DIP Inversion of Control:IoC この3つの用語はなんとなく名前が被っている上に同じ文脈で登場することが多いため、初学者は混乱しやすい。 なにが違うのか、Dependency Injectionパター…

Dependency Injectionパターン

設計においてクラス間の独立性を高めることは重要である。 クラス間の独立性を高める方式の1つにDependency Injectionパターンがある。今回はDependency Injectionパターンについて説明する。 概要 日本語には「依存性注入」と訳される。この言葉からDIがど…

モジュール性の高い設計

以前、「コードの構造化」というタイトルでソフトウェアのモジュール化について述べた。 このときは初学者にもついていけるよう、「コードの分割」、「コードの結合」、「コードのグループ化」、「システムに組み上げる」という4つステップに分けてボトムア…

コードの構造化 - システムに組み上げる

アーキテクチャ で結局なにを検討するの? アーキテクチャパターン これまで3回に渡ってコードの分割、分割したコードの結合、そしてグループ化について見てきた。 グループ化してリリースされたコードは他のパッケージやライブラリ、外部システムと組み合…

コードの構造化 - コードのグループ化

凝集度 原則 分類 これまでコードの分割の仕方と、分割したコードの組み合わせ方を見てきた。今回はグループ化について見てみよう。 クラス同士を組み合わせたらそのまま単一のパッケージとしてリリースしてよいのだろうか? 1つのパッケージでリリースした…

コードの構造化 - コードの結合

依存関係 1. 非循環式依存関係の原則 2. 安定依存の原則 3. 安定度・抽象度等価の原則 結合度 指標 分類 前回はコードをコンポーネントに分割することについて学んだ。 分割されたコンポーネントは単体では意味をなさない。コードをコンポーネントに分割した…

コードの構造化 - コードの分割

分割の単位 関数 メソッド クラス モジュール パッケージ ライブラリ マジックメソッド 分割の指針 コードを短時間で書き終えることが目的なら細かく分割せずに1つのコンポーネントにまとめて書いた方が楽だ。 すると後で困る。満足な試験できなくてバグに…

OWASP Top 10

システム開発の現場には自分が書いているコードの脆弱性を気にしない人が結構いる。 「パブリックに公開されないシステムだから」ということだ。気持ちはわからないでもない。確かに非公開サービスが攻撃される可能性は低い。 しかしこれからのセキュリティ…

SOLID原則

1. Single Responsibility Principle:単一責任の原則 2. Open/Closed Principle:オープン/クロースドの原則 3. Liskov Substitution Principle:リスコフの置換原則 4. Interface Segregation Principle:インターフェース分離の原則 5. Dependency Invers…

Singletonとスタティックの違い

1つしかないものを表現するときSingletonでもスタティックなフィールドとして表現するのも同じ気がする。なにが違うのか調べてみた。 継承の可否 スタティックなものは継承できない。 Singletonは継承できる。 継承できる方が将来の拡張性が高い。 保証/強…

読んでイライラしたコード

人が書いたエクセルのVBAを読んでいたらイライラした。 自分の稚拙さを棚に上げて文句を言うのも大人気ないし、VBAという言語仕様にも原因があるようだ。全てが本人のせいとは言い切れない。当然、当人は一言も言っていない。 すでにイライラは収まりも気持…