採択
2025/04/11 18:30〜
ぼこ
レギュラーセッション

だから僕は(クラス)設計を辞めた

stwile871 スタヰル

一人のエンジニアとして、設計は私の生き甲斐の一つである。だが世の中が私の設計を求めているとは限らない。設計以外でコードを書く。

クラス設計を辞めてどうなるのか考えたことすらないくらい、具象と抽象のシャトルランを繰り返していた私が、今、クラス設計をしていない。

クラス設計を禁止しているわけではなく、自制している。そんな開発ライフの中で見えた新たな力の核心を、是非とも皆様にお伝えしたい。

話すこと

  • クラス設計をしない技術について
  • クラス設計をやめて、テストに対する話の時間を取っている話
  • エンジニアリングの熱をどこで焚き付けるのか問題
1
採択
2025/04/11 18:55〜
ぼこ
レギュラーセッション

サービスクラスのありがたみを発見したときの思い出

77web 菱田裕美

日々の開発でサービスクラス作っていますか?あなたはなぜその処理を切り出してサービスクラスに実装したでしょうか?
n年前のある日、Fat Controllerバリバリでフレームワークを使いこなしている気分で生きていた自分がサービスクラスの使いどころに気づいた前後の思い出をふりかえることを通じて、「サービスクラスはどういうときに便利か?どういう処理をおいたら便利か?」を解き明かしていきます。

2
採択
2025/04/11 19:20〜
ぼこ
LT

社内コードゴルフ大会を開催したら最高に楽しかった!!

keita__Max ケイタMAX

今年の3月に実施されたPHPerkaigi2024でコードゴルフ大会に参加し、とても楽しかったため、「自分の会社でも実施したい!」と思い立ち、実際に開催しました。結果は大成功で、とても楽しい時間を過ごせたので、その時の話をします。

コードゴルフの内容は、「FizzBuzz」問題や、1時間で解ける程度のの難易度のものを採用しました。言語はPHPを使用しました。

具体的には以下のような内容を話す予定です。

コードゴルフ大会を実施するにあたって、コードゴルフができるWEBアプリをどのように作成したか
コードゴルフ大会の雰囲気や参加者からの評判
•参加者たちの感想
コードゴルフ大会を定期的に開催していることでの社内への影響
コードゴルフ大会を開催した私自身の感想

1
採択
2025/04/12 10:00〜
かま
レギュラーセッション

オープニング

asumikam asumikam

実行委員長がオープニングを盛り上げます

1
採択
2025/04/12 11:00〜
かま
レギュラーセッション

PHP 8.x 時代のクラス設計(property promotion から property hooks まで)

nsfisis nsfisis

概要

PHP 8.x には、クラス設計に関わる重要な機能が多数導入されています。PHP 7.x の頃ではベストプラクティスと考えられていた設計でも、PHP 8.x の言語機能で代替できたり、改善できたりするものがあります。新しい言語機能を振り返りつつ、最新のクラス設計について考えていきましょう。

話すこと

  • PHP 8.x によって導入された言語機能(property promotion、readonly、property hooks など)
  • 上記を踏まえて、どのようなクラス設計が望ましいか

本発表の想定する対象コード

この発表は、主にアプリケーションコードを対象とします。ライブラリコードの設計も発表内で触れることはありますが、一部に限られます。また、フレームワークが提供する基底クラスを継承する場合など、クラス設計が大きく制限されるケースは対象としません。

採択
2025/04/12 11:00〜
ぼこ
レギュラーセッション

改めて学ぶ Trait の使い方

app1e_s meihei

PHP 5.4 から導入された Trait は、多重継承ができない PHP に、コードを再利用するための一つの手段として提供され続けて来ました。
しかし、実際にコードを再利用が求められる場面では DI を使用する方が適していたりするため、Trait を積極的に使う機会が少ないように感じています。
そこで OSS のコードや、実務のコードで使われていた Trait を参考に、2025 年に改めて Trait の使い方を学ぶお話しをします。

話すこと

  • OSS のコードから見た Trait の使いどころ
  • Trait のテストの書き方
  • 実務のコードで合った良い・悪い使われ方
1
採択
2025/04/12 11:00〜
あじ
レギュラーセッション

新しいPHP拡張モジュールインストール方法「PHP Installer for Extensions (PIE)」を使ってみよう!

この世の中にはPHP拡張モジュールをインストールするコマンドとして、peclやdocker-php-ext-installなどがあります。
新しいPHP拡張モジュールインストール方法として、2024/11/19にPHP Installer for Extensions (以下PIE)のプレリリース版が公開されました。

https://thephp.foundation/blog/2024/11/19/pie-pre-release/

PIEは、PHP拡張モジュール用のComposerだと言われています。いったいどんな機能や仕組みなのでしょうか?
このセッションでは、PIEの機能や仕組みやについて具体的なコードを乗せながら解説します。
新しく追加されたPIEについて、一緒に学びましょう!

4
採択
2025/04/12 14:00〜
かま
レギュラーセッション

「”誤った使い方をすることが困難”な設計」で良いコードの基礎を固めよう

TanigUhey taniguhey

