タグ

設計に関するlizyのブックマーク (16)

  • 削除のビジネスロジックをドメイン層に閉じ込める簡単で強力な「DeletableIDパターンの紹介」

    この記事は 株式会社ログラス Productチーム Advent Calendar 2023 13日目の記事です。 はじめに 〇〇を削除できるかどうかのビジネス処理、皆さんはどう実装していますか? 同僚の話題になった記事でも削除の認可処理をどこに記述すべきか?は難しいと説明されています。今回はお題は認可っぽいもので書きますが広範に「削除ができるかどうか?」のビジネスロジックをドメイン層にどう閉じ込めるかの便利な実装パターンを紹介します。 削除処理のビジネスロジックの取り扱いは難しい 削除処理のビジネスロジックの実装はシンプルだけど更新処理や作成処理と比べて意外と難しいです。 それはなぜかというとドメインオブジェクト内の実装に削除処理を書くことができないからです。 例えば権限に管理者と一般ユーザーの二つの権限があるとします。

    削除のビジネスロジックをドメイン層に閉じ込める簡単で強力な「DeletableIDパターンの紹介」
    lizy
    lizy 2023/12/14
    Roleに応じて更新を拒否するRepoを返すとか考えたけど、認可のルールが外に漏れるからいまいちか
  • Webアプリケーション設計の第一歩は
ディレクトリの整理から / Encraft 1

    2023/3/24、Encraft #1 フロントエンド×設計にて発表した資料です。

    Webアプリケーション設計の第一歩は
