並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 87件

新着順 人気順

ValueObjectの検索結果1 - 40 件 / 87件

  • 現場で役立つシステム設計の原則メモ - Qiita

    This article is a Private article. Only a writer and users who know the URL can access it. Please change open range to public in publish setting if you want to share this article with other users. ※この記事は著者の増田さんの了解の上で限定公開させて頂いております。 https://twitter.com/masuda220/status/1215122054795522049?s=20 オブジェクト指向、設計がなぜ必要か = ソフトウェア全体の整理整頓をするため 第1章 小さくまとめてわかりやすくする 変更が大変なプログラムの特徴 メソッドが長い クラスが大きい 引数が多い 関心事を詰め込みすぎ

      現場で役立つシステム設計の原則メモ - Qiita
    • Value Objectについて整理しよう - Software Transactional Memo

      Value Objectとは何であるか? マーチン・ファウラーのPatterns of Enterprise Application Architecture(PofEAA)やエヴァンス・エリックのDomain Driven Design: Tackling Complexity in the Heart of Software(DDD)が原典であるが、PofEAAではこう切り出している。 When programming, I often find it's useful to represent things as a compound. プログラミング時は物をcompound(合成物)として表現すると便利なことがしばしばある。 例えば2次元空間上での座標のように複数のメンバ(属性)を持つ物は便利である、と。しかしそれらを比較する方法は一意ではない、そこで Objects that a

        Value Objectについて整理しよう - Software Transactional Memo
      • 『良いコード/悪いコードで学ぶ設計入門 』を出版します|ミノ駆動

        こんにちは、リファクタリングが大好きなミノ駆動です。 これは、私が執筆した『良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方』について紹介する記事です。 2022年4月30日発売です(ほぼ同日に電子書籍版も出ます)。 AmazonなどECサイトで、すでに多くの予約が入っており、ヨドバシ.comでは一時期予約終了になったほどです。おかげさまで初版部数が2倍になりました。 ■どんな本?皆さんはプログラミングでバグを埋め込みたいですか?ロジック修正が上手くいかず、ヒィヒィ言いながら長時間残業したいですか?イヤに決まってますよね。ところが現実には、 何度もバグを埋め込んでしまう ロジックを読み解くのに時間がかかる やっとロジック修正しても、全然違う箇所がバグ化してしまう ……ほとんど誰もが体験しているのではないでしょうか。 でも、こうした状況をなんとかしたいと思って

          『良いコード/悪いコードで学ぶ設計入門 』を出版します|ミノ駆動
        • 実はDDDってしっくりこないんです - タオルケット体操

          DDD失敗パターン集 DDDという方法論それ自体に対する僕の立場はあんま好きじゃない寄りのフラット(といいつつほぼ忘れかけている)なんですが、過去何度もDDDでプロジェクトが爆死するのをみたり、爆破してしまったり……というのを見てきたので供養したいとおもいます。 メンバーの大半がDDDを知らない 「えっ!? ドメイン駆動を知らずにDDDを?」 「出来らぁっ!」 DDDを知らずにDDDをする、という前提がすでに禅問答じみてる気がしますが、たぶん一番よく見かける失敗パターンなんじゃあないでしょうか。 どういうことかというと、オニオンとかレイヤードとかクリーンなアーキテクチャのモジュールの命名ルールと構造を採用(採用できているとは言っていない)しただけの状態です。 私見ですが、アーキテクチャというのはメンバー全員がそれを理解できていない限り*1即破綻します。 理解できない人はどこに処理を書いてい

            実はDDDってしっくりこないんです - タオルケット体操
          • 設計要件をギッチギチに詰めたValueObjectで低凝集クラスを爆殺する - Qiita

            /// <summary>契約金額</summary> public class ContractAmount { public int AmountIncludingTax; public decimal SalesTaxRate; } 当然データの入れ物(以後データクラスと呼称)だけでなく、税込み金額を計算するロジックが必要です。ここであまり設計を考えないと、この手の演算ロジックはデータクラスとは別のクラスに実装されることが多いです。以下のようにControllerに実装されることが多いのではないでしょうか。 /// <summary>契約コントローラー</summary> public class ContractController { private ContractAmount _contractAmount; /// <summary>税込金額を計算する。</summary>

              設計要件をギッチギチに詰めたValueObjectで低凝集クラスを爆殺する - Qiita
            • 実践! Typescript で DDD - マイクロサービス設計のすすめ - Leverages Tech Blog

              対象読者 マイクロサービス化を検討しており、実際に作る場合の構成を参考にしたい。 ドメイン駆動設計について、基本的な用語の知識がある。 TypeScript を多少触ったことがある。理解がある。 はじめに こんにちは。エンジニアの吉村です。 現在、弊社が運営する teratail というサービスに携わっており、CakePHP で動作しているモノリシックな既存サービスをマイクロサービスに移行するというプロジェクトを進行中です。 この記事では、実務を通して得た知見として、マイクロサービス化によりどんな恩恵があるのか、具体的にどのような構成で実装をしているのかについてご紹介します。 TL;DR マイクロサービスのバックエンドサービスの実装に焦点を絞って、ドメイン駆動設計 + オニオンアーキテクチャをベースに設計をしました。 本記事では、具体的に「ユーザ新規登録処理」の実装をする場合を例にとり、実

                実践! Typescript で DDD - マイクロサービス設計のすすめ - Leverages Tech Blog
              • ドメイン駆動設計は何を解決する手法なのか - stmn tech blog

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

                  ドメイン駆動設計は何を解決する手法なのか - stmn tech blog
                • CQRS実践入門 [ドメイン駆動設計] - little hands' lab

                  この記事では、CQRSの入門として、軽量CQRS、別名クエリモデルについて解説します。 DDDの参照系処理で発生する課題 解決策 CQRSのメリット、デメリット 実装時の注意事項 部分的導入について なぜQueryServiceの定義がUseCase層なのか 整合性をどうやって担保するのか よくある誤解 データソースを分ける必要があるのか イベントソーシングとの関係 過去資料との繋がり もっと詳しく知りたい方は 現場での導入で困ったら DDDの参照系処理で発生する課題 DDDで定義されている実装パターンを使っていると、基本的には永続化層との入出力はRepositoryを使うことになります。 更新系の処理ではEntityやValueObjectでドメインの知識を表現し、Repositoryを使って集約単位で永続化するという構成をとると、非常にメンテナンス性の良いものになります。 参考過去記事

                    CQRS実践入門 [ドメイン駆動設計] - little hands' lab
                  • Flutterでそこそこ規模の大きいプロダクションアプリを作ったのでスケールする設計についてまとめる - タオルケット体操

                    あわせて読みたい FlutterでBLoCだChangeNotifierと振り回されて消耗するまえに - タオルケット体操 筆者のFlutterに対する印象は半年前にこのエントリーを書いたときから驚くほどに何も変わっていないので、逆にFlutterは非常に明快でわかりやすいライブラリなのかもしれないですね。 hachibeechan.hateblo.jp 筆者の主張の事前まとめ Reactの学習は実質Flutterの予習 クライアントアプリを設計するにあたってはActiveRecordパターンの再発明をしてはいけない 結局MVX RXSteamとはなんだったのか DDDの勉強をすると多くの示唆を得られる Remi wareを信じろ ちなみにここ以下で述べるActiveRecordパターンはPoEEAとRoRのものの混合があるかもしれませんが、利用すべきじゃないという点において同一なので特に

                      Flutterでそこそこ規模の大きいプロダクションアプリを作ったのでスケールする設計についてまとめる - タオルケット体操
                    • オブジェクト指向プログラミングは終わった カプセル化が悪い(感想戦) - Qiita

                      が(良くも悪くも)注目頂き、その観測で思ったことのメモです。1年後の自分用です! もっかい言いたいこと再考のポエムです。 概要 関数型には意図的に触れたくなかった 継承や再利用性への懐疑の共通認識 抽象化戦略開発戦略で補う話 タイトルは釣り 抽象化という言葉のふわっと感 カプセル化が問題 関数型言語には意図的に触れたくなかった ポリモーフィズムのくだりで、関数型のご指摘が多かったのですが、あえて直接は触れたくありませんでした。これは、オブジェクト指向 vs 関数型にしたくなかったからです。(結果、Rust/Goに被弾させました) なぜかと言えば、オブジェクト指向を(結果として)衰退させたのは、あくまでも 開発手法の変化 や設計論の精錬が主軸だと認識しています。 不確実性に適応する上で、継承やカプセル化による状態隠匿という戦略が、良い筋に動かず、オブジェクト指向なりに変化を遂げた結果だと考え

                        オブジェクト指向プログラミングは終わった カプセル化が悪い(感想戦) - Qiita
                      • ドメイン駆動設計の比類なきパワーでRailsレガシーコードなど大爆殺したるわあああ!!! - Qiita

                        この記事は クラウドワークスアドベントカレンダー2019 12日目の記事です。 概要 こんにちは、怒り駆動リファクタリングを生業としている @MinoDriven です。 弊社リファクタリング専門チーム「バグハンター」で現在実施中のリファクタリング設計について紹介致します。 ドメイン駆動設計 を用い、Railsレガシーコードに対しViewとControllerを ActiveRecord非依存 に変更する設計です。 状況 弊社ブログの過去エントリにあるように、弊社サービスcrowdworks.jpはサービスインから8年経過し、 30万行 を超えるモノリシックRailsアプリになっています。 開発生産性が低下してきています 。 生産性低下の課題を解決しようにも、大規模な上に複雑かつ密結合な構造になっており、 マイクロサービスへの移行も、リプレイスも困難な制約 があります。 そこで半年前にリフ

                          ドメイン駆動設計の比類なきパワーでRailsレガシーコードなど大爆殺したるわあああ!!! - Qiita
                        • Laravel大規模開発入門!MVC分離のFatModel問題に対する責任分離と依存管理、その設計と考え方について|ハイクラス転職・求人情報サイト AMBI(アンビ)

                          Laravel大規模開発入門!MVC分離のFatModel問題に対する責任分離と依存管理、その設計と考え方について ナイル株式会社メディアテクノロジー事業本部の工藤さんにMVC分離のFatModel問題に対する責任分離と依存管理、その設計と考え方について解説いただきました。 こんにちは、ナイル株式会社メディアテクノロジー事業本部で開発マネージャをしています工藤@ta99toです。 今回は大規模で複雑度の高い開発をMVCフレームワークベースで構築する際に僕が課題と捉えているポイントやその具体的な解決手法について解説させていただきたいと思います。 「MVC以上の責任分離イメージがつかないよ!」 「DDDとかクリーンとかオニオンとかあのへんの設計パターンの導入モチベーションが不明」 「どうやっても最終的には複雑になって追加開発や修正開発が怖い状態になっちゃう」 ↑このような悩みを持った方に対して

                            Laravel大規模開発入門!MVC分離のFatModel問題に対する責任分離と依存管理、その設計と考え方について|ハイクラス転職・求人情報サイト AMBI(アンビ)
                          • スタメンの技術的負債解消戦略 - stmn tech blog

                            1. これはなに こんにちは、リファクタリング大好きなミノ駆動です。2023年7月より株式会社スタメンにジョインしました。 この記事は、今後スタメンにおいてサービスの技術的負債を解消する設計戦略についてまとめたものです。 2. 背景、課題 株式会社スタメンは2016年創業。主要サービスであるTUNAG(ツナグ)は、企業のエンゲージメントの構築、つまりお互いを知って理解し、信頼し合う組織を作るための社内コミュニケーションを活性化させるプロダクトです。TUNAGのバックエンドはRuby on Railsで開発され、ローンチから7年をむかえつつあります。 これまでTUNAGは、プロダクトをいかに伸ばすかに注力してきた一方、内部品質や開発効率など「開発者体験」に関する課題が後手に回っていました。本来プロダクトチームはユーザーにとっての本質的な価値にのみフォーカスできる状況が理想ですし、開発者体験が

                              スタメンの技術的負債解消戦略 - stmn tech blog
                            • Reactのprops/contextの使い分け - saneyuki_s log

                              Reactのprops/contextの使い分け 仕事先でたまたまこれの話になり、個人的に思っていることをまとめた。 公開したのは、時々見かける「どっちを使うべき?」みたいな議論に 自分も混ざりたかった 思うところがあったから. 「とにかくpropsでいい」と自分は考えている。 なによりReactは書き方に詰まった場合に、フレームワークライブラリ固有の事情を考慮して解決するというよりも、実装や設計上の問題が一般的なプログラミングパターンの範疇の発想で解決できるのがよい 前提 以下のように考える React/preact のコンポーネント = 通常のclassや関数 状態を隠蔽して抽象する 最近は冪等性がどうとかReact語るときにあんまりいわなくなったけども.... props = 関数やメソッドの引数(入力) context = グローバル変数(モジュールグローバルな変数) 実装の指針

                                Reactのprops/contextの使い分け - saneyuki_s log
                              • こんなに辛いことになるから、最初にがんばろう / 辛い開発状況をどうにかするためにやった13のこと

                                こんにちは!sugitaniと申します。 これまで有名芸能人と通話ができる(かもしれない)ライブ配信アプリとか、オリジナルマンガの配信サービスとか、コメントが横に流れるライブ配信システムとかを作ってきました。(SUGARは今も作業してます) 最近ご縁がありましてUUUMの子会社で、簡単に有料フォロワー向けの投稿が行えるFOLLOW MEを主に開発していて、NFTでデジタルトレーディングカード(※)を売り買いすることができるHABETをIndieSquare社さんと協業で運営しているNUNW株式会社(5月にFOROから社名変更)に入社し半年くらい経っています。最近CTOに任命していただきました! ※NFTについては思うことがある開発者の皆様が多いと思っていますが、自分がどう思っているかは後述します 少し前に「スタートアップがまともなわけ無いから入るな」というインタビュー記事を書いて頂いたんで

                                  こんなに辛いことになるから、最初にがんばろう / 辛い開発状況をどうにかするためにやった13のこと
                                • エンジニア歴1年の僕がドメイン駆動設計(DDD)を参考にLaravelのプロジェクトをフルリニューアルした話 - Hajimari Tech Blog| 株式会社Hajimari

                                  こんにちは! はじめまして! 2020年7月からPIECE事業部でエンジニアをさせてもらっています。 野澤です。 今回、PIECEというサービスのリニューアルを担当させてもらったのでその時のことについて書きたいと思います! まだ若輩者なので至らない点が多々あると思いますが フルリニューアルってどんな事したんだろう〜? Hajimariのエンジニアはどんな仕事をしてるんだろう〜? って思った人はぜひ読んで見てください! ※ドメイン駆動設計の説明も書いたのですがボリュームが多くなってしまいました… ドメイン駆動設計について概要知りたいという方は是非読んでみてください。 クリーンアーキテクチャの説明やモデリングのやり方などは説明していません。 ご了承ください。 PIECEリファクタリングプロジェクトの概要 PIECEとはどのようなサービスなのか リニューアルの目的 リニューアル施策 ドメイン駆動

                                    エンジニア歴1年の僕がドメイン駆動設計(DDD)を参考にLaravelのプロジェクトをフルリニューアルした話 - Hajimari Tech Blog| 株式会社Hajimari
                                  • メモ:値オブジェクトの定義と差異について - かとじゅんの技術日誌

                                    「値オブジェクト」の定義について不勉強だったので「DDDの値オブジェクト」の定義とDDD以外の「値オブジェクト」との違いについて、改めて関連書籍を読み直し整理してみました。 すごい長いし細かいので他人に読ませるような記事ではなく、自分のために書いたメモです。 もし読むなら興味がある人だけで。 自分向けのメモですが、一応 この記事の前提や意図を書いておきます。 「DDDの値オブジェクト」以外を否定する記事ではありません。 原理主義のように書籍の理想どおり実践するべきだと主張するつもりはありません 「理想に従えばよい」「理想に従うの無意味だ」と決め付けの二項対立的な思考ではなく、理想と現実の絡み合ったグレーゾーンを見極めつつ、現場で手を打つのが優れた実践者ではないでしょうか 下記に紹介する、それぞれの値オブジェクトの優劣について細かく議論し、論破する・されることを目的としていません。 言い訳と

                                      メモ:値オブジェクトの定義と差異について - かとじゅんの技術日誌
                                    • リファクタリング専門チームによるお金周りリファクタリング - クラウドワークス エンジニアブログ

                                      こんにちは、エンジニアの @MinoDriven です。 今年2019年4月にリファクタリング専門チームを発足しました。 crowdworks.jp の最重要機能であるお金周りの機能に関して、どのような技術アプローチでリファクタしているかを紹介致します。特に、Railsには適用困難と言われているドメイン駆動設計の考え方を取り入れた手法を解説致します。 目次 背景 リファクタリング専門チーム発足 技術的負債 リファクタリング対象選定 方針①:パレートの法則(80:20の法則) 方針②:リファクタリング選定基準3軸 「仕事周り」か「お金周り」か お金周りモデルのリファクタリングを妨げるConcern 課題①:ActiveRecord側の構造に依存したコード 課題②:型や構造のチェック(リスコフの置換原則違反) 課題③:重要業務概念の埋没 どのようにリファクタしたか 手法①:Concern側メソ

                                        リファクタリング専門チームによるお金周りリファクタリング - クラウドワークス エンジニアブログ
                                      • Clean Architecture考察 - ROXX開発者ブログ

                                        この記事は個人ブログの内容がソースです。 kami-programming.com そもそもなぜクリーンアーキテクチャーを考察するのか DRY原則やSOLID原則などが浸透している昨今ですが、実際の開発現場のソースコードを読み込んでみると必ずしもこれらの原則に則していない場合は多いのではないでしょうか。 そして、そういった開発環境でいざコーディングをしていくと、以下のような問題に直面するのではないでしょうか。 あるバグの修正をしたのだが、同じロジックが他の場所でも書かれていたようで重複箇所のバグは依然としてバグったままだった。 あるクラスを変更したが、依存性の方向性や範囲が把握しきれておらず、変更の影響で新たなバグを生んでしまった。 ビジネスロジックの変更を迫られたが、同じロジックが重複しすぎており修正範囲を特定するだけで一苦労。 想定外の値の入力があり、バグが発生してしまった。 これらは

                                          Clean Architecture考察 - ROXX開発者ブログ
                                        • 「DDDのモデリングとは何なのか、 そしてどうコードに落とすのか」資料 / Q&A - little hands' lab

                                          Mix Leap Study 特別編 - レガシーをぶっつぶせ。現場でDDD! コラボカンファレンス に登壇させていただいたのでで、その際の資料です。 また、当日sli.doでたくさんのご質問をいただいたので、まとめてお答えします。 発表資料 DDDのモデリングとは何なのか、 そしてどうコードに落とすのか from Koichiro Matsuoka www.slideshare.net もっと詳しく知りたい方は この発表資料の内容を、さらに詳しく解説した書籍を出しました! little-hands.booth.pm 初めてDDDを学ぶ方、もしくは実際に着手して難しさにぶつかっている方向けの書籍になっています。 迷子になりがちな「DDDの目的」や「モデル」の解説からはじめ、 具体的なモデリングを行い実装まで落とす事例を元に、DDDの魅力や効果を体感することを目指します。 この本の「第2章

                                            「DDDのモデリングとは何なのか、 そしてどうコードに落とすのか」資料 / Q&A - little hands' lab
                                          • #fukabori をきいて Value Object と Value Object パターンについて頭の中を整理 - Mitsuyuki.Shiiba

                                            連休の余韻も楽しんだので今日から散歩を再開した。ちょっと前までは「陽の光を浴びなきゃ!」と思って3時過ぎにウロウロしてたけど、これからはもうちょっと涼しい時間帯がいいなと思って、夕暮れ時に散歩しながら fukabori.fm を聴いてた。Value Object のお話。面白いなぁ 73. Value Object w/ kumagi | fukabori.fm kumagi さんの記事はこちら Value Objectについて整理しよう - Software Transactional Memo お絵描き PoEAA や DDD はだいぶ前に読んだことがあるけど、Value Object を雰囲気で捉えてるからちゃんと見直しておこうと思って、調べたりしながら絵を描いた。こういうことなのかな? (絵をかくほどでもなかった・・・ Value Object とは? kumagi さんも書いてる

                                              #fukabori をきいて Value Object と Value Object パターンについて頭の中を整理 - Mitsuyuki.Shiiba
                                            • ドメイン駆動設計で貧乏を爆殺する - Qiita

                                              本記事は ドメイン駆動設計#1 Advent Calendar 2019 19日目の記事です。 こんにちは、レガシーコードを 爆殺 リファクタリングするのが大好きなミノ駆動です。 今回はドメイン駆動設計導入上避けては通れない、大事な大事なお金の話を致します。 「ドメイン駆動設計を導入してみたいんです!」 部下「ドメイン駆動設計を導入してみたいんです!」 上司「それって何?なんのために導入するの?」 部下「…………」 はい、僕にもそんな時代がありました。 何のためにドメイン駆動設計を導入したいのか、簡潔に説明できますでしょうか。 「ドメイン駆動設計」のタイトルにあるように、本書は設計に関する書籍です。 ソフトウェア全体の設計手法や思想に関して言及している書籍です。 まずはソフトウェアの価値とは何か、設計とは何か、それぞれ何かを整理してみます。 ソフトウェアの価値 ソフトウェアが満たすべき要件

                                                ドメイン駆動設計で貧乏を爆殺する - Qiita
                                              • DDDのエンティティはイミュータブルな実装にしてもいいの?(サンプルコード有り)[ドメイン駆動設計 / DDD] - little hands' lab

                                                本記事はドメイン駆動設計(DDD) Advent Calendar 2021の13日目の記事です。 エンティティとイミュータブル性 オブジェクトをイミュータブル、つまり内部状態を変えない実装にすることで可読性やマルチスレッド対応性が向上することがあります。 エンティティはモデリング上の定義はミュータブルなものですが、実装方法をイミュータブルにすることは可能です。 (DDDでは、エンティティはミュータブルもしくはイミュータブル、値オブジェクトは必ずイミュータブルという定義です。詳しくはこちら) DDD基礎解説:Entity、ValueObjectってなんなんだ - little hands' lab 本記事ではエンティティをイミュータブルな実装にするサンプルコードと合わせて、イミュータブルにした場合の旨みを感じられるコードを紹介します。 イミュータブルなエンティティ実装の例 エンティティをイ

                                                  DDDのエンティティはイミュータブルな実装にしてもいいの?(サンプルコード有り)[ドメイン駆動設計 / DDD] - little hands' lab
                                                • なぜ自分はDDDを勉強しているのか?

                                                  DDDと出会う前 自分は元々アーリーステージ(シード)のスタートアップでRailsを書いていました。人手の問題で拙いながらもReact Nativeでモバイルアプリを作ったりAWSでインフラを構築したりとよくいるエンジニアです。昨年末に今の会社への転職がきっかけでDDDでの開発に従事するようになり独学でキャッチアップしました。元々DDDという単語自体は聞いたことがありました。きっかけは確かこちらの記事だったと思います。 ドメイン駆動設計の比類なきパワーでRailsレガシーコードなど大爆殺したるわあああ!!! 自分自身Railsを書いてはいましたが、自分のコードに納得感を得られたことは一度もありませんでした。 このロジックはここに書いて良いのだろうか? DB設計ってこれで合ってるのか? う〜ん、テストコード書きにくいなあ よくある悩みです。しかし、スタートアップでスピード開発を優先していたの

                                                    なぜ自分はDDDを勉強しているのか?
                                                  • Ruby on RailsとReactでECサイト構築 - Qiita

                                                    Laravelで実装していた箇所は全面的にRuby on Railsの形で作り直しが必要でした。ただ、フレームワークのアーキテクチャがLaravelとRailsが似ているので、ほぼ文法の置き換えのみでいけました。 ReactはerbからReactを呼び出す部分だけ工夫が要りましたが、Laravel版で実装していたReactのコンポーネントはほぼそのまま使えました。変更が必要だったのは、Reactへの値受け渡し部分のみでした。LaravelではbladeからReactへ値を連携する際json文字列に変換し、Reactでそのjson文字からオブジェクトへとパースしてました。とこらがRuby on RailsではerbでReactに値を連携する際json文字列にせずに渡せて、Reactでもjson文字列をパースせずともオブジェクトとして受け取れている状態となっていました。内部ではRuby on

                                                      Ruby on RailsとReactでECサイト構築 - Qiita
                                                    • EntityのID発番についてTypeScriptで考える

                                                      /** * 疑似コード */ //直前でIDを指定して取得したのにも関わらず const someEntity = someRepository.findById('some-id'); //Entity自体の存在確認をするのは良いが... if(!someEntity) throw new Error('SomeEntity not found'); //IDの存在まで確認しなければいけないのがなんかダサい。。 if (someEntity.id) { //someEntity.idを使った何かの処理 } 理想的には、 Repositoryに渡すとき(saveなど)はIDが発番されていないくても良い Repositoryから抜き出すとき(findAll, findByIdなど)はIDが発番されていることが保証されている というモデルを実現したい。 ということで、TypeScriptのUn

                                                        EntityのID発番についてTypeScriptで考える
                                                      • 昔から使われている技術用語をさかのぼる: Value Object編

                                                        考えてみればソフトウェアパターンが賑やかだった時代からはすでに20年以上たっているわけで、20年も変わるといろいろ状況も変わりますし、そんな昔のことなんて知ってるわけない、というか知ったことではない、という人も少なくないと思います。 とはいえ今でも使われている用語について、その当時の使われ方を知ると、考察が深まることもあるかもしれません。 そんな感じでOOPとかパターン方面の用語とかを遡りたい! というときには、WikipediaとかではなくてC2 Wikiを見るのがおすすめです。 C2 Wikiとは Wiki(WikiWikiWeb)の元祖みたいなやつですね。iki-ikiで紹介されています。 例えばValue Objectについて掘りたい、と思った時にはValueObjectで探すと見つかります。単語と単語をつなげるときに、単語の先頭を大文字にする感じです。 とはいえ、C2 Wikiも

                                                          昔から使われている技術用語をさかのぼる: Value Object編
                                                        • PHPを使ってEvent Streaming + CQRSをざっくり理解してみよう(Laravel) - ytake blog

                                                          これはさりげなく スターフェスティバル Advent Calendar 2020の20日目です。 PHPカンファレンス2020 2019年は登壇などを控えて一休みの期間としていたので一年振りくらいの と登壇となりました。 発表の内容としてはここ3、4年注力しているデータ処理まわりから、 PHPにおけるWebアプリケーションなどでも活用することができる題材を取り上げてお話させていただきました。 要するに事業に関わっている開発は年々要件も複雑になっていき、 問題解決するためにはいろんな手法があるけど、きちんと分析して 開発しやすいよう、フレームワークにべったり依存してつくるのではなく、 数年先を見越してつくったり、改善する方法の一つにCQRSもありますよ、という話です。 お話したように、全てのアプリケーションでペイできるものではありませんし、 ある程度大きな規模だったりある程度複雑な機能だった

                                                            PHPを使ってEvent Streaming + CQRSをざっくり理解してみよう(Laravel) - ytake blog
                                                          • BirthdayというValueObjectはありなのか?杉本氏(@sugimoto_kei)の考えのまとめ

                                                            たなかこういち @Tanaka9230 BirthdayにasLocalDateとcalcAgeというメソッドを生やすか、getDateとgetAgeというメソッドを生やすか、インターフェースなら、後者の方が本来"正しい"のでしょう。 twitter.com/sugimoto_kei/s… 2019-09-06 22:38:14 杉本啓 @sugimoto_kei 「fisrtNameとlastNameはインスタンス変数として保持されているが、fullNameは保持されていない」という知識を隠すのが情報隠蔽であって、前者と後者を区別したら隠蔽にならないじゃないか。 2019-09-06 21:45:06

                                                              BirthdayというValueObjectはありなのか?杉本氏(@sugimoto_kei)の考えのまとめ
                                                            • neue cc - UnitGenerator - C# 9.0 SourceGeneratorによるValueObjectパターンの自動実装とSourceGenerator実装Tips

                                                              ValueObjectは好きですか?私は大嫌いです。いじょ。 ざっくり言えばプリミティブ型に専用の型を付ける教義です。例えばUserIdをintとして扱っているとTeamIdと取り違えるかもしれないし、Hpに突っ込んでしまうかもしれない。StrengthとIntelligenceとAgilityとSpeedは別物なのだから全部intじゃなくて区別して欲しい、そうじゃないと間違った演算しちゃうぞ、と。まぁそういう自体を避けるために、それぞれラップした個別型を作るのです。int strengthじゃなくてStrength strengthだぞ、と。 これは一見正しく実際正しいのですが、問題もあります。一つに面倒くさい。ラップしたctorを作るのだけでも定形でウザ、と思いますが、更に等値とか実装するのは面倒くさい。また、そのままだと計算できなくなるので、算術演算のために生の値を.Valueで取り

                                                              • Laravelでドメイン駆動設計(DDD)を実践し、Eloquent Model依存の設計から脱却する - Qiita

                                                                Laravelでドメイン駆動設計(DDD)を実践し、Eloquent Model依存の設計から脱却するPHPLaravelDDDドメイン駆動設計Eloquent この記事はドメイン駆動設計#1 Advent Calendar 2019の 10 日目の記事です。 2020/12/17追記 以下に続編を書きました! LaravelにDDDを導入して1年経った所感(達成したこと / 課題点 / モデリングの難しさなど) やったこと 自社サイトのバックエンドを Laravel で実装して半年間が経ち、初期に考えた設計にいろいろと綻びが出てきたと感じていました。 そんな中、ちょうど実践ドメイン駆動設計や Web+DB Press で特集された体験 DDD を読むことができたので、さっそくいくつかの機能を DDD で実装してみました。 本記事では「もともと Laravel で実践していたEloquen

                                                                  Laravelでドメイン駆動設計(DDD)を実践し、Eloquent Model依存の設計から脱却する - Qiita
                                                                • neue cc - 2022年(2024年)のC# Incremental Source Generator開発手法

                                                                  このブログでもSource GeneratorやAnalyzerの開発手法に関しては定期的に触れてきていて、新しめだと 2020/12/15 - UnitGenerator - C# 9.0 SourceGeneratorによるValueObjectパターンの自動実装とSourceGenerator実装Tips 2021/05/07 - 2021年のC# Roslyn Analyzerの開発手法、或いはUnityでの利用法 という記事を出していますが、今回 MemoryPack の実装で比較的大規模にSource Generatorを使ってみたことで、より実践的なノウハウが手に入りました。また、開発環境も年々良くなっていることや、Unityのサポート状況も強化されているので、状況を一通りまとめてみようと思いました。Source Generatorは非常に強力で、今後必須の開発技法になるので

                                                                  • 「本日クラスターに入社したUnity Engineerが読む記事」の紹介 - Cluster Tech Blog

                                                                    こんにちは、クラスターでUnity Engineerをやっている獏星(ばくすたー)です! 突然ですが、この記事を読んでいるという事はあなたは本日クラスターに入社したUnity Engineerのはずです。 もし違う場合でも、「そうか、自分は本日クラスターに入社したUnity Engineerだったのか…」と受け入れて読んで下さい。ただし入社ツイートは無しで。 そして本記事を読んでいるあなたに朗報です。 つい先日、クラスターに入社したUnity Engineer向けの社内用オンボーディング資料として「本日クラスターに入社したUnity Engineerが読む記事」が作成されました!そのまんまのタイトルですね。 社内slackの投稿風景 クラスターではエンジニアのオンボーディングフロー改善に日々取り組んでおり、その一環として資料整備が進みました。 そこで今回は本日クラスターに入社したUnity

                                                                      「本日クラスターに入社したUnity Engineerが読む記事」の紹介 - Cluster Tech Blog
                                                                    • composed_of を使って Rails で値オブジェクトを扱う - Sansan Tech Blog

                                                                      DSOC サービス開発部でエンジニアをしている石畑です。普段は Rails で名寄せサービスを作っています。 今回は Rails で値オブジェクトを扱うのに ActiveRecord の composed_of が便利なので、紹介します。 値オブジェクト 値オブジェクトは DDD でも紹介されている概念です。多くのわかりやすい解説が世の中にあるので、詳しくは検索してもらえればと思いますが、ものすごく大雑把に説明すると「各属性で等価を判断できる不変なオブジェクト」です。 例えば「とあるスーパーでお肉を売る」を考えたときに、最初「300 円」で売っていた「お肉 A」を途中タイムセールで 100 円引きの「200 円」で売ったとしても「お肉 A」は値段を変更する前と「同一のお肉」です。 お肉のセール そのため、「お肉」の同一性は属性で判断することはできず、バーコードのような識別子で同一性を追跡し

                                                                        composed_of を使って Rails で値オブジェクトを扱う - Sansan Tech Blog
                                                                      • オニオンアーキテクチャとは何か - Qiita

                                                                        概要 オニオンアーキテクチャはJeffrey Palermo氏により考案されたアーキテクチャパターンである。伝統的な階層化アーキテクチャとオブジェクト指向の考え方を踏襲しつつ、これまでよりも保守性、テスト容易性、依存性の点で優れたアプリケーションを構築することを目的としている。本記事ではこのオニオンアーキテクチャとは何かについてPalermo氏の記事を参考にして考察する。 前提となる知識 オニオンアーキテクチャを理解する上で前提となるいくつかの知識を挙げる。 オブジェクト指向 オニオンアーキテクチャはオブジェクト指向を前提としたアーキテクチャである。 階層化アーキテクチャ オニオンアーキテクチャは多層アーキテクチャを利用している。 依存性逆転の原則 オニオンアーキテクチャでは依存性逆転の原則がオブジェクトのモデリングに利用されている。 ドメイン駆動設計 Entity, Repository

                                                                          オニオンアーキテクチャとは何か - Qiita
                                                                        • 【PHP】DDDにおける値オブジェクトを変更したい時のメモリ周りについて調べた - BASEプロダクトチームブログ

                                                                          こんにちは! バックエンドエンジニアの高町咲衣です! この記事では、PHPでDDD(ドメイン駆動設計)を扱う際に気になる「値オブジェクトを更新=作り直した時のメモリ周りの挙動」について調査した結果をまとめています。 値オブジェクトは不変である DDDの文脈における値オブジェクト(ValueObject)の特徴の一つとして、不変(immutable)であることが挙げられます。 値オブジェクトは「値を表現する」オブジェクトであり、例えばプリミティブな値であるint、stringなどと同じように取り扱うべきだとされています。 // プリミティブな値を用いた、ごく一般的な感覚のコード例 $number = 1; // 値をセットする $number = 2; // 値を入れ直す var_dump($number); // 2 var_dump($number === 1); // false //

                                                                            【PHP】DDDにおける値オブジェクトを変更したい時のメモリ周りについて調べた - BASEプロダクトチームブログ
                                                                          • 今まで読んだ技術書の中で汎用的で印象に残っているものをまとめてみる - Qiita

                                                                            30代半ばでWebエンジニアに転職者(≠転生者)のおぎです。 2020年のコロナ禍をきっかけに興味本位でWebプログラミングを学び始めたのが運の尽きで、あれよあれよという間に深みにハマり、気づけば30代半ば(妻子あり)で異業種から転職をし、今はPHPをメイン言語としてバックエンドのプログラムを書いたりしています。 転職してからは社内向けのアウトプットは多少していたのですが、インプットと実務で最近ほとんど外部向けへのアウトプットが行えていなかったので、リハビリがてら今まで読んだ本を覚えている範囲でリストしていこうと思います。(本当はもっと色々読んでいるんですが、難しすぎて理解できなかったり、他の本と内容が重複していたりで覚えていないものも多く、覚えていないものに関しては読んでいないのとほぼ同じだと思うので覚えている範囲のみで...) ※自分は基本的にPHPがメインではあるのですが、特定の技術

                                                                              今まで読んだ技術書の中で汎用的で印象に残っているものをまとめてみる - Qiita
                                                                            • 『WEB+DB PRESS Vol.113』の「体験 ドメイン駆動設計 モデリングから実装までを一気に制覇」を読んだ - 30歳からのプログラミング

                                                                              ドメイン駆動設計(以下 DDD)に関心があるので読んでみた。 私のような初心者にも分かりやすい内容だったので、DDD に興味を持ったけど挫折した、という人は読んでみるといいと思う。 gihyo.jp DDD に関心を持ったキッカケはよく覚えていて、今年の2月。 SPA のフルリニューアルを一人でやることになり、設計や技術選定について考えていた。 既存の SPA の出来があまりにもひどくて、毎日がとにかく苦痛で不愉快だった。その体験があったため、自分はちゃんとしたモノを作ろうという気持ちが強かった。 そこらへんの話は以下の記事にも書いた。 numb86-tech.hatenablog.com その時期に出会った記事のひとつが、これ。 medium.com この記事の内容そのものも参考になったが、この記事で触れられている DDD にも関心を持った。 詳しくは分からないが、DDD というものを使

                                                                                『WEB+DB PRESS Vol.113』の「体験 ドメイン駆動設計 モデリングから実装までを一気に制覇」を読んだ - 30歳からのプログラミング
                                                                              • ドメイン駆動設計を成功させるためのICONIXプロセスを考える

                                                                                株式会社ビープラウドが主催するIT勉強会「BPStudy」。#151となる今回は、設計の代表格であるオブジェクト指向、モデリング、そして設計にフォーカスをあて、LT大会を開催しました。株式会社ミライトデザインのCEOでもある林宏勝氏は、「DDD時代に考えたいICONIXプロセス」というタイトルで、DDDを使っていて難しいと言われている戦略設計や、効率的に動かす方法などを語りました。講演資料はこちら 戦略設計と戦術設計 林宏勝氏:今回「DDD時代に考えたいICONIXプロセス」というタイトルで発表します、林です。 今日話すことは、Today's Topic ICONIX in the DDD era。DDDのモデリングをするにあたってICONIXをどう生かしていくか「DDDをやりたいけど、ICONIXは何に使うの?」みたいな話ができたらと思います。時間の都合上、ICONIXの詳細なやり方は、

                                                                                  ドメイン駆動設計を成功させるためのICONIXプロセスを考える
                                                                                • WEB+DB PRESS特集「体験 ドメイン駆動」を執筆しました [DDD] - little hands' lab

                                                                                  WEB+DB PRESS Vol.113の特集として、「体験 ドメイン駆動設計 - モデリングから実装までを一気に制覇」を執筆しました。ボトムアップドメイン駆動設の@nrslibさんとの共著です。 抽象的な解説だけでなく、実際にモデリングから実装まで行うサンプルがある こと、ドメインモデル図、サンプルコードそれぞれ4段階に分かれて改善の過程が追えるようになっている ことが特徴です。 DDDでは抽象的な議論に終始しがちなところ、具体的な事例を用いて目的や効果を理解してもらえる構成を心がけました。 構成 1章 なぜいまドメイン駆動設計か - 仕様がわかり、変更容易なコードへ 担当: @nrslibさん 「結局DDDって何がしたいの?」ということを理解できるように、従来の開発手法の問題点、ドメイン駆動設計による解決法を示します。 2章 ドメインモデリング - 現場の知識を抽出し、問題解決力の高い

                                                                                    WEB+DB PRESS特集「体験 ドメイン駆動」を執筆しました [DDD] - little hands' lab