タグ

j5ik2oのブックマーク (3,843)

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

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

    ドメイン駆動設計を導入するために転職して最初の3ヶ月でやったこと[DDD] - little hands' lab
    j5ik2o
    j5ik2o 2020/12/23
    設計改善の治具としてのテスト重要。他にもDDDとTDDの関連は"意図の明白なインタフェース"にある。TDDのように利用者の視点で設計を考え"意図の明白なインタフェース"を目指すことでモジュール性を高めることができる
  • DDD のパターンを Rust で表現する ~ Entity 編 ~ - CADDi Tech Blog

    こんにちは。CADDi でバックエンドエンジニアをしている @kuwana-kb です。 この記事は CADDi Advent Calendar 12日目の記事です。昨日は、山下さんによる GitOpsの概要と実践例 〜Kustomize + CircleCI編〜 でした! 日は「DDD のパターンを Rust で表現する ~ Entity 編 ~」と題しまして、 Rust で DDD のパターンを表現してみたいと思います。 目次 [toc] はじめに DDDとは、 Domain-Driven Design(ドメイン駆動設計)の略です。アプリケーションの扱う業務領域に焦点をあてた設計手法であり、エリック・エヴァンスが提唱しました。詳細については、以下の記事で紹介していますので、そちらをご覧ください。 DDDのパターンをRustで表現する ~ Value Object編 ~ また、今回の記

    DDD のパターンを Rust で表現する ~ Entity 編 ~ - CADDi Tech Blog
    j5ik2o
    j5ik2o 2020/12/20
    今時はエンティティでも不変にするが常識だと思うんですが、Rustの場合は安全に扱えるので許容される感じ? or 積極的に利用すべきではない?その判断基準は何だろうか
  • 単一責任原則で無責任な多目的クラスを爆殺する - Qiita

    この記事は クラウドワークスアドベントカレンダー2020 8日目の記事です。 概要 こんにちは、クソコードを爆殺リファクタリングするのが大好きなミノ駆動です。 今回は単一責任原則の話です。 単一責任原則はSOLID原則のひとつとして有名で、2020年のオブジェクト指向カンファレンスのアンケートでも、SOLID原則の中で最も人気がありました。 皆さんは単一責任原則を遵守した設計をしていますか。 どんな構造が単一責任設計で、一方どんな構造が単一責任でない設計か、明確に意識していますか。説明できますでしょうか。 ところで「単一責任原則とはなんぞや」について、少なくとも私の観測範囲では、概念的な話にとどまっているものが多く、コードレベルで具体的に説明しているものは少ないように感じます。 そうした状況からか、単一責任原則の解釈が人によって違っていたりしているように感じます。 記事は、今一度単一責任

    単一責任原則で無責任な多目的クラスを爆殺する - Qiita
  • Scala の開発環境構築 2021 - たにしきんぐダム

    特に意味はないけどおしゃれかなと思って貼ったスクショ Scala Advent Calendar 2020 - Qiita 3日目です ここ2,3年の間にScalaの開発ツールチェーンは進化を続けていて、Scalaの開発体験はめちゃくちゃ良くなってきています。例えば、数年前だと IDEは基的にIntelliJ一択、vimとかemacsで開発環境作れなくもないけどかなり大変 IntelliJの型チェックがうまく行かなくて、ちょっと複雑なコード書くとコンパイルは通るのに画面が真っ赤になる コンパイルが遅い(インクリメンタルビルドしても遅い) という感じだったのですが、現状はかなり改善されていて IntelliJ 以外にも metals という Language Server がかなり使いやすくなっていてあらゆるエディタで簡単にScalaを書けるようになった IntelliJ も metals

    Scala の開発環境構築 2021 - たにしきんぐダム
    j5ik2o
    j5ik2o 2020/12/03
    以前に比べると かなり使い勝手よくなってますね!
  • 経験5年のHaskellユーザがScalaを仕事で半年使ってみた

    haskell-scala-java ちょっと前までScalaを書いていたので、 Haskell好きな人がScalaを書いた感想を書きます。 タイトルは経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blogの模倣です。 あくまで1ユーザの感想です。 Scalaに慣れてしまうと違和感を忘れてしまうと思ったので、当時箇条書きで雑にメモしていたものを参照して書いています。 逆にScala使いがHaskellを知るメモに役立つかもしれません。 Haskell歴 when: 2013年から知って学び始めましたが、格的に使い始めたのは2015年からで、5年ほど使っています where: どの言語を使っても良くて新しい言語を学ぶ必要がなければ基的にHaskellを使っています what: 趣味OSSプロジェクトの大半 現在一番スターもらっ

    経験5年のHaskellユーザがScalaを仕事で半年使ってみた
    j5ik2o
    j5ik2o 2020/11/20
    “私がScalaを書いていて苛つくことの9割はJavaが原因の問題でした。” これはわかる
  • Smart UI パターンが再評価される世界 - id:onk のはてなブログ

    設計ナイト2020 を受けて、今どんなアーキテクチャを選ぶべきかという話をしたくなったのだ。 kichijojipm.connpass.com 設計ナイトで高ぶった結果1時間コースの発表資料が完成したので供養場所を探しています。聞いてくれ!!!— Takafumi ONAKA (@onk) 2020年11月1日 お前誰よ 2000年代前半に SI 2000年代後半にブログ、SNS 2010年代にソーシャルゲーム 2020年代に UGC サービス をやってきた人間。数百万〜数億行のデータ、月間数千万〜数十億 imp 程度を主戦場にしています。 今日の話 DDD と PofEAA から学ぶパターン/アンチパターン Rails によって発見された、密結合で速く走れるソフトウェア 今求められているアーキテクチャ 昂ぶって 15,000 字ぐらい書いてしまった。 DDD と PofEAA から学ぶパ

    Smart UI パターンが再評価される世界 - id:onk のはてなブログ
    j5ik2o
    j5ik2o 2020/11/11
    これ是非どこかで話聞きたいねー。たぶん、DDDの集約パターンをこの議論に含めると、いろいろと面白くなるんではないかと思われる。個人的にはCQRSのC側では集約が、Q側ではSmart-UIが必要と認識している
  • Google、VSCodeの代替を狙う「Eclipse Theia」コードエディタをクラウド統合開発環境として採用。Google Cloud Shellに統合を発表

    GoogleVSCodeの代替を狙う「Eclipse Theia」コードエディタをクラウド統合開発環境として採用。Google Cloud Shellに統合を発表 Googleは、Google Cloudをコマンドラインで操作できる「Cloud Shell」の機能の新機能として、プログラミングのためのコードエディタ「Cloud Shell Editor」を統合すると発表しました。 Cloud Shell EditorはWebブラウザ上で動作するコードエディタです。GoJava、.NETPython、Node.jsなどのプログラミングに対応。 すでにプレビュー版として利用可能。下記は実際に起動した画面です。 見てわかる通り、まるでVisual Studio Codeの画面そっくりです。 これはCloud Shell Editorに採用されたコードエディタ「Eclipse Theia」が

    Google、VSCodeの代替を狙う「Eclipse Theia」コードエディタをクラウド統合開発環境として採用。Google Cloud Shellに統合を発表
    j5ik2o
    j5ik2o 2020/11/10
    “Eclipse Theia”はVS Codeの拡張使える仕様だったはず。まともに使えて軽快ならよさそう。
  • 1000万件オーバーのレコードのデータをカジュアルに扱うための心構え - joker1007’s diary

    自分が所属している会社のメンバーの教育用資料として、それなりの規模のデータを扱う時に前提として意識しておかなければいけないことをざっくりまとめたので、弊社特有の話は除外して公開用に整理してみました。 大規模データ処理、分散処理に慣れている人にとっては今更改めて言うことじゃないだろ、みたいな話ばかりだと思いますが、急激にデータスケールが増大してしまったりすると環境に開発者の意識が追い付かないこともあるかと思います。 そういったケースで参考にできるかもしれません。 弊社は基的にAWSによって運用されているので、AWSを前提にした様なキーワードやサービス名が出てきます。後、句読点があったり無かったりしますが、ご容赦ください。 追記: 社内用の資料の編集なのでかなりハイコンテキストな内容だから誤解するかもしれませんが、これらはそもそもRDBの話ではありません。(関係無くは無いけど) 1000万オ

    1000万件オーバーのレコードのデータをカジュアルに扱うための心構え - joker1007’s diary
    j5ik2o
    j5ik2o 2020/11/05
    At Least Onceにするためにリトライするとしても、リトライ中に当該システムが消失したらリトライが継続できないので、ストレージが必要になるので結構難しい。原理を把握したうえで素直にKafkaなどを使おう
  • 技術系の境界線 | La Verda Luno

    これは 設計ナイト2020 の感想記事です。 CQRS と GraphQL の話が主な話題でしたが、ディスカッションなどで示唆に富む話を聞けたので、(レポートというよりも)考えたことを書き残しておきます。 発表内容についてはあまり書きませんが、すでに 設計ナイト2020感想 - Qiita と 設計ナイト2020に参加してきました。 | achanBlog という記事があります。 Q&A やディスカッションについても #sekkeinight 付きのツイートを見ると、何が交わされたか把握できると思います。 コンテキスト DDD・CQRS・GraphQL・アーキテクチャの進化戦略などについて深い話(触ってみたレベルでなく実運用等を経たもの)についても興味深かったのですが、サーバー再度にとっての理想的なモデルとフロントエンドの要求が衝突する境界線について考えるきっかけになりました。もしかしてサ

    技術系の境界線 | La Verda Luno
    j5ik2o
    j5ik2o 2020/11/04
    "もし CQRS の実現が簡単になればより CQRS を使える場面は増えることになりますが、これと同時に Read 系の関心の悩みも一緒に解決しやすそうに思えます。"
  • エンジニア的3ヶ月で16キロダイエット! - ytake blog

    久しぶりのブログ投稿ですが、 今回は健康的なダイエット生活についてお届けします。 8月から10月末まで、一応期間を作ってストイック気味にダイエットをしていました。 エンジニアの自分が実際にこの3ヶ月でやってきたことを記念に残しておこうと思います。 結論からいうと、 3ヶ月で16キロ減量し(84キロから68キロ)、 BMIは5マイナス(26.8から21.7)、体脂肪は7.5%ダウン(25%から17.3%)、 骨格筋率は5%アップ(33%から38%台へ)、体年齢は15歳若返る(48から33) という成果になりました。 ちなみにジムには通いませんでした。 やってしまえば気合でなんとかなる、という性格なので自宅とランニングでなんとかしました。 コロナで変わってしまった生活環境 コロナなどの影響で外出する機会が減ってしまい、 太ってしまった方、逆に痩せた方、様々な方がいると思います。 自分は去年ヘル

    エンジニア的3ヶ月で16キロダイエット! - ytake blog
  • 個人開発・スタートアップで採用すべき最強のアーキテクチャを考えた - Qiita

    結論 「アジリティ」「コスト最適化」「スモールな構成」「開発スピード」という観点でWebアプリケーションのアーキテクチャを考えてみました。 ServerlessFrameworkを使い倒す フロントエンドはS3 hosting + CloudFrontで。SSRもLambda@Edgeでできます データベースはRDSは使わずにDynamoDBAPIは基的にGraphQL。必要に応じてRESTも簡単に追加できるよ。 補足(2022/04/12) 最近個人開発しているこちらのWebサービスはこのアーキテクチャに沿って作られています。 このアーキテクチャでどんなものができるのよ、という視点で見ていただくと面白いかもしれません。 ↓ 背景 アーキテクチャに絶対の正解はない アーキテクチャには絶対の正解はありません。 なぜなら、プロダクトやフェーズによって求められる要件が異なり、それに適したア

    個人開発・スタートアップで採用すべき最強のアーキテクチャを考えた - Qiita
    j5ik2o
    j5ik2o 2020/10/30
    気持ちはわかるが無理ある。GSIの個数に限界あるしRDBと同じことできない。一般に要件の9割はRDBのクエリ。DynamoDBはスケールアウト可能な書き込みに特化したDBだよね。最強というならCQRSだよ
  • エンジニア歴1年の僕がドメイン駆動設計(DDD)を参考にLaravelのプロジェクトをフルリニューアルした話 - Hajimari Tech Blog| 株式会社Hajimari

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

    エンジニア歴1年の僕がドメイン駆動設計(DDD)を参考にLaravelのプロジェクトをフルリニューアルした話 - Hajimari Tech Blog| 株式会社Hajimari
    j5ik2o
    j5ik2o 2020/10/18
    UserDomainService#existsは素直にUserRepository#existsでよいのでは。ドメインサービスは永続化責務を持たないドメインオブジェクトの一種。その役割はドメインオブジェクトを使った関数。内部でRepositoryを呼ぶのは賛同しかねる。
  • ZOZOにおけるID基盤のk8sへのリプレイスとセキュリティの取り組み / Authentication service replacement and security efforts of zozotown(CNDT2020)

    ZOZOにおけるID基盤のk8sへのリプレイスとセキュリティの取り組み / Authentication service replacement and security efforts of zozotown(CNDT2020)

    ZOZOにおけるID基盤のk8sへのリプレイスとセキュリティの取り組み / Authentication service replacement and security efforts of zozotown(CNDT2020)
    j5ik2o
    j5ik2o 2020/09/09
  • サーバーレスにおいてどのようにDynamoDBとRDSを使い分ければ良いのか/serverless-webinar-02

    Serverless Web Hosting Strategy
