採択
2024/06/22 10:25〜
Fusicホール
レギュラートーク(15分)

PHP コードの実行モデルを理解する

shin1x1 新原 雅司

PHP コードを実行するために必要なのが、PHP 実行環境です。

多くの Web アプリケーションでは、php-fpm や Apache httpd モジュールの mod_php を利用しているでしょう。こうした環境では、HTTP リクエストごとに独立したコンテクストで PHP コードが実行されます。個々のコンテクストは独立しているので、外部リソースを共有しない限り、お互いの干渉を気にせずにアプリケーションコードを実装できます。

本発表では、このような PHP の動作モデルをご存知無い方を対象に、どのように PHP コードが動作しているのかを図解を交えて解説します。

セッションのゴール
PHP アプリケーションがどのように動作するかイメージできる。

2
採択
2024/06/22 10:25〜
ホライズンテクノロジーホール
レギュラートーク(15分)

SPLから始める「データ構造」入門

o0h_ きんじょうひでき

データ構造、仲良くしていますか?
小難しい、「文系」や独学出身だし触れていない、なんて人も…

特定の問題に特化し、処理を効率的にする存在。
問題に特化する、即ち「意図」が宿る!
何をするコードなのかを表現し操作も簡潔にする、パワフルな選択肢になりえます
「0.001秒を削りたい」場面が少なくても役立つでしょう

数字や式を見ると頭パンク!な人に向け
「コードを簡潔に意図を明確に」という観点から
PHP標準クラス(SPL)でデータ構造の世界に入門するトークです

▼ねらい
仲良くなれそう!のキッカケを作る
▼対象
食わず嫌い、苦手意識を持つ人。1年前の私…
https://php.net/spl.datastructures を見た事がない人
▼話す
データ構造って何が嬉しいの?
SPLには何があって、どんな特徴?
コードを読み易くしてみる、の実践
▼話さない
詳細な計算量やコストの考え方

8
採択
2024/06/22 10:40〜
Fusicホール
レギュラートーク(15分)

Fat Controller は悪か? ~光のFat Controller・闇のガリController~

stwile871 スタヰル

Fat Controller と聞いて、いい印象が思い浮かばないのはなぜだろう。
Fat Controllerに何かの恨み辛みを含む記事は見たことがあるが、逆は全くない。

そもそもFat Controllerとは何か?
何がFat Controllerを悪者たらしめるのか?

世の中のすべての物事森羅万象には、長所短所あります(諸説ある)。
筆者はFat Controllerに助けられることが、ここ数年でしばしばあったからこそ、Fat Controllerに向き合いたいと思う。

Fat Controllerの真実を、あなたも知りたくはありませんか?

トークで話すこと

  • 開発の進め方
  • MVP
  • 設計
  • テスト駆動開発
7
採択
2024/06/22 10:40〜
ホライズンテクノロジーホール
レギュラートーク(15分)

並行処理を学びGuzzleと仲良くなる

shimabox しまぶ

昨今、サーバーサイドのお仕事といえばクライアントからのリクエストに応えてjsonを返す簡単なお仕事になっているかもしれません。
ですが、まれに外部APIや内部のサブシステムをHTTP, RESTで呼び出して返却された値を扱う場面もあると思います。
そんなとき便利なのが、そうGuzzleです。

このGuzzle、一言であらわすと便利なHTTPクライアントなのですが、中でも強力なのが非同期リクエストならびに並行処理(Concurrency)を扱えることです。
(我々人類はひとつひとつリクエストを投げてそれを待つ時間など無いのです)

今回のトークでは、

  • Guzzleはどのように並行処理を扱っているのか
    • GuzzleHttp\Promise, Pool について
  • どのようにテストを書けばいいのか

をお話したいと思います。

一緒にこのGuzzleと仲良くなりましょう!

7
採択
2024/06/22 11:50〜
Fusicホール
レギュラートーク(15分)
九州勢(出身or在住)

有効な使い方を正しく理解して実装するPHP8.3の最新機能

seike460 清家史郎

PHPの最新機能が発表されるたびに、へぇ~って流してしまいませんか?
新しい機能についての記事には目を通すけど、試すまでいかないことはよくあると思います

このトークでは直近のPHP8.3で追加された機能を紹介し、
効果的に活用する方法を実践的なコードとともに解説します

ただ記事をみて終わるだけに留まらない、
実際に解決したい課題とセットで機能の解説を時間の許す限り出来ればと思います

このトークを聞くことで、明日からPHP8.3の新機能を利用して、
皆様がさらにPHPをうまく使えるお手伝いが出来ると幸いです

  • 対象の聴講者

    • PHP8.3の新機能に興味がない方
    • PHP8.3の新機能は知ってるけど、使い方がピンとこない方
  • お話する内容

    • PHP8.3の新機能を具体的なユースケース共にコードを示して紹介
