採択
パンフ記事(2ページ)

PHPマスタリー:初心者から次のレベルへのパスファインダー

kunikiya 原田裕介

世の中に入門書や入門者向けの記事は溢れています。
上級者向けの書籍や記事も増えています。
入門書を終えた後、次のステップに進むために何を学ぼうか悩んでいるビギナーの方は多いのでは無いでしょうか?

PHPを使って業務で開発を行っていくうえで、次のステップとして学ぶと良いことを具体的なケーススタディやコード例を交えてお伝えしていきます。

PHPerKaigiでは上級者向けの面白いトークや記事が沢山ありますが、技術コミュニティとして裾野を広げるためには、初中級者向けのコンテンツも有用と考えます。
これらの方々へ有益な情報をなることを期待します。

◆対象者
・入門書をやり終えた程度のPHP初心者
・簡単なWEBアプリケーションが作れるようになったPHP初中級者

◆書くこと
・バグを生み出しづらい書き方
・チーム開発において読みやすい書き方
・コメントの入れ方
・セキュリティを意識した書き方
・コーディング規約
・エラーメッセージの見方

4
採択
パンフ記事(8ページ)

キミにも作れるPHPStan拡張

tadsan うさみけんた

PHPStan使っていますか? PHPのコードを分析すれば、たちどころに型がつく、イカしたツールです。
現代のPHPStanはPHPコード上でうまくやればかなりの部分が型がつくのですが、とても残念なことにそれだけで完全な開発体験になるようなものでもありません。

本稿では融通のきかないPHPStanを拡張してうまく手なずけれやれるようになるための初歩をまとめます。

7
採択
パンフ記事(4ページ)

PHPで学ぶデータ構造:ハッシュテーブルとチェイン法

app1e_s meihei

ハッシュテーブルは、文字列のキーから高速で値を取り出すことができる強力なデータ構造です。私たちの身近なPHPの配列が良い例です。そして、チェイン法はハッシュテーブル実装時に生じるハッシュの衝突という問題を解決するための実装方法です。
これらの技術はPHPの配列の内部実装でも利用されており、PHPerにとって必須の知識であると言っても過言ではありません!

今回は、ハッシュテーブルとチェイン法についてより理解を深めるために、PHPのSplFixedArray(C言語の配列と似たような挙動をもつ)を使ってその実装を行います。

お品書き

  • ハッシュテーブルの動作原理と、データの格納・検索方法についての解説
  • PHPによる実装例:ハッシュ関数、キーと値の挿入、そして衝突発生時のチェイン法による解決など

対象読者

  • ハッシュテーブル何それ美味しいの?という人
  • PHPについてより深い理解を求めている人
2
採択
ポスターセッション

動的言語型付けバトル

tadsan うさみけんた

近年、さまざまな動的言語に型をつけ、静的解析する試みが盛んに行われています。

このセッションではその考えの言及となった漸進的型付けのアイディアの紹介から、各言語の型付けに対する動向まで紹介します。

選手入場

  • PHP
  • TypeScript
  • Python
  • Ruby
2
採択
ポスターセッション

BEAR.Sunday 2014-2024

koriym 郡山 昭仁

BEAR.Sundayの最初のアルファリリースから2024年で10年になります。これを記念して、他のフレームワークにはないBEAR.Sundayのユニークな特徴をポスターで紹介します。

  • コンポーネントの集合ではなく、制約の集合。フレームワークのフレームワーク
  • Google Guice クローンのDIシステム
  • AOPアライアンス準拠のAOP
  • RESTネイティブ
  • Semverリスペクト。リリース以来の後方互換継続
  • SQLとPHPインターフェイスの束縛
  • イベンドリブンで無効化可能な分散キャッシュフレームワーク
  • 合成可能なクリーンアプリケーション
  • アプリケーションからAPI ドキュメントの生成
  • IA(インフォメーションアーキテクチャ)との親和性
  • マトリクスコンテキストによるアプリケーションの振る舞いの変更
  • 超絶パフォーマンス
7
採択
パンフ記事(4ページ)

PHPerがいる会社同士で合同勉強会をやろう!開催までのHOWTO

asumikam asumikam

