タグ

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

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

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

    ソフトウェア設計原則は変更容易性に通ず - Shin x Blog
  • ベースイメージを共通化して docker-compose up を速くする - Shin x Blog

    docker-compose で複数サービスを起動する際に時間を要するのが、Docker イメージのダウンロードと展開です。この時間を削減するために、ベースイメージを共通化する方法を試してみました。 エントリでは、開発環境や CI 環境に docker-compose を利用することを想定しています。 改善前 ここでは、dokcer-compose up(pull) の時間を削減できるかを確認するだけなので、下記のように dynamodb, elasticmq, elasticsearch のみを docker-compose.yml に含めています。 version: "2.0" services: dynamodb: image: amazon/dynamodb-local:1.12.0 ports: - 8000:8000 elasticmq: image: softwaremil

  • 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
  • アプリケーションから例外を投げる派、投げない派 - Shin x Blog

    例外をどのような状況に投げるかもしくは投げないか、というのはわりと意見が分かれるところです。もちろん、プログラミング言語によっても異なりますが、同じプログラミング言語ユーザ同士でも様々です。 基の考え方 ベースとしては、Effective Java の項目 39 にある下記の方針が参考になります。 例外的な状況の時にのみ例外を使う。 Effective Java 禅問答のような定義ですが、これには異論は無いでしょう。例外を正常フローで利用したり、制御構造に用いるべきではありません。 人によって異なるのは「例外的な状況」の解釈です。 例外的な状況 この「例外的な状況」の解釈は人によって異なるようで、これまでも議論になっていました。これまで聞いた解釈を乱暴に分けると以下の 2 パターンに分かれます。 1. アプリケーションから独自の例外を投げる派 ランタイムやミドルウェア連携などプラットフォ

    アプリケーションから例外を投げる派、投げない派 - Shin x Blog
  • OSX の開発環境を Ansible で自動構築する(El Capitan / Yosemite) - Shin x Blog

    13inch MacBook Pro を購入したので、開発環境の構築を行いました。 以前は、brew bundleで自動構築していたのですが、今回は Ansible を使って構築を行いました。このエントリは、Ansible Advent Calendar 2015 の 9 日目です。 今回の構築にあたっては下記のエントリを参考にしました。ありがたや。 HomebrewとAnsibleでMacの開発環境構築を自動化する | mawatari.jp Mac の開発環境構築を自動化する (2015 年初旬編) - t-wadaのブログ Xcode / Homebrew のインストール Xcode と Homebrew をインストールします。 $ sudo xcodebuild -license $ ruby -e "$(curl -fsSL https://raw.githubuserconte

    OSX の開発環境を Ansible で自動構築する(El Capitan / Yosemite) - Shin x Blog
  • 1