9
採択
2024/06/22 11:50〜
ホライズンテクノロジーホール
レギュラートーク(15分)

なぜキャッシュメモリは速いのか

tomzoh 長谷川智希

2024年1月、「なぜキャッシュメモリは速いのか」が話題になりました。
この質問に答えるのはなかなか難しく、X(Twitter)ではいろいろな回答がされていました。この回答はさまざまな立場・理解からされていて、Xのタイムラインをご覧になっていた方はいまいちしっくりこなかったのではないでしょうか。

このトークでは「なぜキャッシュメモリは速いのか」に答えるのに必要な知識を、初心者の方にもわかりやすくご説明します。

  • キャッシュメモリとは何か
  • なぜキャッシュメモリを使用するのか
  • キャッシュメモリとメインメモリは何が違うのか
  • 結局なぜキャッシュメモリは速いのか

キャッシュの使いこなしは現代コンピュータにおいて避けることはできず、キャッシュを制するもののみがコンピュータを高速に動作させられると言っても過言ではない状態です。キャッシュを理解し、キャッシュを楽しみましょう!

2
採択
2024/06/22 13:05〜
Fusicホール
レギュラートーク(30分)

Laravel のセキュリティはどうなってる?突撃コードリーディング

ad5jp Roku

Laraveler のみなさん、アプリのセキュリティ、気にしてますか?
何となく「Laravel がよしなにやってくれてる」で片付けてませんか?
安心してください、私もです。
XSS、CSRF、SQLインジェクション、セッションハイジャック、ファイルアップロード脆弱性、ログイン機構に対する攻撃、etc。
今回は、これらそれぞれの攻撃に対して、Laravel が何をしてくれているのか、その実装を追っていきたいと思います。
思わぬ落とし穴も見つかるかもしれません。

3
採択
2024/06/22 13:05〜
ホライズンテクノロジーホール
レギュラートーク(30分)

書き込み処理をスケールさせるために必要な非同期処理の基本と考え方

soudai1025 曽根 壮大

サービスが成長すると愚直にコードを書いているだけではパフォーマンスの問題にぶつかります。
参照はcacheやリードレプリカを増やすことで対応することができますが、書き込みが多い場合はそういうわけには行きません。

PHPの鬼門ともいえる、書き込み処理を如何に改善していくか。
そのために必要な基本的な考え方や実際のアプローチについて説明します。

話をすること

  • イベントアーキテクチャとイベントストリーミング
  • 書き込みをスケールさせるために必要な勘所
  • 運用するときに陥る落とし罠
  • 現場で必要な考え方
13
採択
2024/06/22 13:40〜
Fusicホール
レギュラートーク(30分)
九州勢(出身or在住)

リモートワーク時代の守護神:PHP開発者のためのセキュリティ強化術

pyama86 P山

コロナ禍以来、リモートワークの普及が進み、社内システムやプロダクションサーバへの安全なアクセスとその監査の重要性が増しています。私はこの新たな働き方を支えるため、SSHの多要素認証、短命な証明書による公開鍵認証、そしてWazuhやFalcoを活用した監査基盤の構築に取り組んできました。

特にPHP開発者にとって、セキュリティはしばしば遠い存在と感じられがちです。しかし、実は私たちの日常的な開発プロセスに深く関わるものであり、特にリモートワークが常態化する今、セキュリティ意識は必須のスキルとなっています。このセッションでは、ゼロトラストネットワークの基本概念を踏まえつつ、PHP開発者が容易に取り組めるセキュリティ対策を実践的な視点から解説します。開発プロセスにおけるセキュリティの組み込み方、安全なリモートアクセスの確保方法、そしてアクセス監査の自動化について、具体的な事例と共に紹介します。

8
採択
2024/06/22 13:40〜
ホライズンテクノロジーホール
レギュラートーク(30分)
U25(登壇時に25歳以下)

作って学ぶ ★ 検索機能

shunsock shunsock

検索機能は現代の情報検索の基礎で, 多くのWebサービスに搭載されています.
検索機能の実装者としてElasticsearchなどの全文検索エンジンを使ったことのある方も多いと思われます.

一方で, その内部実装を知っている方は多くないのではないでしょうか?
本セッションは検索エンジンをフルスクラッチ実装しながら解説するパワフルなコンテンツです!

基本的な検索エンジンの実装のトピックとして、以下を想定しています

  • 転置INDEXの実装
  • AND / OR検索の実装
  • 簡単な結果ソート手法(スコアリング)の概要と実装
  • ElasticSearchなど実用的な全文検索システムにおけるスコアリングの概要実装

