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

どうやってWebサービスのページ表示速度を1/3にしたか

pinkumohikan 篠田 北斗

速さは正義。Googleもそう言っている。

Webページの表示速度はユーザ体験に直結し、ひいてはビジネスKPI (購買率、アクティブ率、解約率、etc...) にも影響を及ぼします。
本トークでは、Instagram分析ツール 「SINIS for Instagram」 のページ表示速度を約1/3にした事例をもとに、どうやって課題を見つけ、何の改善を試み、その結果どうなったのかについてお話します。

想定観客

  • 自分のWebサービスの表示速度が何か遅いんだよな〜と思われている方 (高速化したいけど何からやっていいか分からない方)
  • パフォーマンスチューニングコンテスト「ISUCON」が好きなかた

お話しすること

  • Core Web Vitals
  • ベンチマークツール Vegeta
  • index見直しやSQL組み換えによるクエリチューニング
  • XDebug x Webgrindでプロファイリング
  • GraphQL Schema Caching
  • PHP OPcacheでPHPバイトコードのキャッシュ
採択
2024/03/08 16:10〜
Track C
レギュラートーク(20分)

PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう

yu_mashirou 柚口 ましろう

概要

PHP8.3で追加されたjson_validate()ですが、痒いところに手が届く大変素晴らしい関数です。
この機能について、具体的にどの辺が便利になったのかを、自身が経験してきたケースと実際の解決方法、json_validate()を用いた場合どう改善するかのご紹介をします。
そして内部処理がどのようになっているかphp-srcの内部処理から深掘りをしていきます。

アジェンダ

  1. これまでのjson_validate()を用いない場合の実装ケース
    • これからjson_validate()を用いた場合の実装ケース
    • json_validate()の内部処理を深掘りしていこう
採択
2024/03/08 17:00〜
Track A
運営(5分)

ルーキーズLT大会

tomzoh 長谷川智希

PHPerKaigi初登壇のルーキー達によるLT大会です

採択
2024/03/08 17:00〜
Track B
運営(5分)

ルーキーズLT大会

tomzoh 長谷川智希

PHPerKaigi初登壇のルーキー達によるLT大会です

採択
2024/03/08 17:00〜
Track C
レギュラートーク(20分)

レガシーシステムへのPHPStan導入から半年での課題と効果

don3_jp don

静的解析ツールは使っていますでしょうか?
昨今のPHPのバージョンアップでは型定義が厳しくなってきており、静的解析ツールを導入することの優位性が高まってきています。
15年以上続いているレガシーシステムにPHPStanを導入した際の課題と効果について紹介します。

・既存の静的解析ツールからPHPStanへの移行
・PHPStanの導入時の課題
・導入から半年での効果と課題

既存の静的管理ツールに課題を感じている方や、静的解析ツールを導入したいと考えている方にとって参考になる内容となっています。

※ PHPConference関西2024と同じ内容になります。

採択
2024/03/08 17:05〜
Track A
ルーキーズLT(5分)

5分で理解するWebAssemblyのWebの外の話 PHPはマイコンの夢を見るか?

usuyuki26 うすゆき

WebAssemblyはWebブラウザでの利用にとどまらず、エッジコンピューティングでの実行やプラグインとしての記述手段、マイコン用のランタイムまで存在します。

本トークではWebで動くWebAssemblyとは一味違う、WebAssemblyのWebブラウザの外の話をご紹介します。

また、 PHPをWebAssemblyバイナリにする方法を模索し、マイコン上でPHPを動かす試みを行います。(登壇までに実演できることを期待しつつ……現在はPHPバイトコード→Javaバイトコード→WebAssemblyが最有力)

はなすこと

  • WebAssemblyの概要と思想
  • WebAssemblyのWebブラウザ外での利用(WASI、言語埋め込み、プラグイン、マイコン)
  • 昨今のマイコン事情
  • (PHPをWebAssemblyに頑張って変換してマイコンで動かす)

はなさないこと

  • WebAssembly VMの仕組み
  • Webブラウザで動作するWebAssemblyの活用方法
  • PHPからWebAssemblyを呼び出す方法

対象

  • WebAssemblyの思想を知りたい方
  • ブラウザ以外のWebAssemblyでの使われ方を知りたい方
  • (できないとよく言われるけど……)PHPをWebAssemblyにしたい気持ちがある方
