タグ

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

  • level=0 から始める PHPStan(Larastan) 導入ガイド - Shin x Blog

    PHP にはアプリケーションを実行せずに静的にコード品質をチェックする静的解析ツールがいくつかあります。有名なところでは、PHPStan や Psalm、Phan、PHPMD などがあります。エントリでは、まだこうした静的解析ツールを導入していないプロジェクト向けに PHPStan 導入の流れをまとめてみました。 3(4) 行まとめ サンプルコード PHPStan とは 適用方針 Playground PHPStan のインストール Composer Composer(Larastan) Docker 設定ファイルの作成 PHPStan の実行 主なエラー(level=0) baseline ファイルの作成 baseline ファイルの修正 CI での自動実行 GitHub Actions の設定 ブランチ保護ルール さいごに 3(4) 行まとめ composer もしくは Docker

    level=0 から始める PHPStan(Larastan) 導入ガイド - Shin x Blog
  • ソフトウェア設計原則は変更容易性に通ず - Shin x Blog

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

    ソフトウェア設計原則は変更容易性に通ず - Shin x Blog
    ko-ya-ma
    ko-ya-ma 2021/06/03
    とても共感できる内容。モダンなあれこれの技術や考え方は、安全確実に変更を適用する方法のバリエーション
  • 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
  • アプリケーションから例外を投げる派、投げない派 - Shin x Blog

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

    アプリケーションから例外を投げる派、投げない派 - Shin x Blog
    ko-ya-ma
    ko-ya-ma 2016/12/27
    PHPはちゃんと例外を投げた方が罠が少なくなる言語だと思う……とか言って、丁寧に投げることはしてないし、求めてもいないけど
  • パフォーマンスを意識して正規表現を書く - Shin x Blog

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

    パフォーマンスを意識して正規表現を書く - Shin x Blog
    ko-ya-ma
    ko-ya-ma 2016/08/23
    スペースだけでサイトを落とせる
  • 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