レギュラートーク(20分)

入門: file_get_contents 〜あるいはUnix哲学への入門〜

o0h_ きんじょうひでき

皆さんは、PHPの file_get_contents() 関数をご存知でしょうか?
とっても便利な関数です!
これを利用すると、file(ファイルでなくても可)をget(POST等でもOK)してcontents(つまり全て)を取得する事ができます。

$contents = file_get_contents('https://exmaple.com');

これだけで、インターネットからデータを取ってこれるのです!
「1発で何でも出来る」という感じが、最高にPHPっぽいなと感じます。
その一方で、あらゆるリソースにたった1つのコマンドでアクセス出来る世界観は、everything-is-a-fileの原則に則ったUnix哲学的な価値観も感じるところです。

このとっても便利な関数について、門を開いてみませんか?

話すこと

  • file_get_contentsを使ってみよう
  • file_get_contentsは何をしてくれるのか・何をしないのか
  • file_get_contentsとPHPらしさ、Unixっぽさ
  • file_get_contentsでサーバーを立てよう (※ 実装イメージ )
2
レギュラートーク(40分)

PHP FFI 入門

m3m0r7 めもり〜☆

PHP に FFI が導入されてから、どういう用途で使えばよいか悩んでいる PHPer も多いかと思います。
また、PHP FFI のマニュアルも理解しやすいかというと、ハードルは若干高いと言えるのではないでしょうか。

そこで本トークでは、PHP FFI を介したモジュールの呼び出し方の解説、自作 の C/C++ のモジュールの作成からの呼び出し方、 そして libusb と呼ばれるモジュールで USB で接続された機器の一覧を取得する実践的な方法など、どのように FFI を活用していけばよいのかを解説します。

4
レギュラートーク(40分)

実践!日本一やさしいリファクタのやり方

77web 菱田裕美

レガシープロダクトを改善する仕事は好きですか?
長いPHPer人生の中で、仕事や副業で出会ったレガシープロダクトのバグ修正やリファクタをした経験から、実際にうまく行ったリファクタのやり方とうまく行かなかったリファクタのやり方をサンプルコードを実際に改善する様子を実演しながら解説します。

1
レギュラートーク(40分)

OpenTelemetry PHPで体感するオブザーバビリティ入門!

atKoga_ 古賀 敦士

みなさんはシステム障害が起きた時、どのように調査を行いますか?
根拠となるデータを元に仮説を立てて検証するというのがセオリーですが、時に必要なデータが無くて行き詰まったり、経験則や自身の勘に頼ってしまいがち、という事もあると思います。

ログ・メトリクス・トレースはシステムの状態を可視化するデータ(テレメトリーデータ)の代表格で、これらを上手く活用することにより事実に基づいて仮説・検証プロセスを回すことができます。このようにして、どれだけ複雑なシステムであっても理解しやすい状態にすること、いわゆるオブザーバビリティを高めることが近年注目されています。

OpenTelemetryはこれらのデータを収集するためのツールとして登場し、これによってオブザーバビリティを高めやすくなってきています。そして、OpenTelemetry PHPが最近GAされ、PHPアプリケーションにもこの波がやってきました。

本セッションではまずOpenTelemetryについて紹介し、サンプルアプリケーションを通じてPHPでテレメトリーデータを収集・分析する方法を見ることで、オブザーバビリティを体感する場にできればと思っています。

想定ターゲット

オブザーバビリティ入門したい方
オブザーバビリティは知っているが、PHPでの実践方法について知りたい方

7
採択
2024/03/07 17:30〜
Track A
レギュラートーク(20分)

Readable 正規表現

shunsock shunsock

Web ApplicationをPHPで記述するときに, 多くの場合, 文字列の正規表現を扱うコードは必要です. また, 正規表現を使ったコードは重要な部分を担うことが多いです. 例えば, uriのroutingをする時に正規表現を使うことがあります. また, ユーザー名やIDに使うできる文字を制御するのに用いることもよくあるケースです.

