PHPerKaigi 2021 プロポーザル一覧

他イベントOK レギュラートーク(20分)

PHP8版!Swooleのフレームワークを比べてみた

goodoo 株式会社サイバーエージェント 白井 英 goodoo

PHPerKaigi2019でお話しした内容(https://fortee.jp/phperkaigi-2019/proposal/61b5c154-7b53-4d78-820a-cf328f6d3360)を
PHP8の環境で、再度検証してみた話をお伝えします
さらに、Swooleを用いたフレームワークでもっともGitHubの更新頻度が高い
Hyperfを加えて、4種類のフレームワークをくらべてみます
そもそも、PHP8のJITはどれだけSwooleに有利に働くのでしょうか?
PHP8の環境における、No.1 Swooleフレームワークはどれだ!

他イベントOK LT(5分)

はじめまして!Webアクセシビリティ - 実践編 -

shiori_pk 有木 詩織 shiori_pk

一昨年、昨年とWebアクセシビリティの前提や概念についてたくさんお話してきました。
そろそろじゃあどうやって実装するんだという意見を聞いたり聞かなかったり。

PHPerでも一度は言われたことがある(?)「簡単でいいのでお問い合わせフォームを作って欲しいのですが。」「ここマウスカーソルがあたったときに説明が出したいんですが。」「ここにタブを用意して切り替えられるようにしたいです。」
ときにはJavaScriptか…と思いながら実装をしているかと思いますが、きちんと伝えるべきユーザーに伝えられていますか?
これまでのトークから一歩踏み出して具体的なWebアクセシビリティを意識した実装についてお話したいと思います。

本トークでは下記についてお話をします。
・Webアクセシビリティを意識した実装とは
・WAI-ARIAを用いた実装事例紹介

他イベントOK レギュラートーク(20分)

PHPerでもわかる!実践Webアクセシビリティ

shiori_pk 有木 詩織 shiori_pk

一昨年、昨年とWebアクセシビリティの前提や概念についてたくさんお話してきました。
そろそろじゃあどうやって実装するんだという意見を聞いたり聞かなかったり。

PHPerでも一度は言われたことがある(?)「簡単でいいのでお問い合わせフォームを作って欲しいのですが。」「ここマウスカーソルがあたったときに説明が出したいんですが。」「ここにタブを用意して切り替えられるようにしたいです。」
ときにはJavaScriptか…と思いながら実装をしているかと思いますが、きちんと伝えるべきユーザーに伝えられていますか?
これまでのトークから一歩踏み出して具体的なWebアクセシビリティを意識した実装についてお話したいと思います。

本トークでは下記についてお話をします。
・今からでも遅くない!Webアクセシビリティ入門
・Webアクセシビリティを意識した実装とは
・WAI-ARIAについて
・WAI-ARIAを用いた実装事例紹介

LT(5分)

M1 MacでARM版のPHPかつSwooleの開発環境をつくる話

goodoo 株式会社サイバーエージェント 白井 英 goodoo

M1 Macって魅力的なPCですね
「でも開発環境としてつかうにはどうなんだろう」
と思っている方も多いと思います
M1 Macを用いて、ARM用の開発環境をつくるときにはまった話をしていきます
たとえば、
そもそも基本ライブラリを用意するところ(Homebrew)
PHP8のインストール(PHPBrewを選択)
Swooleの拡張のインストール(PHPBrewの拡張としてインストール)
のハマりポイントをおはなします

他イベントOK レギュラートーク(20分)

PHPerKaigiへの参加がきっかけで参加者100人超のPHPer向けイベントを運営するに至るまでの話

MasaKu_e 久山勝生 MasaKu_e

PHPに限らずエンジニアとして日々技術情報をインプットすることは重要です。
技術情報はただインプットするだけでなく議論を通して様々な角度から捉え直すことで、より深い知識を得ることができます。
そのような深い技術知識をインプットするために、弊社ではPHP関連の最新情報について語り合うイベント「PHPTechCafe」を毎月開催しています。
イベント運営には様々な試行錯誤がありましたが、PHPerKaigiをはじめとしたコミュニティの取り組みを参考に自社イベントを継続した結果、参加者100人以上、著名なPHPerにも参加して頂くなど、イベントの成長と拡大を実感できています。
私自身、イベント内で参加者同士の議論に参加できるように海外のニュース記事やホットな技術情報を積極的に収集していくうちにPHPエンジニアとしての成長も感じられるようになりました。
この発表では、自社イベントの運営スタッフを経験していくうちにイベントの成長とともに自分自身もPHPエンジニアとして成長を実感できた経験とその取り組み事例をお話します。

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

DNSを制するものはインターネットを制す! DNSの世界

cakephper 市川@cakephper cakephper

普段DNSについてあまり気にせずに使えるため空気のような存在になりつつありますが、
DNSの事件や仕組みを見ると、インターネットの根幹を支える技術の一つだとわかります。

ここでは次の3つからDNSを理解し、DNSが持つ力を感じてもらいたいと思います。
・DNSの仕組み
・ドメインハイジャック事件と対応策
・DNSとプライバシー

ドメインハイジャックは、実際の事件の紹介、仕組み、その対策としての改竄検知についてお話します。
プライバシーは、DNS Proxyサーバを作成して自宅で運用した(子供のYoutube時間をDNSで制限した)話から、DNSサーバから何が見えるのか、プライバシーはどうなるのか、そこからOblivious DNS over HTTPS(ODoH)とは何かをお話します。

30年以上前の仕組みが今もなお同じように動いていて、私たちのインターネットを支えています。
普段の開発では知らなくても動いているDNSですが、DNSキャッシュや権威サーバのツリー構成など知っておくとトラブルシューティングやサイト移転時に役立ったりします。

2
他イベントOK レギュラートーク(20分)

フロントエンドに Laravel と Nuxt.js が共存するシステムで A/B テスト基盤を構築する

hamakou108 Kosuke Hamada hamakou108

Nuxt.js は Vue.js をベースにした SPA や SSR が比較的簡単に実現できるフレームワークです。
Laravel の Blade のようなテンプレートシステムで構築していたフロントエンドを Nuxt.js のようなフレームワークに移行する際、あるページは Blade を、また別のページは Nuxt.js を使って構築するというように両者が共存する状況が起こりえます。

このような少し込み入ったアーキテクチャのシステムにおいて、 A/B テストの基盤を自前で構築する機会がありました。
Laravel と Nuxt.js の両方で同様に機能させるための設計、ユーザーの振り分けロジックの実装、 A/B テストの結果の集計方法といった知見をこのセッションで共有できればと思います。

3
他イベントOK LT(5分)

PHPで簡単コード生成!同じようなコードをたくさん書くならコード生成しチャイナ!

820zacky つざき 820zacky

「コード生成?なんか難しそう。人力で頑張ってコード書いチャオ!」
なんていうふうに思ったことはありますか?
単純なPHPコードであれば結構簡単に生成できるんです。

コードが少なくてシンプルであることに越したことはないですが、
開発する対象やPHPの制約のために似たようなコードをたくさん作らなくてはいけないケースがあると思います。
そういう時に役に立つのがコード生成です。
PHPの基本的な機能を使ってお手軽にコード生成する方法を紹介します。

4
他イベントOK LT(5分)

新社会人のコード品質カイゼン記録

zaregoto32 頓花貴俊 zaregoto32

チームで開発する際には、プログラムの整合性を担保ためや一定のコード品質を満たすためにコードレビューを行うことがほとんでです。
社会人になって、自分の作成したコードをきちんとチェックされるという経験をする新卒エンジニアも少なくないでしょう。
最初は粗だらけのコードでも、上司や先輩のコードレビューをもらい修正することで、一定水準を満たした状態でアプリケーションに取り込まれます。
しかし、上司や先輩のコードレビューの手間や作成したコードの手戻りの手間を考えるとどうでしょうか。
コードレビューを受けて多くの指摘をもらったときに最初の内はなぜ指摘が多かったのかや、
今後、どのようにコード品質改善していったらいいかわからないという人も多いのではないでしょうか?
そこでコード品質を改善するために、どのような種類の指摘が多かったのかを振り返り、
セルフチェックリストの作成したり、ペアプロをおこなったりすることで
その結果、コード品質を向上させるために必要な観点を得ることができました。

社会人1~2年目でコード品質を改善する中で行ったことや気づきたことを紹介し、
社会人になったばかりの人や新しく社会人になる人の助けにしたい思います。

2
他イベントOK レギュラートーク(40分)

明日から使えるLaravel Livewire

林 雅之

明日から使えるLaravel Livewire

VueやReactでしっかりしたフロントエンドを構築できていますか? もしいろいろな事情でまだできていなのであれば、Laravel Livewireが第三の選択肢になるかもしれません。

Livewireを使えば、サーバサイドのコードだけで、リアクティブなフロントエンドを実現できます。

このセッションでは、リアクティブプログラミングの概要から、具体的にLivewireで実現できる「便利さ」まで詳しくご紹介します。

2
他イベントOK レギュラートーク(20分)

Laravel のメール認証の内部実装を掘り下げる

hamakou108 Kosuke Hamada hamakou108

Web サービスに会員登録したユーザーの真正性を担保する方法の一つとして、登録したメールアドレスに認証用のメールを送信するというものがあります。
Laravel では User モデルでメール認証用のインターフェースを実装し、本人認証が必要なルートをミドルウェアで保護することで簡単にこの機能を実現できます。
しかしその反面、認証機能の具体的な仕組みはブラックボックスとなっており、少し複雑な要件が追加されると拡張が難しくなってきます。

このセッションでは Laravel のメール認証の機能を紹介するとともに、内部実装を掘り下げることでその仕組みを理解し、フレームワークの推奨する方法に囚われずにメール認証を実装する例を紹介します。

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

モックの泥沼から脱却するために、あえてDBにつないでテストしている話

kazuhei__ かずへい kazuhei__

皆さんテスト書いてますか?モックしてますか?
テストを書くときにDBや外部サービスをモックしていると思いますが、順番にデータベースへの書き込みを行っていくような手続き的な処理をテストするとなると、テストコードがモックの差し込みだらけになってしまい、とても見づらくなってしまいます。
また、モックの差し込みを書けば書くほど、これって本当にテストになっているのかと疑問になってきませんか?これを解決するために弊社では、あえてDBにつないでテストするということをしているので紹介します。

7
他イベントOK レギュラートーク(20分)

今こそ理解するDI(Dependency Injection)

rukiadia Sho Yamada rukiadia

あなたはDIというワードを耳にしたことがあるでしょうか?
直訳すると「依存性の注入」という言葉で言い表されるDIですが、この概念自体は新しいものではありません。

Javaにおける開発では一般的であり、PHPのフレームワークであるLaravelではサービスコンテナと呼称される仕組みが提供されていたりもします。
しかし、DIを雰囲気で使っている人もいるかもしれませんし、そもそも使った経験がない人もいるかもしれません。

・「知らないなんて、今更言えない。」
・「触ってみたけど、よく分からなかった。」
・「そもそも、依存を言葉で説明できないかも。」

このセッションでは、不安を抱えながらDIのことを見つめている方に向けた掘り下げをしていきたいと思います。
資料の構成は未定ですが、特定のフレームワークのみに絞った内容にはしないつもりです。

4
他イベントOK LT(5分)

ある日突然、Laravel Queue Workerが壊れた

kubotak_public Kenjiro Kubota kubotak_public

AWS ElasticBeanstalkで運用しているサービスでAWS SQSとLaravel Jobを用いたWorkerサーバーで不具合が発生した。

Jobの実行が必ず失敗するわけではなく、なにか特定の条件があった。
それはスペースが2個以上ある場合のメッセージQueueだと特定した。

この不具合に対してどのように改善したか説明します。

8
他イベントOK レギュラートーク(20分)

プログラマ三大美徳を実現するデプロイフローを目指して

yamotuki yamotuki yamotuki

プログラマの三大美徳とは次の通り(Wikipedia より引用)。

> 怠惰(Laziness)
> 短気(Impatence)
> 傲慢(Hubis)

デプロイ作業は単純作業が入り込みやすいです。もし「怠惰」なプログラマだったら単純な繰り返し作業なんて嫌なはずです。
デプロイ作業は時間がかかります。もし「短気」なプログラマだったら長い待ち時間に我慢できないはずです。
デプロイ作業はミスが許されません。もし「傲慢」なプログラマだったら自動化してミスなどしないはずです。

私の所属する会社でもかつては、かつてはほぼ手動でgitコマンドを順番に打って、タイミングを見計らい migrate し、長い待ち時間に甘んじたこともありました。
しかし徐々にフローは自動化され、完璧とは言えないまでも三大美徳を徐々に実現してきました。
PHPerであろうと他の言語のプログラマであろうと避けられないデプロイフローの話をお届けします。

8
他イベントOK LT(5分)

Web API開発をするなら、ドキュメントは自動生成にしておこう!

皆さんの開発現場はAPIドキュメントの自動生成化がお済みでしょうか?
このLTではCakePHP4にSwaggerを導入して、コードのアノテーションからドキュメントを自動生成するまでの流れをご紹介いたします。

▼こんな方におすすめ
・これからWeb API開発を始める方
・ドキュメント書くの面倒な方
・実装とドキュメントの乖離に苦労したことがある方

昨年、社内で実施した勉強会のテーマの中で一番メンバーの反応が良かったのが「アノテーションからのドキュメント自動生成」でした。ドキュメント作成の手間を少しでも減らして、開発体験を向上させていきましょう!
(LTではCakePHPをサンプルコードとして紹介いたしますが、Laravelに導入する手順も別途資料をご用意させていただく予定です。)

7
他イベントOK レギュラートーク(20分)

Casbinを用いたアクセス制御入門

820zacky つざき 820zacky

はじめてのアクセス制御の導入でCasbinというライブラリを使ってみたらすごくよかったので紹介します。

Casbinを用いたロールベースのアクセス制御の導入を例に挙げて、
権限モデルの種類やCasbin、CasbinのLaravel向けパッケージであるlaravel-authzなどについて話します。

7
他イベントOK レギュラートーク(20分)

カスタマイズだらけのB2Bアプリをマルチテナント型SaaSに作り変えた話

大河原麗偉

元々パッケージというして開発していたソフトウェアですが、リライトせずSaaS化をしたという話です。

qiitaで途中まで書いた話です。
https://qiita.com/Rei_okawara/private/ec0dfe9bf552f7d78101

1
採択 他イベントOK 原稿(8ページ)

PHP で JVM を実装してみる

m3m0r7 めもり〜 m3m0r7

何も難しい知識は必要ありません。コンパイルされたクラスファイルはオラクルによってドキュメントが公開されており、ただ単純にそれになぞって実装するだけです。それでも、ウェブアプリケーションとはまた違った味を感じていただいた上で、 PHP で JVM を作る楽しさを伝えられたらと思います。

2
採択 他イベントOK 原稿(8ページ)

PHP式プログラミング入門

tadsan うさみけんた tadsan

セミコロン、書いてますか?

PHPの構文要素には式と文の厳密な区別があり、一般的なプログラミングのベストプラクティスでは、適度な単位で文を区切ることでリーダブルなコードになるとされています。しかしながら式指向の言語機能や関数を利用することでコードを圧倒的に短縮することもできます。この記事においてはセミコロンの数を最小にしながら偏執的なPHPプログラミングを行う非実用的コーディングテクニックを紹介します。

3