タグ

diに関するko-ya-maのブックマーク (9)

  • TypeScriptのDIとTsyringeについて

    DIとは DI(Dependency Injection)とは、日語訳で依存性の注入です。依存性の注入と聞くと、依存性という抽象的な概念を何かに注入するような印象を与えますが、依存性という言葉自体は依存対象を表します。 DIにおける依存対象は、オブジェクトのインスタンスです。つまり、Dependencyはオブジェクトのインスタンスを指します。そして、Injectionは外部から挿入するという意味を持つため、DIはオブジェクトのインスタンスを外部から挿入するという事になります。 DIのコード DIの対応前後のサンプルコードで比較を確認します。次のコードは、ブラウザのコンソールに「Saved yamada!」と出力します。実用性はないコードです。 DI対応前 import User from './user' export default class Database { saveUser(

    TypeScriptのDIとTsyringeについて
  • TSyringeの使い方とコンテナ登録方法ごとの評価タイミングについて | DevelopersIO

    吉川@広島です。 TypeScriptのDIコンテナライブラリはInversifyJSとTSyringeが有名ですが、より機能がミニマムと思われる後者に興味が出たため使ってみました。 https://github.com/microsoft/tsyringe 一番メジャーなInversifyに比べるとTSyringeはやや情報が少ないのと、公式のREADMEもかなりあっさりとしていて使い始める際に戸惑いやすいと思いました。 記事では、 基的な使い方 コンテナに登録したクラスのインスタンスをいつ生成しているか を確認したので紹介します。 後者が気になった理由は、DIコンテナへの登録は遅延評価方式に寄せた方がアプリケーション起動時のパフォーマンスに有利に働きやすいと考えるためです。 環境 TSyringe v4.4.0 使い方 import 'reflect-metadata' impor

    TSyringeの使い方とコンテナ登録方法ごとの評価タイミングについて | DevelopersIO
  • 48. GoFデザインパターンとDI (前編) w/ twada | fukabori.fm

    話したネタ デザインパターンとは? ソフトウェアパターン 書籍: オブジェクト指向における再利用のためのデザインパターン Gang of Four 進研ゼミみたいなもの Composite パターン デザインパターン以外のソフトウェアパターンとは? アーキテクチャパターン、アンチパターン、コンカレンシーパターン AWSクラウドデザインパターン パターンにはフォーマットがある GoFのデザインパターンはいつ頃生まれたもの? GoFのデザインパターン登場時に、ソフトウェア業界では何が起きていたのか? Ruby 20 周年記念パーティーレポート ―― プログラミング初心者の運営スタッフが見た Ruby コミュニティ C、C++Perl、Smalltalk、Visual Basic の時代 デザインパターンには、どういうカテゴリがある? 生成・構造・振る舞い Javaのクラスライブラリにおけるデ

    48. GoFデザインパターンとDI (前編) w/ twada | fukabori.fm
  • TypeScript用のDIライブラリを公開しました - エムスリーテックブログ

    エンジニアリンググループの冨岡です。 TypeScript向けのDIライブラリを公開したので紹介します。 github.com モチベーション Clean Architecture等の設計手法を使ってコードを書いていると、抽象に依存することが多くなってきます。 class CreateUserAccount { constructor(private userAccountRepository: UserAccountRepository) {} } const forProduction = new CreateUserAccount( new PostgreSQLUserAccountRepository( buildPostgreSQLConfig(process.env) ) ) const forTest = new CreateUserAccount(new InMemoryU

    TypeScript用のDIライブラリを公開しました - エムスリーテックブログ
  • GoとDependency Injectionの現在|Seiji Takahashi@ベースマキナ

    tl;dr・Goの依存性注入は普通に行われるが、DIツールはまだ観測範囲では浸透していない。 ・直近出たGoogleGo向けDIツール「Wire」はシンプルなAPIやツール作成で有用だが、依存オブジェクトの設定が複雑化すると表現性に限界がくる ・Goにおいて、DIツールはある種のフレームワークと認識して慎重に採用すべき前提:Goの依存性注入と課題Goのコードを書く際、特に一定規模を超えたAPIを書く際は、依存するオブジェクトというのが増える。DBクライアントやロガーや各種ビジネスロジックを呼び出すサービス層などがそれに該当する。 レイヤー化されたパッケージ構成の下、こうした依存オブジェクトをトップダウンに注入していくやり方は見通しがよく、テスト時にモックのAPIクライアントを差し込みやすかったりと、テスタビリティを向上させる。ざっくり依存性注入が行われるようなレイヤー化された構成で、なん

    GoとDependency Injectionの現在|Seiji Takahashi@ベースマキナ
    ko-ya-ma
    ko-ya-ma 2019/02/12
    wireの使用について
  • 依存性注入(DI)の解説とやり方 - Qiita

    依存性注入 (Dependency Injection) は、クラスを単体テスト可能にするために使われるテクニックです。 これが意識されていないが故に単体テストが全くできないコードをよく見かけます。 単体テストの際には必ず必要になる知識なので、解説しておきます。 以下のサンプルでは PHPUnit を利用しています。 悪い例: 単体テストができないケース 以下のような Foo クラスの play() メソッドは、単体テストケースが書けません。 class Foo { public function play() { $bar = new Bar(); if ($bar->getSomething() === 1) { return true; } return false; } } play() 内で外部クラス Bar をインスタンス化しています。つまり Foo::play() メソッドは

    依存性注入(DI)の解説とやり方 - Qiita
    ko-ya-ma
    ko-ya-ma 2018/03/08
    わかりやすい
  • 型宣言を利用した自動的プログラミング(という夢)

    PHPアドベントカレンダー2016の2日目です。この記事に合わせてライブラリでも作ろうと思ってたのですが、全然間に合わなかったので夢という体でポエムを書こうと思います。 祝7.1リリース ちょうど記事を書いていたらPHP7.1がリリースされていました。おめでとうございます!みんな今すぐビルドするんだ! http://php.net/archive/2016.php#id2016-12-01-3 去年も12月1日に7.0がリリースされてたので、毎年JSTだと12月2日に新しいPHPが手に入るような感じですね。 今回はマイナーバージョンアップなのでそんなに劇的な機能はありませんが、個人的にはiterable型が超欲しかったやつです。 Nullable types Void return type Iterable pseudo-type Class constant visiblity mod

    型宣言を利用した自動的プログラミング(という夢)
  • 「なぜDI(依存性注入)が必要なのか?」についてGoogleが解説しているページを翻訳した  - Qiita

    イマイチ理解しきれていなかったDIに関して調べていところ、Google Guiceの解説がすごく分かりやすかったので、和訳してみました。 (ところどころ意訳気味です。明らかに解釈の誤った訳がありましたら、ご指摘ください) ちなみにGoogle Guiceというのは、Googleが開発したDIライブラリです。この例ではJavaが使用されていますが、Scalaでも使用可能です。最近Play Frameworkでも採用されたので話題になっているようです。 用語の定義 文を読む前に目を通すことで、内容をスムーズに理解できます。 用語 意味 文中の例

    「なぜDI(依存性注入)が必要なのか?」についてGoogleが解説しているページを翻訳した  - Qiita
  • DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita

    意外と分からずに、「とりあえず」とか「なんとなく」で使っちゃうパターンが多い系案件な気がして書いてみます。 こんな事ありませんか? DIとDIコンテナの違いを説明出来ない DIとサービスロケータの違いを説明出来ない DIを使ってるつもりが、サービスロケータになっている DI、サービスロケータが、ただの「パターン」の1つであることを理解してない DI(Dependency Injection)を正しく理解する そもそも、Dependeny Injectionを日語にするとどういう意味になるでしょうか。 多くの人が「依存性の注入」とか応えるのではないでしょうか? 私もそうでした。きっと何かで読んだのでしょう。 (wikipediaに「依存性の注入」と書いてありますね) 補足 なぜ依存性を注入してあげると良いのか、そのメリット等は後述しますが、 DIというのはただのパターンの1つです。 たまに

    DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita
  • 1