しかしながら, 同時に私たちプログラマを最も悩ませる問題の一つでもあります. urlやemaliのValidationに苦労された経験を持つ方は多いのではないでしょうか?
その理由としてよく「記述した正規表現パターンの理解のミスが起こりやすいこと」や「正規表現パターンを記述したコードが長くなってしまうこと」が挙げられます.

本セッションでは難解な正規表現を扱うコードを理解しやすくする方法を紹介します. 正規表現が大好きなみなさんもちょっと苦手意識のある方も是非お越しください!

ターゲット

正規表現を使ったコードを書いたことがある方
正規表現の実用に興味のある方

話すこと

正規表現を扱うコードを理解しやすくする手法

話さないこと

正規表現の使い方などの初歩的な話
正規表現の成り立ち

レギュラートーク(20分)

「at()」「withConsecutive()」の廃止から立ち返って考えてみる、良い単体テストの設計

o0h_ きんじょうひでき

PHPUnitのメジャーバージョンアップ、9.xから10.0の移行には「大きな変更が含まれている」という印象を持っている人も多そうです。
とりわけ、PHPUnit\Framework\TestCase::at()PHPUnit\Framework\MockObject\Rule\ConsecutiveParameters() のdeprecatedについては、移行に際して不安を感じる声もチラホラと耳にします。
ここでの頭痛の種は、「今まで使ってきたテストコードを、どう置き換えればいいか」というものです。
フレームワークのAPI的な意味での「使えなくなる」ではなく、テストの意図と実現方法の見直しを促すという意味で、本当にBraaking Changeと言えます。

PHPUnitは、これまでも「利用者に適切なテストコードを書くことを促す」ように進化をしてきました。
では、 at() withConsecutive() のない世界が来ることで、我々は何を得られるのでしょう?
この変更をきっかけとして、「どんなテストが良い単体テストなのか」について考察します

伝えたいこと

  • 良いテストの価値: 寿命、偽陽性/偽陰性、理解容易性
  • テストコードとプロダクトコードの「疎結合」を意識する、実践する
2
レギュラートーク(40分)

AWSとBref x Laravelを利用した PHP Serverless Pattern

seike460 清家史郎

サーバーレスは少しずつ浸透していっています。

そんな中でサーバーレスにおいて、決まったパターンがあることも共有知となってきました。

しかしPHPサーバーレスにおけるサーバーレスパターンとはどのようなものがあるのでしょうか。

今回はBref x Laravelを利用することで、更に制約の力を強めた、AWSにおけるサーバーレスパターンの適用についてお話します。
この話を聞くことで、あなたがPHPを利用したサーバーレスラーになる為の「熱」になれれば幸いです。

・想定する聴講者
 - サーバーレスに興味のあるPHPer
 - AWSを利用しているクラウド系エンジニア
 - LaravelとAWSの統合に興味のある方
 - Brefが好きな方

・お話する内容
 - AWS Lambda x Bref x Laravelを中心にしたサーバーレスパターン
 - AWS Lambda x Bref x Laravelにおけるインフラ構成
 - モノリスになった AWS Lambdaを上手く非同期的に利用する手法

そして あなたをサーバーレスの世界に引き込む「熱」

1
採択
2024/03/09 15:45〜
Track A
LT(5分)

Chromeが擬似的に返す謎の307リダイレクト、HTTPSファーストモードとは

cakephper cakephper

2023年10月16日のChromeアップデートによりHTTPSファーストモードがデフォルトで有効になり、httpでアクセスするとhttpsに自動的に誘導されるようになりました。
このモードによってHSTS(Hypertext Strict Transport Security)ではないサイトでもhttpでアクセスするとChromeが勝手にhttpsにリダイレクトします。(特定条件で)
リダイレクトもWebサーバにリクエストを飛ばさずにChrome内部で307リダイレクトのレスポンスを擬似的に返します。
このようなChromeの独自世界観がインターネットに溢れ出すようになった令和の時代を生き抜くため、今回のChromeの動作の条件、動きの詳細を解説します。

参考ツイート
https://twitter.com/cakephper/status/1719275453943525571

参考ブログ
https://blog.ichikaway.com/entry/chrome-307-https-first

採択
2024/03/07 18:05〜
Track A
レギュラートーク(20分)

