レギュラートーク 30分

Webアプリケーションのパフォーマンス・チューニングの勘所

soudai1025 曽根 壮大

Webアプリケーションは生き物です。
作って終わりではなく、日々運用を行っていかなければいけません。
しかし、日々成長するWebアプリケーションは突然パフォーマンスが問題になり、サービス障害を生み出します。

そこで今日はシンプルなLAMP環境で動くようなWerbアプリケーションのパフォーマンス・チューニングの勘所についてご紹介します。

話すこと

  • MySQLやPostgreSQLのスロークエリの見方と対応方法
  • プロファイラの使い方や計測の仕方
  • キャッシュの種類と選び方と使い方

対象者

  • 大規模ではなく、レンタルサーバーやシンプルなLAMPやLAPPの環境の人
  • PHPを始めとするWebアプリケーションを開発・運用している人
  • サービスのパフォーマンスを改善したい人

基本的な考え方から実際の明日から役立つテクニックまで全部ご紹介します!

5
LT 5分

実はLaravelで使われている!?Symfonyコンポーネントを紹介!

kuni__94 北村 邦彦

Laravelは多くのPHPerに愛されるフレームワークですが、その内部ではSymfonyコンポーネントが活用されています。
このセッションでは、Laravelの裏側に隠されたSymfonyコンポーネントの魅力を紹介します。
ルーティング, フォーム処理, データベース操作など、Laravelの主要な機能にどのようにSymfonyコンポーネントが関与しているのかを解説します。

対象者

  • PHPフレームワークに興味がある・使っている方

話さないこと

  • Laravelの機能や文法について
5
LT 5分

PHPの基本を楽しく学ぶ!PHP独自の「なぜ?」に迫る

mako5656_i 伊神 誠人

PHPは初心者にも使いやすい言語ですが、その基本には多くの「なぜ?」が存在します。
このセッションでは、PHPの基本的な疑問に注目し、その背景や理由を解説します。
なぜ「<?php」を使うのか?なぜ閉じタグは必要ないのか?変数名の前の「$」はなぜ必要なのか?
これらの疑問を知ることでPHPをもっとすきになりませんか!

お話すること

  • 「<?php」はなぜ必要なのか
  • 閉じタグ「?>」はぜ必要ないのか
  • 「$」をつける理由
    などなど...

対象者

  • PHP初心者から上級者まで幅広く
8
レギュラートーク 10分

PHPの基本を楽しく学ぶ!PHP独自の「なぜ?」に迫る

mako5656_i 伊神 誠人

PHPは初心者にも使いやすい言語ですが、その基本には多くの「なぜ?」が存在します。
このセッションでは、PHPの基本的な疑問に注目し、その背景や理由を解説します。
なぜ「<?php」を使うのか?なぜ閉じタグは必要ないのか?変数名の前の「$」はなぜ必要なのか?
これらの疑問を知ることでPHPをもっとすきになりませんか!

お話すること

  • 「<?php」はなぜ必要なのか
  • 閉じタグ「?>」はぜ必要ないのか
  • 「$」をつける理由
    などなど...

対象者

  • PHP初心者から上級者まで幅広く
6
レギュラートーク 10分

実はLaravelで使われている!?Symfonyコンポーネントを紹介!

kuni__94 北村 邦彦

Laravelは多くのPHPerに愛されるフレームワークですが、その内部ではSymfonyコンポーネントが活用されています。
このセッションでは、Laravelの裏側に隠されたSymfonyコンポーネントの魅力を紹介します。
ルーティング, フォーム処理, データベース操作など、Laravelの主要な機能にどのようにSymfonyコンポーネントが関与しているのかを解説します。

対象者

  • PHPフレームワークに興味がある・使っている方

話さないこと

  • Laravelの機能や文法について
7
LT 5分

外部APIとズブズブな開発どうしてますか?

kin29ma_n 志賀彩乃

弊社ではPHPを使用して広告代理店を支援するツールを作っています。そのため様々な広告媒体APIに依存しています。
新しいバージョンが出たり、情報を追ってないと今使用しているバージョンが来月急に使えなくなったりします。
そして、その情報はリリースノートにないこともあり、急にメールで告げられたりします。
そんな私たちの日々のドタバタを大公開しますので、みなさんの最適案教えてください。

対象者
・外部APIを使っている方
・外部APIを使おうとしている方

3
レギュラートーク 10分

外部APIとズブズブな開発どうしてますか?

kin29ma_n 志賀彩乃

弊社ではPHPを使用して広告代理店を支援するツールを作っています。そのため様々な広告媒体APIに依存しています。
新しいバージョンが出たり、情報を追ってないと今使用しているバージョンが来月急に使えなくなったりします。
そして、その情報はリリースノートにないこともあり、急にメールで告げられたりします。
そんな私たちの日々のドタバタを大公開しますので、みなさんの最適案教えてください。

対象者
・外部APIを使っている方
・外部APIを使おうとしている方

12
LT 5分

