タグ

ブックマーク / bliki-ja.github.io (9)

  • ドメインロジックとSQL - Martin Fowler's Bliki (ja)

    以下の文章は、Martin Fowler による Domain Logic and SQLの日語訳である。 データベース指向ソフトウェア開発者とメモリ上(in-memory)アプリケーションソフトウェア開発者との間のギャップは、ここ数十年、徐々に広がってきている。このギャップが原因で、データベースの機能(SQLやストアドプロシージャ)をどのように扱えばよいのかという議論が数多く巻き起こっている。ここでは、ビジネスロジックを SQL に置くべきか、それともメモリ上のコードに置くべきかといった問題について、主にパフォーマンスと更新性の観点から考察を行う。考察には簡単な例を使うが、SQL クエリはしっかりとしたもの(rich SQL queries)を用いるので悪しからず。 エンタープライズアプリケーション(訳注:以下、EA)構築に関する(私の近著『P of EAA』など)を読むと、ロジック

    peketamin
    peketamin 2022/06/06
  • DDDにおける集約 - Martin Fowler's Bliki (ja)

    https://martinfowler.com/bliki/DDD_Aggregate.html 集約(アグリゲート)はドメイン駆動設計のパターンです。 DDDにおける集約はひとまとまりとして扱えるようなドメインオブジェクトの小集合です。 例えば、「注文」と「品目」は別々のオブジェクトになりますが、注文を(品目と一緒に)集約として扱うと便利になります。 集約はひとつのコンポーネントであるオブジェクトを集約ルートとして持ちます。 集約の外部からの参照は集約ルートにのみ行くべきです。 このようにして、集約ルートは集約全体としての整合性を保証します。 集約はデータストレージ転送の基要素となります - 集約の単位でロードや、保存を要求します。 トランザクションは集約の境界は超えてはいけません。 DDDにおける集約はたまにコレクションクラス(リスト、マップなど)と混同されてしまいます。 DDDに

    peketamin
    peketamin 2021/05/08
    “多くの場合、集約には簡単なフィールドと複数のコレクションが含まれます。”
  • 技術的負債 - Martin Fowler's Bliki (ja)

    ソフトウェアシステムでは、クラフト(出来の悪いもの)が生まれやすい。システムの修正や拡張をしようとしても、内部品質の欠如がそれを難しくしている。「技術的負債」とは、Ward Cunninghamが作ったメタファーである。ファイナンスの負債のように考えることで、こうしたクラフトの扱いのことを考えやすくなる。たとえば、新機能の追加にかかる余分な労力は、負債の返済にかかる利子である。 あらゆるソフトウェアシステムには、タスクを実行するために必要とされる「質的な」複雑さが一定量含まれている…… ……だが、ほとんどのシステムには「クラフト」が存在しており、理解を難しくしている。 クラフトがあると、変更するのに余分な労力がかかる。 技術的負債のメタファーは、こうしたクラフトを「負債」として扱う。変更に必要な余分な労力は、負債の利子の返済に相当する。 私のコードのモジュール構造が複雑だったとしよう。こ

    peketamin
    peketamin 2020/06/26
    “醜悪なプログラミングのことを「赤字プログラミング」と呼んでいる。”
  • ソースコードブランチ管理のパターン - Martin Fowler's Bliki (ja)

    https://martinfowler.com/articles/branching-patterns.html 最新のソース管理システムには、ソースコードのブランチを簡単に作成できる強力なツールが用意されています。しかし、最終的にはこれらのブランチをマージしなければならず、多くのチームは混み合ったブランチに対処するのに膨大な時間を費やしています。複数の開発者の作業をインテグレーションし、番リリースまでの道筋を整理することに集中して、チームが効果的にブランチを利用できるようにするためのパターンがいくつかあります。全体的なテーマとしては、ブランチを頻繁にインテグレーションし、最小限の労力で番環境に展開できる健全なメインラインを作ることに注力すべきだということです。 ベースパターン ソースブランチング ✣ メインライン ✣ 健全なブランチ ✣ インテグレーションパターン メインラインイン

    peketamin
    peketamin 2020/06/18
  • コードがドキュメントだ - Martin Fowler's Bliki (ja)

    http://www.martinfowler.com/bliki/CodeAsDocumentation.html アジャイル手法はプログラミングをソフトウェア開発の中心的役割に押し上げた、とよく言われる——ソフトウェア エンジニアリング コミュニティがやってるようなことよりもずっと優秀だよなあ。 プログラミングが中心的役割となったのは、コードをソフトウェア システムにおける「(最)重要なドキュメント」と位置付けたことが理由なんだと思う。 おっと、よく誤解されるので先に反論しておこう。 先ほどの「コードは重要なドキュメントだ」という原則だけど、 「コードが”唯一の”ドキュメントだ」とは言ってない。 「XPではコードがドキュメントだ」とよく耳にするけど、 XPのリーダー達がそんなことを言ってるのは聞いたことがないなあ。 コードを補完するには、他にもドキュメントが必要なんだ。 なぜコードが重

    peketamin
    peketamin 2020/06/10
  • 抽象化によるブランチ - Martin Fowler's Bliki (ja)

    http://martinfowler.com/bliki/BranchByAbstraction.html 「抽象化によるブランチ」というテクニック1は、ソフトウェアシステムへの大規模な変更を徐々に進めていくときに使われるものだ。 これを使えば、変更がまだ完了していなくても、定期的にシステムをリリースできるようになる。 こんな状況を考えてみよう。システムのかなりの部分が依存しているモジュール(あるいはライブラリやフレームワーク)があって、それをリプレイスしようとしている。 ※Flawed Supplier…欠陥のあるモジュール 抽象化レイヤーを作って、クライアントのコードとモジュールとのやりとりをそこに閉じ込める。 クライアントのコードの中でモジュールを呼び出しているところをすべて書き換えて、この抽象化レイヤーを経由させる。 各クライアントについて、この抽象化レイヤーを使うよう徐々に書き

    peketamin
    peketamin 2019/10/26
  • リポジトリ - Martin Fowler's Bliki (ja)

    [source and translators] 原文: https://www.martinfowler.com/eaaCatalog/repository.html by Edward Hieatt and Rob Mee ドメインオブジェクトにアクセスするためのコレクション ライクなインターフェースを使って、ドメイン—データ マッピングレイヤ間の仲介を行う。 解説の全文は『PofEAA』 322 ページを参照。 複雑なドメインモデルのあるシステムは、ドメイン オブジェクトをデータベースアクセスコードから分離するDataMapper(165)などのレイヤの恩恵を受けやすい。 そのようなシステムでは、クエリ構文を構築するマッピングレイヤ上にもうひとつ抽象的なレイヤを設けると良い。 ドメインのクラスやクエリが膨大になれば、このことは重要になってくる。 特にこの場合、レイヤを追加することでク

    peketamin
    peketamin 2017/11/30
  • テストカバレッジ - Martin Fowler's Bliki (ja)

    http://martinfowler.com/bliki/TestCoverage.html 「テストカバレッジ(コードカバレッジ)の目標値はどれくらいがいいのか?」という質問とか、コードカバレッジの高さの自慢とかを、ときどき耳にする。でも、大事なポイントを外している。コードカバレッジは、コードのテストされていない部分を発見するための有用なツールである。ただテスト自体がどれだけ良いかという指標としては、テストカバレッジはほとんど役に立たない。 二つ目の例を先に検討してみよう。「カバレッジが87%以上じゃないと番には入れない」というようなことをやっているところも多いみたいだ。「TDDやっているならカバレッジが100%があたりまえ」という言葉を聞くこともある。賢人が言った: カバレッジが高いことを期待する。マネージャがそう期待することもある。でも微妙な違いがある。 – Brian Mari

    peketamin
    peketamin 2015/11/16
  • Martin Fowler's Bliki (ja)

    ここは、Martin Fowler's Blikiの日語翻訳サイトです。Martin Fowler氏人の許可を得て公開しています。データはGitHubで管理していますので、どなたでも翻訳に参加することが可能です。 ※現在、移行中につき、Markdown形式になっていないものが多々あります……。PRいただけると大変ありがたいです。 API design / agile / agile adoption / agile history / application architecture / application integration / bad things / build scripting / certification / clean code / collaboration / computer history / conferences / continuous deliv

  • 1