レギュラートーク 30分

真にアジャイルな開発チームになるために 〜現場の実例を元に〜

Panda_Program プログラミングをするパンダ

■ 発表内容
チーム開発に効果的なアジャイルのプラクティスとその実践例を紹介します。

■ 背景
「ゴールデンウィーク明けまでにお願い」と社内向けの機能開発を任されたとあるチーム。
チームは4月頭に組成されたばかりであり、この機能はビジネスの成長ドライバーになることを期待されている。
期間は根拠はない1ヶ月。

チームメンバーはプロダクトオーナー1名、エンジニアマネージャー1名、エンジニア6名。
不確実性に対処しつつ円滑にリリースを行うべく、アジャイルのプラクティスを実践して開発に立ち向かっている(プロポーザル執筆時点でまだ未リリース)。

確かに当初の予定よりは遅れている。しかし、チームの誰一人として疲弊していない上に偉い人からも「安心感がある」と好評価だ。
何がうまくいっているのか。3ヶ月間におけるチームの変遷を総括しつつ、開発を支えるアジャイルのプラクティスとその実践例を紹介します。

8
採択
LT 5分

Laravel FormRequest にアクセサ機能を追加して、リクエストクラスをスッキリさせた

seec_nagama ながまかずま

「この仕様書通りにAPI作成をお願いいたします!」
クライアント様から頂いた仕様書、そこに記述されていたのは……

・数値なのに文字列型パラメータ
・カンマ区切りのジェイウォークなパラメータ
・mail_1, mail_2, mail_3 というマルチカラムアトリビュートなパラメータ
・"True", "False" という文字列型フラグパラメータ
・備考に「拡張用」と記述されている、現状無意味なパラメータ

本LTでは、そんなアンチパターンなリクエストパラメータの整形をサービスクラスではなく
Request クラスにアクセサ機能を追加するパッケージを作って整形したお話をします。

採択
レギュラートーク 30分

GitHub Codespace で始めるリモート開発

tsuzukit2 都筑友昭

リモート化や、フリーランス、副業という新しい働き方が一般的になるにつれて、開発環境に要求される内容も変化してきていると思います

例えば PC のスペックや OS を選ばずに開発環境が構築出来る事や、リモートでも気軽に開発中の内容をチームにシェアして議論が出来る、といったような事があたりまえな要求になってきているのではないでしょうか

こういった課題を解決する一つの方法として弊社の Laravel の開発環境を例に GitHub の Codespace のセットアップや利用事例を解説します

3
レギュラートーク 30分

PHP だけで SMTP サーバーを自作してみる

m3m0r7 めもり〜

Laravel sail を使っている方なら、一回は目にしたことがある Mailhog。他にも MailCatcher といったローカルでメール送信のテストをすることがあるのではないかと思います。
実際にこういった SMTP サーバーの役割を果たすものは使ったことがあるものの、どういう仕組みでメールのやり取りがなされているのか
興味がある方もいらっしゃるかと思います。
そこで、本トークでは SMTP サーバーとしてのプロトコルの解説から、PHP だけで SMTP サーバーを作るにはどうしたらよいのか、テクニックも含めて解説します。

3
レギュラートーク 30分

エンジニア 1 人から、20 人規模の組織になるまでの PHP コードの変化と Developer Experience の変化

m3m0r7 めもり〜

ほぼエンジニアがいない状態からある程度の人数までスケールした組織で、コードの変化や Developer Experience がどのように
変化したのか、時系列で語られることはそうそう多くないです。採用から始まり、プロダクトを作っていく過程で、避けて通れないのが組織の成長です。
少ない人数では上手く機能していたのに、エンジニアが増えた途端、組織が機能しなくなったという話もよく耳にします。
そこで本トークでは、組織規模が大きくなるにつれて、実践した Developer Experience への取り組み、取り組んだ結果、どのように PHP で書かれたプロダクトに影響が及ぼされたのか、ノンフィクションでお話します。

4
レギュラートーク 30分

PHP メモリ管理術

m3m0r7 めもり〜

何度も遭遇する PHP の「Allowed memory size of ...」。しかし、結局解決方法がわからず、最後には「ini_set('memory_limit', -1)」でその場を凌ぐという苦い経験をした方も多いのではないでしょうか。
PHP ではガベージコレクションもそれなりに発達しており、メモリを気にしないで書けるから良いと思っている人も少なからずいらっしゃると思います。
しかし、裏を返すと、メモリについてあまり考える機会がないとも言えます。PHP8 から弱参照といった機能も入り、メモリ管理に少しずつ関心が寄せられてきているのではないかなと思います。
そこで本トークでは、PHP でどのようにすれば省エネにメモリを使えるか、書き方のヒントまで含めてお話できればと思います。

