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と仲良くなりましょう!
若手エンジニアがプロジェクトマネージャー(PM)としての役割に初めて挑戦し、直面した課題と挫折、それらから得た成長と学びを掘り下げます。
エンジニアリングの技術的詳細から、プロジェクト全体を概観するマネジメントの視野へとシフトする過程での視点の変化を紹介します。
ホライズンテクノロジー代表の大谷は、これまで10社以上のCTO/技術顧問を経験してきました。
技術組織においは、フェーズ、体制、プロダクトなど、様々なことに起因する課題が発生します。
どんな課題に対して、どんな対策が有効なのか。そうやって課題を解決していくのか。
エンジニアの立場と経営者の立場、両方を経験したからこそ見えた内容を発表します。
PHPの最新機能が発表されるたびに、へぇ~って流してしまいませんか?
新しい機能についての記事には目を通すけど、試すまでいかないことはよくあると思います
このトークでは直近のPHP8.3で追加された機能を紹介し、
効果的に活用する方法を実践的なコードとともに解説します
ただ記事をみて終わるだけに留まらない、
実際に解決したい課題とセットで機能の解説を時間の許す限り出来ればと思います
このトークを聞くことで、明日からPHP8.3の新機能を利用して、
皆様がさらにPHPをうまく使えるお手伝いが出来ると幸いです
対象の聴講者
お話する内容
2024年1月、「なぜキャッシュメモリは速いのか」が話題になりました。
この質問に答えるのはなかなか難しく、X(Twitter)ではいろいろな回答がされていました。この回答はさまざまな立場・理解からされていて、Xのタイムラインをご覧になっていた方はいまいちしっくりこなかったのではないでしょうか。
このトークでは「なぜキャッシュメモリは速いのか」に答えるのに必要な知識を、初心者の方にもわかりやすくご説明します。
キャッシュの使いこなしは現代コンピュータにおいて避けることはできず、キャッシュを制するもののみがコンピュータを高速に動作させられると言っても過言ではない状態です。キャッシュを理解し、キャッシュを楽しみましょう!
Laraveler のみなさん、アプリのセキュリティ、気にしてますか?
何となく「Laravel がよしなにやってくれてる」で片付けてませんか?
安心してください、私もです。
XSS、CSRF、SQLインジェクション、セッションハイジャック、ファイルアップロード脆弱性、ログイン機構に対する攻撃、etc。
今回は、これらそれぞれの攻撃に対して、Laravel が何をしてくれているのか、その実装を追っていきたいと思います。
思わぬ落とし穴も見つかるかもしれません。
サービスが成長すると愚直にコードを書いているだけではパフォーマンスの問題にぶつかります。
参照はcacheやリードレプリカを増やすことで対応することができますが、書き込みが多い場合はそういうわけには行きません。
PHPの鬼門ともいえる、書き込み処理を如何に改善していくか。
そのために必要な基本的な考え方や実際のアプローチについて説明します。
コロナ禍以来、リモートワークの普及が進み、社内システムやプロダクションサーバへの安全なアクセスとその監査の重要性が増しています。私はこの新たな働き方を支えるため、SSHの多要素認証、短命な証明書による公開鍵認証、そしてWazuhやFalcoを活用した監査基盤の構築に取り組んできました。
特にPHP開発者にとって、セキュリティはしばしば遠い存在と感じられがちです。しかし、実は私たちの日常的な開発プロセスに深く関わるものであり、特にリモートワークが常態化する今、セキュリティ意識は必須のスキルとなっています。このセッションでは、ゼロトラストネットワークの基本概念を踏まえつつ、PHP開発者が容易に取り組めるセキュリティ対策を実践的な視点から解説します。開発プロセスにおけるセキュリティの組み込み方、安全なリモートアクセスの確保方法、そしてアクセス監査の自動化について、具体的な事例と共に紹介します。
検索機能は現代の情報検索の基礎で, 多くのWebサービスに搭載されています.
検索機能の実装者としてElasticsearchなどの全文検索エンジンを使ったことのある方も多いと思われます.
一方で, その内部実装を知っている方は多くないのではないでしょうか?
本セッションは検索エンジンをフルスクラッチ実装しながら解説するパワフルなコンテンツです!
基本的な検索エンジンの実装のトピックとして、以下を想定しています
このセッションの対象者:
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アプリケーション開発に特化したプログラミング言語です。Webアプリケーション開発においては非常に柔軟で強力ですが、リレーショナルデータベース(RDBMS)を作ることには全く向いていません。
全く向いてないにも関わらず、なぜPHPでRDBMSを作るのか?大きく分けて2つの理由があります。一つは車輪の再開発によりRDBMSの仕組みを深く理解できること、そしてもう一つはロマンです。例えば、WordpressがピュアにPHPだけで動作したら、なんだかワクワクしますよね!
本トークで話す内容
皆さん、php-src (PHP 処理系のコード)読んでますか?
PHP 処理系は C 言語で書かれたプログラムであり、多くの大規模 C プロジェクトと同様にプロジェクト固有のマクロが広く使われています。言語処理系のコードというもの自体が読むのに前提知識を要するのもあり、学校で少し C を習ったことがあるくらいの人だと、読みこなすのはけっこう骨が折れます。
しかし PHP で仕事をしていく中、処理系実装を追えると簡単に解ける疑問、原因究明が楽になるトラブルシュートは案外多いです。全員といわずとも、10 人くらいのチームごと 1 人でも読める人がいれば助かる日は多いことでしょう。
このトークでは PHP スクリプトに書かれた文字列リテラル 'hello world' が処理系に読み込まれコンパイル・実行され出力バッファや SAPI 層を通りぼくらの画面へ届くまで、を駆け足で解説します。
PHP を含む、クラスベースのオブジェクト指向プログラミング機能を持つ言語(あるいはそれ以外の言語でも)インターフェースを利用できます。
アプリケーションの実装上の設計を考えたことがある人は、インターフェースが使えると何が嬉しいのか?どんな場面で使えばよいのか?と思ったことがあるのではないでしょうか。
本トークでは、また設計の文脈で聞いたことがあるかもしれない「腐敗防止層」というワードとともにインターフェースの使い方、ひいては設計全般に通用する考え方をお話します。
以下を満たす方が聴講することを想定します。
みなさんはWebにおけるPHPランタイムを構築したことはありますか?
ある方もない方も、自分が開発時に使っているPHPランタイムがどのWebサーバーと実行方式の組み合わせで動いているか把握していますか?
把握している方は、なぜその組み合わせで動かしているのか説明ができますか?
私はこれまで、Laravelを使ったPHPランタイムを開発環境の構築も含めて、主にApache, Nginx, Laravelのビルトインサーバーの3パータンで構築してきましたが、きちんと時と場合によって使い分けてきました。
このセッションでは、
について説明しながら、具体的にどのようにPHPランタイム(特にLaravelに焦点をおいて)を使い分けるのがよいのか?についてお話しできればと思います。