採択
2023/03/23 16:45〜
Track A
レギュラートーク(40分)

名著「パーフェクトPHP」のPart3に出てきたフレームワークを令和5年に書き直したらどんな感じですかね?

o0h_ きんじょうひでき

「キャリア10年超のphperなら大体読んでいそう」と思えるくらい、非常に頼れるパーフェクトPHPという書籍があります。

出版当時、2010年。
タイミング的に、世界は「Composer前夜」であり、PHP-FIGも生まれかけレベル。HackやPHP7といった激震を迎える前の話です。

そんな時代の偉大な成果物を、令和5年にPHP8.2で「今風」に書き直したら──どんな感じになるのでしょう?
「10年前のMVCを支えるコード」と「最近っぽいFWの要件」の比較を交えながら、大げさに新機能を使ったりしてみて、実際にFWを作ってみましょう。

内容

  • パーフェクトPHPに出てきたFWのおさらい
  • PHPのフルスタックFWの「今っぽさ」を考える
  • その差をどう実装に落とし込むか、やってみる
採択
2023/03/23 16:45〜
Track B
レギュラートーク(40分)

ある日オレオレフレームワークを作りたくなったぞ!!

FruitRiin 果物リン

PHPを書く現場から離れて4年ばかりすぎたある日、唐突に天啓が舞い降りた
「私もオレオレフレームワークが作りたい……!」
(*良い子は真似しちゃいけないし同僚にそんな人がいたら殴ってでも止めよう!)

トーク内容

動機とコンセプト
composerをinitしたりrequireしたりアレコレ
他のフレームワークに学ぶ
ライブラリを選んで作るフレームワーク
テストを書いてCICDで守る
自分のコードに置き換えて作る私だけのオレオレフレームワーク
packagistへの公開
ハマりまくると思うのでその全て

七顛八倒するはずなので気楽に楽しんでもらえたら!

想定視聴者

ライブラリ(フレームワーク)ができていく過程をみてみたい人
空のファイルから全部書いたことがない人

含まれないもの

DDDとかイケてる設計の話とか
実運用に耐えられるかどうか

採択
2023/03/23 18:50〜
Track A
レギュラートーク(40分)

PHPUnit 10 概論

2023/02/03 に約3年ぶりのメジャーバージョンアップデートであるPHPUnit 10がリリースされます。
3年ぶりということもあって、PHPUnit 9からの変更はとても多いです。
例えばPHPのrequireが7.3->8.1へと大きく変わったり、大量のクラスやメソッド、オプションが削除されたりなど・・・

今回のトークではPHPUnit 10で何が変わったのか、changelogベースで解説していきます。
必要に応じて、実際に動かしたりしながらの解説もしていきます。

採択
2023/03/23 18:50〜
Track B
レギュラートーク(40分)

ウォーターフォールに思えたプロジェクトにあったアジャイルの要素

kubotak_public 久保田賢二朗

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

採択
2023/03/24 11:15〜
Track A
レギュラートーク(40分)

ブラウザの向こう側で「200 OK」を返すまでに何が起きているのか調べてみた

akase244 akase244

「ブラウザでURLを入力してwebページが表示されるまでの仕組みを説明してください」
こんな質問をされたら、あなただったらどのように答えますか?

webアプリケーションを開発する上で、多くの技術的要素を理解していることが求められますが、
正直なところ現時点では上記の質問に対してうまく説明できるかは不安です。

この状況を踏まえ、普段何気なく利用しているブラウザの向こう側の仕組みについて、
自分なりに色々と調べてみて、当日の登壇では時間の許す限りその調査結果をお伝えしようと思います。

採択
2023/03/24 11:15〜
Track B
レギュラートーク(40分)

Win Testing Trophy Easily / テスティングトロフィーを獲得する

k1LoW 小山健一郎

「Testing Pyramid(テスティングピラミッド)」皆さんも聞いたことがあるのではないでしょうか?
テストレベルごとにテストの量(数・実行)を上層ほど小さく下層ほど大きく(ピラミッド型に)すると良いというコンセプトです。
一方、React Testing Libraryの作者であるKent C. Dodds氏は「Testing Trophy(テスティングトロフィー)」というインテグレーションテストに最も重点をおいたテストコンセプトを提唱しています。
発表者はあるAPIサーバの開発にあたり設計時点でテスティングトロフィーを目指す決定をしました。
本発表では「なぜそれを目指したのか(選択したアーキテクチャからテストコンセプト決定まで)」「いかにそれを実現していったか(インテグレーションテストを軽量に追加する仕組みでコストに対抗する)」について紹介したいと思います。

採択
2023/03/25 10:20〜
Track A
レギュラートーク(40分)

PHPの最高機能、配列を捨てよう!!

uzulla uzulla

