LT(5分)

DDD関連本、全部読んでみた

hanhan1978 富所 亮

DDD(ドメイン駆動設計)に興味があるけど、どの本から読めばいいか迷ったことはありませんか?

数多くのDDD関連書籍をすべて読むのは大変ですが、安心してください!とりあえず、手に入る本は全部読んで見ました!
本トークでは、どんな人がどのDDD関連本を読めばいいのか、独断と偏見で発表します!

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

いくつ知ってますか?ビルトインのイテレータたち

fuwasegu ふわせぐ

PHP では、\Traversable を起点に数多くのイテレータクラスが存在します。

極論を言えば、どんな反復可能な処理でも配列を使えば実現できますが、イテレータクラスを適切に活用することで、保守性を高めたり、パフォーマンスを向上させることができます。

本セッションでは、 SPL を含めた PHP がビルトインで提供する様々なイテレータクラスについて、その活用法と合わせて紹介します。

1
レギュラートーク(15分)
初登壇(これまでカンファレンスで登壇経験なし)

AWSコスト削減戦略 -コストを削ってツールを導入しましょう-

何かしらのツールを入れたいが、予算がない・・・
なら、コストを削って予算を作ってみませんか?

本講演では、AWSを活用したシステム運用において、
使用頻度が高いサービスのコストを削減するためのテクニックを紹介します。

手軽にコストをカットする方法をはじめとして、
時間の許す限り、注意点も交えながら、以下のような内容を説明します。

主要サービスの特性理解と最適化: EC2、RDS、S3、Lambdaなど、よく使われるサービスでのコスト削減方法
・インスタンスの選択: リザーブド活用によるコスト最小化など
・ストレージコストの管理: S3でライフサイクルポリシーによる不要データの自動アーカイブ
・サーバーレスアーキテクチャの活用: LambdaでPHP

4
レギュラートーク ルーキー枠(10分)
初登壇(これまでカンファレンスで登壇経験なし)

サーバー1台で実現するシンプルなSPA構成

フロントエンドとバックエンドのリポジトリが分かれているという状況があり
いざ、サーバーを建てるときに2台必要なんだっけ?と疑問を抱いた事はありませんか?

既にサーバーが2台たっているが、MPAでは1台で済んでいたのでどうにかしたいといったケースもあると思います。
特に、テスト環境ではそこまでリソースが必要なく、コストも削りたいところですよね。
しかし、インフラに明るいものがいないため手がついていないという事もあるかと思います。

本講演では、フロントエンドとバックエンドのSPA(シングルページアプリケーション)を1台のサーバーで構築する方法を解説します。

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

レイヤ化アーキテクチャは何のため?改めて考えるレイヤ化のメリット

strtyuu 吉田あひる

レイヤードアーキテクチャをはじめ、オニオンアーキテクチャ、ヘキサゴナルアーキテクチャ、いわゆるクリーンアーキテクチャ、他には独立したコアレイヤーパターンやADOPなど様々なレイヤ化アーキテクチャが存在していることからわかるように、レイヤを元にアプリケーションを構造化することはとても良いアイデアです。

しかし一方でレイヤを増やしたもののあまりメリットを享受できない場面も存在します。

このセッションでは

  • なんのためにレイヤ化をするのか
  • どういった観点でレイヤが作られるのか
  • レイヤ化することによってアプリケーションの複雑性がどのように管理しやすくなるのか

といったことを考えてみたいと思います

3
レギュラートーク(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
レギュラートーク(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
レギュラートーク(15分)

PHPStan七転八倒

tadsan うさみけんた

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

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

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

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

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

AkitoTsukahara AkitoTsukahara

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

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

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

1