並び順

ブックマーク数

期間指定

  • から
  • まで

241 - 280 件 / 459件

新着順 人気順

"Clean Architecture"の検索結果241 - 280 件 / 459件

  • Laravelとオブジェクト指向とクリーンアーキテクチャについて理解を深めてみた。 - Qiita

    【追記(2020/06/08)】 本投稿に頂いたコメントを基に加筆しました。以下に挙げた項目に対して加筆し、加筆した部分は【追記】と記載しています。 View Presenter / View Model 【追記(2020/05/31)】 同期の子から貰ったコメントを基に加筆しました。以下に挙げた項目に対して加筆し、加筆した部分は【追記】と記載しています。 SOLID原則 Form Request 新卒研修で「Laravelを使ってアプリケーションを自分で作ってみよう。」という趣旨のコーナーがあり、同期がやっていることを真似てClean Architectureを導入してみるも、無事、爆死することに成功しました。この投稿は、爆死するまでに得た知見についてまとめたものです。 この記事を読むことで得られる知見 投稿の要旨を載せておきます。 MVCアーキテクチャに愚直に沿うと、Fat Contr

      Laravelとオブジェクト指向とクリーンアーキテクチャについて理解を深めてみた。 - Qiita
    • フロントエンドの複雑さに立ち向かう 〜DDDとClean Architectureを携えて〜 | さくらのナレッジ

      自己紹介 さくらインターネットではシニアフロントエンドエンジニアをやっています。代表作は「NES.css」というファミコン風CSSフレームワークで、エイプリルフールには「さくらのINFRA WARS」というゲームの企画開発をしていました。 話さないこと 本記事ではソフトウェア設計ということで、以下の設計・アーキテクチャに関しては話す予定はありません。コンポーネント設計や CSS 設計に関しては過去に記事やスライドを公開していますので、気になる方はそちらを参考にしていただければと思います。 コンポーネント設計 加速するコンポーネント設計入門 / Component Design as an Accelerator コンポーネント指向時代のmargin戦略 / Rethinking the relationship between Components and Margins CSS設計 OO

        フロントエンドの複雑さに立ち向かう 〜DDDとClean Architectureを携えて〜 | さくらのナレッジ
      • iOSアプリにおけるアーキテクチャの現状とSwiftUI + Swift Concurrencyへの移行の展望 - ウェルスナビ開発者ブログ

        はじめに こんにちは、iOSエンジニアの牟田です。 2019年に登場し界隈を賑わせたSwiftUIも3歳になり徐々に業務でも扱いやすくなってきていますね(もちろんまだまだ課題は山積みですが)。 また、2021年にはSwift Concurrencyの登場により非同期処理のパラダイムシフトが起こりました。 ウェルスナビでも重い腰を上げてSwiftUIとSwift Concurrencyをベースとした設計の検討を始め、ようやくその目処が立ったので共有します。 現状のアーキテクチャ ウェルスナビでは初期リリースから5年以上経過しており、その間に追加された時期によって画面のアーキテクチャがバラバラ(ある画面ではMVP、別の画面ではMVVM、またある画面ではClean Architecture etc...)という課題がありました。 そこで複数実装されていたアーキテクチャの中から最も相性の良かったS

          iOSアプリにおけるアーキテクチャの現状とSwiftUI + Swift Concurrencyへの移行の展望 - ウェルスナビ開発者ブログ
        • GoでCRUDアプリをMysql、GORM、Echo、Clean Architectureで作る - Qiita

          目次 Clean Architectureとは Clean Architectureというと、以下の図が大変有名です。 Clean Architectureの目的は関心の分離で、 これを達成するために意識すべきことが各レイヤーの依存性です。 関心の分離によりコードの可読性が向上したり、変化に強い設計になります。 この辺のメリットやClean Architectureの詳細に関しては参考記事に載っていますのでそちら参照ください。 上記の図では、円の外側から内側に向かって矢印が向けられていますが、これが依存の向きで、 外側から内側への依存は可能ですが、内側から外側は不可能です。 言い方を変えると、内側で宣言したモノを外側から呼ぶことはできますが、外側で宣言したモノを内側から呼ぶことはできないという話です。 この記事では依存の向きに注意しながら コードを紹介していきます。 各機能に関して 各機能

            GoでCRUDアプリをMysql、GORM、Echo、Clean Architectureで作る - Qiita
          • 2022年版実践WPF業務アプリケーションのアーキテクチャ【設計編/前編】 ~ドメイン駆動設計&Clean Architectureとともに~

            前回の「2022年版実践WPF業務アプリケーションのアーキテクチャ【見積編】~ドメイン駆動設計&Clean Architectureとともに~」では、見積時に考慮が必要なアプリケーションアーキテクチャの着眼点や、その具体的な検討内容について記載しました。今回はいよいよ「設計編 機能要件の実現」ということで、見積が承認され、開発が開始して以降のフェーズに入ります。開発が開始して以降、アーキテクチャに対して影響を与える要件として「機能要件」と「非機能要件」の2つがあります。これら2つの要件からはじまって、アーキテクチャを設計していくひとつの方法をお伝えします。 前提条件 本稿はWPFアプリケーションのアーキテクチャ設計について記載したものです。見積編を前提に記載しているので、まだ未読であればそちらからお読みください。 本稿にはサーバーサイドの設計も一部含まれていますが、見積編にも記載した通り、

              2022年版実践WPF業務アプリケーションのアーキテクチャ【設計編/前編】 ~ドメイン駆動設計&Clean Architectureとともに~
            • extensible effects でやっていくドメインロジック記述 - Qiita

              自己紹介 亀岡 亮太 (Ryota Kameoka) 株式会社HERP リードエンジニア Twitter @ryotakameoka GitHub @ryota-ka ToC ドメインロジックとは なぜドメインロジック記述が重要か? extensible effects ドメインロジックの記述 ドメインロジックの実行 ドメインロジックのテスト 注意事項 スライドのコードはかなり端折ってます 実際の実装は GitHub をご覧ください ToC ドメインロジックとは なぜドメインロジック記述が重要か? extensible effects ドメインロジックの記述 ドメインロジックの実行 ドメインロジックのテスト ドメインロジックとは コドメインロジックの双対 ドメインロジックとは コドメインロジックの双対 ビジネスロジックとも呼ばれる In computer software, busines

                extensible effects でやっていくドメインロジック記述 - Qiita
              • DDD開眼した - たまめも(tech)

                新しいパラダイムを自身にインストールするときは、なんであれ少なからずブレイクスルーのような瞬間があると思うけど、今回はかなりのアハ体験を得たので拙いながらも書き記しておこうと思う。 まず読んだ本を雑にまとめたうえで、LL脳な自分が感じた壁とそれがどう取り除かれたかを書き散らかしていく。完全に自分向けのメモなので例とかコードとか置いてないけど、少しでも雰囲気が残せたら嬉しい。 なおご多分に漏れず肥大化したモノリスコードベースの分割したさがこれらのモチベーションの源泉で、モジュール化のアプローチと真逆に位置するRoRでなんとか責務を分解しようとした七転八倒*1の結果得た開眼なので、正攻法な理解ではないかも。 読んだ本 クリーンアーキテクチャ Clean Architecture 達人に学ぶソフトウェアの構造と設計【委託】 - 達人出版会 前半はSOLID原則とデザインパターンのおさらい、後半は

                  DDD開眼した - たまめも(tech)
                • React hooks対応のReact ReduxはどこでuseSelector、useDispatchするのか

                  React hooks対応のReact ReduxはどこでuseSelector、useDispatchするのか ※試行錯誤の最中で下記は解説ではなくメモ書きに近いです React で Redux を使用するときは、Redux store と connect するための component を使うのが一般的でした。よく見る mapStateToProps と mapDispatchToProps がある風景です。 import { connect } from "react-redux"; import Counter from "../components/Counter"; const mapStateToProps = (state, ownProps) => { return { // 省略 }; }; const mapDispatchToProps = (dispatch, o

                  • 業務で採用してみたいiOSアプリのアーキテクチャと技術

                    はじめに こんにちは、初めまして、iOSアプリエンジニアのtasaiです。この記事は リクルートライフスタイル Advent Calendar 2019 19日目の記事です。私は入社したばかりなので業務で使っている技術についてではなく、業務で採用してみたいiOSアプリのアーキテクチャと技術についてご紹介します。 前提 業務でMVVMでのアプリリニューアルやVIPERでのリアーキテクチャをしてきた経験をもとに、クロスプラットフォーム技術の採用を視野に入れて検討した内容となります。 解決したい課題 モバイルアプリの開発において継続的に改善を行うようなプロダクトでは、以下のような課題があるのは珍しいことではないかと思います。 長年の運用で溜まっていた技術的負債 ユニットテスト/UIテストコードが書きづらい責務分割 そもそも設計方針が決まっていなかったり、複数のアーキテクチャを抱えたりしている A

                      業務で採用してみたいiOSアプリのアーキテクチャと技術
                    • #チケット料金モデリング でDDD+Clean Architectureする - Qiita

                      漢なら黙ってコードホトトギス TL; DR. 世は戦乱。 #チケット料金モデリング というハッシュタグにてアプリケーション設計を営みとする猛者たちに火蓋が切り落とされました。ワイも参戦すべく張り切っていったのですが、女子高生の無駄遣いを見たり女子高生の無駄遣いを見たり、女子高生の無駄遣いを見たり、iPad Proを買いに行っていたら2週間くらい経っていました。 さすがにこれでちょっとしたコードを晒すだけなのはアレなので、どうせならドメインモデリングだけにとどまらず、簡単なcliっぽい形にしてクリーンアーキテクチャを実現してみることにしました。言うならば 実践クリーンアーキテクチャチケット料金モデリングといったところでしょうか(ただ単に大きな話題に乗っかっただけともいう)。お題を提供してもらったかとじゅんさんに多謝です。 github repository サンプルコードだけ先に見せろよ、ま

                        #チケット料金モデリング でDDD+Clean Architectureする - Qiita
                      • 「Controller にビジネスロジックを書くな」の対応パターン - Qiita

                        はじめに 「Controller にビジネスロジックを書くな」と言われることがしばしばあると思います。 この記事では、そもそもそれは何がいけないのか、どうすればいいのかを整理しました。 具体的なコードまでは書いていないですが、各ケースを図で表現して、できるだけ分かりやすいようにまとめました。 「Controller に全部書く」とはどんな状態か 「Controller にビジネスロジックを書くな」の対応の前に、「Controller に全部書く」という状態について整理しようと思います。 この記事で言う「Controller に全部書く」状態とは、MVC を使っていて、Model クラスがデータの入れ物 (多くの場合、DB スキーマとほぼ一致) で、Service クラスが存在せず、プログラムの処理が全て Controller に書かれている状態です。 イメージとしては、以下の図のような状態

                          「Controller にビジネスロジックを書くな」の対応パターン - Qiita
                        • Software Architecture - DDD と アーキテクチャ にまつわるエトセトラ - Qiita

                          要約 / inb4 tl;dr DDD(ドメイン駆動設計)について調べ始めたら、解説記事でお腹いっぱいになった。 更に、一緒に語られるアーキテクチャも整理したい欲が出てきた。 Layered Architecture Layered Architecture with DIP (Dependency inversion principle) Hexagonal Architecture Onion Architecture Clean Architecture こういった経緯で、元になった書籍や記事をまとめてみた。 ちょっとしたまとめも書いた はじめに 『ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本』 を読んで DDD入門をしてみて、ボトムアップで作り上げるときの アーキテクチャ に興味が湧き、今後、調べていくに当たって最初に見るべきであろう情報をまとめてみました。

                            Software Architecture - DDD と アーキテクチャ にまつわるエトセトラ - Qiita
                          • TechConアプリ 2020 開発 / アーキテクチャ編 | BLOG - DeNA Engineering

                            こんにちは。オートモーティブ事業本部の大西です。 普段は、スマートタクシーの車載器デバイス向けAndroidアプリの開発をしています。 残念ながら、DeNA TechCon 2020 は、昨今の状況を鑑みて中止となりました。 今年も公式アプリを提供し、ブースにて紹介/解説を行う予定でしたので残念です。 この記事では、TechCon 2020 アプリ で採用した、Flutter アプリケーションのアーキテクチャについて紹介したいと思います。 関連記事 こちらの記事もあわせてご覧ください。 TechCon アプリ 2020 開発 / デザイン編 TechCon アプリ 2020 開発 / スタンプ編 Flutter とは Flutter is Google’s UI toolkit for building beautiful, natively compiled applications f

                              TechConアプリ 2020 開発 / アーキテクチャ編 | BLOG - DeNA Engineering
                            • GitHub - nestjs/awesome-nestjs: A curated list of awesome things related to NestJS 😎

                              ChatServer - Server side of Chat App implemented using NestJS. Domain Driven Design - Library - Example of an application that follows Domain Driven Design. Realworld Example App - Exemplary real world backend API built with NestJS + TypeORM. Mant - New Stack on the Market to beat them all 💍 MANT. REST NestJS Postgres - CrudJS implemented as a REST API, using NestJS and Postgres. Nest Permissions

                                GitHub - nestjs/awesome-nestjs: A curated list of awesome things related to NestJS 😎
                              • 新しいアンケートシステムをつくった(Goとシステム概要編) - エムスリーテックブログ

                                エムスリーエンジニアリンググループの滝安(@juntaki)です。 私のチームでは製薬会社のマーケティング支援事業として、会員向けのアンケートを行っています。つい先日、新しいアンケートシステムのIbisをリリースしました。 この記事ではシステムをつくった背景とその概要を説明します。続きの記事でチームメンバーが技術的な詳細についても説明します! アンケートのむずかしさと、Ibisをつくったわけ アンケートシステムは、かんたんに言ってしまえばフォームジェネレーターです。 ざっくりの要件としては、設定に従いアンケートの画面が動作すること、回答が適切なフォーマットで利用できること、の2点です。 ……そして、細かくは、バリデーション、回答による条件分岐などについて考慮する必要があります。また、当然それらをWebから管理できるわけです。難しく言うと、メタWebシステムといえる複雑さがあります。 すでに

                                  新しいアンケートシステムをつくった(Goとシステム概要編) - エムスリーテックブログ
                                • やさしいクリーンアーキテクチャ

                                  SREホールディングス株式会社の松本です。 プロダクトはリリースしてからが始まりで開発し続けることが当たり前の時代、ソフトウェアは変更や拡張に強く設計しなければなりません。クリーンアーキテクチャはそんな設計を実現する方法の1つですが、名前は聞いたことはあるけど実践したことはない、なんだか複雑で難しそう、という印象を持っている人が多いのではないでしょうか。 クリーンアーキテクチャを詳細に説明している記事は数多くありますので、本記事ではクリーンアーキテクチャを触ったことがない方に良さが伝わるように、やさしく噛み砕いて説明してみようと思います。 対象読者 クリーンアーキテクチャをこれから学びたい方 クリーンアーキテクチャとは 機能を実現しているコアな部分をフレームワークやDBなどに依存しない状態(関心事の分離)にすることで、他が変わってもコアな部分への影響をなくし、変更や拡張に強くすることができ

                                    やさしいクリーンアーキテクチャ
                                  • 個人開発アプリとそのUIデザイン

                                    はじめに 本記事は現在筆者が制作しているアプリ(プロトタイプ)の概要とともにそのUI設計の考え方について書いたものです。 特にUIの設計について考え方を述べた部分はUI設計初心者の方にとって役立つ可能性があります。例えば(デザイン文脈での)「アフォーダンス」「シグニファイア」などという語を聞いたことがない方は多くの新しい知見が手に入るかもしれません。 本記事に記載のあるUIの設計に関する知見は基本的に『誰のためのデザイン? 増補・改訂版 認知科学者のデザイン原論』にて学ぶことができます。筆者は本書で得た知識をアプリケーションのUI設計に利用しましたが、本書ではプロダクトデザイン一般について述べられており得られる知見の適用範囲はかなり広く、さまざまな場面で役に立つと考えられます。「これはすごい!」と思わずハッとするようなデザインから「なんでそんな馬鹿げたデザインになってしまったのか、、、」と

                                      個人開発アプリとそのUIデザイン
                                    • Go言語とClean ArchitectureでAPIサーバを構築する - Qiita

                                      Clean Architectureとは Clean Architecture(クリーンアーキテクチャ)とは,レイヤに内側と外側の関係性を持たせるアーキテクチャである. 「外側のレイヤは内側のレイヤだけに依存する」というルールを守ることによって,アプリケーションから技術を分離することが目的である. アプリケーションから技術を分離すると何が嬉しいのか ここでの「技術」とは,HTTPやcsv,MySQLなどのことを意味している. アプリケーションから技術を分離すると,技術を容易に変更できたり,テストコードを書くときに容易にモックできたりする. 例えば,出力をHTTPからcsvに変更したくなったときなどに容易に変更が可能である. 各レイヤの責務 Clean Architectureで提案されているレイヤ構造は以下の画像のようなものである. 内側から,Entitiesレイヤ,Use Casesレイ

                                        Go言語とClean ArchitectureでAPIサーバを構築する - Qiita
                                      • Rust入門日記 - 基本編

                                        とりあえず、Rustを入門するにあたって、いろいろ学んだことや、注意ポイントなどをまとめていく。 まとめ終わったら、Ruby, PHP使いが始めるRust的なBookにまとめていこうかななどと思っている。 読んでいる資料など The Rust Programming Language(日本語版) 実践Rustプログラミング入門 AtCoder と Rust で始める!競技プログラミング入門(Rust 版 APG4b) 環境 macOS Catalina IntelliJ Idea Ultimate 2020.3 + Rust Plugin 自分が業務上経験している言語など Ruby JavaScript TypeScript PHP Java Groovy 最近、メインで使っているのがRubyであるため、Ruby関連のツールとの比較やらが よく出てくるかもしれない。 目標 とりあえずの到達

                                          Rust入門日記 - 基本編
                                        • 依存関係逆転の法則とクリーンアーキテクチャ - Qiita

                                          この記事について この記事は、 弁護士ドットコム Advent Calendar 2019 - Qiita の 18 日目の記事になります。 依存関係逆転の法則 (The Dependency Inversion Principle, DIP) 以前 Eureka Tech Blogの中で、SOLID 原則の D についての 依存関係逆転の原則の重要性について - Eureka Engineering という解説がありました。依存関係逆転についてコードも交えた実例としての説明があり非常に参考になるとともに、私の周りで議論が起こりましたので、それについて考察を行った結果を記してみたいと思います。 元となった記事での解説内容を簡単にまとめますと次のようなものです。(各図は元記事から引用) 以下のような Controller Service Repository という呼び出し関係があったとしま

                                            依存関係逆転の法則とクリーンアーキテクチャ - Qiita
                                          • エンジニアリングマネージャーとしてのミッション - mtx2s’s blog

                                            ソフトウェアプロダクト開発領域を預かるエンジニアリングマネージャーとして、あなたのミッションは何であるか。そう問われれば迷わず、組織としての「プロダクト開発能力の差異化」だと答える。これはもちろん私個人の見解ではあるが、受託開発組織のマネジメントを離れ、プロダクト開発組織を主としてマネジメントするようになった10年以上前から変わらない。 「プロダクトの差異化ではなく?」と聞き返されることも多い。ユーザーやビジネスにとって価値ある優れたプロダクトやフィーチャを作り出すことはもちろん第一級のミッションだ。そうであっても、そこで得られた成功が "偶然" であるなら組織としての持続性がない。「プロダクト開発能力の差異化」とは、そういった成功に再現性を持たせることを意味する。 組織としての「プロダクト開発能力の差異化」 開発能力はデリバリパフォーマンスとして表れる 組織構造とプロセス、アーキテクチャ

                                              エンジニアリングマネージャーとしてのミッション - mtx2s’s blog
                                            • Clojure x ClojureScript で深める Web 開発 (0) - Qiita

                                              Git Repo ソースコードと原文が入ったレポジトリ https://github.com/MokkeMeguru/clj-web-dev-ja/tree/main/chap0 シリーズ Clojure x ClojureScript で深める Web 開発 (0) Clojure x ClojureScript で深める Web 開発 (1) Duct x Clean Architecture Clojure x ClojureScript で深める Web 開発 (2) 環境の構築 Clojure x ClojureScript で深める Web 開発 (3) API 作成入門 Clojure x ClojureScript で深める Web 開発 (4) Auth Clojure x ClojureScript で深める Web 開発 (5) API 開発 トランザクション添え C

                                                Clojure x ClojureScript で深める Web 開発 (0) - Qiita
                                              • レガシーなプロダクトからドメイン層を再設計する

                                                タウンワークiOSアプリは、10年以上開発が続いています。度重なる機能追加や仕様変更によって、プロダクトは徐々に複雑に、レガシーになっていきました。そのため、Clean Architectureの導入によるレガシーからの脱却を図りました。 Clean Architectureに則りドメイン層を分離してみましたが、いくつか不明な点があり、技術顧問の和田卓人氏に相談したところ、そもそも我々のモデリングにたくさんの改善点があることがわかりました。 そこから、チームの中で既存コードからドメインモデルを発掘し、再設計する旅が始まりました。 このセッションでは、ドメイン層が何をするかよくわからない、設計に困っている人に向けて、アプリにとってのドメインとは何か、どのように見つけ出し設計すればよいか、そして評価の方法について私たちの経験を交えてお話します。

                                                  レガシーなプロダクトからドメイン層を再設計する
                                                • 特別連載|4. JapanTaxi iOSアプリにRIBsアーキテクチャを導入して得られたこと | MoT Lab (GO Inc. Engineering Blog)

                                                  ※本記事は Mobility Technologies の前身である JapanTaxi 時代に公開していたもので、記事中での会社やサービスに関する記述は公開当時のものです。 この記事は、JapanTaxi Advent Calendar 2018の9日目の記事です。 はじめに2018年3月から9月までの半年間、「JapanTaxi」iOSアプリのUIリニューアルを行いました。積み重なる技術的負債と闘いながら開発を続けてきましたが、これを良い機会とし、iOSアプリの設計も一から見直すことになりました。結果として、MVVMからRIBsへアーキテクチャを変更することに成功しました。この記事では、「JapanTaxi」iOSアプリの設計方針をはじめ、RIBsとは何か、そしてRIBsを採用したことによる変化について紹介します。 設計について2018年3月、iOSチームメンバでアプリの設計について議

                                                    特別連載|4. JapanTaxi iOSアプリにRIBsアーキテクチャを導入して得られたこと | MoT Lab (GO Inc. Engineering Blog)
                                                  • スマホアプリ開発で採用している技術 - エムスリーテックブログ

                                                    【マルチデバイスチーム ブログリレー1日目】 イントロダクション こんにちは、エンジニアリンググループ・マルチデバイスチーム(以下「マルデバ」)の星野です。 エムスリーのエンジニアリンググループは、サービス開発を行う「事業チーム」と、各事業チームを横断してサポート/開発する「横断チーム」とに分かれております。私が所属するマルデバは「横断チーム」に位置し、各サービスの iOS / Android アプリ(およびそのBFF)の開発を専門に行なっており、私は主にこの後に紹介する m3.com アプリ、Web 講演会アプリ、m3.com CAREER アプリの開発を行っています。 今日から6日間「マルチデバイスチーム ブログリレー」と題し、マルデバメンバーでリレー形式でテックブログを執筆し、マルデバがどのような開発をしているのか・どんなチームなのか・どんなメンバーがいるのかなど、ご紹介できればと思

                                                      スマホアプリ開発で採用している技術 - エムスリーテックブログ
                                                    • The Java Baggage: Biggest Bottleneck to Adopt Go in Enterprises

                                                      The Java Baggage: Biggest Bottleneck to Adopt Go in Enterprises I have been working as a consultant and trainer on Go programming language and distributed systems architectures, in India, and guided a lot of software development teams to adopt Go for building their systems. I have worked with product engineering start-ups, mid-size organisations and larger enterprises. Except working with some lar

                                                      • 十七人のアジャれる男 - Qiita

                                                        期間2週間とAgileに(?)撮影された超低予算傑作映画になぞらえて WFHでNetflixが仕事が捗る今日この頃ですがいかがお過ごしでしょうか。 本を読む時間も取れるようになり、ソフトウェアの名著と呼ばれる分厚めの本も読めますね。 これらの名著の著者はどこかで聞いたことある名前だなと思って調べますと、20年ほど前に定義されたアジャイルソフトウェア開発宣言の宣言者17名に含まれるものも多く、この17名が一体どんな方々なのかを深堀りしてみます! (若造ですので知らないことも多くミスなどありましたらご指摘いただけると幸いです! ) 下記、アジャイルソフトウェア開発宣言です。 参考URL(ググると大量にでました) - アジャイル開発における12の原則を理解する - アジャイルマニフェストはいまだに重要性を持つか 絵では8人しかいないのが気になりますね。 アジャイルチームは基本10名以下で組織され

                                                          十七人のアジャれる男 - Qiita
                                                        • DDDの一般的なアーキテクチャをまとめてみた

                                                          はじめに 久しぶりの投稿ですが、仕事の中でDDDに関連したアーキテクチャを整理する機会があったので、改めて知識の整理のためにまとめておきたいと思います。 一般的なWebアプリケーションのアーキテクチャ(3層アーキテクチャ) 矢印の方向に依存していきます。 一般にこの依存関係を持ってwebアプリケーションは作られますが、ビジネスロジック層が肥大化する傾向が多いです。 それぞれの層を言語化すると以下のようになります。 プレゼンテーション層 = クライアントとの入出力をする層 ビジネスロジック層 = ビジネスロジックの実現をする層 データアクセス層 = データベースとの入出力をする層 問題点 その中でビジネスロジック層は、そもそもビジネスロジックが複雑になりがちなため、うまく設計ができずに、メンテナンス性の悪い、所謂神クラスの氾濫(xxxService、xxxManager)が起こりがちです。

                                                            DDDの一般的なアーキテクチャをまとめてみた
                                                          • 奥野さんと社員のリファクタリング部屋 -ディレクトリの名付け方 - トレタ開発者ブログ

                                                            「奥野さんと社員のリファクタリング部屋」は、リファクタリングに励むトレタの社員と技術顧問の奥野さん ( @okunokentaro ) の間で実際に行われた会話を切り取った開発現場実録コンテンツです。 技術顧問: 奥野さん 三度の飯よりリファクタリングが好き 今回の質問者: 武市さん トレタ在籍2年。沖縄在住のフロントエンジニア 今回の質問 前回に引き続き、Webアプリケーション (Next.js) のプロダクトのリファクタリングを進めている武市さんから、ディレクトリ構造のリファクタリングについての質問です。 tech.toreta.in 前回の指摘も踏まえて、新しいディレクトリ構造とその定義を考えてきました。 ┗ server ┃ ┣ boundary -- 外部システムとのやり取りを行うためのエンドポイント。 ┃ ┃ ┗ mojito ┃ ┃ ┃ ┗ mojitoClient.ts ┃

                                                              奥野さんと社員のリファクタリング部屋 -ディレクトリの名付け方 - トレタ開発者ブログ
                                                            • PHP/Laravelとクリーンアーキテクチャでマイクロサービスを作っている話 - Qiita

                                                              アドベンチャーアドベントカレンダー2022の1本目の記事です。 誰 株式会社アドベンチャー skyticket品質保証担当です。元サーバーサイドエンジニアで現在はQAマネージャーみたいな仕事をしています。品質保証ちょっとできる人ぜひ弊社へ。 背景 skyticketのホテル予約サービスはアーキテクチャが腐っています。いかなる標準にも基づかないオレオレアーキテクチャで、作った人はもう辞めました。今となってはどこに何をどう実装するのが正解なのか誰にも理解できません。最悪です。 最悪なのでどうにかしなければなりません。リファクタリング?いやいや実運用中のシステムのアーキテクチャレベルからのリファクタリングって要するに作り直しですよね。エンジニアリソースが無限に確保できるならもちろん作り直したいですが現実はそんなに甘くはありません。夢を語るのは結構な話ですが我々はまず現実と闘わなくてはなりません。

                                                                PHP/Laravelとクリーンアーキテクチャでマイクロサービスを作っている話 - Qiita
                                                              • 【感想】『Clean Code アジャイルソフトウェア達人の技』:Uncle Bob流のクリーンなコード道場 - Rのつく財団入り口

                                                                クリーンなコードを書いていこう 以前に上げた『Clean Architecture』の感想記事にブクマなどなどアクセスありがとうございました。読了して洞察が増してクリーンを追求したいな気分になったので、同じくボブおじさんによるCleanシリーズ、『Clean Code』も読むことにしました。 こちらはアーキテクチャ本よりも前に刊行。アーキテクチャのレベルよりも細かな、クラスや関数、プログラミングの習慣レベルでのクリーンで良いプログラムのコードの書き方に注目した本となっています。 Clean Code - アスキードワンゴ Clean Code アジャイルソフトウェア達人の技 (アスキードワンゴ) 作者:Robert C.Martin,花井 志生発売日: 2017/12/28メディア: Kindle版 前書き 名著らしく何やらインテリジェントなことを言ったり日本の1950年代の工場の品質向上

                                                                  【感想】『Clean Code アジャイルソフトウェア達人の技』:Uncle Bob流のクリーンなコード道場 - Rのつく財団入り口
                                                                • Scala 選定の結果と継続の方針 〜Advent Calendar 2016 Day 25 へのアンサー〜 - Qiita

                                                                  Mikatus Advent Calendar 2019 25日目の記事です。 開発責任者の土田です。 当社が2016年に参加したアドベント・カレンダー25日目の「Scala選定の理由と移行の方針」という記事へのアンサーを書こうと思います。事前にその記事を読んでいただいた方が、この記事の内容を楽しめるかなと思います。ただ、私の記事はあくまでポエムなので、そんなに期待しないでください。 プラットフォーム移行の観点でよりきちんとした内容は「Scala採用を決めて3年半たった、CTOの振り返り。アーキテクチャ刷新を成し遂げるために必要なこと」がとても参考になると思いますので、そちらをオススメします。 発端は(食べられる方の)カリーうどん → 最近は秋葉原でスープカリー 当時は当社のオフィスが白金高輪だったので、近くにあるカリーうどんを食べてました。その後は岩本町、浅草橋と移転したので食べてるカリ

                                                                    Scala 選定の結果と継続の方針 〜Advent Calendar 2016 Day 25 へのアンサー〜 - Qiita
                                                                  • Introducing Clean Architecture by refactoring a Go project

                                                                      Introducing Clean Architecture by refactoring a Go project
                                                                    • コンポーネントに関する6つの原則 - Qiita

                                                                      コンポーネントとは コンポーネントとは、デプロイ単位のことであり、システムの一部としてデプロイできる最小限のまとまりを指す。例えば、Javaならjar、Rubyならgem、.NETならDLL等がそれにあたる。あらゆる言語において、コンポーネントがデプロイの基準となる。よくできたコンポーネントは常にデプロイできる状態を保っているため、個別に開発を進めることができる。 本記事では「コンポーネントの凝集性に関する原則」3つと「コンポーネントの結合に関する原則」3つを取り上げる。 コンポーネントの凝集性に関する原則 凝集性とは、機能と機能の関わり具合の尺度を指す。凝集性が高い(機能と機能の関わり具合が低い)ほど良いプログラムとされる。 ※密接に関係するものは1つに集め、関係しないものは分けるという考え方がベースとなる。 再利用・リリース等価の原則(REP:The Reuse/Release Equ

                                                                        コンポーネントに関する6つの原則 - Qiita
                                                                      • ABEMAモバイルアプリ開発のDevOps戦略 | CyberAgent Developers Blog

                                                                        3月24日、サイバーエージェントのエンジニア・クリエイターによる技術カンファレンス「CyberAgent Developer Conference2022」を開催しました。本記事では、「ABEMAモバイルアプリ開発のDevOps戦略」の様子をお届けします。 目次 ■新しい未来のテレビ「ABEMA」について ■「ABEMA」の開発体制 ■Delivery Performance ■DevOps戦略 ■Conclusion ■新しい未来のテレビ「ABEMA」について 「ABEMA」は新しい未来のテレビとして展開する動画配信サービスで、ニュースチャンネルをはじめ、アニメ、スポーツ、オリジナルのドラマや恋愛番組などを24時間365日放送しています。常時3万本以上のオンデマンド配信、オンラインライブも展開しており、順調にメディア規模を拡大しています。 「ABEMA」が大事にしているのは「無料・同時性

                                                                          ABEMAモバイルアプリ開発のDevOps戦略 | CyberAgent Developers Blog
                                                                        • オブジェクト指向のその前に - 凝集度と結合度

                                                                          1990年代以降オブジェクト指向プログラミングの普及により、クラス設計、インターフェース設計、GoFのデザインパターンなどが提唱され、近年ではMVC系、DDD、Clean Architectureなどのアーキテクチャの議論が盛んに行われています。 これらももちろん大切ですが言語やアーキテクチャに依存せず、多くのプログラマが必ず検討をする設計として「関数分割」が存在しています。 関数分割の基準については、上記のデザインパターンやアーキテクチャでは議論されていません。 関数の実装は世のプログラマの全員が毎日行うことであり、欠かせない設計であると言っても過言ではありません。 しかし「テスタビリティが高い関数にする」のような基準に留まり、明確に言語化されていることが少ないです。 そこで本セッションではこの関数分割の良し悪しを測る指標として提唱されている凝集度と結合度を紹介します。 これらは構造化プ

                                                                            オブジェクト指向のその前に - 凝集度と結合度
                                                                          • PHPカンファレンス2020 レポート[後編] | gihyo.jp

                                                                            12月12日(土⁠)⁠、PHPカンファレンス2020が開催されました。PHPカンファレンスは今年20周年の節目を迎え、初のオンライン開催となりました。前編に続き、本稿ではその模様をお伝えしていきます。 竹澤有貴さん「事業のスケールアウトを支えるPHPで作る分散アーキテクチャ」 スターフェスティバルの竹澤有貴さんは、これまで大規模データを扱う業務に多く携わってきました。その中での経験を基に、事業を支える大規模アプリケーションをどのようなパターンで構築していくかについて話しました。 「Event Sourcing」と「CQRS」をキーワードに上げ、これらと同列に語られることの多いドメイン駆動設計についても紹介しました。 ビジネスの成長と組織 アプリケーションは小さなアプリケーション、小さなチームから始まります。当初は意思疎通が取りやすいのでコードベースの統一も容易に取れますが、大きいチームにな

                                                                              PHPカンファレンス2020 レポート[後編] | gihyo.jp
                                                                            • チームでコードレビューをしているときに考えていること - フツーって言うなぁ!

                                                                              この記事はなに? 最近、自分の経験や考えていることを言語化してみる実験をしています。 自分で言語化したことのある概念については自信を持って他の人に話せるし、一般化して横展開していくことも可能になるので、メリットが大きいのかなと。 第一弾として、私がテックリードとしてチーム内でコードレビューをしている際に考えていることをまとめてみました。 注意点 思いついたら随時更新します 今回の話のターゲットは主にWebフロントエンド/バックエンドのアプリですが、その他の開発にも使えるノウハウはあると思います ここで書いているのは、仕事でチームを組んだ際にピアレビューをする際の話です。OSS等のコードレビューとは違いがあるかもしれないです TL; DR 十分な事前準備をすることでレビューの手間を減らそう 目的にフォーカスすることで本質的で建設的なレビューをしよう コードレビューを通してレビュワー、レビュイ

                                                                                チームでコードレビューをしているときに考えていること - フツーって言うなぁ!
                                                                              • 新卒エンジニアがDart/Flutterを学んだ話【研修振り返りレポート】 | BLOG - DeNA Engineering

                                                                                はじめに みなさんこんにちは、21新卒エンジニアのKawagishiとTakagiです。 先日終了した2021年新卒エンジニア研修において、私たちはDart/Flutter研修を行いました。今回はその概要と、それぞれが感じたことについてお伝えします。この記事を読んで、少しでもエンジニア研修というもののイメージを掴んでいただければ幸いです。 研修詳細 Dart/Flutterとは? 研修のアプリ開発パートでは、Googleによって開発されたプログラミング言語であるDartを用いました。元々はJavaScriptの代替言語として開発されましたが、現在はもっぱら、同じくGoogleが開発した Flutter というSDKと組み合わせることが多いです。Flutterを用いることで単一のコードベースから複数のプラットフォームに対応したアプリの開発を行うことができます。 DartはJavaScript

                                                                                  新卒エンジニアがDart/Flutterを学んだ話【研修振り返りレポート】 | BLOG - DeNA Engineering
                                                                                • 「サービスクラス」は 3 種類ある - 完全に理解した.com

                                                                                  アプリケーションの設計で「サービスクラス」というものがしばしば使われますが、その「サービスクラス」が何を指しているのか、状況によって違ったりしないでしょうか? この記事では、そんな「サービスクラス」についての私の理解を、3 種類に分けて整理していきます。 その中で、「サービスクラス」がアンチパターンと言われる理由なども書いていきます。 結論 - 3 種類の「サービスクラス」 最初に結論として、3 種類のサービスクラスについて書いておきます。 「トランザクションスクリプトパターン」における「サービス」 「ドメインモデルパターン」における「アプリケーションサービス (= ユースケース)」 「ドメインモデルパターン」における「ドメインサービス」 の 3 つです。 ここから、この 3 パターンを整理するための前提からまとめていきます。 前提 - 「ビジネスロジック」について アプリケーションを 3

                                                                                    「サービスクラス」は 3 種類ある - 完全に理解した.com