採択
2024/03/08 17:05〜
Track B
ルーキーズLT(5分)

まっちすいっち戦争

kitkattsun0531 勝佐拓也

皆さんは match 派?それとも switch 派?
PHP 8 から待望の match 式が switch 文の改善形として新たに導入されました。 switch 文が抱えがちな潜在的なバグのリスクが軽減され、より使いやすく洗練された構造になりました。
しかし switch 文もまだまだ現役! match 式にはない良さを見つけていきたい!
この発表では、match 式と switch 文の良さをそれぞれ深掘って適切な使い方を紹介していきます。

採択
2024/03/08 17:10〜
Track A
ルーキーズLT(5分)

BEAR.Sundayの設計思想をLaravelと比較して理解する

masakichi_eng まさきち

PHPにも多種多様なフレームワークがあります。
LaravelやCakePHPなどを思い浮かべる方が多いと思いますが、弊社では「BEAR.Sunday」を使用してシステム開発を行っております。

私はPHP/Laravelについては多少知識がありましたが、入社するまでBEAR.Sundayについて知りませんでした。
実務である程度触れてみて他のフレームワークとの違いについて意識するようになり、
MVCパターンではなく、リソース指向という考え方があることを知りました。

LaravelなどのMVCフレームワークとは異なり、
BEAR.SundayはAPI中心のRESTfulアプリケーションのフレームワークを提供することを目標としており、
リソース指向のResource-Method-Representationパターンを採用しています。

本LTではBEAR.Sundayの特徴や設計思想、実際のコードの書き方の違い等をLaravelと比較して解説します。
リソース指向の概念を初学者の立場から、どのように掴んだかまとめることで、
MVCで書く時との具体的な違いについてお話できたらと思います。

本LTを通じて一般的なMVCフレームワークとは一味違う考え方や視点をお届けします。

対象者

  • BEAR.Sundayに興味がある方
  • LaravelやMVCの基本的な知識を持っている方
採択
2024/03/08 17:10〜
Track B
ルーキーズLT(5分)

Apache Solrで使える便利な検索の紹介

masnmt masnmt

Apache Solr(以後Solr)という名前を聞いたことがある人は全文検索用に使うやつでしょ?というイメージが強いのではないかと思います。

Solrは全文検索だけではありません。なかなかイケてる検索もできます。

ただRDBとは違うので導入時に気をつけなければいけないこともあります。

Solrを使うとこんな検索が簡単にできるよというお話と、導入時のハマりどころについてお話できればと思います。

ちなみにSolrの読み方は「ソーラー」です。

話さないこと(LTでは話しきれないので・・・)
・Solrへのデータ登録方法
・Solrを運用するインフラ構成について

採択
2024/03/08 17:15〜
Track A
ルーキーズLT(5分)

ペアテストでエンジニアもQAもサポートも全員が笑顔になる!

azuki_kun Ajiki Rie

皆様は、ペアプロに行ったことはあるでしょうか、ペアテストはどうでしょうか?

あまり有名ではないので、やったことがないです。
自分では、万全だと思っていたのに、気が付かなかった、変な挙動とか、想定の操作とか、「僕のPCでは動きますが」といったのに、QAに突き返されたことはありませんか?(私は、ちなみに私はQAです。)

ペアテストとは、エンジニアとQA2人1組もしくは3人1組で一つのPCを囲み行うテストのことを言います。BDDやAgileの開発手法でも取り上げられることがあります。
品質上昇はもちろん、自分が気付かないエッジケースの不具合や、気が付かなかった仕様漏れ!などに、効果的で、手戻りを防ぐことができ結果、開発速度も向上します。
私は、エンジニアではなく、QAですが、皆さんに体感してみて頂きたい!!

内容
ペアテストの簡単なやり方や実例
ペアテストの私のお勧めするTips

これで、あなたも見落としによる不具合などを減らしていきましょう。

採択
2024/03/08 17:15〜
Track B
ルーキーズLT(5分)

Laravel を学ぶ前に書いていた require と Laravel 使い始めてから躓いた use 宣言と namespace

uutan1108 うーたん

このセッションでは、 require と use 宣言は似てそうだけど違うということが分かったということについて話します。

私は、素のPHPからPHPを勉強し始めました。その時は、「他のPHPファイルを読み込むときは require を書く!」でとにかくファイルの先頭に require を書いて読み込んでいました。

