タグ

設計に関するpaulowniaのブックマーク (39)

  • 「コンパイル時のユニットテスト」導入するとユニットテストを 書かなくてよくなるのか?

    Scott Wlaschin氏は著書である"Domain Modeling Made Functional" (和訳なし)に関する講演で、関数型言語を用いてドメインモデルを定義すると、テストを書く必要がなく、たくさんのフラグをチェックする必要もないと説明しています。 彼はこの方法を「自己文書化」と「コンパイル時のユニットテスト」と呼んでいます。 この話では、彼の言う「コンパイル時のユニットテスト」が具体的にどのようなものなのか、そしてこの方法を使うことでテストがどれほど効率的になるのかを扱います。ただし、ドメイン駆動開発の定義やC#やF#の詳細な文法については説明しません。 https://zenn.dev/jtechjapan_pub/articles/d4e1dacb6f00a2 こちらのブログで練習で話したセッションなども見ることが可能です。

    「コンパイル時のユニットテスト」導入するとユニットテストを 書かなくてよくなるのか?
  • ビジネスロジックを「型」で表現するOOPのための関数型DDD / Functional And Type-Safe DDD for OOP

    Object-Oriented Conference 2024で発表した資料です。 https://fortee.jp/oocon-2024/proposal/b31c9818-3cb8-4350-adfe-cbc839cdf829 ビジネスの専門知識(ドメイン)を中心に据えたドメイン駆動設計に代数的データ型などの関数型のパラダイムを加えたよりタイプセーフな関数型DDDを紹介します。 セッションではドメインモデリングによって発見したモデルやビジネスロジックをソフトウェアに反映する際により型を重視した設計を加えます。 型で表現する範囲が広がることでビジネスロジックをより明確にコードで表現できるようになります。 さらには型で表現されているためコンパイルフェーズで気付けるミスが増え、ソフトウェアの品質向上にもつながります。 関数型の考えをいれるといってもただ単にHaskellなどに代表される関

    ビジネスロジックを「型」で表現するOOPのための関数型DDD / Functional And Type-Safe DDD for OOP
  • マルチテナントの実現におけるDB設計とRLS / Utilizing RSL in multi-tenancy

    # 実装の参考資料 - https://soudai.hatenablog.com/entry/2022/11/11/110825 # 類似の登壇内容の動画 - https://www.youtube.com/watch?v=PXy6I-AeI-I

    マルチテナントの実現におけるDB設計とRLS / Utilizing RSL in multi-tenancy
  • ドメイン駆動設計は何を解決する手法なのか - stmn tech blog

    こんにちは、リファクタリング大好きなミノ駆動です。 株式会社スタメンでは、企業エンゲージメント構築サービスTUNAG(ツナグ)の技術的負債解消と今後の持続的成長のため、ドメイン駆動設計(DDD)の導入を検討しています。 ところでDDDはとかく理解しづらく、何のためのDDDなんだという議論になりがちです。この記事では、DDDの真の主人公コアドメインを中心に、DDDが何を解決するものなのか、全体像を改めて整理します。 この記事で扱う内容 DDDが解決したい課題と解決方法の全体像。 この記事では扱わない内容 設計パターンの実例などの実装詳細。 大事な前提 〜利益を得るためのサービス開発 会社でのサービス開発は、趣味や道楽でやるものでしょうか。違いますね。ビジネスとして、企業活動としてサービス開発しています。当たり前の話ですが、利益を得られるように開発しなければなりません。 ドメイン駆動設計は、継

    ドメイン駆動設計は何を解決する手法なのか - stmn tech blog
  • Sign-in form best practices  |  Articles  |  web.dev

    Sign-in form best practices Stay organized with collections Save and categorize content based on your preferences. Use cross-platform browser features to build sign-in forms that are secure, accessible and easy to use. If users ever need to log in to your site, then good sign-in form design is critical. This is especially true for people on poor connections, on mobile, in a hurry, or under stress.

  • 表示順という属性を別テーブルに分ける - そーだいなるらくがき帳

    最近、この説明を複数回したので記事にする。 要約 普段は 今北産業 派なのだが、3行考えるのが面倒なため、今後は大人の表現を使う。 「今北産業」をスタートアップ語にすると「マジ価値サマリー」になるらしい ちなみにここだけの話ですが、大人語にすると「要約」になります pic.twitter.com/Q8SflvBX7c— ところてん (@tokoroten) 2022年1月24日 画面に表示したい順(以下、表示順)は振る舞いの属性なので分ける 似たような振る舞いに関わる属性は別テーブルにわけると良い 普通に正規化しましょうって話。 表示順をカラムを追加して表現する よくあるテーブルは画面情報と合わせて表示順カラムがあるパターン。 こういうテーブルを作って SELECT * FROM items ORDER BY display_order_number; で表示順に取り出すパターン。 表示順

    表示順という属性を別テーブルに分ける - そーだいなるらくがき帳
  • イミュータブルデータモデル - kawasima

    CRUDのうちUPDATEがもっともシステムを複雑化する。更新には複雑なルールが伴うからだ。業務的に複雑なルールが存在するのは仕方ないこともあるが、システム、設計で複雑さを更に増さないようにしたい。UPDATEに着目し、その発生をできるだけ削ることによって複雑さをおさえるためには、まずデータモデルをそのように設計しておかなけれなならない。このイミュータブルデータモデルは、それを手助けする手法で、手順に沿って実施すればある程度のスキルのバラつきも吸収できるように組み立てられている。

    イミュータブルデータモデル - kawasima
  • 設計を歪める認知バイアス - Qiita

    こんにちは、リファクタリングが大好きなミノ駆動です。 この記事は READYFORアドベントカレンダー2021 、5日目の記事です。 これはなに? ソフトウェア開発において、設計をないがしろにすると、低凝集密結合な構造に陥り、変更容易性が低下してしまいます。 設計スキルを高め、あるべき構造を設計する……これで解決できるに越したことはありません。 しかし、認知バイアスと呼ばれる心理効果により判断を誤り、良くない設計をしてしまうことが往々にしてあります。 記事は、設計を歪めてしまう認知バイアスを理解し、設計判断の精度向上を促すことを目的とします。 この記事のゴール 人間の判断を歪めてしまう心理効果「認知バイアス」の存在を知ること。 ソフトウェア設計も、認知バイアスの悪影響を受けてしまうこと。 認知バイアスに振り回されない設計アプローチを身につけること。 認知バイアスとは 先入観や思い込み、偏

    設計を歪める認知バイアス - Qiita
  • ドメインイベントの観点から再考するソフトウェア設計

    ドメインイベントは過去に起きたドメイン上の出来事を意味します。「過去に起きた」なので後から変更できません。つまり不変(イミュータブル)なモデルです。 昨今、このドメインイベントはCQRS/Event Sourcingやマイクロサービスなどの書籍で取り上げられ、実際に実装上でドメインイベントが利用される事例も増えています。このように有益性は認識されつつありますが「うちはEvent Sourcingじゃないのでイベントは関係ありません」と視野が狭くなっている方もいます。 たとえ実装で使えなくても、ドメイン分析に基盤的な視点を与えてくれるのがドメインイベントです。 ともあれ、この資料は「そもそもドメインイベントはソフトウェア設計にどのような影響を与えるのか」を解説します。

    ドメインイベントの観点から再考するソフトウェア設計
  • 本当にあったモーダルの怖い話 / Terrifying Nonfiction of Modal

    ABEMA weber 勉強会 2021/06/30, 07/07 --- @uenitty 当にあったモーダルの怖い話 ABEMA weber 勉強会 2021/06/30, 07/07 背景と目的 2 • モーダルに驚くほど苦しめられたので、状況を説明して改善方法を提案する • OOUIの特徴のうち「操作性 / 使いやすさ」についての説明はよく見かける ので、今回は「開発効率 / 作りやすさ」の方に重点を置いて説明する • 「モーダルの方が実装が楽なのかと思っていた」というデザイナーの声が あったので、職種関係なく理解してもらえるような説明を試みる 内容 3 • 前提の認識合わせ • 当にあった話 • 改善に向けて 既存のUI設計 4 前提の認識合わせ 「手続き」を完了させたい 5 • ビジネス要求 • 重要な「手続き」は開始したら迷いなく完了してほしい • 手続きの例 • アカウ

    本当にあったモーダルの怖い話 / Terrifying Nonfiction of Modal
  • shiodaifuku.io

    Webエンジニアのブログです。

    shiodaifuku.io
  • ドメイン駆動設計を導入するために転職して最初の3ヶ月でやったこと[DDD] - little hands' lab

    この記事は ドメイン駆動設計 Advent Calendarの記事です。 今年の9月にログラスというスタートアップに転職しました。 ログラスは元々DDDについて講師として勉強会をさせてもらっていた会社であり、DDD自体は社として取り組んでおりある程度進んでいました。ですが、講師ではなく中の人になったからこそできる色々な取り組みがあり、3ヶ月である程度形になりました。 記事では、DDDを広めるための取り組みについて、極力再現性がある形を意識しつつ、ご紹介したいと思います。 入社時の状況 なにをしたか テストの話が多い理由 実施内容詳細 TDD Boot Campの@t_wadaさんの基調講演観賞会を行った Serviceクラスを1パブリックメソッドにした レイヤーごとのオブジェクトの依存関係を整理 レイヤーごとのテスト方針 クラス名の重要性 参照実装を作成した 「責務」と「テスト」の重要性

    ドメイン駆動設計を導入するために転職して最初の3ヶ月でやったこと[DDD] - little hands' lab
  • 認証と認可と課金とコアドメインを分離したシステムは勝てるという話 - まっちゅーのチラ裏

    自分が複数のシステムの開発を経験して得た確信として、「認証と認可と課金とコアドメインの分離がめちゃくちゃ重要である」というものがあるので、コレを整理してアウトプットしていく 分離するモチベーションとは Microservice文脈でいうと、デプロイ独立性だったり、リソースの最適配分だったり、障害の局所化だったり、開発組織とのマッピングだったりがメリットとして語られることが多い。 だが、ここで取り上げたいのは戦術的DDD的観点でのコンテキスト分離の有用性である。 ※ちなみにコンテキスト分離のみであればモジュラモノリスだけで実現可能。 戦術的DDD的観点での関心事の分離によるメリットとは コンテキストが分離されていることによって、境界をまたぐ際に「このI/Fは正しいのか?」を都度考えることを強制することができる。 境界がなければ意図しない密結合を生みやすくなってしまう。 もちろん、境界を超える

    認証と認可と課金とコアドメインを分離したシステムは勝てるという話 - まっちゅーのチラ裏
  • ご主人様、小難しいDDDやクリーンアーキテクチャはお忘れになって、”削除しやすい設計”から始められてはいかが? - Qiita

    ご主人様、小難しいDDDやクリーンアーキテクチャはお忘れになって、”削除しやすい設計”から始められてはいかが?LaravelDDD設計アーキテクチャCleanArchitecture ある日夢の中で設計に詳しい悪役令嬢が現れてこんなことを言い放ったので、考察してみましたという設定のポエムです。 問題提起 ドメイン駆動設計、オニオンアーキテクチャ、クリーンアーキテクチャといった考え方はもちろん重要なものの、僕は難しく考えずに「削除しやすいように機能を作る」のが第一歩として重要ではないかと考えています。 記事では「削除しやすい設計」について持論を展開してみます。 ※議論のスコープはWebサービスに限定し、例示としてPHPのフレームワークであるLaravelを用います 削除しやすいことがなぜ重要か 一度開発した機能は、それで終わりではなく、改修、改善を繰り返し、そして場合によっては仕様が廃止さ

    ご主人様、小難しいDDDやクリーンアーキテクチャはお忘れになって、”削除しやすい設計”から始められてはいかが? - Qiita
  • メインフレーム、無停止サーバ、クラウドにおける信頼性 - ブログなんだよもん

    「メインフレームの異常処理」という記事が話題になってましたがとても面白かったです。 qiita.com せっかくなので自分が知ってる範囲で各システムの信頼性における考え方を書いてみました。特にシステムが死んでも仕掛かり中のプロセスが正常完了する事を「無停止システム」としてフォーカスしています。 詳しいわけじゃないからあまり詳しくは話せないので、指摘とか頂けると嬉しいです メインフレーム HPE NonStopサーバ Stratus FT Server オープン系: クラスタ オープン系: 負荷分散(シェアードナッシング) クラウド/仮想環境: Live Migration ソフトウェア: Jakarata EE/EJB ソフトウェア: Oracle RAC ソフトウェア: Erlang/OTP ソフトウェア: Cloudで良くありそうなMSAや非同期キューをベースとした無停止デザイン まと

    メインフレーム、無停止サーバ、クラウドにおける信頼性 - ブログなんだよもん
  • system-design-primer#system-design-interview-questions-with-solutions

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    system-design-primer#system-design-interview-questions-with-solutions
  • マイクロサービスと設計原則 / Microservices and Design Principles - Speaker Deck

    いかにして GraphQL を組織に導入するか (新規開発編) / how we introduce GraphQL on scratch development

    マイクロサービスと設計原則 / Microservices and Design Principles - Speaker Deck
  • 名前、電話番号、メールアドレス等の最適なmaxlengthはいくつか調べてみた - Qiita

    はじめに 文字列を格納するカラムを作成するには、最大長を決めなければなりません。 例えば、 「姓名の最大長を何文字に設定したら良いか?」 という問題は、よくエンジニアを悩ませていると思います。 この記事が回答の目安となるよう、よくあるカラム(下記)を何文字に設定するのが適切か調べてみました。 なお、バイト数は UTF-8 で計算しています。 【姓名】 姓30文字 + 名30文字 (60バイト) 世界最長の名前を調べた1ところ 771文字 だったので、 あらゆる名前をカバーすることは諦めましょう。 世界中の姓名を保有するSNSである Facebook の登録フォームに名前を打ち込む続けたところ、 漢字 姓4文字 + 名12文字 アルファベット 姓30文字 + 名30文字 までという結果が出た2ので、文字数・バイト数の多いアルファベットを採用とし、合計60文字までとします。 【法人名】137文

    名前、電話番号、メールアドレス等の最適なmaxlengthはいくつか調べてみた - Qiita
  • 写真家の全俺が泣いた。AmazonドライブでRAWデータを完全消去した話。|横田 裕市

    こんにちは、横田裕市(@yokoichi777)です。 バックアップとして機能させていたはずのAmazonプライムフォト、もといAmazonドライブによって大切なRAWデータを完全消去してしまった話です。 自分の操作が誤っていたのだろうと言えばそれまでかもしれませんが 二度と起きてほしくない事案ですし、他のユーザーへの注意喚起として書きます。 Amazonドライブのデスクトップ版を利用すると、 指定したフォルダ内のデータをWeb上のAmazonドライブ内へ同期してくれます。(Amazonドライブについての詳細説明は省きます) 私はここで写真のデータを同期し、RAWデータのバックアップをとっていました。 今回、RAWデータの整理をしてから同期・アップロードしなおそうと 一度同期するフォルダから2018年分のフォルダの同期を解除したんですね。 ↑こんな感じにチェックボックスをはずしたわけです。

    写真家の全俺が泣いた。AmazonドライブでRAWデータを完全消去した話。|横田 裕市
  • 「悪い方が良い」原則と僕の体験談|Rui Ueyama

    ソフトウェアの世界には「悪い方が良い」原則という有名なエッセイがある。キレイにレイヤ分けされた一貫性のある良いデザインよりも、一見手抜きの悪いデザインのほうが実は良いときもあるという話だ。この逆説的なデザイン原則を僕は身をもって体験したことがある。それについてちょっと書いてみようと思う。 僕はlldというリンカの現行バージョンのオリジナル作者だ。リンカというのはコンパイラと組み合わせて使うもので、実行ファイルやDLLを作るのに使用される。lldはプロダクトとしてはかなり成功していて、標準のシステムリンカとして採用しているOSがいくつかあったり、GoogleやFacebookなど皆が知っているような大規模サイトの中で広く使われていたりする。 現在のlldは2世代目で、第1世代のlldは僕がプロジェクトに参加する前から存在していたのだけど、数年前にそれを捨てて一から書き直すということになった。

    「悪い方が良い」原則と僕の体験談|Rui Ueyama