2
採択
レギュラートーク 30分

PHP で NFC リーダーを実装する

m3m0r7 めもり〜

Suica や PASMO をデバイスにタッチして値を取得する、そんな夢を PHP で叶えたいと思っていた PHPer も多いかと思います。
PHP7.4 から PHP FFI と呼ばれるものが導入され、その夢も今まで以上に叶えやすくなりました。Suica や PASMO は FeliCa と呼ばれる NFC の規格の 1 つです。実装方法は多岐に渡りますが、概ね libnfc と呼ばれるライブラリや libusb を使う方法などがあります。しかし、今までの PHP ではこのライブラリを呼び出すことさえ叶いませんでした。そこで、本セッションでは PHP7.4 から導入された PHP FFI を用いてどのように PHP で NFC リーダーを実装するのか、そして実際のデモを交えてトークできればと思います。

2
レギュラートーク 30分

Fibers vs Swoole

m3m0r7 めもり〜

PHP 8.1 から Fibers が導入されました。それ以前の非同期処理といえば、Swoole などが筆頭になっていました。
非同期処理ライブラリが PHP にビルトインされるのは PHP に革命をもたらしたと言っても過言ではありません。
しかし、Fibers ではできないこと、Swoole でできることなど、実際には分かれています。
そこで、Fibers と Swoole の違いはなにか、それぞれの使い方を広く浅く本トークで解説します。

1
レギュラートーク 30分

PHP FFI 入門

m3m0r7 めもり〜

PHP に FFI が導入されてから、どういう用途で使えばよいか悩んでいる PHPer も多いかと思います。
PHP FFI を介したモジュールの呼び出し方から、自作 の C/C++ のモジュールの作成から呼び出し方、
そして libusb と呼ばれるモジュールで USB で接続された機器の一覧を取得する方法など、どのように FFI を活用していけばよいのかを本トークで解説します。

1
レギュラートーク 30分

Laravel のキュー処理を 4 倍早くするテクニック

m3m0r7 めもり〜

重たい処理をキューに任せることで、早めにレスポンスを返すことが可能です。しかし、Laravel 標準のキューサーバーの処理速度にはある一定の限界があります。
弊社では、1 回あたり数十秒かかるような処理をキューに任せているのですが、キューが積まれすぎて処理しきれず破棄されるといった事象が起こっていました。
Laravel には Laravel Horizon と呼ばれる並行並列でキューを処理ができるライブラリがあるのですが Redis のみのサポートで、弊社では Amazon SQS を使用しているため、導入には至りませんでした。そこで、Amazon SQS 向けに Laravel のキューサーバーを自前で実装し直し、処理速度を 4 倍に向上させました。どのように処理速度を高めるのか、そのテクニックのご紹介と実際のプロダクションへの投入、得られたパフォーマンスなどを本トークでお話します。

2
採択
LT 5分

誰でも簡単に始められるBDD(ビーチ駆動開発)のススメ

kanbo0605 カンボ@沖縄

私の会社では、沖縄で半年に一回、開発合宿を主催しており、その中で海辺で開発をした話をします。
実際、海辺でビーチ駆動開発をしてどうだったか?開発は捗るのか?支障はないのか?注意点などを話させて頂きます。

3
LT 5分

Laravelで始めるUuidTraitの使い方

kanbo0605 カンボ@沖縄

データベースのテーブル定義をしてて、こんな事ってないですか?
・まだ始めたばかりのサービスでユーザ数を知られたくない。
・ユーザIDが連番になっていて、ハックされそうで怖い。

このようにユーザIDを公開したくない場合に、推測されにくいIDがuuidです。
UuidTraitを作って、Modelクラスでuseするだけでuuidの生成ができます。
このセッションでは、UuidTraitの作成から使い方までを説明します。

2
レギュラートーク 10分

LaravelのEloquentモデルイベントってどんな時に使うの?

kanbo0605 カンボ@沖縄

LaravelのEloquentモデルイベントって何?という人も多いかもしれません。私も知ったのは去年くらいで、それまでは知りませんでした。