過去、私は社内の勉強会を主催してきましたが、2023年には他社の方と何度か勉強会を開催する機会を作り実行してきました。
これらはまるで「ミニカンファレンス」のような形をとり、非常に有意義なものでした。
その経験から得た知見を共有し、これまでの成功と失敗から学んだことを皆さんとシェアしたいと思います。
PHPer同士の合同勉強会がもっとカジュアルに行われることを願って!

書くこと

  • 合同勉強会をなぜやるのか・開催するモチベーション・社内にもたらされる効果
  • 「やりましょう」のHOWTO
  • 当日までにやること
  • 当日のHOWTO
  • 合同勉強会に入れた方が良い要素
5
採択
パンフ記事(4ページ)

テキストエディタがPHPをシンタックスハイライトする仕組みとモダンテキストエディタ事情について

takeokunn たけてぃ

EmacsやPhpStormのようなテキストエディタは常に最新のPHPをストレスなく書けるように機能を提供し続けています。
直近追加されたmatch式やenum構文なども問題なくハイライトしてくれるのは誰かが対応してくれているからです。
この記事では、そもそもテキストエディタはどのように構文を解釈してハイライトしてくれているのか、tree-sitterなどの最近のテキストエディタ事情も踏まえて解説していきます。

4
採択
ポスターセッション

PHP Serverless Pattern

seike460 清家史郎

サーバーレスは少しずつ浸透していっています。

そんな中でサーバーレスにおいて、決まったパターンがあることも共有知となってきました。

しかしPHPサーバーレスにおけるサーバーレスパターンとはどのようなものがあるのでしょうか。

今回はAWSにおけるPHPサーバーレスパターンの適用についてお話します。
この話を聞くことで、あなたがPHPを利用したサーバーレスラーになる為の「熱」になれれば幸いです。

・想定する聴講者
 - サーバーレスに興味のあるPHPer
 - AWSを利用しているクラウド系エンジニア

・お話する内容
 - AWS Lambda x PHPを中心にしたサーバーレスパターン
 - AWS Lambda x PHPにおけるインフラ構成

そして あなたをサーバーレスの世界に引き込む「熱」

1
採択
パンフ記事(2ページ)

Composerがパッケージを取得するまでの流れを知る

o0h_ きんじょうひでき

みんな大好きComposer、いつも色んなパッケージを持ってきてくれますよね。
「言われたものを持ってきてくれる」ということは、
「そのパッケージがあるか」「今の環境等に対応しているか」「どのバージョンが良いか」「新しく取得する必要があるか」「どこにあるか」「どこに配置するか」を解決している事を意味します。

これらの情報は、

  • Packagistを始めとした「レポジトリ」の仕組み
  • Composerの実行環境(PHPのバーションや拡張モジュールの有無、vendor以下に存在するディレクトリ)の情報
  • 各パッケージに含まれるcomposer.jsonの提供情報

を再帰的に読み解いていくことで、整合性の取れた情報を組み立てています。

仕組みを知ることで、少し便利に感じたり、トラブルシュート力が上がるかも知れませんね!
ということで、composer install の実行時の動作を例にして、
「どこからどんな情報を取得しているか」「どういう順番で処理を進めているか」の概要を説明します。

具体的なロジックは実際にソースコードを読んでもらうことにして、
本記事では登場人物と役割(持っている情報の範囲)、シーケンスに触れていきます。

採択
パンフ記事(8ページ)

初めてのリファクタリング! 〜今あるコードを読みやすく書き直してみよう!〜

o0h_ きんじょうひでき

PHPの基礎的なコーディングは出来る、まだまだ「独り立ち」への道は半ば、最近「良いコード」に興味を持ってきた!
そんなphperが対象です。

さて、「リファクタリング」というものがあります。
すでに書いてあるコードを、「振る舞いを変更せずに書き換える」活動だと説明されます。

「経験を積むほどに、コードを書くのは上手くなる」という命題は真だと思いますが、
「1発で綺麗に書けるようになる」とはならないのです。
それどころか、「書き直す」のが当たり前になっていきます。
もっと言えば、「リファクタリングを欠かせず実施できる!」というのは、中級者としての要件と言えるかもしれません。

ただし、最初は怖いかも知れませんよね。
「いつ・どんなコードに対してやれば良いのか分からない」「やり方がわからない」というのが、
怖さを増やしているのではないかと考えています。