For Modern Front-end Application

    サーバーレスにおいてどのようにDynamoDBとRDSを使い分ければ良いのか/serverless-webinar-02
    j5ik2o
    j5ik2o 2020/09/03
    ハイブリッド構成はCQRSですね。DynamoDBに保存したイベントをDynamoDB Streams 経由で取得し、RDSにリードモデルを構築するパターン。
  • Microservices分割大全 - kawasima

    Microserviceの分割の仕方について語られているものを収集します。 microservices.ioのサイトに載っている分割パターンは4つ。ただし「自己完結型サービス」と「チームごとのサービス」は、直交していないので大きくは「ビジネスケイパビリティでの分割」と「サブドメインでの分割」の2つ。 ビジネスケイパビリティでの分割 https://microservices.io/patterns/decomposition/decompose-by-business-capability.html 現在の業務機能にしたがってサービスを分割する。 したがって、コンウェイの法則にしたがった分割とされる。 サブドメインでの分割 https://microservices.io/patterns/decomposition/decompose-by-subdomain.html DDDのサブドメ

    Microservices分割大全 - kawasima
    j5ik2o
    j5ik2o 2020/08/27
    "データではなく振る舞いにフォーカスする"は"CUDではなくコマンドにフォーカスする"と言い換えるとCQRSが必要な理由がわかる。
  • プログラミング言語Rustのご紹介

    Zli x サイバーエージェント合同LT会にて発表した内容です。

    プログラミング言語Rustのご紹介
    j5ik2o
    j5ik2o 2020/08/23
    エコシステムの確立させるのが大変だよね…。Linux Kernelの開発に正式に採用されたりすると、それが加速するというか、そういうエポックメイキングなイベントが起きると劇的に変わりそう
  • リクルートテクノロジーズ エンジニアコース新人研修の内容を公開します!(2020年度版) | Recruit Tech Blog

    こんにちは! リクルートテクノロジーズでセキュリティエンジニアとして活動している、藤原 巧です。 毎年恒例となっており、大きな反響をいただいている、エンジニアコースの新人研修の内容を紹介させていただきます。 研修の概要 リクルートテクノロジーズでは、新卒採用の新人向けに3ヶ月間の技術研修を行っています。この技術研修では大きく分けて2つのコースが設けられています。 1. プログラミングやWebサービスの構造の基礎を体系的に学び、その後一人につき、ひとつのスマホサイトを企画からリリースまで行うコース 2. 一定以上のプログラミングスキルと開発系経験がある新人に向けた、実際の開発で必要となる様々な技術要素をより深く学び、その後実際のサービスでチーム開発にてOJTを行うコース 今回公開するのは 2. で使用した資料です。 この技術研修は、そのほとんどの部分を内製で実施しています。 この研修の最大の

    リクルートテクノロジーズ エンジニアコース新人研修の内容を公開します!(2020年度版) | Recruit Tech Blog
    j5ik2o
    j5ik2o 2020/08/22
    “事業価値とエンジニアリング”の資料にSoE/SoRやToC理論の観点が含まれてて良さそう。システムをただマイクロサービスに分割しても生産性やシナジーが得られないのがわかる
  • 「Rust Foundation」が年内にも設立。Rust言語のコアチームとMozillaが発表

    Rust言語のコアチームとMozillaは、年内にもRust言語の開発に関する独立したガバナンスを持つための財団「Rust Foundation」を設立すると発表しました。 追記:2021年2月9日に正式に設立されました(Rust言語を推進する「Rust Foundation」設立。AWSGoogle、マイクロソフト、モジラ、ファーウェイらが設立メンバー) Rust言語は、C言語のように低レベルのシステム開発向けに作られたプログラミング言語です。 不正なメモリ領域を指すポインターなどを許容しない安全なメモリ管理や、マルチスレッド実行においてデータ競合を排除した高い並列性を実現している点などの特長を備えているため、安全かつ高速なアプリケーション開発を実現します。 Mozillaの新型高速ブラウザエンジンの「Servo」の開発などに使われていることが知られています。 2020年6月に発表され

    「Rust Foundation」が年内にも設立。Rust言語のコアチームとMozillaが発表
    j5ik2o
    j5ik2o 2020/08/21
  • エンジニアの表現には気をつけろ!【エンジニアの意図と非エンジニアの解釈にはギャップがある】

    こんなのがありますよね。 みなさんはどう思いましたか? エンジニアは、当にコミュニケーションが下手だなぁ。 と思いましたか? わたしは、この状況は、よくあることだなぁ。と思いました。 エンジニアは気分屋でもなければやる気がないわけじゃない 一般的に、エンジニアは『気分屋』だと思っている人が多いです。 そしてコミュニケーションが下手だと、勝手に決めつけている傾向がありますよね。 これは、日頃からよく感じていました。 でも違うんです。 エンジニアは気分屋ではなく、ロジック的に伝えようと思って、こういう表現を使うんです。 先ほどの表でいう、『この方法はやりたくない』という表現の意図には、 『このやり方は後々問題が起こりそうだから、この方法は避けた方が良いです。』 というのを省略しているだけなんですよね。 決して、嫌がっているわけではなく、 先を見据えているからこそ、こういう表現になってしまうの

    エンジニアの表現には気をつけろ!【エンジニアの意図と非エンジニアの解釈にはギャップがある】
    j5ik2o
    j5ik2o 2020/08/20
    お互いに共有するモデルがないとこうなるし、ドメインモデルが必要なのはこういうコミュニケーション。
  • 100万件ぐらいのレコードを扱ったらOOMEが出た話。 - 谷本 心 in せろ部屋

    要約 技術的な話だけ教えて、という方のために先に結論だけ書いておきますと、PostgreSQLはクエリを実行した時点で全レコードの情報を一気に読んできてヒープを埋めてしまう場合がある、ということ話です。 たとえば、ResultSet#nextメソッドを使いながら処理を回すようなコードを書いて、少ないヒープでも処理できるようにするのは常套手段だと思いますが、そういうコードを書いていても一気にヒープを消費してしまうことがあるのです。詳しくはこのドキュメントを見てください。 https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor ことの発端 ちょっと仕事Java + jOOQ + PostgreSQLで、DBのデータを集計するようなバッチ処理を書いてまして、もちろん俺様の書いたコードにバグなんてある

    100万件ぐらいのレコードを扱ったらOOMEが出た話。 - 谷本 心 in せろ部屋
    j5ik2o
    j5ik2o 2020/08/13
    挙動としてはバグっぽいけどどうなんだろう。一般に仕様にそういう余計なことはするなって書いてないてないと、バグと言い切れないのよね…。仕様未定義の問題。厄介ですね…。