採択
レギュラートーク(15分)

なぜ、パスワードハッシュのソルトはハッシュと同じ場所に置いて良いのか

aki_artisan あかつか

PHPドキュメンテーション
「password_hash() は、 アルゴリズムやコスト、ソルトといった情報もハッシュに含めて返すことに注意しましょう。 」
ぼく
「え、ソルトも同じところにあったらセキュリティ的に意味ないんじゃ?」

このセッションでは、そんな疑問に答えるべく、password_hash関数について掘り下げて解説します。
そもそもパスワードをハッシュ化する目的や、パスワードにまつわる攻撃手段とその対応を見ていきましょう。

話すこと

  • ハッシュ化とは何か
  • なぜパスワードはハッシュ化する必要があるのか
  • ソルトは何を解決するか
  • ブルートフォース攻撃やタイミング攻撃への対応
6
レギュラートーク(30分)

リバーシを作って学ぶテスト駆動開発

aki_artisan あかつか

このセッションでは、ターミナル上で動作するリバーシを作成しつつ、テスト駆動開発(TDD)の基本を解説します。
一部、ライブコーディングを取り入れ、PHPを使用してリバーシを開発するプロセスを実際に見ていきます。

セッションの内容 :

  • TDDの説明
    • TDDサイクルの説明(Red-Green-Refactor)
  • PHPでテスト駆動開発を始めるための下準備
    • PHPUnitのインストールと設定
  • ライブコーディング
    • Todoリストの作成
    • 入力の受け取りと出力
    • ルールの実装(石を置ける場所の判定や石を裏返す処理など)
    • 終了判定と勝敗判定の実装

主な対象者 :

  • テスト駆動開発に興味がある方
  • テスト駆動開発本を写経してみたが、次に何を作れば良いかわからない方
4
レギュラートーク(30分)
東海勢(出身or在住)

範囲データと演算をセットにして考えるモデル化

hidenorigoto 後藤 秀宣

ソフトウェア開発において、モデル化や抽象化と言ったときに、多くの方は実装しようとしているシステムで扱う対象(業務など)に現れる情報や機能の構造をイメージするかと思います。一方で、私のエンジニア経験の中で、扱う対象の見え方がシンプルになるような「道具」としてのモデルを導入できた経験が何度かあります。エヴァンスのドメイン駆動設計でいう「ブレイクスルー」ほど大胆な発明ではないにしても、小さなブレイクスルーと呼んでも良いようなモデルの導入というものがあります。

このトークでは、「日時の範囲」という情報の取り扱いに関して、モデルを導入しない状態から、そのデータと演算とをモデル化して導入していくことで、問題の見え方が変わっていく流れを実際のソースコードを交えてお話します。

2
レギュラートーク(30分)

内部構造から学ぶ Git 〜content-addressable filesystem と commit graph〜

nsfisis nsfisis

Git は、現代のソフトウェア開発において欠かせないツールの1つです。
しかし、一度基本操作から外れると、思いもよらないような複雑な操作を強いられることもあります。
Git の内部構造や仕組みを理解することで、こうしたトラブルを事前に避けたり、トラブルシュートしたりすることが可能になります。
このセッションでは、Git の核となる content-addressable filesystem と commit graph に焦点を当て、それらの仕組みや役割を解説します。

話すこと

  • Content-addressable filesystem とは
  • Commit の内部表現
  • Branch の内部表現
  • マージとリベースはどのような操作か

話さないこと

  • GitHub、GitLab 等のホスティングサービスについて
  • PHP に関すること
2
採択
LT(5分)
U25(登壇時に25歳以下)

「何か」を求めて参加したカンファレンスから持ち帰ってきた「熱」を維持して、活用するために

uutan1108 うーたん

このセッションでは、「何か」を求めカンファレンスや技術イベントに参加して次のアクションに繋げたいと思っている方に「今からできるアクション」をお伝えします。

私は、技術同人誌即売会にスタッフ参加したら、パソコン雑誌に記事を投稿できること知り、記事を投稿したら、掲載していただけました。
参加している最中は、実際に「執筆する」というアクションまで想像できていませんでした。
しかし、参加したことで、「なんとなく執筆してみたい」が「このような記事を執筆したい!」に変化し、次のアクションに繋げることができました。