初めてのOSSコントリビュートに挑戦したら、既に該当機能が存在していた件について

22kerokero22 kerokero

チームで使っているLaravelのバージョンを9から10に移行した際、付随するPsalmプラグインの更新により静的解析の結果が変わってしまいました。
「なんとかして、大幅に実装を変えることなく静的解析を通るようにしたい……」
そう思った新米PHPerの私は、ないなら作ろう精神で思いきってLaravel/frameworkにPRを出してみることにしました。

しかし、PR提出直後、よく見るとそこには既に思い描いた機能を実現する別メソッドが存在していたのでした(完)

このトークでは実体験をもとに、初心者PHPerでもLaravel等のOSSコントリビュートに挑戦できるということを紹介します。

対象者

  • OSSコントリビュートに興味がある初心者
  • PHPやその周辺技術に貢献したい人
  • Laravel/frameworkにPRを送ってみたい人
レギュラートーク 30分

PHP で負荷試験のシナリオを書きたい!ので amphp を使って自作した件

akai_inu やまゆ

jMeter, Locust, k6, ... 負荷試験ツールは色々ありますが、どれも PHP でシナリオを書くことができません。 PHP のコードは PHP でシナリオも書いてしまった方が一貫性があって良いですよね? PHP 8.1 から Fiber が入ったことで、 PHP でも非同期・並行的な処理が簡単に実装出来るようになりました。 PHP によるシナリオツール、 ないなら作ろう精神 で、自作することにしました。​

Fiber ままで並行処理を作るのは大変なので、今回は amphp を使って簡単に distributed なシステムを構築します。​

今回は何故自作したのか、どのように並行処理を実装したのかを紹介します。​

ターゲット

  • 負荷試験したい方
  • PHP で並行処理ってどうやるの?という方
LT 5分

思わぬ罠が!PHP 8.1から8.2は余裕だと思ってました

AkitoTsukahara AkitoTsukahara

PHP8.2の下位互換性のない変更点で「相対的な書式」に対する振る舞いが変わることをご存知でしょうか?
相対的な書式とは?という方もいらっしゃるのでは無いでしょうか?自分もその一人でしたw

今回はPHP8.1からPHP8.2にアップデートした際の出来事をまとめたものになっています。
どのようなことが起きたのか。どうやって解消したのかについてお話しします。

お話しすること
・バージョンあげたら、strtotime関数を利用している箇所でテストが落ちた!
・根本原因の紹介
・ランタイムでチェック!ヨシ!(本当に大丈夫?)
・静的解析が正義!

3
レギュラートーク 10分

PHP8.2にバージョンアップしてもっと型表現を豊かにしよう

AkitoTsukahara AkitoTsukahara

PHP8.2からtrue/false型が実装されることはご存知でしょうか?
これによりPHPの型表現がさらに豊かになり、弊社のプロダクトのリファクタリングが捗った事例を紹介いたします。

お話しすること
・なぜPHP8.2にアップデートしたかったのか
 ・プラットフォームのリファクタリングでtrue/false型を使いたい箇所があった
 ・弊社プラットフォームの設計で実例紹介
・PHP8.2にアップデートでつまづいた話
 ・PHP8.2から相対的な書式に対する振る舞いが変更に!
 ・それによってstrtotimeを利用した関数が一部エラーに!なぜ!?
・PHP8.2にアップデートすることで望みは叶ったのか?
 ・実際のコードでbefore/afterをご紹介
・まとめ

8
レギュラートーク 10分

勉強会でLaravelのソースコードリーディングを助けた技術と実施して得られた知見

iLP_isse issei

概要

LaravelOkinawaコミュニティでは2ヶ月ごとに勉強会を開催し、最近はLaravelのソースコードの読解に焦点を当てています。
この勉強会は普段Laravelを触っていない人も参加しています。
LaravelとXdebugの環境構築は、少し手間がかかり、慣れていない人には難しいと思います。
環境構築の手間を抑えることは、ソースコード読みに時間を費やすことができる、重要なポイントです。
本セッションでは、Gitpodを使用した環境構築の手法と、ソースコード読みを実施して得られた学びをお話しします。

お話しすること

  • Gitpodを使用したLaravel With XDebugの環境構築方法
  • 勉強会でソースコードリーディングを行った学び

想定する聴講者

  • PHP User!!
  • PHPは触っていないが、ソースコードリーディングが気になる人
2
レギュラートーク 30分

PHPの null + nullはなぜ0になるのか。PHPにおけるnullの扱いを理解して仲良くなろう。

tyamahori tyamahori(ちゃまほり)

みなさんは、「PHPではnull + nullが0になる」理由を答えられますか?
このトークはnullの挙動に苦しんで時間を無駄にした自身の経験から生まれました。
皆様の時間の節約につながればと願っております。

トーク内容

  • PHPにおけるnullの挙動のおさらい
  • PHP以外でのnullの扱われ方
  • PHPのソースコードを追い、nullがどう扱われているか
  • 上記内容をもとに、PHPではnull + nullが0になる挙動の説明

