Shin x Blog

PHPをメインにWebシステムを開発してます。Webシステム開発チームの技術サポートも行っています。

「制約の力 - 状態を限定する -」を PHP カンファレンス福岡 2023 で発表しました

php

2023/06/24 に福岡ファッションビルで開催された PHP カンファレンス福岡 2023 にて、「制約の力 - 状態を限定する -」を発表してきました。 発表資料 Togetter: https://togetter.com/li/2173469 制約を活用して、状態を想定されたものに限定して、不要な複…

現代のソフトウェア工学を示す「継続的デリバリーのソフトウェア工学」

年末年始に「継続的デリバリーのソフトウェア工学」を読みました。新年を迎えて、気分を一新して開発を始めるのに良い本でした。 ソフトウェア開発に役立つプラクティスを示した本 学びのエキスパート 複雑さ管理のエキスパート 実践的なツール データに基づ…

GitHub Actions で amd64/arm64 両対応の Docker イメージをビルド

PHP 開発環境の Docker イメージとして公開している shin1x1/php-dev イメージの arm64 対応を行いました。従来の amd64 も必要なので、マルチアーキテクチャビルドでイメージを生成するようにしています。 shin1x1/php-dev については下記を参照で。 blog.s…

「ドメインをモデリングして PHP コードに落とし込む」を発表しました / PHP カンファレンス 2021

2021/10/02, 03 にオンラインで開催された PHP カンファレンス 2021 にて「ドメインをモデリングして PHP コードに落とし込む」を発表しました。 発表資料 Sample code: https://github.com/shin1x1/domain-modeling-with-php Togetter: https://togetter.co…

level=0 から始める PHPStan(Larastan) 導入ガイド

PHP にはアプリケーションを実行せずに静的にコード品質をチェックする静的解析ツールがいくつかあります。有名なところでは、PHPStan や Psalm、Phan、PHPMD などがあります。本エントリでは、まだこうした静的解析ツールを導入していないプロジェクト向け…

ソフトウェア設計原則は変更容易性に通ず

色々な原則や方法論はあれど、つまるところいかに変更容易性を確保するかと言う話に帰結するのでは。極論すれは、正しく動いていて変更する必要が無ければどのような作りになっていても構わない。一方、Web アプリケーションを稼働し続ける上で全く変更しな…

Laravel 8 対応版「PHP フレームワーク Laravel Web アプリケーション開発」を執筆しました

2018 年に出版された「PHP フレームワーク Laravel Web アプリケーション開発」の Laravel 8 対応版 を共著で執筆しました。 前回は Laravel 5.5(LTS) がターゲットだったのですが、あれから 3 年近く経過して Laravel 8 が最新バージョンとなったので、こち…

リンクの冒険と Rust

年始から本業やら原稿書きやらとタスクがあり、さらに休日もコロナ禍で家にこもっていたので完全な休日というのがあまり無かった*1。そろそろ落ち着いて来たので、GW は 10 連休にして、やらなければいけないタスクはできるだけ作るらずに過ごすようにした。…

Software Design 2021年5月号に PHP 8 の記事を寄稿しました

Software Design 2021年5月号に PHP 8 の記事を寄稿しました。 Software Design (ソフトウェアデザイン) 2021年5月号 [雑誌]発売日: 2021/04/16メディア: Kindle版 PHP 8 でコーディングはどこまで変わる? 担当したのは、PHP 8 特集の第 1 章「PHP 8 でコー…

2021 年近況

2021 年になりました。 以前は毎年 1 年の振り返りやら新年の抱負などを blog に書いていたのですが、最近はご無沙汰だったので近況報告という形で書いてみます。 仕事 仕事では、現在もクライアントワークとして Web アプリケーション開発に携わっており、…

「PHP 8 で作る JSON パーサ」を発表しました / PHP カンファレンス 2020

2020/12/12 にオンラインで開催された PHP カンファレンス 2020 にて「PHP 8 で作る JSON パーサ」を発表しました。 発表資料 sample code: https://github.com/shin1x1/php8-toy-json-parser 発表で紹介したコードは、phpcon2020 タグになります。 https://…

PHP 8 の新機能を使ってコードを書いた雑感

PHP カンファレンス 2020 の登壇のために PHP 8 で JSON パーサを書いてみました。 https://github.com/shin1x1/php8-toy-json-parser いくつか PHP 8 の新機能を使ったのでその雑感です。 Constructor Property Promotion Named arguments Union Types Matc…

PHP 8 Attribute シンタックスの変遷

php

PHP 8 の新機能の一つ、Attribute の形式が紆余曲折ありながら最終的に #[] となりました。実用上は #[] 形式だけ覚えておけば良いのですが、シンタックスの変遷は興味深いものだったので残しておこうと思います。 Attribute Attribute 仕様の変遷 8.0.0alph…

事業会社の現場 - 「Engineers in VOYAGE ― 事業をエンジニアリングする技術者たち」

@makoga さんから「Engineers in VOYAGE ― 事業をエンジニアリングする技術者たち」を送って頂きました。ありがとうございました。 VOYAGE GROUP にある 5 つの事業会社についてそれぞれの事業を支えるシステムの開発、運用、改善といった内容を在籍するエン…