皆さんも何かを求めてカンファレンスに参加していませんか?その何かに出会うために、PHPカンファレンス名古屋2025からできるアクションをお伝えします。

話すこと
私の

  • カンファレンスから次に繋げる方法
  • カンファレンス開催中の動き方
  • カンファレンスが終わった後の動き方
2
レギュラートーク(15分)

なぜキャッシュメモリは速いのか

tomzoh 長谷川智希

2024年1月、「なぜキャッシュメモリは速いのか」が話題になりました。
この質問に答えるのはなかなか難しく、X(Twitter)ではいろいろな回答がされていました。この回答はさまざまな立場・理解からされていて、Xのタイムラインをご覧になっていた方はいまいちしっくりこなかったのではないでしょうか。

このトークでは「なぜキャッシュメモリは速いのか」に答えるのに必要な知識を、初心者の方にもわかりやすくご説明します。

  • キャッシュメモリとは何か
  • なぜキャッシュメモリを使用するのか
  • キャッシュメモリとメインメモリは何が違うのか
  • 結局なぜキャッシュメモリは速いのか

キャッシュの使いこなしは現代コンピュータにおいて避けることはできず、キャッシュを制するもののみがコンピュータを高速に動作させられると言っても過言ではない状態です。キャッシュを理解し、キャッシュを楽しみましょう!

2
レギュラートーク(30分)

Raspberry PiでCPUを作る

tomzoh 長谷川智希

ここ数年、私はRaspberry PiでCPUを作っています。
これは、Z80というCPUをコンピュータから取り外して代わりにRaspberry Piで作った自作CPUを取り付けて動かすというものです。

このトークでは私が作成した2つのバージョンのCPUを題材に、以下の様なことをお話します。

  • 少ないGPIOで多くの信号線をコントロールする工夫
  • CPUを作るというのは具体的に何をするのか
  • 手配線で作るCPUと基板発注して作るCPU
  • 自作CPUのデバッグ方法
  • Linux上でプログラムを動かすことのメリットとデメリット
  • 全てを手放して速度を得る - ベアメタル開発

このトークを聞いた方が「CPUを作るというのはどういうことか」をちょっぴり理解し、CPUやハードウェア自作が好きになることを願っています。そしてあわよくば一緒に自作CPUを楽しみましょう!

1
レギュラートーク(30分)

Raspberry PiでCPUを作ってMSXを動かす

tomzoh 長谷川智希

ここ数年、Raspberry PiでCPUを作っています。
これは、CPUをコンピュータから取り外して代わりに自作CPUを取り付けて動かすというもので、オリジナルのCPUの名前のZ80にちなんでPiZ80と呼んでいます。

PiZ80はZ80採用のパソコン・MSXをあわよくば高速に動かすことを目標にしています。
現在のPiZ80はMSXと同じZ80採用のシングルボードコンピュータ・SBCZ80でZ80よりも高速に動作する様になっていますが、ここに至るまでにはさまざまな改善がありました。

このトークではCPUを作るというのはどういうことか、CPUを作る時にどこに速度的な課題があるのか、そしてMSXでPiZ80を動かすまでの道のりをお話します。

このトークを聞いた方がCPUやハードウェア自作が好きになり、そしてあわよくばPiZ80のソフトウェアをいっしょに改善していけることを願っています!

1
レギュラートーク(30分)

PHP を魔改造して言語処理系を学ぶ

nsfisis nsfisis

プログラミング言語の処理系は複雑な処理を行っているように見えますが、個別に分解してみれば一つ一つの処理はそれほど難しくありません。
PHP 処理系のソースコードを魔改造して PHP 言語に独自の拡張を施すことで、日ごろ使っている PHP やその他の言語処理系が、内部的にどのような処理を行っているのかを追いかけてみましょう。

話すこと

  • PHP のソースコードを改造し、関数の合成を行う独自の演算子を追加する
    • 注: 何らかの事情で、具体的な拡張の方向性は変わる可能性があります
  • 言語処理系がどのような処理を行っているのか、はじめからおわりまで一通りさらう