皆さん配列つかってますか?捨てよう!!(提案)

ご存じですか、PHPはラピッドにウェブアプリをつくれます。気軽に複雑なデータ構造を作れて幸せですね。PHPには万能薬である「PHPの配列」(配列ではない)があります!

でも…便利で愛くるしい連想配列は使っていくうちにつらい気分になっていきます。

なぜか?それはコードを駆け巡る「データ」が全く信用出来ないからです。

愛すべきPHPの配列…そんなものを捨てるなんてとんでもない?いや、捨てよう!(stdClassも)

話さないこと

  • マイグレーションする方法(銀の弾丸はない、直接聞いてください)
  • 「OOPとしての正しさ」

対象者

  • 〜中級者
  • PHP>=4

非対象者

  • 連想配列でやけどしたことのない人
  • テストが完璧な人(それは解法の一つ)
  • 「俺はゼロイチだけやるんだ」の人
採択
2023/03/25 10:20〜
Track B
レギュラートーク(40分)

実例から学ぶ変化に強いテーブル設計 - 責務の分解とRDBMSの上手い使い方

soudai1025 曽根 壮大

Webサービスは生き物。
機能追加によって常に成長し、変化しています。
そんな日々の中で、機能追加する際のデータベースに対する変更はつきものです。
しかし何気ないデータベースの変更が障害の元になったり、機能追加の障壁になっていたりしませんか?

  • 本番にALTERを流したらロックでサービスが死んだ
  • 特定のカラムを毎回確認するifの列挙が辛い
  • Viewで表示されるデータがSELECTしないとわからない
  • 仕様追加の際にテーブル変更が怖い

そんな不安、心配を持っている皆様に明日からできるテーブル設計についてお話します。

対象者

  • 正規化をちゃんと勉強したことがない
  • MySQL、PostgreSQLを使っているけどなんとなくでテーブル追加、変更をしている
  • 実行計画、INDEX、言葉は知ってるけどよくわからない
採択
2023/03/25 11:15〜
Track A
レギュラートーク(40分)

いろいろなフレームワークの仕組みを index.php から読み解こう

okashoi おかしょい/岡田 正平

同じPHPでも、単一ファイルでWebページを表示するのとフレームワークを使うのとでは書き方が大きく変わります。
みなさんは不思議に思ったことはないでしょうか?

  • どうしてURLと対応するPHPファイルがなくてもHTTPリクエストを処理できるのか
  • どうしてHTTPリクエストを受け取るとControllerのメソッドが呼ばれるのか
  • どうしてecho等をしていないのにHTTPレスポンスを返せるのか
    そんな数々の「どうして」は、処理の起点となるindex.phpを読み解くことで答えが見えてきます。

フレームワークが動く仕組みを理解すれば適切な実装方法を判断したり、デバッグの際に役に立つでしょう。

本トークでは以下に示すフレームワークを取り上げ、index.phpを起点にフレームワークが動く仕組みを説明します。

  • CakePHP
  • Laravel
  • Slim
  • Symfony
採択
2023/03/25 11:15〜
Track B
レギュラートーク(40分)

面倒なのは嫌なのでコンテナのマネージドサービスに極振りしたいと思います。

n_1215 中榮健二

皆さんは普段コンテナをどのように利用されていますか?

最近AWS App RunnerがPHPマネージドランタイムをサポートするなど、コンテナを手軽に利用する仕組みがますます充実してきています。

本トークでは、PHP開発でコンテナのマネージドサービスを使うメリットやPHPならではの課題についてお話しします。

話したいこと

  • コンテナが使えるCaaS/PaaS
    • Cloud Run、App Runner、Fly.io etc.
  • PHPの実行方式
    • mod_php、PHP-FPM etc.
  • 1コンテナ複数プロセスとHTTPサーバ
  • コンテナイメージのビルド方法
    • OCIイメージ、Cloud Native Buildpacks
  • 非同期ワーカー、定時処理

話さないこと

  • Kubernetes
採択
2023/03/25 13:30〜
Track B
レギュラートーク(40分)

Laravelへの異常な愛情 または私は如何にして心配するのを止めてEloquentを愛するようになったか

KentarouTakeda 武田 憲太郎

Laravelは、PHPの中で最も利用者数が多い一方で賛否両論のあるフレームワークでもあります。中核機能であるEloquentもまた疑問を投げかけられることの多い対象です。

・Eloquentは果たして使うべきなのか?
・Laravelの何が便利なのか解らない。

私も最初そう感じつつ、数多くの開発を経てLaravelにおける驚くような生産性を手に入れることができました。使うべき機能、そうでない機能、実装のベストプラクティス、本番運用を含むコンテナ構築、これら「Laravel Way」を幅広くご紹介します。

苦労しながらLaravelを使っている方に是非ともお伝えしたい内容です。