Shin x Blog

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

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 にメッセージをエンキューする必要があるわけで、 パフォーマンスを見…

独立したコアレイヤパターン

モチベーション 全体 サンプルアプリケーション コアレイヤ サービスレイヤ 口座間送金ユースケース 処理の流れ コアレイヤ サービスレイヤ コアレイヤ対象範囲 DDD スタイル 手続き型スタイル 実装アイデア レイヤでパッケージを分ける コアレイヤの範囲 ポ…

懇親会ではなく本編で交流できた PHPerKaigi 2018

phperkaigi.jp PHPerKaigi 2018 に参加してきました。 「PHP の現場」公開収録 主催の長谷川さんからお誘いを頂き、 @goodoo さんをゲストにお招きして、「PHP の現場」の公開収録をやってきました。 「初の公開収録」と言いたいところなのですが、1 回目が…

PhpStorm + Docker for Mac(docker-compose)での PHPUnit と Remote Debug の設定

PhpStorm から Docker for Mac の Docker コンテナ内で PhpUnit のテスト実行や Remote Debug を行うための設定です。 下記バージョンにて構築を行いました。 PhpStorm 2017.2.4 Docker for Mac 17.09.0-ce-mac35 PHP 7.1( php:7.1-apache ベース ) Xdebug…

TDD を体験する本「テスト駆動開発」

TDD の原典である テスト駆動開発 が、t_wada さんによって再翻訳されるということで興味を持っていたところ、見本誌を送って頂きました。ありがとうございました。早速、拝読させて頂きました。 以前の翻訳版である「テスト駆動開発入門」が出版された頃、X…

「型を意識した PHP アプリケーション」を発表しました / PHP カンファレンス 2017

PHP カンファレンス 2017 にて「型を意識した PHP アプリケーション」を発表してきました。 発表 github.com 型宣言が付いていないコードに、スカラー型の型宣言、ドメインに特化した型の型宣言と型(クラス)の実装を行うライブコーディングをメインにしま…

PHP カンファレンス関西 2017 にて基調講演をしました

PHP カンファレンス関西 2017 の基調講演にてお話してきました。 発表資料 今回は、開発現場から見た PHP の特徴をあらためて見直すということで、私が日頃感じている特徴をお話しました。最後には現場で奮闘している PHP エンジニアへのメッセージを入れま…

DI(Dependency Injection)に関するメモ

PHPの現場 にて、DI 談義を行うので、頭を整理しておくためのメモです。 DI についてきちんと知りたいのであれば、参照に挙げたリンク先に有用な記事があるので、そちらを参考にして下さい。 PHP を念頭に置いてますが、Java など他言語でも大枠は同じだと思…

WordPress Way を知る本 「エンジニアのための WordPress 開発入門」

著者の杉田さんに献本して頂いたので拝読しました。 PHP エンジニアのための WordPress 本 タイトルにあるとおり、普段フレームワークなどを使って Web システムを開発している PHP エンジニアのための WordPress 本です。 ユーザとして WordPress を利用す…

「PHPの現場」という Podcast をはじめます

学生の頃からラジオを聞いて育ってきたので、技術系のPodcastが好きで色々と聞いています。 日本語で PHP 界隈の話題について話すPodcastが無かったので、はじめてみることにしました。 「PHPの現場」というPodcastです。 PHP がメイントピックにはなります…

openssl_encrypt() による PKCS#7 パディング

PHP の openssl_encrypt() にて、ブロック暗号による暗号化を行うと PKCS#7 パディングが行われます。この動きを確認してみます。 http://php.net/manual/ja/function.openssl-encrypt.php PKCS#7 パディング ブロック暗号では、決められたブロック長を単位…

アプリケーションから例外を投げる派、投げない派

例外をどのような状況に投げるかもしくは投げないか、というのはわりと意見が分かれるところです。もちろん、プログラミング言語によっても異なりますが、同じプログラミング言語ユーザ同士でも様々です。 基本の考え方 ベースとしては、Effective Java の項…

子どもの iPhone SE に行った設定リスト 2016年12月

子ども(13 才以上)用に iPhone を購入したので、セットアップしたメモです。 iPhone IIJmio を利用するために、Apple Store で SIM フリーの iPhone SE を購入しました。 www.apple.com SIM 私が、IIJmio を利用していて、何ら不都合が無いので、同じく II…