タグ

usuihiro1978のブックマーク (2,714)

  • 認証と認可と課金とコアドメインを分離したシステムは勝てるという話 - まっちゅーのチラ裏

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

    認証と認可と課金とコアドメインを分離したシステムは勝てるという話 - まっちゅーのチラ裏
  • 認可のベストプラクティスとDDDでの実装パターン

    最近、少々複雑な権限機能の開発を担当している中で、対応方針を悩んでいたことがありました。 権限機能というものは取り扱いが難しく、影響範囲が広いにも関わらず、対応漏れや考慮不足があると情報漏洩に繋がってしまいます。 また、機能拡張をしてく中でも対応漏れを起こさないようにする必要があるなど、考えることも多く頭を悩ませておりました。 そこで、認可処理の設計のベストプラクティスやDDDの実装パターンに認可処理を組み込む方法など、色々と調べていたのですが、その中でいくつか知見を得られたのでまとめようと思います! 権限と認可 権限と切っては切れない関係にあるのが認可です。 権限はある操作を実行できる権利を指します。 それに対して、認可は操作を実行する許可を出すため仕組みのことを指します。 例えば、ブログ投稿サービスで考えてみると、以下のような感じです。 権限: 投稿者はポストを編集できる。 認可: ユ

    認可のベストプラクティスとDDDでの実装パターン
  • ts-array-lengthを支えるテクニック

    皆さんこんにちは。筆者は先日、TypeScript向けライブラリのts-array-lengthを公開しました。 この記事ではこのライブラリを宣伝するとともに、ライブラリの実装がどのようになっているのか解説します。 ts-array-lengthの機能 ts-array-lengthは3つの関数を提供しており、これらを使うことでなんと配列の要素数をチェックできます。 例えばhasLengthを使うと、配列の要素がちょうど2個かどうか調べることができます。 if (hasLength(arr, 2)) { // arrは2要素の配列! const [first, last] = arr; }

    ts-array-lengthを支えるテクニック
  • Typeorm の Distinct を伴うクエリとパフォーマンス

    TypeORM でページングやカウントするときに生成される SQL とそのパフォーマンスについて考察します。 検証に使うサンプルアプリケーション 実際にサンプルアプリケーションを作って振る舞いを確認します。 稿で検証するサンプルアプリケーションは次のリポジトリにあります。 https://github.com/kazamori/typeorm-performance-issues-sample 調査した環境は次になります。 TypeORM: 0.2.34 Node.js: v14.17.1 PostgreSQL 12.7 環境構築 次のコマンドで構築できます。

    Typeorm の Distinct を伴うクエリとパフォーマンス
  • ホームページ- EY-Office

    昨年くらいからRemixというReactベースのフレームワークが話題になってきています。日語の記事もあったので読んでみましたがRemixの素晴らしさが理解できませんでした。ところが最近Remix公式ページのブログData Flow in Remixを読んでビックリました! このビックリ感は、17年前にRuby on Railsのコードを見たときに似ています。Ruby on Rails同様にコードが圧倒的に少ないのです! Remix Blog “Data Flow in Remix” より Data Flow in Remixブログのざっくりした解説 Remix公式ページのブログData Flow in Remixを読んでもらうのが良いのですが、ざっくりと内容を知りたい方向けに、ざっくりとした解説を書きます。 1. Action→State→View ReactVueのようなフロントエン

    ホームページ- EY-Office
  • フルスタックなTypeScript環境 (Blitz.js) でDDDする

    はじめまして。 株式会社digsasでCPOを務める森勝と申します。 当社は「変遷するビジネスに、IT投資のモノサシを」作る、というミッションを元に、IT投資におけるユーザー企業の導入設計力を向上させるためのプロダクトを開発しています。 Tech系の情報発信自体もzennに投稿するのもルーキーですが、表題のような構成をあまり見かけないので、静的型付けブームに則ってどなたかの参考になればと思い筆を取りました。 以前noteに書いてみたのがこちら 筆者プロフィール DTMer ネトゲ廃人 フリーでWEBマーケ&WEBデザインの提案・実務 UI/UX設計 → JSドハマリ システム開発会社立ち上げ 企業研修・スクール講師(Markup/PS/AI/Figma/jQuery/Webpackあたり) JSゲームエンジン開発(趣味) 開発会社Exit IoTスタートアップにジョイン(ハード/ソフト/イ

    フルスタックなTypeScript環境 (Blitz.js) でDDDする
  • Webの将来はサーバサイドレンダリング(SSR)に回帰していく。Denoが主張するIsomorphic JavaScript(もしくはUniversal JavaScript)とは何か?

    Webの将来はサーバサイドレンダリング(SSR)に回帰していく。Denoが主張するIsomorphic JavaScript(もしくはUniversal JavaScript)とは何か? 静的なHTMLファイルをWebサーバが配信する仕組みから始まったWebは、サーバ側で動的にHTMLを生成するCGIの仕組みや、Webブラウザ上でJavaScriptを実行してインタラクティブな操作を実現するなどの仕組みを得たことでWebアプリケーション基盤へと発展しています。 現在、Webアプリケーションの仕組みとして代表的なものがSPA(Single Page Application)でしょう。 SPAはWebブラウザ上で多くの処理が行われるためユーザーの操作に対する反応が速く、インタラクティブ性の高い快適なWebアプリケーションを実現できる利点があります。 しかし、これからのWebはサーバサイドレンダ

    Webの将来はサーバサイドレンダリング(SSR)に回帰していく。Denoが主張するIsomorphic JavaScript(もしくはUniversal JavaScript)とは何か?
  • 『オブザーバビリティ・エンジニアリング』で学ぶ”既知の未知”と、”未知の未知”との付き合い方 - Magnolia Tech

    2023/2/4 書名のコピペをミスって間違っていました…直しました すいません>各位 オブザーバビリティ・エンジニアリング 作者:Charity Majors,Liz Fong-Jones,George MirandaオライリージャパンAmazon オブザーバビリティィィィィィイ!!!!! なんか必殺技の名前っぽいですよね、オブザーバビリティ。 リング状のエネルギーが放出されて、回転しながら相手を切り刻むイメージです。 そんなことはサテオキ この現代、バラバラに設計された、断片的な情報しか教えてくれないアプリケーションログと、よく分からない閾値に基づいた監視メトリクスと、設計意図の分からないダッシュボードと、運用メンバの経験と勘で運用するのは限界があるよなーというのは、全システム運用者の共通の課題認識ではないでしょうか。 そんな課題へのヒントがあればなーと思って、『オブザーバビリティ・エ

    『オブザーバビリティ・エンジニアリング』で学ぶ”既知の未知”と、”未知の未知”との付き合い方 - Magnolia Tech
  • [TypeScript] satisfies のつかいかた - Programming Field

    TypeScript 4.9 で導入された satisfies 演算子の使い方を紹介しています。 0. satisfies について 1. より安全に型を与える (Safe upcast) 2. オブジェクトリテラルの型をチェックする (一時変数が不要に) 3. オブジェクトの型を広げずに型チェックする (as const と組み合わせるなど) 4. 型ガードによる分岐などで念のため型チェックする まとめ 0. satisfies について satisfies 演算子は、「型を変えることなく型チェックを行う」演算子です。その構文(SatisfiesExpression)は以下の通りです。(参考: TS 4.9.4 のソースコード) expression satisfies type 「expression」に値を計算する式など、「type」に型(型参照)を指定します。「expression

    [TypeScript] satisfies のつかいかた - Programming Field
  • ユースケースシナリオを中心に据えたドメインモデルの育て方 - 男爵が書く

    この記事はドメイン駆動設計 Advent Calendar 2020 - Qiitaの19日目です。 昨日はたなかこういち (@Tanaka9230) | Twitterさんの『DDDに関する論の主戦軸を整理してみた(2020年版) - Qiita』でした。 今日はドメイン駆動設計における主要な関心事の一つである「いかにドメインモデルを作って、育てていくか」という話を書きたいと思います。 エリック・エヴァンスの『ドメイン駆動設計』やヴォーン・ヴァーノンの『実践ドメイン駆動設計』には、ソフトウェアが扱う問題領域に存在する知識やルールをソフトウェアの要素(クラスなど)で直接表現することの価値とその実践方法が書かれています。ドメインモデルは問題領域に対する理解を表現したものであり、まずこれがなければドメイン駆動設計のプラクティスは実践できません。では開発チームがドメインモデルに到達するためのプラ

    ユースケースシナリオを中心に据えたドメインモデルの育て方 - 男爵が書く
  • 「実践ドメイン駆動設計」から学ぶDDDの実装入門の読了メモ – rinoguchi's techlog

    値オブジェクト or Stringやプリミティブ型 Stringやプリミティブ型の不都合 オブジェクト自身が複数のプロパティを組合せ管理できない 例えば、氏名とふりがなを同時に持てないし、姓と名を別々で管理することもできない オブジェクト自体が特別な振る舞いを持つことができない 例えば、郵便番号から都道府県を取得する振る舞いを持たせることもできない オブジェクトが自分自身の不変条件を定義できない 結果として処理開始時点のバリデーションに全て頼る形になり、どこかで値が変更されてないかを気にしながら利用する必要がある 例えば、電話番号は「数値」と「-」を含む10〜11桁の文字列という不変条件を担保したい 値オブジェクトは上記の不都合を解決できる なので上記のようなケースでは、値オブジェクトを利用すると良さそう とはいえ「3.」のケースを言い出すとなんでも値オブジェクトにしなくてはいけない気がす

  • There's An AI For That - Discover The Newest And Best AI Tools

    #1 AI aggregator. Updated daily.Used by 20M+ humans.

    There's An AI For That - Discover The Newest And Best AI Tools
  • データベースドキュメント生成コマンド tbls 更新情報(Mermaid対応 / schema.json / tbls outの強化) - Copy/Cut/Paste/Hatena

    久しぶりのtblsの新機能紹介エントリです。 ドキュメントのER図出力にMermaidを指定できるようになりました ER図の出力フォーマットにMermaidを指定できるようになりました。次のように er.format: セクションか --er-format オプションに mermaid を指定することで変更できます。 er: format: mermaid 開発裏話 GitHubMermaid対応したことで「tblsもMermaid対応してほしい」という要望や提案は以前より多く受け取っていました。 しかし、個人的にあまりメリットを見出せずそのままPull Request待ちとなっていたのですが、今回エイッと作ってみました。 Mermaid対応をするにあたって1つとても面倒な仕様がありました。それはMermaidはER図の多重度(カーディナリティ)の指定が必須となっていることでした。 もと

    データベースドキュメント生成コマンド tbls 更新情報(Mermaid対応 / schema.json / tbls outの強化) - Copy/Cut/Paste/Hatena
  • 『実践ドメイン駆動設計』に基づいてTypeScriptで設計した話 - Qiita

    はじめに 仕事で洋服の物流システムを作ることになり、プロジェクトチームでDDDで設計しようということになりました。 諸々の事情でNestJSというTypeScriptのフレームワークを使うことになりました。 そんな中で出てきた悩みを紹介します。ちなみにこのシステムは開発中です。 作ろうとしている物 ECサービスの物流システム。 機能としては大きく3つです。 在庫管理: 倉庫の在庫を管理する 入荷: 新しい在庫を入荷して、在庫として登録する 出荷: ユーザーから出荷依頼を受けて出荷する これらの機能を提供するWebアプリケーションを作ることになりました。 更新系についてはDDD 取得系に関してはCQRSの考えで、queryModelを使う(ドメインモデルは使わない) 技術選定 サーバサイド: NestJS ORM: TypeORM DB: MySQL フロントエンド: React, Flut

    『実践ドメイン駆動設計』に基づいてTypeScriptで設計した話 - Qiita
  • 「Obsidian」でノートを作るときの考え方とは? ~デイリーノートの活用と、PKMとしてのノート術 | gihyo.jp

    ノートアプリ「Obsidian」を使いこなす 「Obsidian」でノートを作るときの考え方とは? ~デイリーノートの活用と、PKMとしてのノート術 前回までの記事で、Obsidianの基的な設定は完了しています。あとは、ノートを自分の好きなようにMarkdownで書いていけばよいのです。 しかし、ノートを書くといっても、何から手をつければよいのかわからない人が多いでしょう。 ノートの書き方は人によって違ってよいのですが、先人が残してくれた知恵がいくつか公開されています。その方法と合わせて、私がノートを作るときの考え方を紹介します。 デイリーノートを使う Obsidianではじめてノートを作成する人に対して、私がおすすめしているのは前回の記事で紹介したコアプラグインの「デイリーノート」を使う方法です。 デイリーノートとは、名前の通り毎日のノートのことです。初期設定のままで設定を変更してい

    「Obsidian」でノートを作るときの考え方とは? ~デイリーノートの活用と、PKMとしてのノート術 | gihyo.jp
  • 実践! Typescript で DDD - マイクロサービス設計のすすめ - Leverages Tech Blog

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

    実践! Typescript で DDD - マイクロサービス設計のすすめ - Leverages Tech Blog
  • Slack - Qiita

    Slack Slack は必要なメンバーから情報、ツールまで一元化するメッセージプラットフォームと、そのアプリ開発用プラットフォームを提供しています。

    Slack - Qiita
  • Slackアプリ開発を始めるときに全人類が知っておくべきこと | Wantedly Engineer Blog

    こんにちは! Wantedly で Web エンジニアをしている木村(@hachiblog)です。8月にβ版をリリースした、コンディション・マネジメントサービスのWantedly Pulseを開発しています。 Pulse は毎週の調子を記録する機能や、社内のメンバーを称賛できる機能を提供していますが、そのほとんどを Slack アプリ内で実現しています Pulse(パルス)/ チームの状態 Slackを通じてチームの価値観を浸透させ、メンバーの抱える課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出す、新しいモチベーション・マネージメントツールです。 Slackを通じてメンバーの抱えるモチベーションの課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出します。 ... その他にも Wantedly Visit で募集に応

    Slackアプリ開発を始めるときに全人類が知っておくべきこと | Wantedly Engineer Blog
  • エンジニアのための「Notion」入門

    株式会社SODAの社内勉強会で使用した資料です こちらは株式会社SODAのエンジニア社内勉強会にて @decoch が発表したときの資料です。 株式会社SODAについては以下リンクなどをご覧ください。 これはなに? いま流行りの Notion を使っている方は多いと思うのですが、いまいち使いこなせていない、メモ帳としては使っているけどデータベースってなに? というエンジニアの方向けに Notion の使い方を書いた入門記事です。 Notion とは notion.so からお借りしました ドキュメントやテーブルだけでなく望み通りに機能するようにカスタマイズできるワークスペースです。 基的な使い方 新しくページを作りメモをとったりチェックボックスでタスクを管理したり、Markdown のように使うことができます。 / と打つことでサジェストされ /page と入力し決定をすると新しいページ

    エンジニアのための「Notion」入門
  • AIでユニットテストを自動生成。リファクタリング、ドキュメントの生成、バグの検出なども行う「Refraction」登場

    AIでユニットテストを自動生成。リファクタリング、ドキュメントの生成、バグの検出なども行う「Refraction」登場 ChatGPTに代表される自然言語やプログラミング言語のコードを理解するAIを用いてコーディングの支援を行うツールがまた新たに登場しました。 Refractionは、示されたコードから自動的にユニットテストを生成するほか、コードのリファクタリング、ドキュメントの生成、バグの検出などを行います。 Updates! https://t.co/9otFTI7nh0 is now https://t.co/MtN5JgnetI. Building out many utilities. You can... Generate unit tests Generate inline documentation Refactor your code Added a $5 / month

    AIでユニットテストを自動生成。リファクタリング、ドキュメントの生成、バグの検出なども行う「Refraction」登場