レギュラートーク(20分)

PHPer がスクラムマスターに任命されたら 〜ピンチは突然訪れる〜

hamakou108 濱田晃輔

先行きの不透明な開発プロジェクト。
鳴り止まない障害アラート。
挙句の果てに、リリースした機能がユーザーにあまり使われていない!
そんな課題を解決すべく、ごく普通の PHPer がある日突然スクラムマスターに任命されて...!?

エンジニアがスクラムマスターに任命される。
まれによくあるイベントです。

このセッションでは、

  • スクラムとは何か
  • 冒頭で挙げた課題に対して、スクラムではどのように立ち向かうのか
  • エンジニアとしてどのような能力をスクラムマスターに活かせるか
  • 逆に注意すべきポイントは何か

といった内容を、 PHPer からスクラムマスターに転身した自分の体験を踏まえて紹介します。

7
レギュラートーク(20分)

ユースケースから考えるデータベースのテーブル設計入門

ikkitang ikkitang

昨今、RDBMSを用いてサービスを作ることは非常に多くあると思います。

堅牢なテーブル設計を行っておく事は非常に重要で、バグが生まれづらくなったり仕様変更にも強いなど得られる恩恵は多いです。
逆に複数の関心事が集まったテーブル設計を行ってしまった結果、データを取得する為のSQLがややこしくなったり、仕様変更に弱くなる事も多くあります。アプリケーションと比べてデータベースは寿命が長く、その頃にはリファクタリングすら着手する事が難しいという事も多いですよね。

本セッションでは、データモデリングを学んでいなくても致命的な問題が起こりづらいテーブル設計手法について大規模WebサービスのDBリファクタリングをやった経験を踏まえて紹介させて頂きたいと思います。

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

Symfonyの好きなところ

ippey_s 角田 一平

なんか純粋にSymfonyの好きなところをお話ししたいなーって思いました。

PHPのフレームワークはたくさんありますが、その中でもぼくはSymfonyが好きです。
Symfonyの好きなところを20分かけてお話しします。
みなさんにSymfonyって面白そうだなー、さわってみようかなーって思ってもらえるようがんばります。

5
レギュラートーク(20分)

一人のPHPerからプロジェクトマネージャーになる道筋

yamotuki yamotuki

プロジェクトマネージャー、なりたいですか?

いわゆる「PM」は「プロダクトマネージャー」と「プロジェクトマネージャー」の二つを内包することが多いですが、ここでは後者の「プロジェクト」をマネージする(なんとかする)人についてです。
前者の「プロダクトマネージャー」はPdMなどとも呼ばれ非エンジニアがなることも多いですが、プロジェクトマネージャー(以下PM)はエンジニアが担当することも多いのではないでしょうか。

プロジェクトには数日で終わるものも、数ヶ月かかるものもあるかと思います。最初は単に小さなタスクをこなしていたエンジニアがどうやったらPM(=プロジェクトを"なんとかできる"人)になれる能力がつくのでしょうか?

本セッションではPMの仕事内容と、それに対応するスキルセットの身につけ方についてお話しします。

【注】会社によりPMの職務範囲は変わるので、私の観測範囲内でのお話です

8
レギュラートーク(20分)

【しくじり先生】Laravelでアーキテクチャを決めずに開発を進めちまいました・・・。

suguru_ohki スーさん

Laravelでアーキテクチャをしっかりと決めずに開発を進めてしまった結果について話します。

  • どの程度ルールを決めていたのか
  • どの程度アーキテクチャをゆるふわしていたのか

と開発の変遷をお話しすることでだんだん 「疎結合で変更に強いアプリケーション開発」から離れる開発になっていくフローがどのようになるのかがわかるように話そうと思います。また、その結果支払うことになったコストがどれくらいなのかをまとめて話します。

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

Fibers vs Swoole

m3m0r7 めもり〜

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

16
レギュラートーク(20分)

