PHPerKaigi 2023 トーク一覧
とある開発現場のなかみチラ見せします

みなさん、どんな環境、フローで開発されていますか?
このセッションでは、私が開発をしているとあるプロダクトのなかみをチラ見せしつつ、
開発環境はどんな構成?デプロイ先は?テストってどうしてます?CI/CD はどんな感じ?
など、普段はあまり詳細を話すことが少ない開発の現場を解説します。
PHP の正規表現はどれをどのように使えばよいのか?

みなさんは、PHP で正規表現を使っていますか?
ちょっとした条件判断や、文字列の整形などで使われていると思いますが、その正規表現は複数あることをご存知でしょうか?
Perl準拠の正規表現である preg 系関数、マルチバイト文字列の正規表現が使える mb_ereg 系関数 の2つです。
しかし、PHP プログラマーは一体どういう時にどっちを使えばよいのでしょうか?
このポスターセッションでは、PHP の正規表現が今までどのように実装されていて、どう現れてきたのかを順を追って説明します。
これを読めば、用途に合わせて、どの正規表現関数を選択すればよいのかを自分で考えられるようになります。
Laravel プロダクト開発・運用の失敗学

Laravel にて基本機能を構築した弊社の不動産投資クラウドファンディングシステム「不特法クラウド」は、2020年9月に正式リリースされました。
2年以上にわたる機能開発・システム運用、またインフラや DevOps 改善の試行錯誤の中で直面してきた様々な失敗を取り上げると共に、失敗から学んで品質改善につなげることのできた事例をご紹介します。
ゼロからプロダクトを磨き上げてきたエンジニアの汗と涙、何よりプロダクトへの愛情の詰まったプレゼンテーションです。
Dependency injection frameworks in PHP

本セッションでは、PHP のいくつかの dependency injection framework についての調査・検討を行います。
具体的には、 https://github.com/capsulephp/comparison にて示されている特定のシナリオを実現できるか?という比較内容を紹介します。
上記に加え、このリポジトリでは触れられていない追加機能や利用方法の違いについてまとめ、検討を行います。
失敗から学ぶオーナーシップ欠乏症への処方箋

開発チームには2種類のオーナーシップ欠乏症が発生しがちです。
「もっとオーナーシップを持って開発したい」「もっとオーナーシップを持って開発して欲しい」
- オーナーシップとは何か
- エンジニアがオーナーシップを持つにはどうしたらいいか
- (エンジニアをマネジメントする立場で)エンジニアにオーナーシップを持ってもらうにはどうしたらいいか
上記についてフリーランス→社員エンジニア→エンジニアリングマネージャと経験してきた立場から、実体験を交えて考察します。
文字コードとPHP - mbstringアップグレードガイド

PHP 8.1以降のmbstringの進化はとどまることを知らず、文字コードの処理に後方互換性の破壊が発生していたりします。
それを網羅したブログを公開したところ、作者のAlexさんにも読まれて、そこからレビューをお手伝いするようになりました。
また、PHP 8.3となるであろうバージョンでは、UTF-8への処理に高度な最適化が加わりそうなため、大幅な改善が期待できます。そのため、UTF-8を使うことをますます強くお勧めすることになりそうです。
本セッションでは、レビューに加わることになった経緯や、UTF-8とはというところから、文字コードとmbstringへの理解を深めていくものとしたいです。
入門 Amp 〜 純 PHP でも非同期処理ができる! 〜