そんな問題に対抗するべく、この記事では、「初めてのリファクタリング」をテーマに、
最初の1歩を踏み出すための武器を提供します。

一緒に「めちゃ長ぇメソッド」を飼い慣らしていきましょう!

コンテンツ

  • リファクタリングって何? 「作り直し」と何が違うの?
  • リファクタリングしたくなるコード、って何?
  • どうやって、始めるの?進めていくの?
  • リファクタリングの「パターン」を知って、ポイントを見つける「眼鏡」にする
5
採択
パンフ記事(4ページ)

PHPのエラーとハンドリングを深ぼる

o0h_ きんじょうひでき

PHPには、複数のエラーがあります。
「復旧不能な致命的なエラー」「復旧可能な致命的なエラー」「継続的なエラー」が主役です。
「例外」もいますね。
発生のタイミングで、PHPの起動時やコンパイル時だったり実行時だったり…と複数のパターンがあります。
そして、それをハンドリングするための機構、エラーハンドラーがあります。
更に、エラー制御演算子 @ があります。

こう書いてみると、割と色々なものが入り組んでいるんだな〜と思いませんか?
とはいえ、PHPの経験をある程度積んだアプリケーション開発者であれば、身体で覚えているようにも思います。

しかし、PHPにとって「エラー」って何なのでしょう?
エラーが起きた時に、何が起きて、どういう処理をしているのでしょうか?
@ を付けたら「エラーが出なくなる」、なぜ? 制御の対象はどこまでなのか、どういう挙動の変化があるのか?

PHPの気持ちになって考えてみたいな、と思いませんか・・・・?
そこで、php-srcの読解やPHPコミュニティで公開されている各種ツールの利用により、
「エラーって何だろう」を自分の目で見ていこうと思いました。
本記事は、その調査結果です。

コンテンツ

  • PHPのエラーの簡単なおさらい(設定やアプリケーション)
  • 「エラーが起きた」とは、何が起きたのか
  • エラー制御演算子 @ の仕事
2
採択
ポスターセッション

未来を拓く若手エンジニアの興味関心と目指すキャリア

uutan1108 うーたん

このポスターセッションでは、若手エンジニアの技術的な興味や目指すキャリアに関する調査結果などについてポスターを通じて発表いたします。

私と他数名の若手エンジニアで、若手ふんわり勉強部というLT(ライトニングトーク)形式の勉強会の運営を行っています。この勉強会の参加者全員が若手エンジニアであり、もちろんLT発表者も若手エンジニアです。
参加者層も幅広く、フロントエンドエンジニアからネイティブアプリエンジニア、SREなど、様々なエンジニアの方々が集まります。そしてLTの内容もさまざまです。

このポスターセッションでは、勉強会参加者の若手エンジニアに「目指しているエンジニア像」や「さらに学びたい技術領域」などについてアンケートを行った結果をポスターを通じて発表いたします。更に、勉強会の様子や一部LTの内容もご紹介します。

会場では、皆さんが若手エンジニアだった頃の思いと、現在の若手エンジニアたちの思いの違いや共通点を語り合いたいです!

ポスターの内容

  • 勉強会の紹介
  • 勉強会の様子
  • 一部の発表内容の紹介
  • アンケートの調査結果
    • 「目指しているエンジニア像」
    • 「さらに学びたい技術領域」などの質問の結果

対象者

  • 若手エンジニアの興味について知りたい方
  • エンジニアに関心がある学生
  • 若手限定の勉強会に関心がある方
5
採択
ポスターセッション

お客様に合わせた多彩な支払い方法を提供するための開発事例

yu12co_mm あはれん

オンラインカウンセリングサービス「エキサイトお悩み相談室」は、
2023年11月に定期的にご利用いただいているお客様に向けてよりお得にご利用いただけるよう、コインの定期購入機能をリリースしました。
毎月決まった金額で自動で購入され、二回目以降金額に応じた特典コインが付与される機能です。

購入方法はサービスの特性によって様々存在します。
ECサイトではクレジットカードによる都度購入、動画配信サイトではサブスクリプションなど、多岐にわたる選択肢が存在します。

これらの多様な購入形態を体系的に整理しつつ、コインの定期購入機能の開発事例を紹介いたします。

