並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 19 件 / 19件

新着順 人気順

"Service Locator"の検索結果1 - 19 件 / 19件

  • なぜDependency Injectionなのか? ~関心の分離と疎結合~

    本稿は「アーキテクチャを突き詰める Online Conference」における発表「なぜDependency Injectionなのか? ~関心の分離と疎結合~」の登壇原稿となります。 発表時の動画アーカイブは後日公開されたタイミングでリンクを追加いたします。 また、本稿のサンプルコードとPower PointはGitHubで公開しています。 「CC BY-SA 4.0」で公開していますので、気に入っていただけたら営利目的含め、ライセンスの範囲で自由に利用していただいて問題ありません。 https://github.com/nuitsjp/WhyDependencyInjection というわけで、本稿の目指すゴールはこちら。 今日は、この場にいる皆さんが「なぜDependency Injectionを利用するのか?」ということを、理解いただくのが本日のゴールとなります。 というわけで本

      なぜDependency Injectionなのか? ~関心の分離と疎結合~
    • TypeScript の DI 手法あれこれ - Object.create(null)

      TypeScript で DI (依存性注入) するためのライブラリを作ったんですが, それを紹介する前に既存手法をまとめておいた方が説明が楽だなと思ったのでまとめておきます. そもそも DI の目的とは, みたいなところは詳しく説明しないのであしからず. 手法の比較 DI なし Service Locator エフェクト Constructor Injection Setter Injection デコレータ typed-inject 次回予告 手法の比較 DI なし まずは DI を使わない場合を見ていきましょう. ここでは例として, 以下のような時刻と乱数を必要とするコンポーネント MyService が, 時刻と乱数を扱う機能をそれぞれ提供するコンポーネント Clock と Random に依存するような場合を考えます. type Clock = { getTime: () =>

        TypeScript の DI 手法あれこれ - Object.create(null)
      • neue cc - .NET 6とAngleSharpによるC#でのスクレイピング技法

        C# Advent Calendar 2021の参加記事となっています。去年は2個エントリーしたあげく、1個すっぽかした(!)という有様だったので、今年は反省してちゃんと書きます。 スクレイピングに関しては10年前にC#でスクレイピング:HTMLパース(Linq to Html)のためのSGMLReader利用法という記事でSGMLReaderを使ったやり方を紹介していたのですが、10年前ですよ、10年前!さすがにもう古臭くて、現在ではもっとずっと効率的に簡単にできるようになってます。 今回メインで使うのはAngleSharpというライブラリです。AngleSharp自体は2015年ぐらいからもう既に定番ライブラリとして、日本でも紹介記事が幾つかあります。が、いまいち踏み込んで書かれているものがない気がするので、今回はもう少しがっつりと紹介していきたいと思っています。それと直近Visual

        • わかりやすくて最高だった「ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本」レビュー | DevelopersIO

          わかりやすくて最高だった「ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本」レビュー 「ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本」を読んだところ、とても良かったのでレビューしたいと思います。 私の状況 まずこの本を読む前の私がどの程度ドメイン駆動設計について理解していたかご紹介します。 以前同僚が書いてくれたサンプルコードを手本にレイヤードアーキテクチャみたいなTypeScriptのLambda関数を書いている 「Service」とか「Repository」とかの単語を命名に使っているが、使い方あってるのか自信ない、というか意味をよくわかっていない 実装中「この構成でええんか?」と何度も思い悩む 時間かかるくらいなら雑にさっさと書いてしまったほうが良いのでは、と思うこともある。けどちゃんとしたコードを書きたいんや。 こういうのを読んで、テストしや

            わかりやすくて最高だった「ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本」レビュー | DevelopersIO
          • 【読書感想文】ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本 | DevelopersIO

            ドメイン駆動設計には興味を持ちつつエリック・エヴァンスのドメイン駆動設計は数年前に積んだまま、という状態で何年か立ってしまったのですが、新しくDDD の本が出ていたので読んでみたところよかったので紹介させていただきます。 ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本 本書は、 『エリック・エヴァンスのドメイン駆動設計』(ISBN978-4-7981-2196-3、翔泳社)、 『実践ドメイン駆動設計』(ISBN978-4-7981-3161-0、翔泳社) に感銘を受けた著者が贈る、ドメイン駆動設計の入門書です。 (https://www.shoeisha.co.jp/book/detail/9784798150727 より。) というわけで、ボトムアップで理解出来る章立てで書かれたドメイン駆動設計の入門書です。 個人的には、ドメインモデルの組み立てをどうやればいいのか

              【読書感想文】ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本 | DevelopersIO
            • Table of Contents · Game Programming Patterns

              Table of Contents Game Programming Patterns Acknowledgements Introduction Architecture, Performance, and Games Design Patterns Revisited Command Flyweight Observer Prototype Singleton State Sequencing Patterns Double Buffer Game Loop Update Method Behavioral Patterns Bytecode Subclass Sandbox Type Object Decoupling Patterns Component Event Queue Service Locator Optimization Patterns Data Locality

              • Flutterアプリケーション開発にRiverpodを僕が使う理由

                はじめに Flutterにおける状態管理の手法は、数多く存在します。 筆者は、その中でもRiverpodを好んで利用しています。最近はFlutterKaigi 2023の公式アプリでも採用しました。 このようにRiverpodを採用していると、「Riverpodの勉強方法はどのようにすればいいのか」とか、「便利さがよく理解できない」という声をよく聞きます。勉強方法に関しては、公式ドキュメントを読むのが一番です。とはいえ、急に公式ドキュメントを読むのはハードルが高いかもしれません。 本記事では、筆者がRiverpodを好んで使う理由をまとめます。「なぜRiverpodを便利だと思う人がいるのか」を知ることで、Riverpodへの関心を高めてもらえれば幸いです。 TL;DR 文章が長くなってしまったため、先に結論を簡潔に。書き始めた時には、1万字を超えるとは思っていませんでした……。 以下の4

                  Flutterアプリケーション開発にRiverpodを僕が使う理由
                • CakePHPにDIコンテナが入った(る)と聞いて見学に行ってきました - 大好き!にちようび

                  CakePHPのDICいれよーぜPRがマージされとった🎉🎉 (タイミング的にcakefestに間に合わせたかな?) ちゃんと内容追うぞーーー Add a dependency injection container by markstory · Pull Request #14945 · cakephp/cakephphttps://t.co/GSgNp1WBNR— 今日も誰かのにちようび(おいしい鮭親子丼) (@o0h_) 2020年10月1日 ということがありまして、20201005現在で「4.next」に取り込まれているスティタスです! ※ 現行の4.1のパッチバージョンについてはmasterに向けられるので、 4.nextは「次のマイナーバージョン」である4.2を指します 「CakePHPにDIコンテナが入ったらどんな感じに使われるんだろう?」というのは個人的にかねてより興味範

                    CakePHPにDIコンテナが入った(る)と聞いて見学に行ってきました - 大好き!にちようび
                  • 食べログiOSアプリでユニットテストを書けるようにしていく話 - Tabelog Tech Blog

                    この記事は 食べログアドベントカレンダー2023 の22日目の記事です🎅🎄 こんにちは。食べログシステム本部アプリ開発部の大澤です。 今年のiOSDC Japan 2023の参加レポートに続き、2回目の投稿となります。 今回は、所属している基盤チームにて普段取り組んでいる活動についてお話しします。 その中でも、チーム内ではテスタブル化と呼んでおり、プロダクトコードをテストしやすくするための取り組みについて取り上げます。 目次 背景 課題例 テスタブル化の手法 基本: Dependency Injection 応用1: 静的アクセスの依存注入 応用2: Bastard Injection 応用3: 初期化の遅延 まとめ 背景 食べログのiOSアプリの歴史は長く、積極的な開発によってコードベースは年々大きくなってきています。 一方で案件優先の体制なためユニットテストは少なく、一部のモデルや

                      食べログiOSアプリでユニットテストを書けるようにしていく話 - Tabelog Tech Blog
                    • Unity専用最速DIコンテナVContainer と、UnityにおけるDIの勘所 - hadashiA

                      Gotanda.unity #16 2021/1/13 自己紹介 Twitter @hadashiA Github @hadashiA ソフトウェアエンジニア (フリーランス) 最近つくっとるライブラリ hadashiA/VContainer hadashiA/UniTaskPubSub 最近のひとり個人制作 ゲーム 思い出回収委員会 (仮) Webサービス ここは夜です(仮) 最近の仕事 なんか色々やってる [OSS VContainer] https://vcontainer.hadashikick.jp Unity専用 の DI コンテナ Unity に DI ? → この話の後半で 特徴 低オーバヘッド Unity専用DI界で圧倒的な実行速度 GCゴミが非常に少ない / コードサイズがとても小さい 必要十分な機能を厳選 目的を見失った滅多打ちのDIを非推奨にしていくスタイル 透明性

                        Unity専用最速DIコンテナVContainer と、UnityにおけるDIの勘所 - hadashiA
                      • 【感想】『ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本』:挫折せずDDD入門できる本【前編】 - Rのつく財団入り口

                        ドメイン駆動設計(DDD)に入門してみよう さてエンジニアリング界隈でも設計の話になるとクリーンアーキテクチャと並んでよく話題に上がるドメイン駆動設計。『エリック・エヴァンスのドメイン駆動設計』という原典があるのですが難しすぎる、挫折したという声をよく聞きます。何を隠そう僕もむかーし電子書籍のセールか何かで買ったままKindleの奥に眠っていました。 2020年に出た本書がボトムアップでわかりやすく説明してくれている!と評判も高いのでこちらで改めてDDD入門してみることにしました。 ドメイン駆動設計(DDD)に入門してみよう Chapter 1 ドメイン駆動設計とは Chapter 2 システム固有の値を表現する「値オブジェクト」 Chapter 3 ライフサイクルのあるオブジェクト「エンティティ」 Chapter 4 不自然さを解決する「ドメインサービス」 Chapter 5 データにま

                          【感想】『ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本』:挫折せずDDD入門できる本【前編】 - Rのつく財団入り口
                        • あなたも使ってるDIから理解するDIパターン - Qiita

                          こう言うと「私はDIコンテナーなんて使っていない!アンチDIだ!」とおっしゃる人もいるかもしれません。 まぁ落ち着いてください。今回は、DIコンテナーは登場せず、Dependency Injection(以後DI)パターンのお話です。 DIパターンとは、つぎのようなものだと私は考えています。 「依存性を外部から注入することで、ふるまいを変更する設計パターン」 詳細はコードを見つつ解説します。コードはC#で記載していますが、だれでも読めるレベルです。たぶん言語が違えど似たようなコードは誰もが書いたことがあるはずです。 ということで、さっそく見ていきましょう! あなたも使っているDIパターン お題 「何らかのリソースから文字列を読み取り、コンソールに出力する」 もうネタはバレたかもしれません。 ひとつめのDI さて、まずはローカルストレージ上のテキストファイルを読み込んでコンソールに出力してみ

                            あなたも使ってるDIから理解するDIパターン - Qiita
                          • Dependency injection in Android  |  Android Developers

                            Dependency injection in Android Stay organized with collections Save and categorize content based on your preferences. Dependency injection (DI) is a technique widely used in programming and well suited to Android development. By following the principles of DI, you lay the groundwork for good app architecture. Implementing dependency injection provides you with the following advantages: Reusabilit

                              Dependency injection in Android  |  Android Developers
                            • Pimpleでシンプルに正しくDIを理解する

                              オブジェクト指向でソフトウェアを実装していると、オブジェクトの生成に一連の手続きが必要なものがでてきます。このような生成に関する手続きがあちこちのソースコードへ散在すると、望ましくない状況になることは想像に難くないでしょう。この問題に対処するために、Simple FactoryやFactory Methodといったデザインパターンがあり、オブジェクトの生成に関する手続きや関連オブジェクトも含めたオブジェクトの構成(オブジェクトコンストラクション)に関する知識は1箇所にまとめるということが定石となっています。 しかし、単にファクトリーを導入するだけだと、オブジェクトの構成処理は分離・隠蔽できても、利用オブジェクトがファクトリー自体に依存してしまうことになります。このような試行錯誤の歴史から登場したのがDependency Injection(依存性の注入)パターンです。Dependency

                                Pimpleでシンプルに正しくDIを理解する
                              • iOS Architecture at Lyft - Scott Berrevoets

                                June 30, 2014 was my first day at Lyft as the first iOS hire on the ~3 person team. The app was written in Objective-C, and the architecture was a 5000-line nested switch statement. Since then, the team has grown to about 70 people and the codebase to 1.5M lines of code. This required some major changes to how we architect our code, and since it had been a while since we've given an update like th

                                • 段階的に理解する Dependency Injection - Qiita

                                  はじめに Dependency Injection (以下 "DI" と略す) とは、コンポーネントの依存関係にまつわる諸問題をいい感じに解決してくれる機構である。「コンポーネントの依存関係」とは、例えば一般的なレイヤードアーキテクチャでの Controller → Service → Repository といった上位層から下位層につながるような関係のことを指す。「いい感じに解決」とは、開発者が手動で頑張らなくてもフレームワークが良きに計らってくれることを意味する。 モダンな Java アプリケーション開発において、DI はほぼ必須の機構である。筆者は主にバックエンドを主戦場としてアプリケーションの開発と運用に携わっているが、Web アプリケーションであろうがコマンドラインから起動するバッチであろうが、Java でアプリケーションを開発するのであれば使い捨てを除くほとんどの場合で DI

                                    段階的に理解する Dependency Injection - Qiita
                                  • Gradual Modularization for Ruby and Rails

                                    Stephan leads the product infrastructure engineering team at Gusto. Gusto has quite a bit of Ruby on Rails in the software behind their offerings and provides the perfect ground for the analysis of complex applications due to "Payroll" being both a deep and very wide domain. And Gusto is a lot more than payroll. Stephan is the author of Component-based Rails Applications in which he lays out the p

                                      Gradual Modularization for Ruby and Rails
                                    • Flokk - How we built a Desktop App Using Flutter - gskinner blog

                                      Stack(children: <Widget>[ /// Main Content Area contentStack.padding(top: topBarHeight + topBarPadding), /// ... various AnimatedPanels surround the content area ] ) .positioned(left: leftContentOffset, right: contentRightPos, bottom: 0, top: 0, animate: true).animate(animDuration, Curves.easeOut), If the above .positioned or .animate syntax looks a little foreign, it’s because we made use of the

                                        Flokk - How we built a Desktop App Using Flutter - gskinner blog
                                      • Multi-tenant Apps With EF Core and ASP.​NET Core | The .NET Tools Blog

                                        IDEs AppCode CLion DataGrip DataSpell Fleet GoLand IntelliJ IDEA PhpStorm PyCharm RustRover Rider RubyMine WebStorm Plugins & Services Big Data Tools Code With Me Quality Assurance JetBrains Platform Scala Toolbox App Writerside JetBrains AI Team Tools Datalore Space TeamCity Upsource YouTrack Hub Qodana .NET & Visual Studio .NET Tools ReSharper C++ Languages & Frameworks Kotlin Ktor MPS Amper Edu

                                          Multi-tenant Apps With EF Core and ASP.​NET Core | The .NET Tools Blog
                                        1