PHPerKaigi 2023 トーク一覧
入門 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」では、サービスを更に拡大するべく新機能の開発を行いながら、長い年月の中で生まれたレガシーなシステムや非効率な運用フローなど、技術負債への課題解消も並行して行っています。
本セッションでは、新たな機能開発を止めずに並行して行っている負債解消への取り組みと、事業メンバーへの理解促進、そして今後の開発サイクル加速のために実施していることを発表します。
対象者
・サービス運用エンジニア全般
・技術負債改善の進め方を知りたい方
・事業メンバーの理解や賛同を得る方法を知りたい方
スピードを損なわないDevSecOpsなOSS開発手法
開発と運用とセキュリティの3連携は昨今のシステム開発にとって、重要な課題です。
開発期間を短縮しつつ、セキュリティも担保する。EC-CUBEが普段行っている
OSSならではの開発手法を皆さんにお伝えします。
PHPUnit 10 概論

2023/02/03 に約3年ぶりのメジャーバージョンアップデートであるPHPUnit 10がリリースされます。
3年ぶりということもあって、PHPUnit 9からの変更はとても多いです。
例えばPHPのrequireが7.3->8.1へと大きく変わったり、大量のクラスやメソッド、オプションが削除されたりなど・・・
今回のトークではPHPUnit 10で何が変わったのか、changelogベースで解説していきます。
必要に応じて、実際に動かしたりしながらの解説もしていきます。
ウォーターフォールに思えたプロジェクトにあったアジャイルの要素

弊社で5月から11月に行われたプロジェクトはエンジニアから見てウォーターフォールのようにスケジュールが組まれていた。
終わってみると特に炎上らしい炎上はなく、プロジェクトは成功した。
ここで疑問が湧いた。ウォーターフォールに思えたプロジェクトは何が要因でうまく遂行できたのか?
弊社では昨年末よりスクラムによるアジャイル開発に力を入れていたが今回は明確な期日が決められ、スケジュールが組まれたウォーターフォール・・・
力を入れていたアジャイル開発とはなにか、なぜアジャイル開発が良いと思っていたのか。そこでRobert C. Martin著「クリーンアジャイル基本に立ち戻れ(邦題)」を輪読し、うまく行ったウォーターフォールにあったアジャイル要素を見つけた。
このセッションでは弊社のウォーターフォールの事例からクリーンアジャイルで説明されているプラクティスの何が効いたのか紹介します。
アンドキュメンテッド「ちょうぜつソフトウェア設計入門」

「本にはこう書いたけど実は...」で始まるお話をしたいです。書籍はネット記事や論文と違って、いつまでも本屋さんに置かれる商品なので、考えることがいろいろあります。どんな手口で何をたくらんでいたのか、書いてないけど裏で考えてたことは何か、なんでアレをそう書いてコレはこう書いてないのか... ここでしか言えない (Twitter で漏らしてしまうかもしれないけど) ことを語らせてください。
PHPをブラウザで動かす技術

昨今、WebAssemblyへの注目度や活用が盛んになってきています。Kubernetesへの利用 やdocker desktopで動作可能になったり、ブラウザ以外への利用も広まってきています。
特にPHPerから見ても実用性のある技術になってきていると感じており、wordpress-wasmを始め、ブラウザ上でPHPを動かすという世界観も現実味を帯びてきました。
そこで今回のトークでは、PHPをWebassemblyを用いてブラウザ上で動かす技術を紹介します。
デモとして実際に動かしてみて、そのために必要な技術や課題観を皆さんに共有できたらと考えています。
PHPで学ぶ "Cacheの距離" の話

ウェブアプリケーションが思ったほど速度が出ないときに、"Cache"を利用することは多いかと思います。 例えば、実行時間のかかる SQL クエリの結果を "Cache" したり、複雑な計算処理の結果を "Cache" したりです。
しかし、パフォーマンスが上がるはずなのに、思ったほど効果がでないということがあります。そんなときは、"Cache" の基本に立ち返って、理詰めで考えてみることをおすすめします。
本トークで話すこと
- Cache とは何か、どのようなときに利用するのか
- Cache によって、改善されるものは何なのか
- PHP において利用可能な Cache の種類と効果
- ウェブアプリケーションのベンチマーク結果
作って理解するバックドア

Webサイト制作を仕事として受けているか否かに関わらず、
企業から相談を受ける立場で仕事をしていると、定期的にやってくるのが「Webサイトがハッキングされた!」という駆込みです。
私は会社員時代も含め、かれこれ10回以上この手の相談を受けてきました。
そしてそのほとんどは、Webサイトのサーバにバックドアを設置された事案でした。
WordPress 等の普及によって、本来システム屋ではないWebサイト制作事業者が気軽に PHP を動かすようになったことがその大きな要因ですが、
それが PHP である以上、我々 PHPer にとっても他人事ではありません。
今回のセッションでは、実際に PHP でバックドアプログラムを書きながら、
・バックドアとは具体的にどのようなものか
・原因と対策
・我々 PHPer に何ができるのか
をお話しします。