お客様にスムーズにサービスをご利用いただけるよう、我々がどのように購入方法を進化させてきたのかをお伝えいたします。

Outline
・よくあるサービスの購入形態のおさらい
・当サービスの概要と、用意されている購入方法の説明
・11月にリリースしたコインの定期購入機能の開発談の共有
 - 定期購入フロー
 - 既存仕様とのすり合わせ方法
・学びの共有
・まとめ

Target Audience
・サービスの購入形態について興味のある方
・オンラインカウンセリングサービスについて興味のある方

3
採択
2024/03/07 17:30〜
Track A
レギュラートーク(20分)

Readable 正規表現

shunsock shunsock

Web ApplicationをPHPで記述するときに, 多くの場合, 文字列の正規表現を扱うコードは必要です. また, 正規表現を使ったコードは重要な部分を担うことが多いです. 例えば, uriのroutingをする時に正規表現を使うことがあります. また, ユーザー名やIDに使うできる文字を制御するのに用いることもよくあるケースです.

しかしながら, 同時に私たちプログラマを最も悩ませる問題の一つでもあります. urlやemaliのValidationに苦労された経験を持つ方は多いのではないでしょうか?
その理由としてよく「記述した正規表現パターンの理解のミスが起こりやすいこと」や「正規表現パターンを記述したコードが長くなってしまうこと」が挙げられます.

本セッションでは難解な正規表現を扱うコードを理解しやすくする方法を紹介します. 正規表現が大好きなみなさんもちょっと苦手意識のある方も是非お越しください!

ターゲット

正規表現を使ったコードを書いたことがある方
正規表現の実用に興味のある方

話すこと

正規表現を扱うコードを理解しやすくする手法

話さないこと

正規表現の使い方などの初歩的な話
正規表現の成り立ち

10
採択
2024/03/07 17:30〜
Track B
レギュラートーク(20分)

雰囲気実装を少し抜け出そう!RFCからPHPの実装までを考えるタイムゾーンとサマータイム!!!

suguru_ohki スー

今までサマータイムとタイムゾーンについて雰囲気でやってきていませんか?僕は少なくとも雰囲気でやってきました。
実際そんなに困ることねーし・・・!とそう思っていたそのとき!困る時がやってきます・・・。(震え声)
RFCなどを追いつつ、PHPの実装をどうするのか?といったところまでふかぼっていきます!

3
採択
2024/03/07 18:05〜
Track A
レギュラートーク(20分)

マイクロサービスがほしいと思ったときに本当に必要だったもの〜なぜ人は共通基盤の夢を見るのか〜

77web 菱田裕美

複数のプロダクトやサービス事業を展開している企業で一度は言われる「共通基盤を作りたい」。
近年、エンジニア側も「よし、共通基盤だ!マイクロサービスを作ろう」と安易に呼応してしまうことがでてきました。このように始まったマイクロサービス開発では、往々にして失敗したマイクロサービスが負債として残り、エンジニアチームは「マイクロサービスはダメだ」という感想を持ってしまいがちです。

「共通基盤だ!」と言い出したとき、本当にマイクロサービスが必要だったのでしょうか?
前職で数年にわたってマイクロサービスを開発・運用し、PHPerKaigiでマイクロサービスを布教したこともある私ですが、現職では「共通基盤だ!」にNOを突きつけています。
共通基盤というマイクロサービスがほしくなる動機を解きほぐし、マイクロサービス採否ジャッジの基準、ニーズをマイクロサービス以外の方法で満たす方法についてもお話しします。

10
採択
2024/03/07 18:05〜
Track B
レギュラートーク(20分)

PHPアプリケーションのスケーラビリティと信頼性を革新する: nginx+ngx_mrubyとGoの融合

pyama86 pyama86

本セッションでは、高負荷下でのPHP WEBアプリケーションのパフォーマンスを支えるために、nginx+ngx_mrubyプロキシとGo言語で構築した仮想待合室サーバをどのように統合し、活用しているかを具体的に解説します。

トラフィックのピークをクールに処理し、ユーザーエクスペリエンスを最大限に高めるためのチューニングの詳細、通知、ダッシュボードを用いた運用プロセスを含めて紹介します。