PHP FFI 入門

m3m0r7 めもり〜

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

3
レギュラートーク(20分)

PHPでB+木を作成してデータベースの気持ちを理解する

hanhan1978 富所 亮

B+木というデータ構造をご存知でしょうか?RDBMSでよく採用されているデータ構造で、ディスクの効率的な利用や、検索を行いやすいなどの特徴があります。しかし、耳学問で聞いてみてもイマイチ特徴がピンと来ないのです。

本トークでは、PHPでB+木のデータ構造を実装して、RDBMSでB+木が採用される理由、インデックスの構造的な仕組み、何故検索が速くなるのか?などなど、データベースの仕組みの根幹を覗いてみましょう。

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

  • B+木の特徴
  • B+木は何故ディスクの利用効率が高いのか
  • インデックスとは何か
  • なぜ、データベースはB+木を採用しているのか
16
レギュラートーク(20分)

Laravelのデータベースクエリを最適化するためのヒント

AkitoTsukahara AkitoTsukahara

みなさんはデータベースクエリのパフォーマンスを意識して実装されていますでしょうか?
実装した当初は軽快に動いていたアプリケーションもサービスの成長とともに少しずつ遅くなっているかもしれません。あるタイミングで最適化プロジェクトを発足させたり、日々のコードレビューで指摘し合う際に役立つヒントをお届けできればと考えています。

このトークではデータベースクエリ最適化のヒントをサンプルコードを交えて解説いたします!

こんな方におすすめ

  • 業務でLaravelを利用されている方
  • サービスが成長してきたので、クエリの最適化をしたい人
  • 日頃からパフォーマンスを意識した実装をしたい人
6
レギュラートーク(20分)

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

kanbo0605 カンボ@沖縄

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

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

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

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

Laravelリファクタリング大全

kanbo0605 カンボ@沖縄

途中から入ったLaravelでの開発プロジェクトで様々なコードのリファクタリングを提案していった話をします。
例えば、外部サービスを使っているロジックはServiceクラスに切り離し、ビジネスロジックはModelに切り離しました。
その他には、データベースtransaction処理の可読性向上。返却するステータスコードの整理。定数などになり得る箇所はEnumに移動。
ルートモデルバインディングの活用など。
このように様々なケースでのリファクタリングの例をお話します。

3
レギュラートーク(20分)

Laravel初級者から中級者になろう!

KentarouTakeda 武田 憲太郎

「完全に理解した」から「なにもわからない」へのステップアップ目指します。
https://bit.ly/3JldwsX

Laravelは初学者の敷居がとてつもなく低いフレームワークです。豊富なスターターキットや書き方の自由度の高さ故、小規模のアプリケーションなら未経験からものの数時間で作れてしまうことでしょう。

一方、いざ案件で本格的に使おうとした途端に戸惑う方も多いように感じます。PHP熟練者の方でもフレームワークのベストプラクティスが解らないまま「愚直なphp」でつい苦労してしまうことが多いのではないでしょうか。

これら解決方法はLaravelの公式ドキュメントには紹介されていません。
(最初のとっつきやすさに大きく比重を置いて書かれているためです!)

「完全に理解した」後、Laravelの持つ豊富な機能を深く知るにはどのような手順を経ていくのか、それをご紹介していきます。

9
レギュラートーク(20分)

はじめてのテスト,はじめての依存性注入

jdkfx はる茶

はじめてPHPUnitを使ってみたいという方,依存性注入という言葉を初めて聞いた・どこかで聞いたことがあるという方に対して,初心者が初心者なりに頑張ってテストを書いてみたり,依存性注入について理解してみようと試行錯誤してみた過程とその中で思ったこと,学んだことについて語りたいと思います.
私はまだ学生という身分ではございますので,職場で使える小技などといった内容にはなり得ませんが,初めてPHPを使ってみた方がテストを書くためのPHPUnitというツール,そして依存性注入というものについて知ってほしいという気持ちで発表を行いたいと思います.