このモデルイベントは、モデルでcreate、save、delete,、updateなどの操作をした際のイベントを指しています。そして、これらのイベントを実行する際、合わせてなんらかの処理を行わせたい場合に使用します。
例えば、モデルのデータを新規作成する際にはdateカラムに現在の日付を初期値として入れたい時などに使用します。

他にも実際にどのようなケースでモデルイベントを使用するケースがあるのか、モデルイベントの注意点などを話していきます。

レギュラートーク 10分

symfony/pantherでWordleを解いてみた

ttskch たつきち

symfony/pantherはブラウザテストやWebスクレイピングを行うためのライブラリです。
Symfonyに限らずあらゆるPHPプロジェクトに統合して利用することができます。

ところで、少し前にWordleというゲームが大流行しました。
WordleはWebベースのゲームなので、ヘッドレスブラウザを使えばプログラムで機械的に解くことが可能です。

というわけで、今回はsymfony/pantherを使ってWordleを解くプログラムを実際に作ってみます。
このトークでは、その実装内容の説明を通して、symfony/pantherの基本的な使い方をご紹介できればと思います。

採択
レギュラートーク 30分

symfony/pantherでWordleを解いてみた

ttskch たつきち

symfony/pantherはブラウザテストやWebスクレイピングを行うためのライブラリです。
Symfonyに限らずあらゆるPHPプロジェクトに統合して利用することができます。

ところで、少し前にWordleというゲームが大流行しました。
WordleはWebベースのゲームなので、ヘッドレスブラウザを使えばプログラムで機械的に解くことが可能です。

というわけで、今回はsymfony/pantherを使ってWordleを解くプログラムを実際に作ってみます。
このトークでは、その実装内容を説明しつつ、symfony/pantherの基本的な使い方もご紹介できればと思います。

1
レギュラートーク 10分

API Platform超入門

ttskch たつきち

API Platformは、Symfony + DoctrineをベースとするPHP製のオープンソースAPIフレームワークです。
Symfonyアプリケーションにアトリビュート(アノテーション)を1行追加するだけで一瞬でREST APIを生成できてしまう優れもので、Symfonyのエコシステムにおいてはすでに決定版と言える存在となっています。

このトークでは、実際に動作するデモをお見せしながら、API Platformの概要をご紹介できればと思います。

2
レギュラートーク 30分

API Platform入門

ttskch たつきち

API Platformは、Symfony + DoctrineをベースとするPHP製のオープンソースAPIフレームワークです。
Symfonyアプリケーションにアトリビュート(アノテーション)を1行追加するだけで一瞬でREST APIを生成できてしまう優れもので、Symfonyのエコシステムにおいてはすでに決定版と言える存在となっています。

このトークでは、API Platformの導入方法から、Data Provider・カスタムコントローラ・Data Persisterといった重要な基本機能の概要までを、実際に動作するデモをお見せしながら一通りご紹介できればと思います。
皆さんにAPI Platformの概要を知っていただき、少しでも興味を持っていただければ幸いです!

6
採択
レギュラートーク 10分

カンファレンススピーカー入門〜登壇するぞ!って決めてからトークするまで〜

みなさんはカンファレンスで登壇したことがありますか?
カンファレンスで登壇をしているスピーカーは、様々な過程を経てみなさんの前でトークをしています。例えば採択前ならネタ決めやプロポーザル、採択後ならスライド作成・トーク練習などの準備・・・
このトークするまでの過程は、人によって違うところもあり暗黙知であることが多いように思えます。

そこで今回は、過去に私がPHP系カンファレンスにて登壇した内容を例にしつつ、自分がカンファレンスで登壇するまでに準備していることを話します。
まだ登壇したことがない方はもちろん、登壇したことがある人も良いところを取り入れられるきっかけになれば幸いです!

具体例を交えつつ、以下のことについて触れる予定です!
・プロポーザルを出す時にどんなことを考えているのか?
・トークするまでの準備はどういうことをしてるのか?

6
採択
レギュラートーク 30分

実践PHPStan

tadsan うさみけんた

近年、PHPプロジェクトの品質を高めるためのツールとしてPsalmやPHPStanのような静的解析が開発現場にも取り入れられています。
このトークでは静的解析ツールの中でもPHPStanの型と機能にフォーカスして、PhpStormと共存しながら、詳細な型を付けるための手法について具体的な事例と改善例を挙げて紹介します。

  • 外部との入出力の型付け
  • 配列との付き合い方
  • 曖昧な型を狭める方法
  • 古いPHPとの互換性
3