実際に運用している環境から得られた貴重なデータを基に、PHP開発者が同様の問題に直面した際に役立つ実践的なソリューションを提供します。このセッションは、高トラフィック時の対応策を模索するPHP開発者やアーキテクトにとって、必見の内容を含んでおり、技術的な深堀りとともに、ビジネスの継続性と成長を支えるインフラとしてのPHPアプリケーションの強化方法を提案します。

5
採択
2024/03/07 18:05〜
Track C
レギュラートーク(20分)

PHP で読む楽しいコアダンプ

sji_ch sji

皆さん、コア吐いてますか?

コアダンプファイルは実行中のプログラムのある時点でのメモリ内容を、丸っとファイルへ吐き出したものです。Linux や Unix 系 OS では、プログラムがクラッシュした際など、設定によってその原因究明のためのコアダンプファイルを吐き出させることができます。

我々 PHPer にはコアダンプファイルは馴染みの薄いものです。PHP スクリプトの実行でコアが吐かれるのは、ふつう処理系や C 言語拡張部分の不具合を踏んだ場合です。PHP は仕事で使われることの多いビジネスマンの言語で、仕事でそのような不具合を踏みやすい環境を常用することは珍しいでしょう。

しかしこのコアダンプ、プログラムのクラッシュ時以外でも取れば取れるもので、気合で読めばけっこう楽しいものでもあります。みなさんもこのトークを聞いて、毎日じゃんじゃんコアを吐いていきましょう!

6
採択
2024/03/08 10:40〜
Track A
レギュラートーク(20分)

php-src debug マニュアル

onopon_engineer おのぽん

php-src。それはPHP言語のソースコードのことです。
そのため全て読むのは大変です。
php-srcを読む際、適当なtest.phpを作り、ast\parse_codeを利用しながら気になる挙動の構造を確認したり、気になるfunctionにブレークポイントを仕込んでdebugしていくこととなるでしょう。

しかし、debug環境を整えようとすると、一筋縄ではいかないことが多々あります。少なくとも経験の浅い僕にとっては簡単ではありませんでした。
MacやWindowsなど、デバッグを試す環境の違いにより色々な知見を得ながら環境整備しなければなりません。
それだけの労力を割きながら、いざphp-srcのmake testをしてFailだらけになると気が滅入ってしまうものです。

そこで、Dockerを利用してphp-srcのためのsandbox環境を整えました(発表当日にはgithub上でpublicリポジトリとして公開します)。
本セッションでは、そんなsandbox環境とVSCodeを連携方法や、それらを用いたfunctionへのアプローチ(debug)方法をお伝えいたします。

もうphp-srcの環境構築に迷うことはありません。
素敵なphp-srcリーディングライフを送りましょう!

対象者: php-srcを読んでみたい方/読もうとしたけど環境構築で挫折した方

12
採択
2024/03/08 10:40〜
Track B
レギュラートーク(20分)

10年モノのレガシーPHPアプリケーションを移植しきるまでの泥臭くも長い軌跡

toshimaru_e toshimaru

私たちが古くなったPHPアプリケーションをRuby on Railsに移植することを決断したのが2016年―。
私たちが移植対象としたPHPは下記のようなものです。

  • とっくにEOLなPHPバージョン
  • オレオレ・独自フレームワーク
  • 標準サポート終了しているAmazon Linux AMIなEC2サーバー
  • PEAR/PECLなライブラリ管理
  • 自動化されていないテスト・デプロイ
  • 仕様ドキュメントほぼ無し(ソースコードが仕様書)
  • 担当プロダクトオーナー不在

過去に本PHPアプリケーションの移植プロジェクトは断続的に立ち上がっていたものの、それらは局所的な移植として終わってきました。
2022年、この戦いに終止符を打とうと本格的な移植プロジェクトが再始動、ついに2023年、移植を完遂しました。

本プロジェクトは正直、カッコいい移植プロジェクトとは言い難いものです。
そんな泥臭く長い移植の軌跡を、技術的負債解消の一事例としてお話できればと思います。

想定聴講者

  • 技術的負債の解消に興味がある方
  • 現在進行系で技術的負債と闘っている開発者

話すこと

  • なぜ移植するか
  • どのように移植を進めたか
  • 移植前後の改善結果
  • 移植後も山積する課題と今後の展望

話さないこと

  • ナウい技術的負債の解消方法
  • 移植後のシステムの技術的詳細
8