タグ

設計に関するp_tanのブックマーク (77)

  • 実践Immutable Data Model - 紙箱

    ランキング参加中プログラミング はじめに この記事では、Immutable Data Modelと呼ばれる設計手法をもとに、リレーショナル・データベースにおける、テーブル設計の話を書いています。また、今回の実践で利用する、別の考え方の背景を理解するために、Out of the tar pitという小論文の内容にも言及します。 「状態とは何か?」というややこしい話がたくさん出てきますし、データベースのテーブル設計についての話であることから、たくさんのSQLが出てきます。なので、データモデリングとか状態管理とか、特にSQLとかに興味がない人には面白くないと思います。 そのあたりに興味ある方は、読んでみて欲しいです。 Immutable Data Modelを、実際のアプリケーションで使うデータベースに採用するにあたり、どういう考え方で、どのようにテーブルを構成したか、自分なりの経験を書いていま

    実践Immutable Data Model - 紙箱
  • アンチパターンを理解して package by feature へ

    はじめに ニコニコ生放送でフロントエンドを担当している misuken です。 今回は関心が分散してしまう理由やその原理、この問題に対する適切な対処法を通して、package by feature の合理性や、そこで重要になってくる関心の単位などについて解説していきます。 規模の大きなものを扱っている方、分類が苦手な方、分類に関して悩みを感じている方には特に有用です。 前提 Reactでコンポーネントを管理する例で説明します 当然React以外の様々なディレクトリ構成でも応用できます BCD Design の概念も覚えておくとより体系的に理解できます 精度の高い明名ができれば、分類の効率も精度も上がります 現実世界で捉える関心の分散 通常、自宅や職場でトイレに行くとき、同じフロアや同じ建物内のトイレに行きます。 もしもトイレだけの建物が隣に建っていて、そこに行かなければならないとなったらと

    アンチパターンを理解して package by feature へ
    p_tan
    p_tan 2023/11/18
  • 改めて整理するアプリケーション設計の基本

    ●発表のアーカイブ動画はこちら:https://youtu.be/4rgGkoyUaZw ●発表の中で紹介しているUdemy講座:https://www.nextskill.co.jp/courses === プログラミングの基礎を学び、アプリケーション開発に実践的に関わり始めると、「MVC」「サービスクラス」「ドメインモデル」「クリーンアーキテクチャ」といった、よく分からない単語に遭遇します。 これはいわゆる「アプリケーションアーキテクチャ」という分野の話で、アプリケーション開発に関わり始めると、誰もが突き当たる壁の一つです。 今回はアプリケーションアーキテクチャを学ぶ最初の一歩として、「MVC」や「3 層アーキテクチャ」などの、基的な用語の意味や関係性を整理します。 発表者が過去に書いた以下の記事を中心に、+α の内容を加えた発表になります。 ・「ビジネスロジック」とは何か、どう実装

    改めて整理するアプリケーション設計の基本
  • DDDにおけるRepositoryパターン

    Repositoryパターンについて再学習した際の備忘録です。 Repositoryパターン ドメインオブジェクトの集まり (以降、集約)を抽象化する設計手法。 DAO(DataAccessObject)とよく似ているが、DAOはデータアクセスの処理を抽象化する手法であり、Repositoryとは意識する点が真逆になっている。 また、DAOはクラスの分割方法については定義されていない点がRepositoryとは違う所となる。 データアクセスの抽象化という観点から、ORMもDAOの一種とも言える。 その特徴からRepositoryの内部でDAOを使用してデータを取得する事はあるが、逆にDAOの内部でRepositoryを使用してデータを取得する事は基的には無い。 interface PostRepository { findById(postId: PostId): Promise<Pos

    DDDにおけるRepositoryパターン
  • 良いコード/悪いコードで学ぶ設計入門の感想と注意点

    「良いコード/悪いコードで学ぶ設計入門」というがとても売れているようです。私の所属している開発チームでも、何人か購入した人がいたので、私も購入して一通り読んでみました。 結果として、いくつかの考えが整理され、私としてはこのによって考えが深まり、を読んで考えた事自体は有意義であったと思いました。ただし一方で、あまり知識がない状態で(自分の中での判断軸が無い状態で)このを読むと、色々と誤解が生まれるのではないか?という事を感じました。 一つの技術書がこれだけ売れるという事はそんなに多くはない事だと思うので、つまり、 その内容が改善されるとその効果は相対的に大きい という事になります。そこで、私がを読んでいて思ったことや、このの内容で正しいこと、現在も賛否両論とされること、事実として認識が間違っているであろうこと、こので触れられていないが設計において大事なこと、などについてまとめて

    良いコード/悪いコードで学ぶ設計入門の感想と注意点
    p_tan
    p_tan 2022/08/08
    Domain Primitive 用語勉強になる。自分はDomain Primitiveは保守性を上げる、に賛成派(言語プリミティブな実装より変更漏れ箇所をコンパイラで見つけられることが多いから。ただこれも作ってるソフトウェアのドメインに依る?)
  • わかりやすいシステム構成図の書き方 - Qiita

    わかりにくいシステム構成図とは こんなシステム構成図を書いてないでしょうか? このシステム構成図のわかりにくい点が3つあります。それは 製品名は書いてあるが「役割」が書いていない データと処理が区別できない データの流れと制御の流れが区別できない の3つです。 わかりやすいシステム構成図 これら3つのわかりにくい点を改善したわかりやすいシステム構成図が↓です ポイントを解説していきます ポイント1. 製品名称ではなく「役割」を書く システム構成図には製品名称ではなくシステムコンポーネントの「役割」を書きます。 役割とは、例えば〇〇データや〇〇処理といったことであり、それを読むだけでシステムの動きを理解できる文字列です。役割をかかずに製品名称のみを書いてしまうと、その製品を知らない人が見たときに理解できません。例えば「Cloud Pub/Sub」という製品はGCPというパブリッククラウドの分

    わかりやすいシステム構成図の書き方 - Qiita
    p_tan
    p_tan 2022/06/13
    UMLにデータフロー図がないのが現代のソフトウェア設計図としては手落ちだな、とずっと思ってる。
  • Patterns.dev

    Improve how you architect webappsPatterns.dev is a free online resource on design, rendering, and performance patterns for building powerful web apps with vanilla JavaScript or modern frameworks.

    Patterns.dev
  • GitHub - Katsukiniwa/awesome-software-design-ja: 日本語でのソフトウェア開発・設計に関する記事や書籍をまとめたリポジトリです

    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.

    GitHub - Katsukiniwa/awesome-software-design-ja: 日本語でのソフトウェア開発・設計に関する記事や書籍をまとめたリポジトリです
  • 世界の最大手企業は機械学習を活用したアプリケーションをどのように設計しているか | AI専門ニュースメディア AINOW

    著者のDaniel Bourke氏はオーストラリア在住の機械学習エンジニアで、同氏が公開したさまざまな機械学習に関する記事はMediumでも人気があり、その一部はAINOWでも紹介してきました(同氏の詳細は公式サイトを参照)。同氏が最近Mediumに投稿した記事『世界の最大手企業は機械学習を活用したアプリケーションをどのように設計しているか』では、世界的な大手テック系企業が機械学習システムの設計に関して定めたガイドラインが解説されています。 機械学習を活用したアプリ開発がさかんになるにつれて、そのようなアプリ開発に対して同じようなアプローチが有効なことに気づかれるようになりました。そこでBourke氏は、機械学習を活用したアプリ開発に共通した設計指針を明らかにするために、AppleGoogleMicrosoft、Facebook、そしてSpotifyの設計ガイドラインを調べてみました。

    世界の最大手企業は機械学習を活用したアプリケーションをどのように設計しているか | AI専門ニュースメディア AINOW
  • コンテナ運用におけるログ基盤設計のベストプラクティス - Qiita

    課題 数年前と比較すると、GKEやECSを始めとするコンテナ実行環境でのアプリケーション運用を行うサービスはかなり増えてきた印象があります。 コンテナを運用する上では、アプリケーションのイベントを追跡する上でログをどう扱うかが課題になります。今までのように古いログを定期的にローテートして別のストレージに転送するといった手法はクラウドネイティブなアーキテクチャには最適とは言えません。 アプリケーション開発の方法論として、Twelve Factor App ではログをイベントストリームとして扱うためのガイドラインが示されていますが、近年のWebアプリケーションではシステムを疎結合に連携するマイクロサービスという考え方が主流になりつつあります。 アプリケーションログはサービスごとにフォーマットを整形した上で、ログ収集サービスに配送。必要に応じてリアルタイム分析や異常データの通知、そしてデータの可

    コンテナ運用におけるログ基盤設計のベストプラクティス - Qiita
  • コンテナ運用におけるログ基盤設計のベストプラクティス - Qiita

    課題 数年前と比較すると、GKEやECSを始めとするコンテナ実行環境でのアプリケーション運用を行うサービスはかなり増えてきた印象があります。 コンテナを運用する上では、アプリケーションのイベントを追跡する上でログをどう扱うかが課題になります。今までのように古いログを定期的にローテートして別のストレージに転送するといった手法はクラウドネイティブなアーキテクチャには最適とは言えません。 アプリケーション開発の方法論として、Twelve Factor App ではログをイベントストリームとして扱うためのガイドラインが示されていますが、近年のWebアプリケーションではシステムを疎結合に連携するマイクロサービスという考え方が主流になりつつあります。 アプリケーションログはサービスごとにフォーマットを整形した上で、ログ収集サービスに配送。必要に応じてリアルタイム分析や異常データの通知、そしてデータの可

    コンテナ運用におけるログ基盤設計のベストプラクティス - Qiita
  • 技術選定/アーキテクチャ設計で後悔しないためのガイドライン - Qiita

    はじめに 稿は、ソフトウェア開発を進める際に直面する様々な技術的な意思決定やライブラリ・フレームワーク・XaaS等を選択し正しく活用していくのかについての考え方をサポートすることを目的としています。「すべてにおいてこのようなワークフローを通じて検討すべきである」という主張ではありません。読者の抱える問題領域に応じて、必要な箇所を取捨選択するための1種の考え方を提供するものです。 そもそもアーキテクチャ・技術選定に時間をかけるべきか まず第一に伝えておきたいことは、技術選定やアーキテクチャ設計に常に慎重であるべきではないということです。ソフトウェアの規模やライフサイクルに応じて、そもそも時間をさく必要がないということも多くあります。書き捨てのシェルスクリプトにも読みやすいコードを求めて書くことは非常に重要ですが、だからといって組織だって議論・検討するようなものでもないのです。一方で、5年も

    技術選定/アーキテクチャ設計で後悔しないためのガイドライン - Qiita
  • 「実践ドメイン駆動設計」を読んだので、実際にDDDで設計して作ってみた! - Qiita

    こんにちは、クラウドワークスの新規事業のエンジニアとして仕事をしている高梨です! 最近、「実践ドメイン駆動設計」というを読みました! 500ページ近くもある技術書で、なかなか量は多かったのですが、DDDがどんなものなのか一通り大枠を掴めた気がします。 ただ読み終わった後にこんな疑念や不安をいだきました。 「たしかにかなり面白そうだけど、実際にやるとどれだけ工数かかるんだろう...?」 「設計の話は全然出てこなかったけど、DDDで作るとなるといったい何から始めればいいんだ?」 「戦術についての知識はついたけど、実際に書こうとしたらできなそうだな...」 そこで、そういった疑念や不安を解決するために、実際にDDDでサンプルプロダクトを作ってみようと思ったわけです。 実際に作ってみるのが、結局一番理解が進みますしね。 今回は、そのプロダクトがリリースされるまでの過程や感想を、作成した設計書やソ

    「実践ドメイン駆動設計」を読んだので、実際にDDDで設計して作ってみた! - Qiita
  • TwitterやSlackのRedux Storeを覗く

    { domainData1 : {}, domainData2 : {}, appState1 : {}, appState2 : {}, ui : { uiState1 : {}, uiState2 : {}, } } ref: Basic Reducer Structure and State Shape · Redux 正規化 Recipesでは正規化についても言及しており、リレーショナルデータを管理する場合はデータベースのように正規化することを推奨していました。 以下は投稿が複数のコメントを持つ例です。postsはcommentsのidだけを持っています。 { posts : { byId : { "post1" : { id : "post1", author : "user1", body : "......", comments : ["comment1", "comment

    TwitterやSlackのRedux Storeを覗く
  • Google Cloud 公式ブログ

    404。 エラーが発生しました。リクエストされた URL /blog/ja/products/api-management/understanding-grpc-openapi-and-rest-and-when-to-use-them はこのサーバーで見つかりませんでした。お知らせできる情報は以上です。

    Google Cloud 公式ブログ
  • イミュータブルデータモデル - kawasima

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

    イミュータブルデータモデル - kawasima
  • ドメイン駆動設計に関する何か - 日々常々

    2020-03-13追記: 「ドメイン駆動設計」のハードルを上げる意図はありません。そもそもそんな特殊技能でもないと思っています。「ドメイン駆動設計が合っているか」を測る材料になるかも?くらいの気持ちで読んでいただけると幸いです。 何度目か知りませんがDDDがまたブームを迎えているようで。DDD難民と言う言葉が出た頃を思うと感慨深いですね。実際難民になったわけではないので肌感覚で知らないのが残念なところですが、これはどうでもいい。 DDD、日語ではドメイン駆動設計となりますが、DDDを冠していてもドメインが語られることは少ないようです。 数ある書籍もドメインモデリングの話ではなく、ドメインモデルをいかに実装に落とし込むかにフォーカスしていると感じています。 これはこれで仕方ないと言うか、ドメインの話って広く語れないんですよね。 ドメインは領域で境界があって範囲が限定されています。特定ドメ

    ドメイン駆動設計に関する何か - 日々常々
  • gRPC Internal - gRPC の設計と内部実装から見えてくる世界 | Wantedly Engineer Blog

    こんにちは、Wantedly の Infrastructure Team で Engineer をしている南(@south37)です。 今日は、WANTEDLY TECH BOOK 6 から「gRPC Internal」という章を抜粋して Blog にします。 「WANTEDLY TECH BOOK 1-7を一挙大公開」でも書いた通り、Wantedly では WANTEDLY TECH BOOK のうち最新版を除いた電子版を無料で配布する事にしました。Wantedly Engineer Blogでも過去記事の内容を順次公開予定であり、この Blog もその一環となっています。 Wantedly における Go 導入にまつわる技術背景 | Wantedly Engineer Blog (記事は Go Conference 2019 Autumn にて無料配布した冊子『WANTEDLY TE

    gRPC Internal - gRPC の設計と内部実装から見えてくる世界 | Wantedly Engineer Blog
  • アプリケーションにおける権限設計の課題 - kenfdev’s blog

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

    アプリケーションにおける権限設計の課題 - kenfdev’s blog
  • Serverless Days Tokyo 2019 トヨタ自動車・ダイキン工業 事例覚書 - Qiita

    Serverless Days Tokyoに参加してきました。いずれも興味深い内容ばかりでしたが、ダイキン工業とトヨタのIoTシステムの中の話は、こういう機会でもなければ聞けない話でかなり貴重な話を聞けた感がありました。 その内容をメモったので残しておきます。 入り口の様子。 会場の様子。休みの日の朝9時からというのに、ほぼ満席な感じでした。 ダイキン工業:空調設備向けIoTシステムにおけるランニングコスト ダイキン工業は、全世界の空調機(エアコン等)をインターネットに繋いで、販売、運用、保守、施工に対するサービスを提供する。 システム名は「Daikin Global Network(ダイキン・グローバルネットワーク)」 想定接続台数は500万台。各空調機が1分ごとにデータをサーバーにあげる。 想定ユーザー数は30万人。 無限に発生するデータを格納できるストレージが必要。 断固としてデータ

    Serverless Days Tokyo 2019 トヨタ自動車・ダイキン工業 事例覚書 - Qiita