そして、フレームワークも勉強したいと思いLaravelを始めました。すると、ファイルの中には require を先頭には書いておらず、 namespace と use がたくさん書いてありました。

自分でフレームワークもどきを作ってみて、 namespace と use を使い、PHPでブログサイトを作ってみました。namespace と use 宣言、 require は書く必要があった!ということがわかりました。

話すこと

  • require と use の違い
  • use を理解しようとしたら出てきた namespace について

対象

  • PHP初心者
  • 名前空間を知らない方
  • 素のPHPを書きたい方
採択
2024/03/08 17:20〜
Track A
ルーキーズLT(5分)

通話プラットフォームTwilioを用いた通話システムの作成と電話占いサービスの提供

PKMNmami まみ

弊社の「エキサイト電話占い」は、弊社通話システムを通すことで安心安全に占い師と通話できます。
(電話越しに占いができるんです!)

「エキサイト電話占い」には、
・ユーザと占い師お互いの電話番号は非表示
・電波状況などユーザと占い師の環境に合わせた通話手段(通常の電話 or 通話アプリ)を用意
・分単位でのサービス利用料金の計算ができる
などの要件があります。

私はTwilioを用いて上記の要件をみたした通話システムを構築しました。

この通話システムを構築するという経験はとても新鮮だったため、
皆さんに共有させてください。

このLTでは、
・Twilioを用いた通話システムの作成方法
・上記課題の解決方法
について話します。

●●●LTを聞くメリット●●●
・Twilioの基礎を知ることができる
・電話占いの裏側を知ることができる

●●●対象者●●●
・通話を用いたサービス提供を検討中の方
・通話の実装を考えたことがない方
・電話占いを知らない方
・占いが好きな方

採択
2024/03/08 17:20〜
Track B
ルーキーズLT(5分)

Laravelのバリデーションから始めるEnum

みなさん、PHPのEnumは使っていますか?
PHP8.1がリリースされてEnumが使えるようになってから2年が経ちました。
定数の代わりにEnumを使うことで、より型安全で管理しやすいコードを書くことができるので
ぜひ皆さんにも使っていただきたいと思っています!!

このLTでは、僕が一番便利だと感じたEnumを使ったバリデーションの書き方をはじめに、
Enumの利点や実際の活用方法について簡単な例を交えて、
皆さんがEnumを使用する際のメリットを理解していただけるようお話させていただきます。

主な対象

  • Enumって使い道あるのって人
  • config内に定義した配列をarray_flipしたり、in_arrayしてる人
採択
2024/03/08 17:25〜
Track A
ルーキーズLT(5分)

その処理、LaravelのCollectionで上手くいきます!

hibiki_cube ヒビキ

PHPフレームワークとして広く利用されているLaravelの機能の一つ、Collectionの魅力を活用例も交えながらお伝えします!
Collectionの強力なメソッドを活用すれば、一見複雑な処理でも簡単かつシンプル、そして分かりやすく実装ができることを実際の悩みや解決などの事例も交えながらお見せします。
辞書型のアイテムがたくさん入ったCollectionから特定のプロパティだけ抜き出すには…?
特定の条件に沿ってCollectionの要素を選別するには…?逆に除外するには…?
似たようなことができそうなこのメソッド、どう使い分ける…?
などなど、最新版では100を超えるメソッドの中から実際に活躍したものを厳選してお届けします!!

採択
2024/03/08 17:25〜
Track B
ルーキーズLT(5分)

障害率が圧倒的に高い、テストコードが存在しないプロダクトへの導入戦略

takaaki_w しみたか

「君の担当プロダクト、圧倒的に障害発生率が高いよねえ」
誕生から5年が経過し、新機能の追加に焦点を当ててきた結果、社内で一番障害が発生してしまっているプロダクトがありました。
このセッションでは、テストコードが(ほぼ)存在しない状態のプロダクトに、どのようにテストコードを導入していったかについて、実践的な視点からお話しします。

下記どれかに当てはまる点がある方にご視聴をお勧めします。
・機能追加の圧が強すぎてテストコードなんて書いてられない
・既存のコードを大きく変更するのが怖い
・なぜか毎日障害の問い合わせがくる

今では新機能を不安なくリリースできていますが、これもテストコードを導入したおかげです。
テストコードを無理なく導入してみんなで幸せな開発ライフを送りましょう。

