PHP Internals Book https://www.phpinternalsbook.com/ というものをご存知でしょうか
これはphp-srcを知りたい人のための資料になっています
普段はこれをもとにしたPHP Internals わいわいというもくもくハンズオンを行っています。
これをPHPカンファレンスのワークショップで行うというものです。
今回はPHPカンファレンスのワークショップとのことで、mbstring拡張がどうなっているのか、mb_*関数を作ってみましょう!
Hi! I'm tekimen, PHP mbstring commiter.
Would you like know what works mbstring?
If this proposal accepted, Feel free to join to our workshop!
11月リリースの最新版バージョン8.4を中心にPHPの今とこれからについて紹介します。
8.4ではプロパティのフックやHTML5サポートをはじめとする様々な機能強化が行われます。
より便利になるPHPの今について、サンプルを交えてわかりやすく紹介します。
変化するPHPコミュニティの姿とこれからについても紹介します。
PHPFのコア開発者、並びにPHP8.4 RMを務めさせていただいています。
1つのバージョンに対して3人いるRMは一体どのようなことをしているのか、コア開発者と兼任することでどのようなメリットがあるのかをご説明します。
また、特に国内からは見えにくい"コミュニケーション"の部分について、裏話をご紹介します。
ORM(Object Relational Mapper)使っていますか?
生PDOを使っていた段階からはじめてORMを使ったとき、誰しも感動したと思います。
しかし、しばらく使っていると…アレアレ?困り事が発生してきます。
このトークではPHPの代表的なORMについて概観し、ORMにまつわる困り事の具体例を解説してから、ORMを乗り越えて、ORMに縛られるのでなくORMの使い方をコントロールするための考え方についてお話しする予定です。
ORMとは何を解決してくれるツールで、何は解決してくれないのか。ストレスなく保守しやすいORMとの付き合い方のバランスはどこにあるのか。皆さんが考えてみるきっかけとなることを目指しています。
キーワード: DTO(Data Transfer Object), 詰め替え, クリーンアーキテクチャ, ORM as 高級なクエリビルダー
静的解析は堅牢なPHPアプリケーションを作るための手段として広く認知、活用されるようになりました。
特にPHPStanは技術カンファレンスでも多く言及されており、PHPにおける静的解析のデファクトスタンダードとも言えるツールです。
PHPStanはそれ単体だけでも効果を発揮しますが、拡張機能を使うことでより精緻な解析ができます。
例えばLaravel向けの拡張であるLarastanを使うと、マイグレーションファイルのスキーマ情報により、EloquentモデルのDBカラムの型を解釈できるようになります。
本トークではPHPStanの拡張機能の読み方を紹介するとともに、実際の拡張機能がどのように実装・実現されているのかを見ていきます。
拡張機能のコードを読むことで静的解析の威力を知っていただき、より効果的に静的解析を活用していくきっかけとなれば幸いです。
Googleから2023年10月に発表され、2024年2月から適用された「メール送信者のガイドライン」。
メール送信機能を有するサービスは何らかの対応に追われたのではないでしょうか。
私が担当するサービスでも、他の開発スケジュールが立てられていた中でガイドラインへの対応を迫られました。
顧客数が多く、それぞれが異なる用途でメールを送信するサービスにおいて向き合った
・事業サイドにガイドラインを説明してもうまく伝わらない
・OpenDKIMとPHPによる2段階でのDKIMリリース
など、苦労と工夫をお話しします
テストコードはプロダクトの持続可能な成長には不可欠で、私の所属する開発チームでは書くことが必須となっています。
しかし、書き方が人によって異なり、テストケースに過不足があったり、実装の仕方やレビューで悩んだりすることがありました。
そこで、テストコードの書き方をガイドラインを策定しました。現在では開発チーム全体で運用され、一定の効果を発揮しています。
本トークでは、このガイドラインの内容をもとに、テストコードを書くうえで最低限気をつけたいことについてお話します。
また、チーム全体で運用するための、策定のポイントについてもお話しする予定です。
テストコードの書き方を知りたい人はもちろん、テストコードレビューで悩んでいる人、チームで統一したコーディングルールを運用したい人にとって有益なものとなれば嬉しいです!
初心者向けのセッションです。
対象:
• PHPをこれから始めたい方
• 学習中に壁にぶつかってしまった方
• ChatGPTの活用を知りたい方
ゴール:
ゼロから始める方にもわかりやすく、PHPがはじめられるようになります。
内容:
近年、AI技術の進化により、言語習得のハードルがぐっと下がりました。
このセッションでは、ChatGPTを使ってPHPを学ぶ効果的な方法を紹介します。
• ChatGPTを活用した効率的な学習方法
• PHPの基本的な概念と書き方の解説
• 簡単な開発環境のセットアップ方法
• ChatGPTを使ったコーディングのヒントとテクニック
• 実際に動くシンプルなプログラムの作成
ChatGPTを活用して、よりスムーズに、そして楽しくPHPの世界に飛び込んでみましょう。
このワークショップセッションでは、参加者がPHP製 アクターモデルツールキット Phluxorを利用して
アクターモデルを用いた実装を体験します。
PHPでの限定的な考え方や実装に閉じず、
他言語で広く使われているAkka/PekkoやProto Actorなどにも流用できるように
共通の概念を用います
PHPを通して他アクターシステムを理解する手助けにもなるでしょう!
文字列(string)はPHPのみならず多くのプログラミング言語で提供されている基本的な機能のひとつであり、誰でもあたりまえに使っているものです。しかしその実態は多様で、一筋ではいかない概念であります。
本トークでは文字列という概念の概観を掴み、一筋ではいかないということを納得して向き合えるようになることを目指します。
ただし、以下の内容については詳しく取り扱いません。
PHP Standards Recommendations 、通称 PSR と呼ばれる、 PHP エコシステムで共通のインターフェースを宣言し、それに準じて実装することで再利用性・可搬性を向上させる施策があります。
その中でも今回は PSR-15 に焦点を当てて、この PSR が 誰のために作られ、どうやって使っていくことが求められているのか をインターフェースから解説していきます。
handle
という 1 メソッドだけが宣言されたこのインターフェース、一体どう使えば良いのでしょうか? PSR-7 に批准していない Laravel(Symfony) ユーザーはどうこれをとらえれば良いのでしょうか?
PSR-15 批准フレームワークを 自作 して得た PSR との向き合い方をご紹介します。
Laravelにおいて認証・認可はGate・Policyの仕組みに沿えばイージーに実装が可能です。
しかし、OktaやMicrosoft Entra IDといった外部IDプロパイダーを使用し、認証自体はWebアプリケーションに到達する前に行いたい場合もあります。
このトークでは、AWS ALBと外部IDプロバイダーを使用しOIDCで認証を行いつつ、LaravelではCasbinという複数言語をサポートしているアクセス制御するための認可ライブラリを使ったRBACの実装例を紹介します。
また、ALBの誤った設定によるALBeastと呼ばれる脆弱性についても触れます。
※本セッションは前後半でそれぞれテーマを分けます。途中参加/退室は構いませんのでお気軽にご参加ください。
【前半】PHPで学ぶプログラミングの教訓
プログラミングには様々な原理原則が存在します
また開発者は開発をしていく上で色々な教訓を得ます
そういった生の知見には一定以上の関心があります(https://x.com/nrslib/status/1819699023713828936
)
本セッションではこれまで培ってきた教訓を実例ベースで解説いたします
【後半】PHPで学ぶバックエンドソフトウェアアーキテクチャ選定の勘所
ソフトウェア開発とアーキテクチャは切っても切れない関係です
しかしながら、日進月歩のシステム開発の世界ではトレンドが刻一刻と変化します
そこで本セッションでは各種アーキテクチャの解説と、どのアーキテクチャを選択するかについてお話します
2023年5月、Twitter(現X)が提供するAPIが突如として有料化し、2009年から個人により運営されてきたTwilogがサービスの終了を発表しました。
そこに手を差し伸べる1つの企業がありました。そう、Twitter関連企業のTogetterです。
華麗な買収エピソードの裏側で、Twilogの統合プロジェクトがスタートします。
などなど、1年間に及んだ移行作業の全容についてお話しします。
Twitter(X) :
yositosi(@yositosi) https://x.com/yositosi
アオヤマ ミント(@MintoAoyama) https://x.com/MintoAoyama
このセッションでは、PHP ユーザ向けに OpenTelemetry を導入して、PHP アプリケーションを計装する手法について解説します。OpenTelemetry は、サービスやアプリケーションのテレメトリーデータ(トレース、メトリクス、ログなど)を収集、送信するためのオブザーバビリティフレームワークです。ベンダーニュートラルな OSS であり、PHP 版 SDK も提供されています。これを利用することで、PHP アプリケーションの動作を外部から観測することができます。手軽に利用できるので、オブザーバビリティツールの最初の一歩として触ってみるのも良いでしょう。
本セッションでは、OpenTelemetry SDK の導入、手動計装と自動計装、OTel Collector の活用によるテレメトリデータの送信、ローカル環境と本番環境でのセットアップなどについて紹介します。
Rustは高いパフォーマンスとメモリ安全性を両立したプログラミング言語で、最近ではLinuxカーネルの開発に一部取り入れられたことでも話題になるなど、人気の高い言語の一つです。
そのRustで、PHPの拡張モジュールを作ることができるのをご存知ですか?
拡張モジュールは通常C言語で開発されますが、ext-php-rsというライブラリを利用すると、Rustで書いたコードをPHP拡張モジュールとしてコンパイルすることが可能になります。
このセッションでは、PHPerでありRust初心者の私がRustを使ってPSR-7ライブラリを開発した経験をもとに、以下のことをお話しします。
ユニットテストにおいて、テストダブルをうまく使うことは必要不可欠です。
しかし、それらの違いや使い分けを誤解していることも多々あります。
PHPUnitでも、モックやスタブを適切に使わないことで、意図が伝わりにくい不明瞭なテストコードが生まれてしまいます。
このセッションでは、具体的な例を交えつつ、PHPUnitにおけるテストダブルの適切な使い分けについて話します。
プロダクトコードだけでなく、テストコードにおいても可読性は大事です。
良いテストコードを書くために、良いテストダブルの使い方を知っていきましょう!!
話すこと
・モックとスタブの違い(基本の部分)
・PHPUnitにおけるテストダブルの使い分け
・使い方が間違っているケース(具体例)
PHP で JVM (a.k.a. Java Virtual Machine) を実装したり,RubyVM を実装したりと様々な試みがなされてきました。
PHP といえばウェブ開発に特化したプログラミング言語だと思われがちかもしれませんが,今では他のプログラミング言語と遜色ないほど様々なことができます。
もちろんそれは,PHP で OS を実装することも例外ではありません。OS の実装は途方もない時間がかかるしハードルが高いと感じるかもしれません。でも大丈夫。私たちには ChatGPT がついているじゃない。
本トークでは,ChatGPT とともに PHP で OS を実装する方法を解説します。
PHP 8.4で追加された pg_result_memory_size()
は、SQL実行結果の中でも memory_get_usage()
に計上されない隠れたメモリ使用量を可視化します。特に大量データ処理時のメモリ不足リスクを軽減する重要なツールです。
この関数の実際の動作を見ながら、PHPでデータベースを扱う際の注意点と解決策を検討します。
対象者:
API Platform は、Web APIの開発に特化したPHP向けのフレームワークです。
エンティティクラスにアトリビュートを1行追加するだけで一瞬でREST APIとOpenAPIドキュメントを生成できてしまう手軽さを持ちながらも、
本格的なWeb APIの開発に必要な機能を幅広く備えており、PHPでWeb APIを開発する際の有力な選択肢の一つとなっています。
このトークでは、API Platformの導入方法から、State Provider・State Processor・OpenAPIドキュメントのカスタマイズといった重要な基本機能の概要までを、
実際に動作するデモをお見せしながら丁寧にご紹介します。
皆さんにAPI Platformの概要を知っていただき、少しでも興味を持っていただければ幸いです!