Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

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

  • 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
  • Laravel 8 対応版「PHP フレームワーク Laravel Web アプリケーション開発」を執筆しました - Shin x Blog

    2018 年に出版された「PHP フレームワーク Laravel Web アプリケーション開発」の Laravel 8 対応版 を共著で執筆しました。 前回は Laravel 5.5(LTS) がターゲットだったのですが、あれから 3 年近く経過して Laravel 8 が最新バージョンとなったので、こちらに対応するために内容をアップデートしています。 私は、8 章のコンソールアプリケーションと 9 章のテストを担当しました。 開発現場のお供に Web アプリケーション 開発の現場で Laravel を使うことを前提に各機能を解説したです。ある意味、Laravel を触ることが目的ではなく、Laravel を使って Web アプリケーションを開発することが目的の方に向けたともいえます。 1 章こそ、チュートリアルなどで良くある環境設定からサンプルアプリケーションを構築する流れですが、2

    Laravel 8 対応版「PHP フレームワーク Laravel Web アプリケーション開発」を執筆しました - Shin x Blog
    ymm1x
    ymm1x 2021/05/27
  • PHP 8 Attribute シンタックスの変遷 - Shin x Blog

    PHP 8 の新機能の一つ、Attribute の形式が紆余曲折ありながら最終的に #[] となりました。実用上は #[] 形式だけ覚えておけば良いのですが、シンタックスの変遷は興味深いものだったので残しておこうと思います。 Attribute Attribute 仕様の変遷 8.0.0alpha1: <<>> 8.0.0alpha2 8.0.0beta1: @@ @@ の問題 8.0.0beta4: #[] #[] の注意点 さいごに Attribute PHP 8 の Attribute は、他のプログラミング言語によくあるアノテーションです。クラスやメソッド、プロパティ、関数に付与することで任意の処理を追加することができます。PHP では従来 Doc コメントでこれを指定する文化がありましたが、これを言語仕様として実装したものです。 <?php declare(strict_type

    PHP 8 Attribute シンタックスの変遷 - Shin x Blog
  • PHP 8 をオフィシャル Docker イメージで試す - Shin x Blog

    2020 年末にリリース予定 の PHP 8 の オフィシャル Docker イメージ(library/php)が Docker Hub に公開されました。 https://hub.docker.com/_/php?tab=tags&page=1&name=8.0-rc- イメージタグに 8.0-rcや 8.0-rc-fpm、8.0-rc-apacheなど 8.0-rc や rc-のタグが付いているものが現時点では PHP 8 のビルドとなっています。 この Docker イメージを利用して PHP 8 を試してみました。 Hello PHP 8 新機能のお試し Union Types Constructor Property Promotion Attributes JIT コンパイラ リリーススケジュール さいごに 参考 Hello PHP 8 docker コマンドで php:8.0

    PHP 8 をオフィシャル Docker イメージで試す - Shin x Blog
    ymm1x
    ymm1x 2020/06/29
  • 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
  • rerun - コマンドが終了したら自動で再実行するツールを作りました - Shin x Blog

    rerun というコマンドランナーを Go で書きました。rerun を使って、コマンドを実行すると、コマンドが終了した際に再実行してくれます。systemd や supervisord の簡易版と言えばイメージしやすいかもしれません。 github.com 動作イメージ 動機 rerun インストール さいごに 動作イメージ 下記では、rerun で sample.sh が終了する度に再実行しています。 動機 Kubernetes クラスタを Mac 上の Docker Desktop 環境で開発している際、実行状況が分かるように、いくつかのログをターミナルで出力していました。例えば、kubectl get events -w などです。ただ、開発中に Docker Desktop が落ちることがあると、kubectl get events も一緒に終了してしまうので、Docker De

    rerun - コマンドが終了したら自動で再実行するツールを作りました - Shin x Blog
  • 「PHPフレームワーク Laravel Webアプリケーション開発」を執筆しました

    PHPフレームワーク Laravel Webアプリケーション開発 を共著で執筆しました。 @ex_takezawa @kurikazu @shin1x1 @omoon の四人で書いた #Laravel がもうすぐ出ます!5.5 LTS 対応で、機能解説だけでなく、利用例を示した実践的な内容になっています。絶賛、予約受付中なので、よろしくお願いしますー! https://t.co/CnIK6xDhYx— Masashi Shinbara (@shin1x1) September 10, 2018 Laravel 5.5(LTS) に対応したです。Laravel リファレンス のようにフレームワークの機能解説はもちろん含まれているのですが、機能を紹介するというより、実際にありそうなユースケースでどのように利用するかといった視点で書かれており、開発現場で Laravel をより活用したい向け

    「PHPフレームワーク Laravel Webアプリケーション開発」を執筆しました
  • 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
    ymm1x
    ymm1x 2018/05/24
  • PhpStorm + Docker for Mac(docker-compose)での PHPUnit と Remote Debug の設定 - Shin x Blog

    PhpStorm から Docker for MacDocker コンテナ内で PhpUnit のテスト実行や Remote Debug を行うための設定です。 下記バージョンにて構築を行いました。 PhpStorm 2017.2.4 Docker for Mac 17.09.0-ce-mac35 PHP 7.1( php:7.1-apache ベース ) Xdebug 2.5 サンプルプロジェクトの取得 サンプルプロジェクトを用意したので、このプロジェクトをベースに設定を行います。このプロジェクトには、初期状態の Laravel アプリケーション(5.5)が含まれています。 github.com git で clone して、make を実行すると composer install と docker-compose up が実行されます。ブラウザで、 http://localhos

    PhpStorm + Docker for Mac(docker-compose)での PHPUnit と Remote Debug の設定 - Shin x Blog
  • 「型を意識した PHP アプリケーション」を発表しました / PHP カンファレンス 2017 - Shin x Blog

    PHP カンファレンス 2017 にて「型を意識した PHP アプリケーション」を発表してきました。 発表 github.com 型宣言が付いていないコードに、スカラー型の型宣言、ドメインに特化した型の型宣言と型(クラス)の実装を行うライブコーディングをメインにしました。 ライブコーディングの部分は動画を見た方が分かりやすいです。下記の 13:00 頃からコーディングがはじめるので、こちらも合わせてどうぞ。 きっちりまとめられた資料をベースに発表するのも良いのですが、実際にコードを書いていくのを見た方がイメージも伝わりやすいですし、私自身も人がコードを書く様を見るのが好きなので、この構成にしました。 また、質疑応答の時間を長めに取りたかったので、編は少し短めにして時間が余るように調整しました。当初の内容からどんどん引き算していって、内容をシンプルにしたので、結果的には進めやすかったですし

    「型を意識した PHP アプリケーション」を発表しました / PHP カンファレンス 2017 - Shin x Blog
    ymm1x
    ymm1x 2017/10/12
  • PHP カンファレンス関西 2017 にて基調講演をしました - Shin x Blog

    PHP カンファレンス関西 2017 の基調講演にてお話してきました。 発表資料 今回は、開発現場から見た PHP の特徴をあらためて見直すということで、私が日頃感じている特徴をお話しました。最後には現場で奮闘している PHP エンジニアへのメッセージを入れました。 朝一番のセッションにも関わらず、立ち見が出るほど多くの方に参加頂き、嬉しい限りでした。参加頂いたみなさん、ありがとうございました。 資料だけでは伝わらない部分もありますが、資料を上げておきます。 終わり際にある「繋ぐ言語」というのは、2014 年基調講演された郡山さんの「全てを結ぶ力」へのオマージュだったりします。発表後に会場でご人に伝えるとがっちり握手して頂けました :) 基調講演 これまで、招待講演も基調講演を招く側も経験していたのですが、基調講演で話すというのは初めての経験でした。 はじめは、いつもの発表のノリで軽く受

    PHP カンファレンス関西 2017 にて基調講演をしました - Shin x Blog
    ymm1x
    ymm1x 2017/07/21
  • 子どもの iPhone SE に行った設定リスト 2016年12月 - Shin x Blog

    子ども(13 才以上)用に iPhone を購入したので、セットアップしたメモです。 iPhone IIJmio を利用するために、Apple Store で SIM フリーの iPhone SE を購入しました。 www.apple.com SIM 私が、IIJmio を利用していて、何ら不都合が無いので、同じく IIJmio にしました。連絡は、LINE(チャット or 電話)で行うつもりなので、データ通信専用 SIM を申し込みました。 3GB プランで、900円/月です。(後述する i-フィルター for マルチデバイス を申込んだので、+ 360円) www.iijmio.jp ペアレンタルコントロール(機能制限) 利用できるアプリやアクセス先を制限できる機能です。必要な箇所を設定しました。 support.apple.com Apple ID 利用者が、13 才未満なら子ども用

    子どもの iPhone SE に行った設定リスト 2016年12月 - Shin x Blog
  • アプリケーションから例外を投げる派、投げない派 - Shin x Blog

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

    アプリケーションから例外を投げる派、投げない派 - Shin x Blog
  • パフォーマンスを意識して正規表現を書く - Shin x Blog

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

    パフォーマンスを意識して正規表現を書く - Shin x Blog
  • ここを気をつけるともっと良くなる勉強会の発表 - Shin x Blog

    勉強会や技術系のイベントで色々な発表を聞いていると、せっかく勇気を出して壇上に立ったのに、ちょっとしたことでもったいなあと感じることがあります。これは特に、発表に慣れてない人に多く感じます。 エントリでは、大いなる自戒を込めて、発表慣れていない人へこの辺を気をつけるともっと良くなるよ、というポイントを挙げてみます。 なお、下記のポイントは、発表慣れている人や意図してやっている人はスルーして下さい :) 1. 自己紹介が長い LT の時に感じるのですが、発表時間が 5 分しかないのに、自己紹介に時間をかけるケースがあります。自分が何者か伝えるのは大切ですが、自己紹介より発表内容が大事です。また、聞いている側からすると数多くの発表者の中の一人なので、よほどインパクトがある自己紹介でないと、あまり覚えていなかったりします。(それより内容の方が記憶に残りやすい。) やはり内容が大事で、そこが聞き

    ここを気をつけるともっと良くなる勉強会の発表 - Shin x Blog
  • PHP 7 の無名クラスから考えるクラスの在り方 - Shin x Blog

    いよいよ、PHP の次期メジャーバージョンの PHP 7 がリリースされます。すでに、RC4 が登場しており、来月予定されているリリースが楽しみです。 PHP 7 には幾つかの新機能が盛り込まれているのですが、その中でも気になるのが、無名クラスです。 無名クラスとは 無名クラスは、クラスの定義をすることなく、オンザフライでオブジェクトを生成する機能です。匿名関数(ネイティブクロージャ)のクラス版だと思うとイメージしやすいです。 無名クラスは、new classで、生成します。下記が、そのサンプルです。ここでは、sayメソッドを持つ無名クラスを定義して、$objectに格納しています。$object の say メソッドを実行すると、'Hello'という文字列が出力されます。 <?php $object = new class { public function say() { echo

    PHP 7 の無名クラスから考えるクラスの在り方 - Shin x Blog
  • 1