採択
2024/03/08 17:30〜
Track A
ルーキーズLT(5分)

Laravel標準バリデーションでできること 〜まだカスタムバリデーションを作るには早いかもしれない...〜

hmb_0k bj_oka

フォーム等の入力があるシステムでは、必ず実装しなければならないバリデーション処理。
Laravelでは、標準で便利なバリデーションルールが定義されています。しかし、シンプルなチェックであれば実装は容易ですが、フォームが少し複雑になると、どのように実装するか悩むことも多いのではないでしょうか?

カスタムルールを定義して一からバリデーション処理を実装するのも一つの方法ですが、標準のバリデーションルールだけでも、ある程度複雑なパターンにも対応可能です。
今回は相関バリデーション(他の入力欄の値によって入力のチェック内容が変わる)の実装について、標準のバリデーションルールを活用して実現した方法を紹介します。

採択
2024/03/08 17:30〜
Track B
ルーキーズLT(5分)

いまからでも遅くない!ゼロから始めるPHP ~ゆかいなPHPerたちといっしょ~

BkNkbot びきニキ

みなさん、PHPを書いたことはありますか?
この画面を見ているほとんどの方は「YES」と答えるでしょうが、もちろん書いたことのない方もいらっしゃるでしょう。

私は昨年のPHPerKaigiを皮切りにPHPコミュニティに触れるようになり、2024年には某地方のPHPカンファレンス実行委員長をやることになりました。
しかし、PHPを実際に書き始めたのは2023年の11月。
普段はQAエンジニアとして勤務していたこともあり、開発自体にも少し苦手意識がありました。

本セッションでは、「PHPどころか開発経験も少ない私が、2ヶ月でどんなことに取り組んでPHPの理解を深めたのか」に焦点を当て
PHP未経験者が「実際にPHPを書く」ことにまずは興味を持ってもらうことを目標にします。

対象者

  • PHPを書いたことのない方
  • PHPを始めたての人に興味があるPHPerの方

話すこと

  • 私が感じたPHPコミュニティの雰囲気
  • 2ヶ月間で私がやったこととその工夫
採択
2024/03/08 17:35〜
Track A
ルーキーズLT(5分)

PHPのFFIを使って簡単なメロディを演奏する

yasuaki640 渡邉泰曉

PHPは特にWeb開発に適した言語とされ、筆者はバックエンドの実装に用いることが大半でした。

ではPHPが向いていない処理や、ネットに先行事例がない用途の場合はどのように実装すればいいのでしょうか?

その疑問を解決すべく、このトークではネットに先行事例のなかった「オレオレ」ソフトシンセ(CPUによって音信号を合成するソフトウェア)をPHP(とC言語)で自作しました。
この「オレオレ」ソフトシンセを用いて、当日はライブデモを行い蛍の光を演奏します。

このトークを聞くことで、一般的にPHPプログラムでは実装されないようなソフトウェアをも実装することができ、あなたの今後のPHPerとしての可能性を広げることができるでしょう。

  • 対象の方

    • FFI(Foreign Function Interface)という単語を初めて聞く方
    • 筆者が触って感じた、FFIの可能性と使い所を知りたい方
    • サウンドプログラミングの初歩に興味がある方
  • アウトライン

    • FFIでできること
    • FFIで実装した「オレオレ」ソフトシンセの紹介
    • 実装して感じたメリット・デメリット
    • 他の想定されるFFIの用途
    • 「オレオレ」ソフトシンセ デモ
採択
2024/03/09 10:40〜
Track A
レギュラートーク(20分)

B+木入門:PHPで理解するデータベースインデックスの仕組み

hanhan1978 富所 亮

B+木をご存知でしょうか?RDBMSのインデックス作成に採用されているデータ構造で、ディスクの効率的な利用や、検索を行いやすいなどの特徴があります。しかし、耳学問で聞いてもイマイチ特徴がピンと来ないのです。

本トークでは、PHPでB+木のデータ構造を実装して、RDBMSでB+木が採用される理由、インデックスの構造的な仕組み、何故検索が速くなるのか?などなど、データベースの仕組みの根幹を覗いてみましょう。

本トークで話す内容

  • B+木の特徴
  • なぜ、データベースはB+木を採用しているのか
  • インデックスとは何か
採択
2024/03/09 10:40〜
Track B
レギュラートーク(20分)

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

zeriyoshi 工藤 剛

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