「”誤った使い方をすることが困難”な設計」とは

  • バグを発生させにくくする
  • チームメンバーの誰でも扱いやすい
  • 時間が経っても意図を理解しやすい

ような実装を目指す設計です。

このトークでは、「”誤った使い方をすることが困難”な設計」を実現する方法として

  • クラスを型として扱い、実装者の考える意図と概念をコード上に残す
  • 制約をクラス内部に持たせ、重要なロジックを1箇所に集める
  • いつでも正しく仕事ができるクラスを作る

など、誰でも取り組めるテクニックを解説します。

難しいと感じやすいオブジェクト指向や設計の用語を極力避け、”気張らずに聞ける”トークを目指します。

対象者

  • フレームワークの使い方に慣れてきたくらいの初心者
  • 中級者へステップアップしたい人
  • 設計は難しいものだとハードルを感じている人
  • チーム全体に設計の基礎を浸透させたい人
1
採択
2025/04/12 14:00〜
ぼこ
レギュラーセッション

「影響が少ない」を自分の目でみてみる

o0h_ きんじょうひでき

「良いコード」は手を入れやすいもので、
そのためには「改修した時の影響が必要最低限に留まれるもの」が求められます。

日頃から「影響範囲」と口にしますが、
「影響する」あるいは「影響しない」とは、どのような事を意味するのでしょう?

プログラミングを取り巻くものは、コードはもちろん、
データベースや外部システムとの連携、クライアントとつなぐI/Fと多岐にわたります。
発生する影響と変更を類型化して、それが開発者に与えるものを考察します。
そして、開発者の経験則や直感に頼ることなく、誰でも「見える」ようにする方法がないか?を模索するトークです。

2
採択
2025/04/12 14:00〜
あじ
レギュラーセッション

恣意性から考える、変更に強いモデルの作り方

strtyuu 吉田あひる

「ツイートの文字数は140文字まで」これはドメインロジックだと思いますか?
もしそうではなかったとしたら、この整合性は一体誰が関心を持つべきなのでしょうか?

このセッションでは、恣意性を軸にデータの強整合性をさらに2種類に分けて考えるアイデアを提案します。
そして、そのアイデアがなぜ変更に強いモデルに繋がるのか、私の考えをお話ししたいと思います。

このトークでお話しすること

  • 恣意的なものとそうではないものについて
  • 2つの整合性について
  • 多重人格的なドメインモデルについて
  • 恣意性あるいはポリシーをドメインモデルから分離するということについて
  • 恣意性の分離がなぜ変更への強さを生むのか
採択
2025/04/12 14:30〜
かま
レギュラーセッション

低レイヤを知りたいPHPerのためのCコンパイラ作成入門

tomzoh 長谷川智希

CPUやプログラムの実行といったコンピュータの"低レイヤ"を知るためにCコンパイラを作成するのはとても良いアイデアです。
Rui Ueyamaさんの「低レイヤを知りたい人のためのCコンパイラ作成入門」はまさにそんな目的で書かれていて、手順どおりに進めていくだけで演算、変数、関数やポインタなど十分にそれっぽいCコンパイラを作れます。
ですが、このドキュメント、C(言語)でCコンパイラを作っていて、それ自体はごく普通のことですがPHPerにとっては若干ハードルが高いんですよね…。
OK。それならPHPでやってみましょう。
このトークではRui Ueyamaさんのドキュメントに従いながらPHPでCコンパイラを作る方法を解説します。
このトークを聞いた方がご自身でもPHPでCコンパイラを作成し、コンピュータの低レイヤを楽しめる様になることを願っています。

採択
2025/04/12 14:30〜
ぼこ
レギュラーセッション

定義ジャンプ入門

takeokunn たけてぃ

概要

「この関数、どこで定義されているの?」と悩んだことはありませんか?
コードベースが大規模になるほど、適切な定義ジャンプ機能を活用することで、開発効率やコード理解度を大幅に向上させることができます。

本セッションでは、定義ジャンプ(Definition Jump)の基本概念から、具体的な実装方法(例: ctags, LSP)の設定手順や活用事例を実践的に解説します。
さらに、PHPのコードベースを定義ジャンプしやすくするための工夫やベストプラクティスについても紹介します。

聴講者対象

  • 定義ジャンプの仕組みや原理に興味がある方
  • PHPの開発効率をさらに向上させたい方
2
採択
2025/04/12 14:30〜
あじ
レギュラーセッション

タイムゾーンの奥地は思ったよりも闇深いかもしれない

suguru_ohki スー

タイムゾーンは、開発において日付や時刻を扱う際に不可欠な要素ですが、その仕組みや実装について深く考える機会は少ないですよね!本セッションは、各主要OS(Linux、Windows、macOS)がどのようにタイムゾーンを管理・参照するのか、内部構造や関連ファイルなどについて紐解きます。また、PHPがタイムゾーンを扱う際に参照する仕組み(設定など)についても触れ、タイムゾーンの基本概念から実践的なトラブルシューティング方法まで幅広くカバーします。さらに、タイムゾーンデータの更新(IANAタイムゾーンデータベースの利用やPHPのアップデートとの関係)についても取り上げ、国際化対応や開発の安定性向上に寄与する知識を提供します。タイムゾーンの奥地へ踏み込み、日常の開発をより強固に支える技術を一緒に探っていきましょう!