ゴール

  • null + nullが0になる理由が理解できること
  • nullを適切に扱えるようになり、不用意なnull由来のバグをなくせること

対象者

  • PHPのnullの挙動に対して不安がある方
8
レギュラートーク 30分

【ライブコーディング】素朴で考慮漏れのある PHP コードをテストコードとともに補強していく

okashoi おかしょい/岡田正平

テストコードの書き方について説明する資料等は世の中に充実しつつあります。
一方で具体的にテストコードを書いていく様子を説明、実演する資料というのはまだ数が限られています。

そこで今回はソフトウェアテストの領域でよく題材とされる「マイヤーズの三角形問題」の実装を取り上げ、
素朴な PHP コードからはじまり、テストコードを補いながら、ときにつまづきつつ、解くべき問題を捉えたコードへと洗練させていく過程を実演します。

本セッションで扱うテーマ

  • テストファーストなアプローチによるコーディング、リファクタリング
  • PHPUnit の基本的な使用法と data provider の活用

本セッションで扱わないテーマ

  • テスト戦略やテスト設計について
レギュラートーク 30分

PHPとLaravelで使えるジェネレータを使った大量データ処理のパフォーマンス改善

for__3 zoe

概要

ジェネレータは、特に大量のデータを効率的に処理する際に有効な手法です。
例えば、LaravelのCollectionは便利な機能ですが、多用するあまり気づかずに大量のデータを扱ってしまい、意図せずパフォーマンスに影響を与えることがあります。
本セッションでは、PHPとLaravelにおいてジェネレータを活用し大量データ処理のパフォーマンスを改善する方法について説明します。

トーク内容

  1. PHPのジェネレータの概要と基本的な使い方について
  2. Laravelにおけるジェネレータを使ったLazyCollectionの使い方について

想定聴講者

普段PHPで開発しており、運用上のデータ量増加問題についてまだ考えてない方、あるいは現在悩んでいる方

4
レギュラートーク 10分

composer パッケージを自作してみて得られたもの

ながまかずま

去年、Laravel FormRequest にアクセサ機能を追加する拡張機能の話をさせていただきました。
正直「他の誰がこんなニッチなもの使うんや」と思いつつでしたが、意外にも同じ苦しみを持つ方は居たようで多少ダウンロードされておりました!

多少なりとも使っていただけたことでパッケージ開発が楽しくなり、他にも composer パッケージを作ったり、chrome 拡張機能、npm パッケージ、vscode 拡張機能 にも手を出してます。

私自身高スキルではないため大したパッケージは作れておりませんが、1年弱パッケージ開発を続けて
他にも 「パッケージ開発やってみたい」と思う方が増えて欲しいという願望が芽生えてきたので
パッケージ開発を通して得られたものについてお話させていただきます!(技術的な話は全然ないかもしれません)

レギュラートーク 30分

入力+検査=型安全

うさみけんた

みなさんは、ブラウザからのアクセスなど外部からの入力をどのように扱っているでしょうか。

PHPには$_GET/$_POSTのようなスーパーグローバル変数やfilter_var(), filter_input()などの関数、各フレームワーク独自の方法など、さまざまな方法があります。
また、近年ではJSONエンコードされたリクエストなどの用途も増えています。
このトークではHTTPレベルでの入出力をPHPがどう扱っているのか、どのように処理するのが安全なのか、さまざまな実装パターンと型の関係について紹介します。

レギュラートーク 30分

AWS Lambda を活用したフルサーバーレス PHPの構築と運用

seike460 清家史郎

AWS Lambdaはうまくアーキテクチャに組み込む事で大きなメリットをもたらします。
今回はAWS Lambdaを利用した動的サイトをLaravelを使って構築したお話を行います。

フロントエンドを静的サイト配信、バックエンドにPHPを利用したサーバーレスAPIにて構築した結果
高負荷に対応出来るフルサーバーレスなサイト構築出来ました。

サーバーレスPHPの構築とサイトの運用を、本構成のメリットも含めて解説を行います。

  • お話すること

    • AWS Lambda PHPの構築方法
    • LaravelとAWSの親和性
    • デプロイの自動化
    • フルサーバーレスなサイト運用
  • 想定する聴講者

    • AWSを利用している方
    • AWS Lambdaを利用したPHPに興味がある方
    • フルサーバーレスなサイト運用に興味がある方
9
LT 5分

Laravel ShiftでLaravelのバージョンアップしてみた話

カンボ@沖縄

皆さんはこんな課題ありませんか?
・そろそろLaravelのサポート切れるのでバージョンをアップしないとまずい。
・でも、手動で一つ一つコード書き換えていくのが大変。

そんな時に便利なのがLaravel Shiftです!
Laravel Shiftは簡単にいうと、課金すれば Laravel のアップグレードを自動でやってくれるというものです。
今回は実際にLaravelリポジトリのバージョンアップをしてみた体験談も交えて話します!
ただ、一筋縄ではいかなかったので、その辺も含めて話します!笑

2