ディレクトリの整理から / Encraft 1
    lizy
    lizy 2023/03/25
    機能で分ける派と構造で分ける派があるような気がする(これは後者)、直交?したものをうまく扱う構造があればいいんだろうけど
  • 分散システムにおける適度な結合とは - Viadik Khononov氏のDDD Europeでの講演より

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    分散システムにおける適度な結合とは - Viadik Khononov氏のDDD Europeでの講演より
  • アプリケーションにおける権限設計の課題 - kenfdev’s blog

    日々権限設計で頭を抱えてます。この苦悩が終わることは無いと思ってますが、新しい課題にぶつかっていくうちに最初のころの課題を忘れていきそうなので、現時点での自分の中でぐちゃぐちゃになっている情報をまとめようと思い、記事にしました。 所々で「メリット」「デメリット」に関連する情報がありますが、そのときそのときには色々と感じることがあっても、いざ記事にまとめるときに思い出せないものが多々ありました。フィードバックや自分の経験を思い出しながら随時更新する予定です。 TL;DR(長すぎて読みたくない) 想定する読者や前提知識 この記事での権限とは 権限の種類 ACL(Access Control List) RBAC(Role-Based Access Control) ABAC(Attribute-Based Access Control) どの権限モデルを採用するべきか 権限を適用する場面 機能

    アプリケーションにおける権限設計の課題 - kenfdev’s blog
  • コードをどまんなかに据えた設計アプローチ - Speaker Deck

    JJUG CCC 2018 Fall 2018-12-15T16:45+09:00 #ccc_e6 http://www.java-users.jp/ccc2018fall

    コードをどまんなかに据えた設計アプローチ - Speaker Deck
  • 再利用性を高めるAPIの設計と見極め - ワザノバ | wazanova

    https://www.youtube.com/watch?v=ZQ5_u8Lgvyk 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約1時間前 Casey MuratoriのGameTech Conference 2004での講演。 コードを再利用したいと皆言うけれども、いざ実践となるとなかなかうまくいかない。 ことの背景の解説とその解決策の方向性について、キャラクターアニメーションパッケージの開発を通じてCaseyが学んだことをシェアしてくれています。10年経っても変わらず、またゲーム以外の開発においても、当てはまることが多いかと。 インテグレーションのオプション あるコンポーネントをAPIを用意してゲームに組み込むインテグレーション作業と、その作業がどれだけゲームの完成に効果がある(ゲームプレイの完成とい

    lizy
    lizy 2014/08/07
    結局そのままでぴったり使えないので、ほんのちょっと違う似たようなものがプロジェクト毎に出来る、とw
  • 複合主キー「否定派」と「許容派」の論争 - 設計者の発言

    定期的に取り上げたくなるDB設計に関する話題である。WEBアプリが一般化して以来、議論されてきた事柄がある。テーブルの主キーを「単独主キー」のみとするか、複数項目を組み合わせた「複合主キー」を必要に応じて使うべきかという問題だ(*1)。複合主キーに対する「否定派」と「許容派」に分かれた議論は劇烈で、宗教論争のようにも見える。 主キーというものは、テーブルの存在意義といってもいいほどに重大な要素である。にもかかわらず、なぜそんな基的なレベルの議論が始まってしまったのか。2つほどの理由が考えられる。 まず、単独主キーとしてIDを機械的に置くやり方(ID方式)が「オブジェクト指向」と相性がよかったからだ。オブジェクトは固有の識別子(オブジェクトID)を持つので、これに相当するIDをテーブルの主キーとすることで、オブジェクトとDBの設計問題を統合できると考えた技術者が少なからずいた。そのアイデア

    複合主キー「否定派」と「許容派」の論争 - 設計者の発言
    lizy
    lizy 2013/12/02
    (多対多リンクテーブル以外の)具体例があると分かりやすい気がする
  • アジャイルにおけるソフトウェアアーキテクチャ図とNoUML

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    アジャイルにおけるソフトウェアアーキテクチャ図とNoUML
    lizy
    lizy 2013/05/08
    NoUMLというよりYetAnotherUML?
  • ちいさなオブジェクトでドメインモデルを組み立てる

    ドメイン駆動設計やるならスモールオブジェクトプログラミング。オブジェクト指向の設計・実装の基スタイル。

    ちいさなオブジェクトでドメインモデルを組み立てる
    lizy
    lizy 2012/10/27
    プリミティブ型を排除(ラップ)するってのは「プレファクタリング」にあった気がする
  • ありがちなデータベース設計を共有することができる『DB Patterns』 | 100SHIKI

    これまたマニアックな苦笑。 DB Patternsでは、ありがちなデータベース設計を共有することができる。 フォトアルバムだったらこういうテーブルがあって、こことこのキーが共有されるとかなんとかをグラフィカルに見ることができる。 まだ投稿も少ないし、いろいろ突っ込みどころもあるのだが、初心者のうちは確かに悩むところだし、便利なサービスではなかろうか。 ユーザー登録をするとすでにあるパターンをForkしたり、新しく作ったりもできるようだ。興味がある方はどうですかね。

    ありがちなデータベース設計を共有することができる『DB Patterns』 | 100SHIKI
  • なぜ状態遷移表を使うと、品質の良い開発ができるのか

    なぜ状態遷移表を使うと、品質の良い開発ができるのか:状態遷移表による設計手法(2)(1/2 ページ) はじめに 組み込みソフトウェアが抱える一番の課題は「設計品質の向上」です。そして、この設計品質の向上にはモデルベース設計が有効であり、数あるモデルの中でも“状態遷移系モデル”が最も多く使われています。このあたりの詳細については、前回お伝えした通りです。 連載の主役である「状態遷移表」は、“イベント“と“状態”を全て網羅的に表現できるため、設計の「モレ」「ヌケ」の発見・防止に大きな効果があり、設計品質の向上が期待できます。 第2回では「なぜ状態遷移表を使うと、品質の良い開発ができるのか」をテーマに、その詳細を説明していきます。 なお、連載では以下の6つのテーマを順番にお届けしていきます。 (前回):状態遷移表設計手法の概要 なぜ状態遷移表を使うと、品質の良い開発ができるのか 状態遷移表を

    なぜ状態遷移表を使うと、品質の良い開発ができるのか
  • サロゲートキーは強制されるべきものではない - 設計者の発言

    複合主キーに代えてサロゲートキー(単独主キーの代替キー)を導入すべきかどうか。それはDB設計上の重要な判断事項である。なにしろレコードのアイデンティティである主キーの設定にかかわる問題だ。さまざまなメリットやデメリットを考慮してそれは判断される。その結果、サロゲートキーを導入することもあるし、しないこともある。 ところが、サロゲートキーを強制する(あるいはサロゲートキーを導入しないと開発しにくい)開発基盤がいくつか存在する。具体的には、全テーブルの識別子が"ID"等のフィールド名を持つ単独主キーであることが求められたりする。私に言わせれば、そういう開発基盤は「大盛を強制する牛丼屋」である。メニューにあるはずの「並」を頼むと、あれこれイヤガラセをされる牛丼屋。 この問題に関連して、「サロゲートキーを使わなかったから、ひどい目にあった」という開発者の声を聞いたことがあるかもしれない。心配はいら

    サロゲートキーは強制されるべきものではない - 設計者の発言
    lizy
    lizy 2012/02/03
    テーブルサイズが膨らむ以外のデメリットが特に思いつかない。複合主キーというのは、データの性質が偶然そうだっただけの話で、主キーにするべきとは別問題のような
  • 日本でパターンが広まらない理由の一つは「ワンパターン」などのネガティブな和製英語のせい? - 達人プログラマーを目指して

    ソフトウェアアーキテクトの作業の一つに、システム全体の設計思想や開発方針を記述するアーキテクチャ説明書を作成をする仕事があります。そして、そのような設計書を記述する際に私はアーキテクチャパターンやデザインパターンの用語を利用します。例えば、 システム全体をレイヤーアーキテクチャパターンに従い「プレゼンテーション層」「アプリケーション層」「ドメイン層」「インフラ層」に分割する。 MVCアーキテクチャパターンにより表示ロジックとビジネスロジックを切り離し独立して画面を変更できるようにする。 オブザーバーパターンを使ってイベントを監視する機能を容易に追加できるようにする。 といった具合にです。実際に、パターンの用語を適切に使うことで、どうしてそういう設計をするのかという設計判断を簡潔に記述できますし、関連するパターンに言及することでトレードオフや代替手段についても言及でき、情報量の厚みを増すこと

    日本でパターンが広まらない理由の一つは「ワンパターン」などのネガティブな和製英語のせい? - 達人プログラマーを目指して
    lizy
    lizy 2011/08/23
    「考える人を対象にしたものである」 確かに"型にはまった"みたいにそのまんま使うイメージが少しあるかも。実際には考える際のベースにするだけなのに
  • 信じられないDB文化「固定長DB」でもあうんです。大規模コンシューマ向けサービスのRDB設計 - レベルエンター山本大のブログ

    ずいぶん時間があいてしまったけど、大規模コンシューマ向けサービスRDB設計の続き。 僕はこのプロジェクトを自分のRDBの知識を使って革新してやろうと思って臨んだ。 しかし結果として逆に、コンシューマ向けサービスに最適化されたRDBの使い方について教わることになった。 ※ あと、KVSでいいじゃんって言ってる人もいるけど、それはKVS導入の苦労を知らない人だと思う。KVSの苦労は後で書く。 僕らが最近手がけているのは、とても大規模なコンシューマ向けサービスだ。 100万人の契約ユーザが使い、1テーブルに1億レコード以上のデータを貯め、24時間止めることが許されず、 要求から応答までのターンアラウンドタイムが1秒以内という厳しいSLAのサービスである。 中でも僕はDBやフレームワークの設計とアーキテクトっぽいことを担当している。 僕がこの現場に来て、驚愕した文化が2つある それは「Join禁止

    信じられないDB文化「固定長DB」でもあうんです。大規模コンシューマ向けサービスのRDB設計 - レベルエンター山本大のブログ
    lizy
    lizy 2011/08/09
    Oracleを高級物置として使う方法|さらなるスケールアウトはクライアント(ブラウザ)に処理させる、ですね
  • 「DB構造の前にUIを決める」というアンチパターン - 設計者の発言

    画面定義書があるのにまともなER図がない。業務システムの開発プロジェクトがそういう状況を一瞬でも経由したのであれば、大きなリスクを抱えていると考えたほうがいい。小さな案件でない限り、デスマーチに陥る公算が高い。 喩えるなら、高層ビルの「上モノ」の図面が詳細に出来上がっているわりに「土台」の図面がないようなものだ。その点を問われ、 「ああ、ボーリング調査も土台設計も後でしっかりやるから大丈夫です。土台の図面なんてほら、専門的すぎてお客さんが見てもピンと来ないじゃないですか。お客さんが知りたいのは土台とかではなくて上モノのデザインなんですよ。なんといっても顧客の納得感が大事です」 なんて言う建築士はいない。「顧客の納得感」が重要でないと言うつもりはないが、それだけを基準にして高層ビルを設計できるのなら苦労はない。専門的な仕事の難しさは、顧客には見えないし想像もできない膨大な部分の整合性をはかる

    「DB構造の前にUIを決める」というアンチパターン - 設計者の発言
    lizy
    lizy 2011/07/27
    まあ編集対象が何か分からないのに、それを編集する画面があるのはおかしいでしょうね
  • 複合主キーを避けるべき理由 - 虎塚

    データベース設計の話をしていて、「連番の主キーは業務上意味のないデータだから、テーブルに持たせるのはムダだ。複合主キーにするべき」という意見を聞く機会がありました。 脊髄反射で「ないわー」と思ったものの、理由を上手く説明できなかったので、改めて考えてみました。 その結果、次のような結論に至りました。 単一の連番カラムによる主キーと、複合カラムによる主キーとで迷ったら 実装をシンプルにし、業務変更の影響範囲を小さくするために、複合主キーを避ける というわけで、調べたことや考えたことをメモしておきます。# 間違っている部分があれば、教えていただけると嬉しいです。 (2011/07/25 追記)複合主キーとサロゲートキーについては、要件やシステムに依存して多様な判断がありうると思います。にもかかわらず、「避けるべき」というタイトルにしたのは極端でした。申し訳ありません。ご指摘下さった皆さん、あり

    複合主キーを避けるべき理由 - 虎塚
    lizy
    lizy 2011/07/14
    業務レベルの制約(UNIQUEである)と、PKという物理的な異なるレベルを混ぜるからおかしい。PKは業務に関係なくレコードのidentityを保証するもので、制約はUNIQUEでもつければいい
  • 1