13
レギュラートーク(20分)

Laravelで挑戦する、Package By Feature!業務関心を切り分けて安全にメンテナンスできるアプリケーション開発の道!

tyamahori tyamahori

皆さんはどのようなスタイルでLaravelアプリケーションを開発されておりますでしょうか?今回はディレクトリを業務関心に応じて区切り、その中にクラスを配置して開発していくスタイルをお伝えしていきます。これを行うことで、疎結合で変更に強いアプリケーション開発がしやすくなります。フレームワークに対しても疎結合な実装を目指していくことで、Laravelのバージョンアップにも追従しやすくなるかと思います。

10
レギュラートーク(20分)

解明!password_hash関数で生成される文字列の正体

hiro_y 山岡広幸

PHPではPassword Hashing関数を用いて簡単・安全にパスワードのハッシュ化と検証を行うことができます。password_hash関数でパスワードハッシュを生成、データベースに保存して、入力されたパスワードをpassword_verify関数で検証すればよいわけです。普段何気なく利用しているこのパスワードハッシュの仕組みですが、その文字列は定められたフォーマットに沿って作られていることはご存知でしょうか。どのようなフォーマットなのか、bcryptとModular Crypt Formatについて触れながら解説します。

11
レギュラートーク(20分)

[Github Dependabot] 「自動作成されたPRだけで脆弱性対策バッチリ」なんて思っていないですよね?

yamotuki yamotuki

みなさん、脆弱性対策してますか?

コードに潜む脆弱性対応は以下の二つに分類できるかと思います。

  1. 自分たちで書いたコードの脆弱性
  2. 依存ライブラリ・フレームワークの脆弱性

このうち後者では、Github を使っているならば Dependabot 機能による脆弱性検知が使えます。
Dependabot security updates 機能を有効にしておくと、勝手にPRを出してくれますよね。
便利です。これの内容チェックしてマージするだけ。
めでたしめでたし。

・・・とならないので注意です。
実は、検知していても自動PRになっていない脆弱性があります。
「PRになるのはcriticalレベルのもの。多分そうだろう。」などと勘違いしておりました。
危ない危ない。

本セッションでは Dependabot の説明、注意点、運用方法のケーススタディをお届けします。

9
レギュラートーク(20分)

PHPerとテストと三大美徳

wakabadou 若葉 章

「ユニットテストなんてメンディーよなー」「疎通動確の方が速いよなー」
そんな方へお届けする「気張らないでやれる」「"プログラマにとって"有用・有益なユニットテスト」についてのお話です。

また、次の症状にお悩みの方にも有効です。
・ユニットテストはやってみたいけどPHPUnitの導入で挫折した
・PHPUnitほど高度ではなくて良いので、もうちょっと気軽にユニットテストしたい
・バージョンアップのたびに動かなくなるテストスィートってどうなの

8
レギュラートーク(20分)

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

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

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

具体的には以下のことについて触れる予定です!
・プロポーザルを出す時にどんなことを考えているのか?
・トークするまでの準備はどういうことをしてるのか?
・過去に採択されたことのあるトークを例に具体例を紹介

6
レギュラートーク(20分)

PHPで初めての自動テスト

namizatork 並里

自動テストに興味はあるけど、何から手を付ければいいのかわからない、
またなぜテストが必要なのかわからないといった初学者向けの内容を想定しています。

自動テストとは何か、なぜ必要なのか、テストのしやすいコードとは何かについて発表します。

8
レギュラートーク(20分)

Nuxt.jsとCodeIgniterで大規模サイトのリニューアル

bossatama bossatama

生活110番(1,000万PV/月間)
https://www.seikatsu110.jp/
のリニューアルを
フロントをNuxt.js
バックエンドをCodeIgniterで行いました。
サーバーはAWSです。
苦労話とPHP、AWSを中心にお話します。

2