目的としないこと

  • PHP に実用的な拡張をおこなうこと
3
LT(5分)
U25(登壇時に25歳以下)

PHPで始めるお絵描き入門

uutan1108 うーたん

このトークでは、画像処理やお絵描きをPHPでする方法を紹介します!

GDライブラリを用いることで、画像処理やお絵描きをPHPでも簡単にできます。WordPressでもアイキャッチ(OG画像)の生成はGDライブラリを用いて行っています。

ブログのアイキャッチのように文字を画像に重ねるだけではなく、図形なども用いて簡単なイラストを描くことも簡単にできます。

このトークで、実際に作ったイラストを紹介しつつ、どのようにGDライブラリを用いてイラストを生成しているのかもソースコードも合わせて紹介します。

2
レギュラートーク(15分)

DDDのアーキテクチャ選定比較

kanbo0605 カンボ@沖縄

DDDといっても、複数のアーキテクチャ(クリーンアーキテクチャ、オニオンアーキテクチャ、ヘキサゴナルアーキテクチャなど)があると思います。この中でどのアーキテクチャを選定するかって悩みませんか?
そんな方向けに各アーキテクチャの比較をした話をします!

話すこと

  • プロジェクトの検討観点(開発規模、開発メンバーの体制、外部システムとの連携など)
  • 各アーキテクチャの比較(クリーンアーキテクチャ、オニオンアーキテクチャ、ヘキサゴナルアーキテクチャなど)
  • 各アーキテクチャごとの向いているプロジェクトは?
2
LT(5分)

DDDのアーキテクチャ選定比較

kanbo0605 カンボ@沖縄

DDDといっても、複数のアーキテクチャ(クリーンアーキテクチャ、オニオンアーキテクチャ、ヘキサゴナルアーキテクチャなど)があると思います。この中でどのアーキテクチャを選定するかって悩みませんか?
そんな方向けに各アーキテクチャの比較をした話をします!

話すこと

  • プロジェクトの検討観点(開発規模、開発メンバーの体制、外部システムとの連携など)
  • 各アーキテクチャの比較(クリーンアーキテクチャ、オニオンアーキテクチャ、ヘキサゴナルアーキテクチャなど)
  • 各アーキテクチャごとの向いているプロジェクトは?
3
レギュラートーク(15分)

軽量DDDはアリなのか!?

kanbo0605 カンボ@沖縄

本格的にDDDを導入しようとすると、なかなかヘビーで実際、開発が始まると開発スピードが上がらないこともあると思います。
そんな方向けに軽量DDDという設計手法をお伝えします!

そもそも軽量DDDとは?

  • DDDのValueOvject、Entity、Repositoryなどを部分的にお作法のみを取れ入れ、DDDを行うというアンチパターンとして語られているものです。
  • もしくは、コアドメイン、サブドメイン、境界付けられたコンテキスト、ユビキタス言語などを意識していないもの。

話す内容

  • 軽量DDDとは?
  • 軽量DDDが向いているプロジェクト、向いていないプロジェクト
  • 実際の導入した場合の構成などの説明
2
レギュラートーク(30分)

Fiber の中身を理解する

nsfisis nsfisis

Fiber は、PHP 8.1 から導入された stackful な coroutine です。
ここで一度、Fiber の実装を PHP の処理系レベルまで追いかけることで、Fiber が何であるか、そして、裏で何をしているのかを理解することにしましょう。

主な対象

  • 非同期処理の内部実装に興味があるかた
  • 言語処理系の内部実装に興味があるかた

話すこと

  • PHP における「Fiber」とは何か
  • PHP の VM (virtual machine) のおおまかな構造
  • Fiber を実行・停止・再開・中断したとき、PHP VM に何が起こるか

話さないこと

  • Fiber を裏で利用するライブラリやフレームワーク
  • Fiber の使い方
4
レギュラートーク(15分)

LaravelでDDDをやるなら、どんなディレクトリ構成が良い?

kanbo0605 カンボ@沖縄

皆さんLaravelでDDDやりたいと思ったことありませんか!?
このトークではこれから、DDDを始めたい人向けに導入方法やディレクトリ構成についてお話します。

