タグ

ブックマーク / blog.shin1x1.com (11)

  • ソフトウェア設計原則は変更容易性に通ず - Shin x Blog

    色々な原則や方法論はあれど、つまるところいかに変更容易性を確保するかと言う話に帰結するのでは。極論すれは、正しく動いていて変更する必要が無ければどのような作りになっていても構わない。一方、Web アプリケーションを稼働し続ける上で全く変更しなくて良いということもない。— Masashi Shinbara (@shin1x1) 2021年5月30日 ソフトウェア設計、開発には多くの原則や方法論がある。例えば、DRY 原則や SOLID 原則、デザインパターンにレイヤードアーキテクチャ、クリーンアーキテクチャなどある。さらに DDD にも多くの原則や方法論が含まれている。これらを変更容易性を高めるための手段として原則や方法論を捉えるというのがエントリの論旨である。 原則や方法論の捉え方 変更容易性 質的な変更と副次的な変更 外部変更容易性と内部変更容易性 原則を適用する指針 さいごに 原則

    ソフトウェア設計原則は変更容易性に通ず - Shin x Blog
  • 関数型言語で DDD - Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# - Shin x Blog

    オブジェクト指向言語でドメインモデルを実装することが当然のように行われていますが、Go で開発したり、Haskell で遊んだりしている中で、他のパラダイムの言語で実装するのはどうなんだろうかという想いがありました。 そんな時に出会ったのが、Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# というです。 概要 構成 ドメインを理解し、モデリングする 端的なフレーズ Database-Drive-Design や Class-Driven-Design との違い 型、型、型 関数型言語による実用例 恐怖のモナド さいごに 参考 概要 書は、とある会社の受注とその関連業務をドメインとし、モデリングして、実装していくという内容です。紙ベースで行われている業務

    関数型言語で DDD - Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# - Shin x Blog
  • 「独立したコアレイヤパターンの適用 - fortee 編 -」を発表しました - Shin x Blog

    2019/11/30 に東京で行われた 大改修!PHPレガシーコードビフォーアフター にて、「独立したコアレイヤパターンの適用 - fortee 編 -」を発表してきました。 発表資料 サンプルコード: https://github.com/shin1x1/independent-core-layer-pattern-fortee-demo Togetter: https://togetter.com/li/1438084 オーガナイザの @tomzoh さんが開発、運用されている fortee.jp というカンファレンス運用サービスのソースコードに独立したコアレイヤパターンを適用するという内容です。 最初にコアレイヤパターンについて解説をした後、ライブコーディングで実際のコードに対してパターンを適用するデモを行いました。 100 人でやるモブプロ コードの解説をしながら、ライブコーディン

    「独立したコアレイヤパターンの適用 - fortee 編 -」を発表しました - Shin x Blog
  • Laravel におけるリポジトリ実装のポイント - Shin x Blog

    Laravel を使った開発でも、ドメインロジックと RDBMS などの永続化層へのアクセスを分離するためにリポジトリパターンを採用するケースが増えてきました。 ただ、Laravel には Eloquent という Active Record タイプの ORM があるので、これとリポジトリをどのように組み合わせるかで悩んでいる人が多いようで、これまで開発現場や勉強会などで質問を受けることがありました。 エントリでは、リポジトリを実装してきた経験を元に、私が考える実装のポイントをご紹介します。 1. ドメインデータの入出力にリポジトリパターンを使う 2. メソッドの型宣言にドメインデータを指定する 3. 機械的に CRUD メソッドを実装しない 4. Eloquent を利用したリポジトリクラスの実装 5. 複数テーブルを扱うリポジトリ 6. Paginator との連携 さいごに 1.

    Laravel におけるリポジトリ実装のポイント - Shin x Blog
  • 「フレームワークとの付き合い方」を発表しました / Laravel JP Conference - Shin x Blog

    Laravel JP Conference にて「フレームワークとの付き合い方」を発表しました。 発表資料 Toggeter: https://togetter.com/li/1319786 フレームワークの付き合い方について、自分なりの考えをお話しました。アップしたスライドには、発表用スライドではカット部分などを含めています。 途中で、マイクが使えなくなったりましたが、地声で届く範囲だったのでそのまま続行しました :) マイクを持たないと両手がフリーになるので、身振り手振りがやりやすくて話やすくなるというのは大きな発見でした。 セッションを聞いていいただいた方、ありがとうございました。 グラレコ @kozzy0919 さんがグラレコでまとめて下さいました。ありがとうございます! #laraveljpcon で「フレームワークとの付き合い方」を講演いただいた @shin1x1 さんに許可を

    「フレームワークとの付き合い方」を発表しました / Laravel JP Conference - Shin x Blog
  • Vue.js + Vuex + TypeScript ファーストインプレッション - Shin x Blog

    日頃は、サーバサイドの開発が主なのですが、その UI として フロントエンドの開発も行うことがあります。最近話題の Vue.js を試してみたのでその感想などを。 前提 これまで利用した構成 Vue.js 構成 雑感 ちょっと試す、がすぐにできる vue-cli が楽 vue ファイル template ディレクティブ scoped css vue-router / Vuex 連携 Vuex mutation を直接呼んで、state を変更 コンポーネントから直接 state を操作 TypeScript Vue.js 入門 さいごに 前提 これまで利用した構成 ベースとして、これまでプロダクションで利用したことがある構成は以下です。いずれも、フォームベースの SPA で、現在も稼働しています。 AngularJS 1.x AngularJS 1.x + TypeScript React

    Vue.js + Vuex + TypeScript ファーストインプレッション - Shin x Blog
  • 独立したコアレイヤパターン - Shin x Blog

    モチベーション 全体 サンプルアプリケーション コアレイヤ サービスレイヤ 口座間送金ユースケース 処理の流れ コアレイヤ サービスレイヤ コアレイヤ対象範囲 DDD スタイル 手続き型スタイル 実装アイデア レイヤでパッケージを分ける コアレイヤの範囲 ポートの種類 DDD スタイルへの一歩目 さいごに 参考 独立したコアレイヤは、アプリケーション実装パターンである。以下のような特徴を持つ。 アプリケーションを、何を実現するのか(What)と、どのように実現するのか(How)に分ける。 What は、コアレイヤに実装する。ユースケースやドメインロジックを実装する。フレームワークやライブラリには依存しない。UI やデータベースからは独立している。 How は、サービスレイヤ(仮)に実装する。フレームワークやライブラリを活用して、ユースケースが要求する技術詳細を実装する。 コアレイヤが必要な

    独立したコアレイヤパターン - Shin x Blog
  • DI(Dependency Injection)に関するメモ - Shin x Blog

    PHPの現場 にて、DI 談義を行うので、頭を整理しておくためのメモです。 DI についてきちんと知りたいのであれば、参照に挙げたリンク先に有用な記事があるので、そちらを参考にして下さい。 PHP を念頭に置いてますが、Java など他言語でも大枠は同じだと思います。この内容は、いずれ整理するかもしれませんし、そのままかもしれません。 DI という言葉 「DI」が差す意味合いが、依存オブジェクトの注入だけなのか、DI コンテナによる注入を含んでいるのか、DIP まで意識しているのかが、人やコンテキストによって違っていそうで、そこを揃えてから議論しないと。— Masashi Shinbara (@shin1x1) May 19, 2017 DI について話す時に、何を差すのかが異なると話が噛み合わない。そこで、それぞれに名前を付ける。 DI パターン = 依存オブジェクトを注入することを差す

    DI(Dependency Injection)に関するメモ - Shin x Blog
  • パフォーマンスを意識して正規表現を書く - Shin x Blog

    正規表現を書く際、どのようなパターンにマッチさせるか、どこをキャプチャするかという視点で記述することはあっても、パフォーマンスを考えて記述するというのはある程度知っている人でなければ忘れがちな視点です。 このエントリでは、バックトラックをメインに正規表現がパフォーマンスに及ぼす挙動について見ていきます。 対象の正規表現エンジン ここでは、従来型 NFA を対象としています。具体的には、PHP の preg_ 関数で利用している PCRE や mb_ereg 関数が利用している鬼車です。PerlRubyPythonJava、.NET でも従来型 NFA を採用しているので、似た挙動となるでしょう。 「従来型 NFA」や「バックトラック」などの用語については、「詳説 正規表現 第3版」のものを用いています。 バックトラックによるマッチ探査 正規表現エンジンでは、指定された文字列が、パ

    パフォーマンスを意識して正規表現を書く - Shin x Blog
  • CircleCI + Docker で PHP 7 と PhantomJS 使って CI する - Shin x Blog

    CircleCI で、とあるプロジェクトの CI 環境を作りました。このプロジェクトは、PHP 7 で開発しているのですが、まだ CircleCI 公式では PHP 7 がサポートされていません。 そこで、Docker を使って、PHP 7 + PhantomJS 環境を構築しました。 構成 PHPUnit と Codeception のテストを実行する環境を構築します。 コンテナの構成は、下記のようになります。 PHP 7 コンテナ PhantomJS コンテナ PostgreSQL コンテナ * 2 これらのコンテナは、docker-compose でまとめて構築、実行します。 PHP 7 コンテナ PHP 7 + Apache のコンテナです。Docker Hub オフィシャルの php:7.0-apache ベースにして、Laravel 5.1 実行に必要な拡張の追加や設定を行った

    CircleCI + Docker で PHP 7 と PhantomJS 使って CI する - Shin x Blog
  • PHP 7 でコードを書いたファーストインプレッション - Shin x Blog

    正月の書き初めとして、PHP 7 でコードを書いてみました。 年始から始まるプロジェクトPHP 7 に取り組む予定なので、素振りも兼ねています。実際に書いて感じたことを挙げてみます。 書いたコード 今回書いたのは、Markdown からコードブロックを抜き出して、それぞれをファイルに出力するコードです。 https://github.com/shin1x1/MarkdownCodeExtractor 書いた動機は、Markdown の書籍原稿からコード部分を抜き出して、サンプルコードとして公開するためです。 原稿は最終的には PDF になるので、そこでの修正は手で加える必要があるのですが、大まかにコードをファイルに落とすだけでもかなり楽なので、サクッと作りました。 「Laravel リファレンス 」の私の担当原稿からコードを抜き出したのですが、200 ものコードファイルを一気に生成でき

    PHP 7 でコードを書いたファーストインプレッション - Shin x Blog
  • 1