タグ

ブックマーク / phpmentors.jp (16)

  • 「Lean Architecture / DCI Evening」参加レポート

    2017年10月18日、James Coplienさんとその奥様であるGertrud Bjørnvigさんをお招きして、「Lean Architecture / DCI Evening 」というイベントを開催しました。日ではソフトウェアパターンやアジャイルのリーダーとして知られるJames Coplienさんは、『 マルチパラダイムデザイン 』(1998年)でドメインとドメイン間の関係を中心に据えた設計パラダイムを提唱していました。Coplienさんは2009年、MVCアーキテクチャの考案者である Trygve Reenskaug さんと共に「DCIアーキテクチャ」を発表しました。2010年、CoplienさんはGertrudさんとともに書籍『 Lean Architecture 』を上梓、トヨタ生産方式をソフトウェアアーキテクチャに適用するリーンアーキテクチャについて、DCIアーキテク

    「Lean Architecture / DCI Evening」参加レポート
    advblog
    advblog 2017/11/10
  • 「現場で役立つシステム設計の原則」批判 (2) ~ポリモーフィズムは何のために?~

    増田亨氏の「現場で役立つシステム設計の原則]」批判の第2編です。 (2)ポリモーフィズムは何のために?オブジェクト指向の要件書には「変更を楽で安全にするオブジェクト指向の実践技法」というサブタイトルが付与されています。オブジェクト指向が何かという点については、論者によって違いはあるものの、以下の3つが要件とされることには、多くの人が合意するでしょう。 カプセル化インヘリタンス(継承)ポリモーフィズム(多態)前回で明らかになったように、カプセル化は、オブジェクト指向とは独立にモジュール分割の指導原理としてデイビッド・パーナスにより提唱された「情報隠蔽」を敷衍したものです。オブジェクト指向の要件ではありますが、オブジェクト指向固有のアイデアではありません。 インヘリタンスは便利な機能ですが、コンポジションや移譲により代替できるので、オブジェクト指向の質的な要件とは見做されなくなってきたかと

    「現場で役立つシステム設計の原則」批判 (2) ~ポリモーフィズムは何のために?~
    advblog
    advblog 2017/09/11
  • 「現場で役立つシステム設計の原則」批判 (1) ~何のために、「データとロジックを一体に」するのか?~

    増田亨氏の「現場で役立つシステム設計の原則]」の評判が高いようです。 このが、オブジェクト指向の初級者に受け入れられ易いことはわかります。オブジェクト指向的なプログラミングが出来ていない現場で、明日からでも出来そうなことが平易に書かれているからです。オブジェクト指向の入り口を指し示しているように見える。 一方で、私としては、このが指し示す入り口は、入りやすいかもしれないけれど、結局はどこにも通じていないのではないかと疑っています。 稿では、そのように私が考える理由について、3つの切り口からご説明したいと考えています: 何のために、「データとロジックを一体に」するのか?ポリモーフィズムは何のために?「ドメインモデル」とは何か?長くなるので、今回は、一番目の「何のために、『データとロジックを一体に』するのか?」について。 批判 (1) 何のために、「データとロジックを一体に」するのか?

    「現場で役立つシステム設計の原則」批判 (1) ~何のために、「データとロジックを一体に」するのか?~
    advblog
    advblog 2017/08/31
  • Practical Symfony #28: Workflowerを使ったビジネスプロセスの管理

    この記事はSymfony Advent Calendar 2015 25日目の記事です。前日の記事はqcmatsuokaさんの「SpBowerBundleのキャッシュエラーを解決する | QUARTETCOM TECH BLOG」でした。 WorkflowerはBPMN 2.0に準拠するPHP向けのワークフローエンジンであり、2条項BSDライセンスの下でリリースされているオープンソース製品です。Workflowerの主な用途としては、人間を中心としたビジネスプロセスをPHPアプリケーションで管理することが挙げられます。 この記事では、Workflowerを使ったビジネスプロセスの管理をSymfonyアプリケーション上で行うために必要な作業について示します。 PHPMentorsWorkflowerBundleによるSymfonyインテグレーションPHPMentorsWorkflowerBu

    Practical Symfony #28: Workflowerを使ったビジネスプロセスの管理
    advblog
    advblog 2015/12/27
  • Two Domain Models - An Implication of DDD

    Domain-Driven Design (DDD) intersects with a broad range of the intellectual heritage in the software design discipline including object-orientation, design patterns and refactoring. And as such, it can be viewed as a synthesis of these knowledge assets tailored towards domain-oriented application software development. Although this view is valid and productive, there could be another way of viewi

    advblog
    advblog 2015/12/20
  • Symfonyの本「基本からしっかり学ぶSymfony2入門」を執筆しました

    この記事は、Symfonyアドベントカレンダー2015の6日目の記事です。昨日は@okapon_ponさんの「Symfonyでdebug環境を最適化しコードを追いやすくする」でした。 12月16日付けで、技術評論社様より『基からしっかり学ぶSymfony2入門』が出版されます。最初に企画書を書いたのが2014年の3月で、そこから出版まで2年近く時間がかかりました。このではSymfony 2.7を対象としていますが、書き始めた頃はまだSymfony 2.3の時代でした。今ではすでに2.8と3.0もリリースされているので、バージョンの進み具合だけとっても執筆に結構長くかかってしまったと感じます(苦労させられた点でもありますが)。執筆は、私(後藤)とカルテットコミュニケーションズの金さんとの共著になっています。 技術評論社 書籍紹介ページすでにAmazonでご予約頂いている方も多数いらっし

    Symfonyの本「基本からしっかり学ぶSymfony2入門」を執筆しました
    advblog
    advblog 2015/12/07
  • ドメインモデルのための型「Domain Kata」を使ってみました

    Symfony Advent Calendar 2014 (Qiita) 6日目 前(12月5日 )次(12月7日 ) 「Domain Kata」について学んだことを書いて、Symfony2 サンプルアプリケーションでの使用例を紹介します。 Domain Kata についてDomain Kata Kata for domain models 公式 README の内容を日語に訳すと下記となります(バージョン 1.2 現在)。 Domain Kata は、プロジェクトがモデルベース開発を実践するために、ドメインモデルの「型」を提供します。 モデルベース開発というのは、たとえば、ドメイン駆動設計、ジェネレ−ティブプログラミングといった手法を指します。 Domain Kata を使うことで、モデルの識別が容易になります。パッケージ構造を設計しやすくなります(「Model」パッケージをライブラリ

    ドメインモデルのための型「Domain Kata」を使ってみました
    advblog
    advblog 2014/12/06
  • DIとサービスロケータの違い

    DIとサービスロケータは、いずれもオブジェクトの構築と依存の解決という仕事を切り出すためのパターンです。ところで、この2つのパターンの違いを明確に説明できるでしょうか? Pimpleでシンプルに正しくDIを理解する のコードは以下のようになっていました。 <?php require_once '../vendor/pimple/pimple/lib/Pimple.php'; // インフラ interface MailerInterface { public function send($body); } class SendmailMailer implements MailerInterface { public function send($body) { } } // ドメイン class NewsletterTransfer { protected $mailer; public

    DIとサービスロケータの違い
    advblog
    advblog 2014/10/24
  • 状態ではなく、振る舞いをモックせよ

    TL;DR GOOS『実践テスト駆動開発』で触れられている「ロールをモックせよ」について、違った角度で解説ドメインモデルを豊かにすることでコードがシンプルになる例Mock Behaviors, Not Statesユニットテストを記述する際、テスト対象のオブジェクトが利用しているオブジェクト(依存オブジェクト、隣接オブジェクト)はモックオブジェクトにして、テストしたい状況をテストコード側からコントロールします。しかし、闇雲にモックを使ってテストを記述すれば良いわけではありません。今回は、モックが有効に機能するテストとはどういったものなのかを解説します。 サンプルコード簡単なサンプルで説明します。Extract Till You Dropのモデルと近いものを使います。グループ、メンバー、およびグループリポジトリがあります。グループオブジェクトはインメモリでは所属メンバーの情報を保持しておら

    状態ではなく、振る舞いをモックせよ
    advblog
    advblog 2013/11/08
  • PHPカンファレンス2013で「モデルとの向き合い方:ドメイン駆動設計体験ワークショップ」を行いました

    2018年1月10日に開催された DCI Tokyo 1 に続き、2018年3月27日に DCI Tokyo 2 が開催されました。今回も James Coplien @jcoplien さんをお招きしてのトークセッションとなりました。会場は 株式会社ヴァル研究所 様に提供していただきました。 セッションは、前回同様 @remore さんと @ganchiku さんによる同時通訳とともに進められました。 今回のテーマはマルチパラダイムデザイン(Multi-Paradigm Design: MPD)の中核を成し、DCI / リーンアーキテクチャ(Lean Architecture)とも深く関係する 共通性/可変性分析 でした。 レポートは @smori1983 が担当させていただきます。 当日の様子は Coplien さんの許可を得て YouTube の DCI Tokyo 公式アカウントに

    PHPカンファレンス2013で「モデルとの向き合い方:ドメイン駆動設計体験ワークショップ」を行いました
    advblog
    advblog 2013/09/15
  • DDDのリポジトリの外部依存とオブジェクト指向の原則の適用について

    DDDのリポジトリがORMコンポーネントへ依存することの是非について、オブジェクト指向の原則の面から解説します。 リポジトリ(repository)とは、収納場所・倉庫・貯蔵庫を表す言葉です。 DDD(ドメイン駆動設計)では、リポジトリはモデル駆動設計でドメインをモデリングする際のビルディングブロックの1つになっています。ビルディングブロックとは基構成要素のことで、ドメインをモデリングする際の基部品として使います。 DDDのリポジトリの役目は、ドメインレイヤーのオブジェクトから永続化レイヤーを隠蔽することです。リポジトリ="エンティティの貯蔵庫"という抽象化されたオブジェクトを持ち込み、ドメインレイヤーの内部では貯蔵庫からエンティティを取り出すように設計・実装します。 構築するシステム(ここでは何か1つのシステムのみをイメージしてください)においてアーキテクチャが決定すると、その段階で

    DDDのリポジトリの外部依存とオブジェクト指向の原則の適用について
    advblog
    advblog 2013/04/09
  • Symfony2ベースのユーザー登録サンプルを公開しました

    2018年1月10日に開催された DCI Tokyo 1 に続き、2018年3月27日に DCI Tokyo 2 が開催されました。今回も James Coplien @jcoplien さんをお招きしてのトークセッションとなりました。会場は 株式会社ヴァル研究所 様に提供していただきました。 セッションは、前回同様 @remore さんと @ganchiku さんによる同時通訳とともに進められました。 今回のテーマはマルチパラダイムデザイン(Multi-Paradigm Design: MPD)の中核を成し、DCI / リーンアーキテクチャ(Lean Architecture)とも深く関係する 共通性/可変性分析 でした。 レポートは @smori1983 が担当させていただきます。 当日の様子は Coplien さんの許可を得て YouTube の DCI Tokyo 公式アカウントに

    Symfony2ベースのユーザー登録サンプルを公開しました
    advblog
    advblog 2013/01/10
  • PHPカンファレンス2012で「実践Dependency Injection」の講演を行いました

    2018年1月10日に開催された DCI Tokyo 1 に続き、2018年3月27日に DCI Tokyo 2 が開催されました。今回も James Coplien @jcoplien さんをお招きしてのトークセッションとなりました。会場は 株式会社ヴァル研究所 様に提供していただきました。 セッションは、前回同様 @remore さんと @ganchiku さんによる同時通訳とともに進められました。 今回のテーマはマルチパラダイムデザイン(Multi-Paradigm Design: MPD)の中核を成し、DCI / リーンアーキテクチャ(Lean Architecture)とも深く関係する 共通性/可変性分析 でした。 レポートは @smori1983 が担当させていただきます。 当日の様子は Coplien さんの許可を得て YouTube の DCI Tokyo 公式アカウントに

    PHPカンファレンス2012で「実践Dependency Injection」の講演を行いました
    advblog
    advblog 2012/09/17
  • Pimpleでシンプルに正しくDIを理解する

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

    Pimpleでシンプルに正しくDIを理解する
    advblog
    advblog 2012/08/02
  • Eclipseで快適にPHPアプリケーション開発を行うためのプラグイン5選

    Warning 記事はEclipseの過去のバージョンを対象としたものです。今から環境を構築される場合は、Eclipse Kepler (4.3)向けに書きなおした記事「Eclipse Kepler (4.3)で作るPHPアプリケーション開発環境」をご覧ください。 2009年の秋にMakeGoodの開発を始めた頃、私の開発環境は大きく変わりました。GNU EmacsからEclipseへ、すなわちテキストエディターから統合開発環境(IDE: Integrated Development Environments)への変更です。統合開発環境には多くの利点がありますが、型やメソッドの定義・参照へのアクセスの容易さはさまざまなソフトウェアを読み解く上で大いに役立っています。 EclipseはOSGiという優れたモジュールシステムを採用しており、OSGiバンドルであるEclipseプラグインだけで

    Eclipseで快適にPHPアプリケーション開発を行うためのプラグイン5選
    advblog
    advblog 2012/07/19
  • PHP Mentors

    2018年1月10日に開催された DCI Tokyo 1 に続き、2018年3月27日に DCI Tokyo 2 が開催されました。今回も James Coplien @jcoplien さんをお招きしてのトークセッションとなりました。会場は 株式会社ヴァル研究所 様に提供していただきました。 セッションは、前回同様 @remore さんと @ganchiku さんによる同時通訳とともに進められました。 今回のテーマはマルチパラダイムデザイン(Multi-Paradigm Design: MPD)の中核を成し、DCI / リーンアーキテクチャ(Lean Architecture)とも深く関係する 共通性/可変性分析 でした。 レポートは @smori1983 が担当させていただきます。 当日の様子は Coplien さんの許可を得て YouTube の DCI Tokyo 公式アカウントに

    PHP Mentors
    advblog
    advblog 2012/07/10
    「株式会社アイテマンとインクス株式会社が運営する、PHPプログラマーを対象としたトレーニング、技術サポート、メンタリング等を提供するサービスです。」
  • 1