□話す内容

  • DDDでどのアーキテクチャを選定するべきか?選定基準は?
  • LaravelでのDDDの導入ステップは?
  • Laravelに導入する場合はどのようなディレクトリ構成が良いか?
3
採択
レギュラートーク(30分)

PHP 処理系の garbage collection を理解する 〜メモリはいつ解放されるのか〜

nsfisis nsfisis

Garbage collection (GC) とは、確保したメモリ領域を適切なタイミングで解放する仕組みのことです。
メモリが比較的潤沢になった今でも、メモリ溢れによるサーバ障害は決して珍しくありません。
PHP における GC を理解し、メモリを意識したプログラミングをすることで、本番サーバを夜中に落とさないようにしましょう。

主な対象

  • 普段メモリを意識してプログラミングしていないかた
  • 言語処理系の内部実装に興味があるかた
  • メモリ溢れで本番環境をダウンさせたことのあるかた

話すこと

  • PHP における GC のアルゴリズム
  • 確保したメモリはいつ解放されるのか
  • メモリ溢れを起こさないプログラミング

話さないこと

  • GC のパラメータをいじってチューニングする
2
レギュラートーク(15分)

PHPStan七転八倒

tadsan うさみけんた

みなさんPHPStanを使っていますか? PHPStanはオープンソースで開発されているので誰でもソースコードを読んで仕組みを学ぶことができ、理に適った提案であれば取り入れてもらうこともできます。

ところが静的解析ツールはPHPや標準関数の仕様通りに実装すれば完成すればるというわけでなく、さまざまな考慮事項や現実との折り合い付けかたなどがあります。

本トークでは私がこれまでPHPStanに送信したPull Request(※トークプロポーザル時点で未マージ含め49件)について分類して紹介します。

  • 取り入れられた提案
  • マージされたPR
  • マージされなかった
  • マージされたが後にrevertされた提案
  • 投げ出してしまって完成していないPR
3
レギュラートーク(30分)
東海勢(出身or在住)

障害予防のために開発プロセスを改善したお話

AkitoTsukahara AkitoTsukahara

背景
あるプロジェクトでたくさんの障害を発生させてしまった。。。
障害はユーザーに迷惑をかけてしまうし、エンジニアのメンタルが削られるし、進行中のスケジュールを圧迫する。全然いいことがない。障害はこの世から無くなって欲しい。せめて減らしたい。。。
そんな思いから開発プロセスを見直す動きが社内で生まれました。

お話しすること
・そもそも障害と何なのか?障害と向き合う
・適度な障害予防コストのバランス
・プロセス確立までの道のり
・実際のプロセスや工夫を紹介

障害を少しでも減らしたい、自分のチームに見合ったプロセスをカスタマイズしたいと同じ悩みを抱えているPHPerの皆さんにお伝えできれば幸いです!

採択
LT(5分)

RemoveだらけのPHPUnit 12に備えよう

2025/02/07にPHPUnit 12がリリースされます。
PHPUnit 12で削除されるメソッドやオプション、Attributeなどの機能はなーんと25以上!

そんな削除予定の機能について、どう変更 / 対応したらよいかとセットで時間いっぱいかけて高速解説します!

5
レギュラートーク(15分)
東海勢(出身or在住)

さいきんの MySQL との付き合い方 〜 MySQL 8.0 より後の世界へようこそ 〜

hmatsu47 hmatsu47(まつ)

一時期「PHP とバージョン番号の変遷が似ている」と言われた MySQL。

つい最近バージョン 5.7 から 8.0 へのマイグレーションが済んだばかりの方も多そうな気がしますが、バージョン 8.0.34 / 8.1.0 からリリースモデルが変更になり、LTS として 8.4 系が、イノベーションリリースとして 9.x 系が登場するなど、すでに「8.0 より後の世界」に進んでいます。

このセッションでは、 普段 MySQL の動向について追いかけていない方々に向けて、以下のような内容をお伝えします。

  • リリースモデル変更ざっくりおさらい
  • 8.0 以降のバージョンへのマイグレーション
  • 周辺ツールの変化
  • たまには思い出してあげてほしい HeatWave
  • 【おまけ】 phpMyAdmin の Issues から眺める MySQL の変更点
2