PHP コードを実行するために必要なのが、PHP 実行環境です。
多くの Web アプリケーションでは、php-fpm や Apache httpd モジュールの mod_php を利用しているでしょう。こうした環境では、HTTP リクエストごとに独立したコンテクストで PHP コードが実行されます。個々のコンテクストは独立しているので、外部リソースを共有しない限り、お互いの干渉を気にせずにアプリケーションコードを実装できます。
本発表では、このような PHP の動作モデルをご存知無い方を対象に、どのように PHP コードが動作しているのかを図解を交えて解説します。
セッションのゴール
PHP アプリケーションがどのように動作するかイメージできる。
データ構造、仲良くしていますか?
小難しい、「文系」や独学出身だし触れていない、なんて人も…
特定の問題に特化し、処理を効率的にする存在。
問題に特化する、即ち「意図」が宿る!
何をするコードなのかを表現し操作も簡潔にする、パワフルな選択肢になりえます
「0.001秒を削りたい」場面が少なくても役立つでしょう
数字や式を見ると頭パンク!な人に向け
「コードを簡潔に意図を明確に」という観点から
PHP標準クラス(SPL)でデータ構造の世界に入門するトークです
▼ねらい
仲良くなれそう!のキッカケを作る
▼対象
食わず嫌い、苦手意識を持つ人。1年前の私…
https://php.net/spl.datastructures を見た事がない人
▼話す
データ構造って何が嬉しいの?
SPLには何があって、どんな特徴?
コードを読み易くしてみる、の実践
▼話さない
詳細な計算量やコストの考え方
Fat Controller
と聞いて、いい印象が思い浮かばないのはなぜだろう。
Fat Controllerに何かの恨み辛みを含む記事は見たことがあるが、逆は全くない。
そもそもFat Controllerとは何か?
何がFat Controllerを悪者たらしめるのか?
世の中のすべての物事森羅万象には、長所短所あります(諸説ある)。
筆者はFat Controllerに助けられることが、ここ数年でしばしばあったからこそ、Fat Controllerに向き合いたいと思う。
Fat Controllerの真実を、あなたも知りたくはありませんか?
昨今、サーバーサイドのお仕事といえばクライアントからのリクエストに応えてjsonを返す簡単なお仕事になっているかもしれません。
ですが、まれに外部APIや内部のサブシステムをHTTP, RESTで呼び出して返却された値を扱う場面もあると思います。
そんなとき便利なのが、そうGuzzleです。
このGuzzle、一言であらわすと便利なHTTPクライアントなのですが、中でも強力なのが非同期リクエストならびに並行処理(Concurrency)を扱えることです。
(我々人類はひとつひとつリクエストを投げてそれを待つ時間など無いのです)
今回のトークでは、
をお話したいと思います。
一緒にこのGuzzleと仲良くなりましょう!
PHPの最新機能が発表されるたびに、へぇ~って流してしまいませんか?
新しい機能についての記事には目を通すけど、試すまでいかないことはよくあると思います
このトークでは直近のPHP8.3で追加された機能を紹介し、
効果的に活用する方法を実践的なコードとともに解説します
ただ記事をみて終わるだけに留まらない、
実際に解決したい課題とセットで機能の解説を時間の許す限り出来ればと思います
このトークを聞くことで、明日からPHP8.3の新機能を利用して、
皆様がさらにPHPをうまく使えるお手伝いが出来ると幸いです
対象の聴講者
お話する内容
2024年1月、「なぜキャッシュメモリは速いのか」が話題になりました。
この質問に答えるのはなかなか難しく、X(Twitter)ではいろいろな回答がされていました。この回答はさまざまな立場・理解からされていて、Xのタイムラインをご覧になっていた方はいまいちしっくりこなかったのではないでしょうか。
このトークでは「なぜキャッシュメモリは速いのか」に答えるのに必要な知識を、初心者の方にもわかりやすくご説明します。
キャッシュの使いこなしは現代コンピュータにおいて避けることはできず、キャッシュを制するもののみがコンピュータを高速に動作させられると言っても過言ではない状態です。キャッシュを理解し、キャッシュを楽しみましょう!
WEBサイトにユーザがJavaScripを埋め込めると、任意の操作が可能になってしまい、非常に危険な脆弱性となります。
例えば管理者権限ユーザを狙ってセキュリティを解除させたり、情報をお漏らししたり…
これはクロスサイトスクリプティング(XSS)と呼ばれ、PHPではhtmlspecialchars()で対策できるようになっています。
とはいえ「全ページ中で1箇所でもhtmlspecialchars()忘れたら死ぬ」は辛くないですか?
自分は大丈夫?他のメンバーは?新人が来たら?そもそも"気をつける"が対策なのは…
この危険かつ面倒なXSSに対し、Content Security Policy(CSP)というHTTPヘッダが強力な防御策になります。
本発表ではCSPヘッダの紹介と実装方法、また実際にPHP + nginx + Vue構成でサービスを作った際にハマったポイントをお話しします
昨今PHPStanの活躍する現場が増えていますが、PHPStanがつけてくださる型の気持ちが理解できないという方も多くないのではないでしょうか。
無保証のツールなので懇切丁寧なマニュアルや顧客サポートがないので、適切に使いこなすには少なからず内部の仕組み、特に型付けのための仕組みを知っていることが望ましいです。
PHPStanの技術的な背景には型理論や構文解析などややこしい概念がありますが、実際のところ使うだけなら難しい知識はさほど必要なく、貢献の余地もたくさんあります。
今回のトークでは基礎知識と過去の事例も含めて以下のようなお話をします。
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
みなさん様々な環境にPHPのアプリをデプロイしていることと思います。
PHPコミュニティでは、Azureを使った事例はあまり公開されていないように思います。
AzureにもPHPをデプロイするのに適した良いサービスがたくさんあるのですが、「Azureはどこから手をつけていいかわからない...」といった話を聞くことも多いです。
そこで、このセッションでは、AzuereでPHPを含む今時なWebアプリケーションを動かすことのできる様々な環境を比較しつつご紹介しようと思います。
想定する聴講者
PHPをAzureで利用する環境に興味がある方
Azureには興味があるが、どこから手をつけて良いかわからない方
Azure初心者〜中級者の方
PHP を含む、クラスベースのオブジェクト指向プログラミング機能を持つ言語(あるいはそれ以外の言語でも)インターフェースを利用できます。
アプリケーションの実装上の設計を考えたことがある人は、インターフェースが使えると何が嬉しいのか?どんな場面で使えばよいのか?と思ったことがあるのではないでしょうか。
本トークでは、また設計の文脈で聞いたことがあるかもしれない「腐敗防止層」というワードとともにインターフェースの使い方、ひいては設計全般に通用する考え方をお話します。
以下を満たす方が聴講することを想定します。
みなさんはWebにおけるPHPランタイムを構築したことはありますか?
ある方もない方も、自分が開発時に使っているPHPランタイムがどのWebサーバーと実行方式の組み合わせで動いているか把握していますか?
把握している方は、なぜその組み合わせで動かしているのか説明ができますか?
私はこれまで、Laravelを使ったPHPランタイムを開発環境の構築も含めて、主にApache, Nginx, Laravelのビルトインサーバーの3パータンで構築してきましたが、きちんと時と場合によって使い分けてきました。
このセッションでは、
について説明しながら、具体的にどのようにPHPランタイム(特にLaravelに焦点をおいて)を使い分けるのがよいのか?についてお話しできればと思います。
8年運用しているPHPアプリケーションをリプレイスするのにあたって、目的整理とチームに向き合い、奮闘と決断した話をします。
長年運用しているサービスの技術負債を解消しきれず、リプレイスを検討している方へサポートになれれば幸いです。
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
現代のウェブ開発では、クラウドベースのアプリケーション開発が主流となっています。
一方で、時代背景や特定のニーズ、コスト等の観点から、オンプレミスを選択する企業も少なくありません。
特にLAMP(Linux, Apache, MySQL, PHP)環境は、その堅牢性と信頼性で、10年以上にわたり多くのウェブアプリケーションの基盤として選ばれてきました。
しかし、オンプレミス環境におけるPHPやOSのバージョンアップは、複雑で手間がかかり、特に運用中のサービスにとっては高いリスクと大きな挑戦を伴います。
本トークでは、実際に運用している大規模サービスのPHP7からPHP8へのバージョンアップをゼロダウンタイムで行った経験を元に、
オンプレミスのLAMP環境において、安全で効率的にバージョンアップを行うための技術的戦略をお話しします。
AWS CDKでサポートされていないPHPでIac的なことをやるとしたら?という興味とその実装が本発表の論点です。
今回はAWS SDK for PHPから提供されるクラスをを使用して全てのインフラリソースをコード化し、その場合の構成管理やメリデメを共有する内容になります。
インフラ構成の題材としては、下記のサービスを使用したシンプルなContainer Applocationを考えています。
VPC, Subnet, ALB, ECS
扱いたいトピック
「開発環境でクラスが読み込めないからとりあえず打つ」
「手順書に打てって書いてあるから実行する」
composer dump-autoloadを実行する時にこのように場面に遭遇したことはないでしょうか?
実は、dump-autoloadを打つべきタイミングには、明確な場面があります。内容をよく知ることで、「とりあえず打ってるけど、よく分からなくて不安…」を解消しませんか?
話すこと
対象者
多くの開発者は手元のマシンでPHPで開発をする際Package Manager経由でPHPをインストールしているはずです。
長年プログラミングをしている方なら brew update を叩いたらPHPが壊れるといった経験をしたことがあるはずです。
バージョン競合が発生しやすいため環境依存性や再現性や安定性に課題があります。
本登壇ではNixというPackage Managerの紹介をします。
NixはAtomicなInstallが可能であり、他Packageとの依存がないので何もしてないのに壊れたという状況が起こりえません。
PackageのBuild Scriptを宣言的に記述することができ、Rollbackも簡単に行うことができます。
想定聴講者