マイクロサービスがほしいと思ったときに本当に必要だったもの〜なぜ人は共通基盤の夢を見るのか〜

77web 菱田裕美

複数のプロダクトやサービス事業を展開している企業で一度は言われる「共通基盤を作りたい」。
近年、エンジニア側も「よし、共通基盤だ!マイクロサービスを作ろう」と安易に呼応してしまうことがでてきました。このように始まったマイクロサービス開発では、往々にして失敗したマイクロサービスが負債として残り、エンジニアチームは「マイクロサービスはダメだ」という感想を持ってしまいがちです。

「共通基盤だ!」と言い出したとき、本当にマイクロサービスが必要だったのでしょうか?
前職で数年にわたってマイクロサービスを開発・運用し、PHPerKaigiでマイクロサービスを布教したこともある私ですが、現職では「共通基盤だ!」にNOを突きつけています。
共通基盤というマイクロサービスがほしくなる動機を解きほぐし、マイクロサービス採否ジャッジの基準、ニーズをマイクロサービス以外の方法で満たす方法についてもお話しします。

採択
2024/03/09 10:40〜
Track B
レギュラートーク(20分)

PHP 本体のバグを見つけたら適切に報告しよう

zeriyoshi 工藤 剛

PHP を使っていると、予期しない、意図しない動作をすることがあります。
大抵は自分の書いたプログラムのミスですが、まれに PHP 本体のバグや意図しない挙動の変化であることもあります。
今回は "バグかな?" と思ったときの迅速な検証方法から、実際に php-src に報告を行うまでの流れを実例をもとに紹介させていただきたいと思います。
運用で回避せず、レッツコントリビュート!

レギュラートーク(40分)

PHPとはどのような言語なのか

tadsan うさみけんた

われわれPHPerが主な関心領域としているPHPですが、並居るプログラミング言語のなかでも特に毀誉褒貶の激しいものの一つといえます。

HTMLに特化しているのかといえばそうではなく、汎用プログラミング言語として使えるがWebに特化した機能は多く、動的言語で型がないと思わせつつ堅く書くこともできる… PHPは見る人によってさまざまな表情を見せる言語です。

そんな謎言語PHPの言語仕様と実行環境について歴史的背景や他言語との関わりを交えて語り尽します。

6
採択
2024/03/09 11:15〜
Track C
レギュラートーク(40分)

RubyVM を PHP で実装する〜Hello World を出力するまで〜

m3m0r7 めもり〜☆

みなさんは何かしらの VM (Virtual Machine)を作ったことがあるでしょうか。私自身は過去に PHP で JVM (Java Virtual Machine) を作ったことがあります。
現職は Ruby on Rails がメインの企業です。Rails どころか Ruby 初心者である私が Ruby の気持ちを理解するにはひと工夫必要だと考えました。
そこで,過去に PHP で JVM を作ったことがある経験を活かし,RubyVM を自作して Ruby の気持ちを理解し学習速度を加速させようという考えに至りました。
本トークでは PHP でどのように VM というものを作るのか,そして RubyVM はどのように作っていくのかを,初心者でも「ちょっとわかったかも」と思えてもらうことをゴールとして解説します。

採択
2024/03/09 14:40〜
Track B
レギュラートーク(20分)

privateメソッドのテストって書かない方がいいんだっけ?

asumikam asumikam

privateメソッドのテストを書くか書かないか問題はよく話題にあがるかと思います。
実は、私もかつてはprivateメソッドのテストをたくさん書いていた時代がありましたが、今はprivateメソッドのテストは書かずにテストを書いています。
自分の思考の整理をするのに繋がった「単体テストの考え方/使い方」という本の内容からも引用しつつ、
実体験をベースに「なぜprivateメソッドのテストを書かないのか」というところをお話します!

トークで話す内容

  • かつて私が書いていたprivateメソッドのテスト(と、その理由)
  • なぜそれが良くなかったか?「偽陽性」「偽陰性」の視点から考える
  • どのようにテストを書くべきだったか?
  • privateメソッドのテストは書かない方がいいのか?(※経験に基づいた持論)