Webアプリケーションは生き物です。
作って終わりではなく、日々運用を行っていかなければいけません。
しかし、日々成長するWebアプリケーションは突然パフォーマンスが問題になり、サービス障害を生み出します。
そこで今日はシンプルなLAMP環境で動くようなWerbアプリケーションのパフォーマンス・チューニングの勘所についてご紹介します。
基本的な考え方から実際の明日から役立つテクニックまで全部ご紹介します!
Laravelは多くのPHPerに愛されるフレームワークですが、その内部ではSymfonyコンポーネントが活用されています。
このセッションでは、Laravelの裏側に隠されたSymfonyコンポーネントの魅力を紹介します。
ルーティング, フォーム処理, データベース操作など、Laravelの主要な機能にどのようにSymfonyコンポーネントが関与しているのかを解説します。
PHPは初心者にも使いやすい言語ですが、その基本には多くの「なぜ?」が存在します。
このセッションでは、PHPの基本的な疑問に注目し、その背景や理由を解説します。
なぜ「<?php」を使うのか?なぜ閉じタグは必要ないのか?変数名の前の「$」はなぜ必要なのか?
これらの疑問を知ることでPHPをもっとすきになりませんか!
PHPは初心者にも使いやすい言語ですが、その基本には多くの「なぜ?」が存在します。
このセッションでは、PHPの基本的な疑問に注目し、その背景や理由を解説します。
なぜ「<?php」を使うのか?なぜ閉じタグは必要ないのか?変数名の前の「$」はなぜ必要なのか?
これらの疑問を知ることでPHPをもっとすきになりませんか!
Laravelは多くのPHPerに愛されるフレームワークですが、その内部ではSymfonyコンポーネントが活用されています。
このセッションでは、Laravelの裏側に隠されたSymfonyコンポーネントの魅力を紹介します。
ルーティング, フォーム処理, データベース操作など、Laravelの主要な機能にどのようにSymfonyコンポーネントが関与しているのかを解説します。
弊社ではPHPを使用して広告代理店を支援するツールを作っています。そのため様々な広告媒体APIに依存しています。
新しいバージョンが出たり、情報を追ってないと今使用しているバージョンが来月急に使えなくなったりします。
そして、その情報はリリースノートにないこともあり、急にメールで告げられたりします。
そんな私たちの日々のドタバタを大公開しますので、みなさんの最適案教えてください。
対象者
・外部APIを使っている方
・外部APIを使おうとしている方
弊社ではPHPを使用して広告代理店を支援するツールを作っています。そのため様々な広告媒体APIに依存しています。
新しいバージョンが出たり、情報を追ってないと今使用しているバージョンが来月急に使えなくなったりします。
そして、その情報はリリースノートにないこともあり、急にメールで告げられたりします。
そんな私たちの日々のドタバタを大公開しますので、みなさんの最適案教えてください。
対象者
・外部APIを使っている方
・外部APIを使おうとしている方
チームで使っているLaravelのバージョンを9から10に移行した際、付随するPsalmプラグインの更新により静的解析の結果が変わってしまいました。
「なんとかして、大幅に実装を変えることなく静的解析を通るようにしたい……」
そう思った新米PHPerの私は、ないなら作ろう精神で思いきってLaravel/frameworkにPRを出してみることにしました。
しかし、PR提出直後、よく見るとそこには既に思い描いた機能を実現する別メソッドが存在していたのでした(完)
このトークでは実体験をもとに、初心者PHPerでもLaravel等のOSSコントリビュートに挑戦できるということを紹介します。
jMeter, Locust, k6, ... 負荷試験ツールは色々ありますが、どれも PHP でシナリオを書くことができません。 PHP のコードは PHP でシナリオも書いてしまった方が一貫性があって良いですよね? PHP 8.1 から Fiber が入ったことで、 PHP でも非同期・並行的な処理が簡単に実装出来るようになりました。 PHP によるシナリオツール、 ないなら作ろう精神 で、自作することにしました。
Fiber ままで並行処理を作るのは大変なので、今回は amphp を使って簡単に distributed なシステムを構築します。
今回は何故自作したのか、どのように並行処理を実装したのかを紹介します。
PHP8.2の下位互換性のない変更点で「相対的な書式」に対する振る舞いが変わることをご存知でしょうか?
相対的な書式とは?という方もいらっしゃるのでは無いでしょうか?自分もその一人でしたw
今回はPHP8.1からPHP8.2にアップデートした際の出来事をまとめたものになっています。
どのようなことが起きたのか。どうやって解消したのかについてお話しします。
お話しすること
・バージョンあげたら、strtotime関数を利用している箇所でテストが落ちた!
・根本原因の紹介
・ランタイムでチェック!ヨシ!(本当に大丈夫?)
・静的解析が正義!
PHP8.2からtrue/false型が実装されることはご存知でしょうか?
これによりPHPの型表現がさらに豊かになり、弊社のプロダクトのリファクタリングが捗った事例を紹介いたします。
お話しすること
・なぜPHP8.2にアップデートしたかったのか
・プラットフォームのリファクタリングでtrue/false型を使いたい箇所があった
・弊社プラットフォームの設計で実例紹介
・PHP8.2にアップデートでつまづいた話
・PHP8.2から相対的な書式に対する振る舞いが変更に!
・それによってstrtotimeを利用した関数が一部エラーに!なぜ!?
・PHP8.2にアップデートすることで望みは叶ったのか?
・実際のコードでbefore/afterをご紹介
・まとめ
LaravelOkinawaコミュニティでは2ヶ月ごとに勉強会を開催し、最近はLaravelのソースコードの読解に焦点を当てています。
この勉強会は普段Laravelを触っていない人も参加しています。
LaravelとXdebugの環境構築は、少し手間がかかり、慣れていない人には難しいと思います。
環境構築の手間を抑えることは、ソースコード読みに時間を費やすことができる、重要なポイントです。
本セッションでは、Gitpodを使用した環境構築の手法と、ソースコード読みを実施して得られた学びをお話しします。
みなさんは、「PHPではnull + nullが0になる」理由を答えられますか?
このトークはnullの挙動に苦しんで時間を無駄にした自身の経験から生まれました。
皆様の時間の節約につながればと願っております。
テストコードの書き方について説明する資料等は世の中に充実しつつあります。
一方で具体的にテストコードを書いていく様子を説明、実演する資料というのはまだ数が限られています。
そこで今回はソフトウェアテストの領域でよく題材とされる「マイヤーズの三角形問題」の実装を取り上げ、
素朴な PHP コードからはじまり、テストコードを補いながら、ときにつまづきつつ、解くべき問題を捉えたコードへと洗練させていく過程を実演します。
ジェネレータは、特に大量のデータを効率的に処理する際に有効な手法です。
例えば、LaravelのCollectionは便利な機能ですが、多用するあまり気づかずに大量のデータを扱ってしまい、意図せずパフォーマンスに影響を与えることがあります。
本セッションでは、PHPとLaravelにおいてジェネレータを活用し大量データ処理のパフォーマンスを改善する方法について説明します。
普段PHPで開発しており、運用上のデータ量増加問題についてまだ考えてない方、あるいは現在悩んでいる方
去年、Laravel FormRequest にアクセサ機能を追加する拡張機能の話をさせていただきました。
正直「他の誰がこんなニッチなもの使うんや」と思いつつでしたが、意外にも同じ苦しみを持つ方は居たようで多少ダウンロードされておりました!
多少なりとも使っていただけたことでパッケージ開発が楽しくなり、他にも composer パッケージを作ったり、chrome 拡張機能、npm パッケージ、vscode 拡張機能 にも手を出してます。
私自身高スキルではないため大したパッケージは作れておりませんが、1年弱パッケージ開発を続けて
他にも 「パッケージ開発やってみたい」と思う方が増えて欲しいという願望が芽生えてきたので
パッケージ開発を通して得られたものについてお話させていただきます!(技術的な話は全然ないかもしれません)
みなさんは、ブラウザからのアクセスなど外部からの入力をどのように扱っているでしょうか。
PHPには$_GET/$_POSTのようなスーパーグローバル変数やfilter_var(), filter_input()などの関数、各フレームワーク独自の方法など、さまざまな方法があります。
また、近年ではJSONエンコードされたリクエストなどの用途も増えています。
このトークではHTTPレベルでの入出力をPHPがどう扱っているのか、どのように処理するのが安全なのか、さまざまな実装パターンと型の関係について紹介します。
AWS Lambdaはうまくアーキテクチャに組み込む事で大きなメリットをもたらします。
今回はAWS Lambdaを利用した動的サイトをLaravelを使って構築したお話を行います。
フロントエンドを静的サイト配信、バックエンドにPHPを利用したサーバーレスAPIにて構築した結果
高負荷に対応出来るフルサーバーレスなサイト構築出来ました。
サーバーレスPHPの構築とサイトの運用を、本構成のメリットも含めて解説を行います。
お話すること
想定する聴講者
皆さんはこんな課題ありませんか?
・そろそろLaravelのサポート切れるのでバージョンをアップしないとまずい。
・でも、手動で一つ一つコード書き換えていくのが大変。
そんな時に便利なのがLaravel Shiftです!
Laravel Shiftは簡単にいうと、課金すれば Laravel のアップグレードを自動でやってくれるというものです。
今回は実際にLaravelリポジトリのバージョンアップをしてみた体験談も交えて話します!
ただ、一筋縄ではいかなかったので、その辺も含めて話します!笑