このセッションの対象者:

  • 検索の仕組みに興味がある方
  • 全文検索エンジンを使ったことがあるが内部の仕組みはよくわからないという方
3
採択
2024/06/22 14:20〜
Fusicホール
レギュラートーク(15分)

WebサイトのXSS脆弱性絶対転がす ―Content Security Policyのすすめ―

hoge 小川

WEBサイトにユーザがJavaScripを埋め込めると、任意の操作が可能になってしまい、非常に危険な脆弱性となります。
例えば管理者権限ユーザを狙ってセキュリティを解除させたり、情報をお漏らししたり…

これはクロスサイトスクリプティング(XSS)と呼ばれ、PHPではhtmlspecialchars()で対策できるようになっています。
とはいえ「全ページ中で1箇所でもhtmlspecialchars()忘れたら死ぬ」は辛くないですか?
自分は大丈夫?他のメンバーは?新人が来たら?そもそも"気をつける"が対策なのは…

この危険かつ面倒なXSSに対し、Content Security Policy(CSP)というHTTPヘッダが強力な防御策になります。
本発表ではCSPヘッダの紹介と実装方法、また実際にPHP + nginx + Vue構成でサービスを作った際にハマったポイントをお話しします

1
採択
2024/06/22 14:20〜
ホライズンテクノロジーホール
レギュラートーク(15分)

PHPStanの中を知ってコントリビュートしよう

tadsan うさみけんた

昨今PHPStanの活躍する現場が増えていますが、PHPStanがつけてくださる型の気持ちが理解できないという方も多くないのではないでしょうか。

無保証のツールなので懇切丁寧なマニュアルや顧客サポートがないので、適切に使いこなすには少なからず内部の仕組み、特に型付けのための仕組みを知っていることが望ましいです。
PHPStanの技術的な背景には型理論や構文解析などややこしい概念がありますが、実際のところ使うだけなら難しい知識はさほど必要なく、貢献の余地もたくさんあります。

今回のトークでは基礎知識と過去の事例も含めて以下のようなお話をします。

  • PHPStanを開発する上での特徴的なしくみ
  • 最低限だけ知っておきたいPHP構文のはなし
  • PHPStanは型をどのように扱っているのか
  • 型を疑おう
  • functionMap vs DynamicReturnType
12
採択
2024/06/22 14:35〜
Fusicホール
レギュラートーク(15分)
初登壇(これまでカンファレンスで登壇経験なし) 九州勢(出身or在住)

半年かけてPHP5.6からPHP7.4までバージョンアップした苦労と工夫

kechiiin_ けちーん

2023/09、PHP5.6からPHP7.0にアップデートしました。
そこから後述のスケジュールでバージョンアップを行なっていきました。

どのように進めていったのか、何に苦労したのか、何を工夫したのか、について話します。


バージョンアップスケジュール
※ECサイト、管理画面の2環境のスケジュールです

・ECサイト
7.0 2023/09
7.1 2023/11
7.2 2023/12
7.3 2024/02
7.4 2024/03

・管理画面
7.0 2023/09
7.1 2023/10
7.2 2024/01
7.3 2024/01
7.4 2024/03

2
採択
2024/06/22 14:35〜
ホライズンテクノロジーホール
レギュラートーク(15分)

Azureもなかなか良いですよ! - PHPerの為のAzure入門

kaz_29 渡辺一宏

みなさん様々な環境にPHPのアプリをデプロイしていることと思います。

PHPコミュニティでは、Azureを使った事例はあまり公開されていないように思います。
AzureにもPHPをデプロイするのに適した良いサービスがたくさんあるのですが、「Azureはどこから手をつけていいかわからない...」といった話を聞くことも多いです。

そこで、このセッションでは、AzuereでPHPを含む今時なWebアプリケーションを動かすことのできる様々な環境を比較しつつご紹介しようと思います。

想定する聴講者
PHPをAzureで利用する環境に興味がある方
Azureには興味があるが、どこから手をつけて良いかわからない方
Azure初心者〜中級者の方

2
採択
2024/06/22 14:55〜
Fusicホール
レギュラートーク(30分)

PHPでデータベースを作ってみた

hanhan1978 富所 亮

PHPはWebアプリケーション開発に特化したプログラミング言語です。Webアプリケーション開発においては非常に柔軟で強力ですが、リレーショナルデータベース(RDBMS)を作ることには全く向いていません。

全く向いてないにも関わらず、なぜPHPでRDBMSを作るのか?大きく分けて2つの理由があります。一つは車輪の再開発によりRDBMSの仕組みを深く理解できること、そしてもう一つはロマンです。例えば、WordpressがピュアにPHPだけで動作したら、なんだかワクワクしますよね!