2
採択
2025/04/12 15:00〜
かま
レギュラーセッション

New RelicのAPMを活用したECサービスにおけるメール遅延解消の舞台裏

Fendo181 Futoshi Endo

担当しているECサービスにおいて、TVで取り上げられるタイミングや、クーポン配布時に購入が集中すると負荷が高まり一部のメールで配信遅延が発生していました。
ECサービスにおいてメールの遅延はクリティカルなビジネスインパクトを与える為、解決は急務です。
本セッションでは「推測するな、計測せよ」の精神で、実際にNew RelicのAPMを活用し遅延の根本原因を特定し、効果的に解消した実例をお話しします。
このセッションでは以下のような話を紹介します。

New Relicを使った問題可視化と原因特定
New Relic APMの活用によるアプリケーションパフォーマンスの測定
SLI/SLOの設定を通じて指標を明確化し、改善目標を策定
改善ステップと実装詳細
効果測定とその後のまとめについて

1
採択
2025/04/12 15:00〜
ぼこ
レギュラーセッション

PHP で学ぶ OAuth 入門

昨今のWeb サービスにおいて、認証・認可は必要不可欠な要素といっても過言ではないでしょう。
認可の技術の一つに、 OAuth というものがあります。
使ったことはなくても、 OAuth という単語を一度は耳にしたことがある方は多いのではないでしょうか?

本トークでは、 OAuth に触れたことがない方を対象に、以下の内容についてお話しします。

  • 認証・認可の基礎
  • OAuth とは何か
  • OAuth の具体的な使いどころ
  • PHP による OAuth の認可処理の実装例

前半では OAuth とは何かについて説明したあと、後半で PHP での実装例を交えながら OAuth の認可処理の流れを説明します。

本トークを通じて、 OAuth の基礎を学んでみませんか?
小田原で みんなで学ぼう OAuth

1
採択
2025/04/12 15:00〜
あじ
レギュラーセッション

OpenSearchでレガシーな検索処理の大幅改善をやってやろう

DPontaro DPon

年月を経たレガシーなアプリケーションの検索処理は、肥大化したロジックによりパフォーマンスが劣化しがちです。実際に直面した検索遅延を、OpenSearchを活用して改善した実例をもとに、選定理由から実装の課題、実際の効果までをお話します。
PHP7.1といったメンテナンスされていない環境での導入事例になります

ターゲット

  • OpenSearch導入を検討している方
  • 検索処理のパフォーマンス改善に悩む方
  • レガシーな環境で開発を続けている方

お話すること

  • 社内で抱えていた課題
  • OpenSearchの概要
  • 選定理由
  • 実装時の躓き
  • 実装後の効果
  • 今後の課題
2
採択
2025/04/12 16:05〜
かま
LT

ちいさくPHPUnitをつくってみる

asumikam asumikam

PHPUnit、毎日(?)使っていますよね。
直接コマンドを叩いたり、便利なツールを介して使っていたりするかもしれませんが、
その中身に目を向けたことはありますか?

そこで、LT中に PHPUnitを「小さく作ってみる」ことで、その仕組みをひも解きます。
最低限必要な機能は何か?「最小限のPHPUnit」を作って実際に動かしながらデモを行います。
そして、「最小」では対応できない部分がどのように設計されているのかについても触れます。

「作る」ことで中身を想像する足掛かりにしていただければ嬉しいです。
テストフレームワークの奥深さを一緒に覗いてみましょう!

2
採択
2025/04/12 16:10〜
かま
LT

これ【<?php】がないと始まらない!PHPインタプリタ入門

yuka

PHPStormなどを使っているとつい存在を忘れがちな <?php タグ。タグの役割や、なぜ省略できないのか考えたことはありますか?本セッションでは、この小さな記述がPHPインタープリタの動作をどのように開始させるのかサクっと解説します。

2
採択
2025/04/12 16:15〜
かま
LT

2025年春に見直したい、リソース最適化の基本

sogaoh sogaoh

クラウド時代のPHPベースなサービス運用において、コストを抑えながらパフォーマンスを最大化するためのリソース選定について、以下の観点で基本的な考え方をお伝えします。

• インスタンスタイプの選択:CPUアーキテクチャの移行
• メモリキャッシュの進化:ミドルウェアの選択
• ストレージ選定:より高速なディスクの利用
• I/O最適化:処理単位を「小さくする」
• 軽量化:コンテナ最適化を意識したOS選定とマルチステージビルド
• ルーティング:シンプルなネットワーク構成

4
採択
2025/04/12 16:20〜
かま
LT

100行で書けるPSR-11

依存の注入、していますか?

皆さん大好き(?)Laravelもアプリケーション本体はDIコンテナそのものです。

そんな黒魔術の塊のように思えるDIコンテナですが、実はPHPでは100行弱のコードで実装が可能です。

みなさんも「四角い車輪の再発明」をして黒魔術への理解を深めてみませんか?

2