PHP 8 をオフィシャル Docker イメージで試す

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-の…

Go で containerd を操作するチュートリアル

containerd のサイトに Go で containerd を操作するチュートリアルがあったのでやってみました。 containerd.io チュートリアル このチュートリアルでは、Docker Hub にある redis イメージを取得し、コンテナ(タスク)として実行するまでを実装します。 c…

ベースイメージを共通化して docker-compose up を速くする

docker-compose で複数サービスを起動する際に時間を要するのが、Docker イメージのダウンロードと展開です。この時間を削減するために、ベースイメージを共通化する方法を試してみました。 本エントリでは、開発環境や CI 環境に docker-compose を利用する…

PHP 7.1 - 7.4 の開発用 Docker イメージ shin1x1/php-dev を公開しました

Web アプリケーション開発/CI用途を想定して、必要な拡張を有効にした PHP 7.1 - 7.4 の Docker イメージを DockerHub に公開しました。 hub.docker.com 動機 開発/CI で Docker イメージをよく利用しています。オフィシャルの PHP イメージ(library/php)…

誰のためのソースコード?

「誰のためのデザイン?」の旧版と改訂・増補版を読みました。 以前に旧版を読んだのですが、その記憶もあやふやなくらい前だったので、あらためて読み直し、その面白さゆえに改訂・増補版も購入してこれも読み終えました。 Web システム開発を生業としている…

「Kubernetes で構築する PHP 開発環境」を発表しました

2019/12/01 に東京で行われた PHP Conference Japan 2019 - #phpcon にて、「Kubernetes で構築する PHP 開発環境」を発表してきました。 発表資料 サンプルコード: https://github.com/shin1x1/laravel-k8s-dev-sample Togetter: https://togetter.com/li/1…

「独立したコアレイヤパターンの適用 - fortee 編 -」を発表しました

2019/11/30 に東京で行われた 大改修!PHPレガシーコードビフォーアフター にて、「独立したコアレイヤパターンの適用 - fortee 編 -」を発表してきました。 発表資料 サンプルコード: https://github.com/shin1x1/independent-core-layer-pattern-fortee-de…

関数型言語で DDD - Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F#

オブジェクト指向言語でドメインモデルを実装することが当然のように行われていますが、Go で開発したり、Haskell で遊んだりしている中で、他のパラダイムの言語で実装するのはどうなんだろうかという想いがありました。 そんな時に出会ったのが、Domain Mo…

Laravel におけるリポジトリ実装のポイント

Laravel を使った開発でも、ドメインロジックと RDBMS などの永続化層へのアクセスを分離するためにリポジトリパターンを採用するケースが増えてきました。 ただ、Laravel には Eloquent という Active Record タイプの ORM があるので、これとリポジトリを…

rerun - コマンドが終了したら自動で再実行するツールを作りました

rerun というコマンドランナーを Go で書きました。rerun を使って、コマンドを実行すると、コマンドが終了した際に再実行してくれます。systemd や supervisord の簡易版と言えばイメージしやすいかもしれません。 github.com 動作イメージ 動機 rerun イン…

yae - YAML alias を展開して出力するツールを作りました

yae という YAML の alias を anchor の内容に展開した YAML を出力するコマンドを Go で書きました。 github.com YAML anchor/alias yae インストール 利用方法 元の YAML との比較 YAML anchor/alias YAML では、anchor と alias を利用することで、共通の…

「フレームワークとの付き合い方」を発表しました / Laravel JP Conference

Laravel JP Conference にて「フレームワークとの付き合い方」を発表しました。 発表資料 Toggeter: https://togetter.com/li/1319786 フレームワークの付き合い方について、自分なりの考えをお話しました。アップしたスライドには、発表用スライドではカッ…

「明日から使えるアーキテクチャ 独立したコアレイヤパターン」を発表しました / PHP カンファレンス仙台 2019

仙台初開催の PHP カンファレンス仙台 2019 にて「明日から使えるアーキテクチャ 独立したコアレイヤパターン」を発表しました。 発表資料 サンプルコード: https://github.com/shin1x1/phpconsen2019 Toggeter: https://togetter.com/li/1313010 独立したコ…

Vue.js + Vuex + TypeScript ファーストインプレッション

日頃は、サーバサイドの開発が主なのですが、その UI として フロントエンドの開発も行うことがあります。最近話題の Vue.js を試してみたのでその感想などを。 前提 これまで利用した構成 Vue.js 構成 雑感 ちょっと試す、がすぐにできる vue-cli が楽 vue …

「PHPフレームワーク Laravel Webアプリケーション開発」を執筆しました

PHPフレームワーク Laravel Webアプリケーション開発 を共著で執筆しました。 @ex_takezawa @kurikazu @shin1x1 @omoon の四人で書いた #Laravel 本がもうすぐ出ます!5.5 LTS 対応で、機能解説だけでなく、利用例を示した実践的な内容になっています。絶賛…

ab ライクに SQS にエンキューするツール en9sqs

SQS から AWS Lambda をトリガーできるようになりましたね! ワーカーを AWS Lambda で動かせるので、これは嬉しいリリースです。 aws.amazon.com en9sqs こういった機能を試すには、SQS にメッセージをエンキューする必要があるわけで、 パフォーマンスを見…