本トークで話す内容

  • PHPで動くデータベースのデモ
  • RDBMSを作るために必要な構造・設計の基礎知識
  • PHPだから理解できるデータベースのコア実装
  • ステップ実行でクエリが処理される様子を観察
9
採択
2024/06/22 14:55〜
ホライズンテクノロジーホール
レギュラートーク(30分)

php-src 入門: ぼくらの画面に hello world が届くまで

sji_ch sji

皆さん、php-src (PHP 処理系のコード)読んでますか?

PHP 処理系は C 言語で書かれたプログラムであり、多くの大規模 C プロジェクトと同様にプロジェクト固有のマクロが広く使われています。言語処理系のコードというもの自体が読むのに前提知識を要するのもあり、学校で少し C を習ったことがあるくらいの人だと、読みこなすのはけっこう骨が折れます。

しかし PHP で仕事をしていく中、処理系実装を追えると簡単に解ける疑問、原因究明が楽になるトラブルシュートは案外多いです。全員といわずとも、10 人くらいのチームごと 1 人でも読める人がいれば助かる日は多いことでしょう。

このトークでは PHP スクリプトに書かれた文字列リテラル 'hello world' が処理系に読み込まれコンパイル・実行され出力バッファや SAPI 層を通りぼくらの画面へ届くまで、を駆け足で解説します。

4
採択
2024/06/22 15:40〜
Fusicホール
レギュラートーク(15分)

設計の考え方 - インターフェースと腐敗防止層編

okashoi おかしょい/岡田 正平

PHP を含む、クラスベースのオブジェクト指向プログラミング機能を持つ言語(あるいはそれ以外の言語でも)インターフェースを利用できます。
アプリケーションの実装上の設計を考えたことがある人は、インターフェースが使えると何が嬉しいのか?どんな場面で使えばよいのか?と思ったことがあるのではないでしょうか。

本トークでは、また設計の文脈で聞いたことがあるかもしれない「腐敗防止層」というワードとともにインターフェースの使い方、ひいては設計全般に通用する考え方をお話します。

想定聴講者

以下を満たす方が聴講することを想定します。

  • PHP のコードは一通り書ける(フレームワーク上でも可)
  • 機能追加等によって、実装上の設計を考える必要がある(考えたことがある)
  • クラスベースのオブジェクト指向プログラミングにおける「継承」等の挙動はわかる
6
採択
2024/06/22 15:40〜
ホライズンテクノロジーホール
レギュラートーク(15分)

WebサーバーとPHP実行方式をきちんと理解して、PHPランタイムを適切に使い分ける

samurai_se Kanon

みなさんはWebにおけるPHPランタイムを構築したことはありますか?
ある方もない方も、自分が開発時に使っているPHPランタイムがどのWebサーバーと実行方式の組み合わせで動いているか把握していますか?
把握している方は、なぜその組み合わせで動かしているのか説明ができますか?

私はこれまで、Laravelを使ったPHPランタイムを開発環境の構築も含めて、主にApache, Nginx, Laravelのビルトインサーバーの3パータンで構築してきましたが、きちんと時と場合によって使い分けてきました。

このセッションでは、

  • Webサーバーの違い
  • PHP実行方式の違い

について説明しながら、具体的にどのようにPHPランタイム(特にLaravelに焦点をおいて)を使い分けるのがよいのか?についてお話しできればと思います。

11
採択
2024/06/22 15:55〜
Fusicホール
レギュラートーク(15分)

アプリケーションをリプレイスしたら、チームとサービス運用に向き合えた

zosokh チャン

8年運用しているPHPアプリケーションをリプレイスするのにあたって、目的整理とチームに向き合い、奮闘と決断した話をします。

  • リプレイスの目的とやりたい事を整理できた話
  • 運営を続けなからリプレイスへのリソースを割く話
  • 事業決済者へのリプレイス打診の話
  • 解消したかった技術負債へ取り組みと決断。やる決断、やらない決断。
  • リプレイス実行とその後

長年運用しているサービスの技術負債を解消しきれず、リプレイスを検討している方へサポートになれれば幸いです。

3
採択
2024/06/22 15:55〜
ホライズンテクノロジーホール
レギュラートーク(15分)

PHPUnit 11 概論

2024/02/02 にPHPUnit 11がリリースされました。
前回のPHPUnit 10ほど変更量はありませんが、それでも無視できない変更がいくつかあります。
例えばデータプロバイダーからの名前付き引数が使用できるようになったり、Deprecatedになったメソッドが20個近くあったり・・・

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

https://github.com/sebastianbergmann/phpunit/blob/11.0/ChangeLog-11.0.md
https://github.com/sebastianbergmann/phpunit/blob/main/ChangeLog-11.1.md

6