PHP の非同期処理ライブラリ Amp (https://amphp.org/) の入門記事です
豊富な非同期処理機能を持つ Amp を使い、簡易なアプリケーションを作る方法を紹介します
趣味としてはじめるOSS

今ではオープンソースソフトウェア(OSS)を使うことは当たり前になっています。このことに異論を挟む人はいないでしょう。
ところで、「OSSへのコントリビュートをするのは敷居が高い」「OSSを作るのはなかなか難しい」とよく聞きます。
確かにそれもOSSの1つの側面かもしれません。
そこで提案です。趣味としてOSSを書くのはどうでしょう?
実はOSSは趣味で書くのもアリなのです。
皆さんの中にも「プログラムが好き」「プロダクトが好き」「モノづくりが好き」という方は少なくないはずです。
そんなあなたは趣味OSSの素質ありです。
筆者は「少し実用的で小さなOSSを書くのが趣味」と公言しています。
あくまで「いち趣味の紹介コラム」としてOSS開発のはじめかたをお伝えできればと思います。
保存版 PhpStorm + Xdebug の設定

Xdebug は開発時に最も頼りになる相棒です。
一般的には、ウェブアプリケーションのステップ実行が有名ですが、コンソールコマンドや、PHPUnit のテストでもステップ実行させることが可能です。
しかし、慣れていない人には、Xdebug の設定は少しむずかしいです。本記事では、Xdebug の仕組みをかんたんに抑えつつ、PhpStorm + Docker という最近の開発環境における Xdebug の設定方法についてまとめます。
上手に Xdebug を設定して、スムーズなウェブアプリケーション開発が出来るようになりましょう。
PHPをバージョンアップするための技術と戦略

PHPのアプリケーションを運用・保守していく中で、PHPのバージョンアップは重要な課題です。
本稿ではPHPをバージョンアップするために必要な技術や戦略を、コードの削除・静的解析から監視・リリースまで幅広く紹介します。
EOLではないモダンなPHPアプリケーションがより多く運用されるきっかけになれば幸いです。
Eloquentチートシート

Eloquentには多くの機能がありますが、そのうちよく使うものは実は一部だけです。
Eloquentチートシートは主要な機能をメソッド・プロパティ単位で、それらの引数や戻り値・型を簡潔に、またグループ分けすることで把握しやすい形で一覧できるチートシートです。
使用時に引っかかりがちな罠を回避するヒントも満載!
「ちょうぜつソフトウェア設計入門」とかいう本の宣伝をします

書いたら書いただけ動くのが PHP のいいところですが、書き散らかしたコードは長年維持管理するのがたいへんですよね。そんな悩みからちょっとアーキテクチャの設計に興味を持った PHPer のみなさんに、設計でどんなポイントをおさえるといいかを、マンガでわかるかたちで書きたいと思います。マンガのオチはもう決まっています。「つづきは『ちょうぜつソフトウェア設計入門』で → 今すぐ購入」になる予定です。
php8から導入されたJITコンパイラについて学ぼう!

php8からJITコンパイラが導入されました。
JITコンパイラを有効化すると平均で1.5〜2倍のパフォーマンスの改善があったと公式サイトに書いてあります。
https://www.php.net/releases/8.0/ja.php
JITコンパイラの仕組みについてや、実際にどのくらいのパフォーマンスが改善するのか等をまとめて書いていこうと思う。
PHPStanクイックガイド2023

PHPStanはプログラムを実行することなくコードの怪しい箇所を特定できる静的解析ツールです。
本稿では2018年からPHPStanを業務で利用している筆者が実アプリケーションにPHPStanを導入する上でのベストプラクティス、心がまえ、アンチパターン、便利な型について紹介します。
名著「パーフェクトPHP」のPart3に出てきたフレームワークを令和5年に書き直したらどんな感じですかね?

「キャリア10年超のphperなら大体読んでいそう」と思えるくらい、非常に頼れるパーフェクトPHPという書籍があります。
出版当時、2010年。
タイミング的に、世界は「Composer前夜」であり、PHP-FIGも生まれかけレベル。HackやPHP7といった激震を迎える前の話です。
そんな時代の偉大な成果物を、令和5年にPHP8.2で「今風」に書き直したら──どんな感じになるのでしょう?
「10年前のMVCを支えるコード」と「最近っぽいFWの要件」の比較を交えながら、大げさに新機能を使ったりしてみて、実際にFWを作ってみましょう。
内容
- パーフェクトPHPに出てきたFWのおさらい
- PHPのフルスタックFWの「今っぽさ」を考える
- その差をどう実装に落とし込むか、やってみる
ある日オレオレフレームワークを作りたくなったぞ!!

PHPを書く現場から離れて4年ばかりすぎたある日、唐突に天啓が舞い降りた
「私もオレオレフレームワークが作りたい……!」
(*良い子は真似しちゃいけないし同僚にそんな人がいたら殴ってでも止めよう!)
トーク内容
動機とコンセプト
composerをinitしたりrequireしたりアレコレ
他のフレームワークに学ぶ
ライブラリを選んで作るフレームワーク
テストを書いてCICDで守る
自分のコードに置き換えて作る私だけのオレオレフレームワーク
packagistへの公開
ハマりまくると思うのでその全て
七顛八倒するはずなので気楽に楽しんでもらえたら!
想定視聴者
ライブラリ(フレームワーク)ができていく過程をみてみたい人
空のファイルから全部書いたことがない人
含まれないもの
DDDとかイケてる設計の話とか
実運用に耐えられるかどうか
名付けできない画面を作ってはならない - 名前を付けるとは何か

名付け、してますか?ふと気付けば、常に名付けばかりしているのではないでしょうか。
できる限りわかりやすい名前を付けようと一日の稼働時間を潰した経験はありませんか?
日々当たり前のように名付けをしていますが、これは我が子の命名と同じくらい大切な行為です。
名前を付けることで何が起きるのか。「名付けできない画面」とはどういう状態なのか。
名付けに対しての意識を、今こそ改めて考える。そんなトークができればと思います。
AWS Lambda PHPのProduction利用を続ける僕がAWS App Runnerの可能性を探る

AWS App Runner PHP8.1がサポートされました!
AWSにてマネージドにPHPを利用できる環境として、注目が集まるAWS App Runnerですが、
Production利用は可能なのでしょうか。
AWS Lambda PHPのProduction利用の回数も重ね、
マネージドPHPのノウハウが少しずつ溜まってきたので、
そのノウハウとも比較しながらAWS App Runnerの可能性を探ります
お話すること
- AWS Lambda PHPについて
- AWS App Runnerについて
- 2つの環境の比較
想定する聴講者
- AWS Lambda PHPに興味がある人
- AWS App Runnerに興味がある人
- マネージドな環境に興味がある人
技術負債とプロジェクトと私たち

サービス運用者の皆さん、技術負債解消に向き合えてますか?
機能拡張に対して技術負債がネックになり開発効率が落ちることに、何度も頭を悩ませた事があるのではないでしょうか。
ローンチして8年のフォトウエディング・前撮りの日本最大級のクチコミサイト「Photorait」では、サービスを更に拡大するべく新機能の開発を行いながら、長い年月の中で生まれたレガシーなシステムや非効率な運用フローなど、技術負債への課題解消も並行して行っています。
本セッションでは、新たな機能開発を止めずに並行して行っている負債解消への取り組みと、事業メンバーへの理解促進、そして今後の開発サイクル加速のために実施していることを発表します。
対象者
・サービス運用エンジニア全般
・技術負債改善の進め方を知りたい方
・事業メンバーの理解や賛同を得る方法を知りたい方
社内のエンジニアが開発以上に時間を注いだ「セキュリティ対策が何故急務か?」の話
OSSが大事にしていることは、開発をすすめること。
しかし、それと同じく大事にしていること、それが「セキュリティ対策」。
なぜ大事なのか?どのくらいの時間をセキュリティ対策に費やすべきなのか?
実際に多くの時間をセキュリティに費やしたエンジニアが解説していきます。