採択
2021/03/27 16:50〜
Track A
レギュラートーク(20分)

PHP でもアーキテクチャテストしたい!

kawanamiyuu かわなみゆう

「アーキテクチャテスト」って何?と思われたあなた!

アーキテクチャテストとは一言でいうと、

  • Layered Architecture や Clean Architecture のような設計パターンで実装された、アプリケーションを構成するクラスの依存関係を自動テストとして表現し、テストすること
  • 依存関係の他にも、そのアプリケーション固有の実装ルールをコード化して、自動テストすること

です。

私の普段の開発業務でのメイン言語は Java ですが、「アーキテクチャ」は開発言語によらず存在する重要なテーマです。

この発表では、Java での実際のプロダクト開発で実践しているアーキテクチャテストの知見をもとに、アーキテクチャテストが有用な理由、つまり

  • アーキテクチャ設計という営みの課題
  • アーキテクチャの正体とその問題点

に迫りながら、PHP の文脈で PHP のライブラリを用いて、PHPer として「アーキテクチャテスト」に入門してみます。

<参考>アーキテクチャテストに関する過去の登壇資料などのリンク集
https://gist.github.com/kawanamiyuu/f63fe97136bb189f53346245fdfac808

採択
2021/03/27 16:10〜
Track B
レギュラートーク(20分)

PHPWebアプリケーション パフォーマンスチューニング

seike460 清家史郎

速いは正義、アプリケーションは速くあるべきです。

PHPWebアプリケーションを構成する要素として、
パフォーマンスを向上させるポイントはどこにあるのでしょうか。

今回はPHPWebアプリケーションを速くするポイントを
PHPに限らず幅広い視点で見直してみようと思います。

OS、Webサーバー、PHP、RDBMS等の見直すべき要素に関して触れ、
愚直に改善を行うべき場所を再考し、
堅実にパフォーマンスを改善する方法をお話しようと思います。

■想定する聴講者
 - PHPWebアプリケーションのパフォーマンスに興味がある方
 - PHPのインフラを整備するエンジニア
 - PHPでISUCONに挑戦する方

■お話しないこと
 - パフォーマンス以外の話
 - アプリケーションコードによる改善
 - 劇的なパフォーマンス改善策

採択
2021/03/28 10:50〜
Track A
レギュラートーク(40分)

ぼくがかんがえたさいきょうのMySQLの監視スクリプトを読み解く

yoku0825 yoku0825
  • とある企業でDBAを務めていますが、お手製の監視スクリプトをytkitというスクリプト群としてオープンソースで公開しています
  • コイツはまあ、Perlで書かれてるんですが、これを見ながら「本職のDBAはこんなこと考えながらMySQLの監視してるんだな」という紹介です
    • いいじゃないですか、変数名の頭に$がつくPで始まるもの同士仲良くしましょう!
    • なお、私のPerlはへたっぴです。監視用のSQLだけは自信があります。
採択
2021/03/27 16:10〜
Track A
レギュラートーク(20分)

ブラウザから始めるgRPC 〜 gRPC-WebにPHPを添えて

n_1215 中榮健二

Google製のRPCフレームワーク、gRPC。
"ユニバーサル"を謳っているものの、ブラウザ上でgRPCクライアントを実装することはできず、またPHPによるgRPCサーバの実装は一般的に困難です。
PHPによるサーバアプリケーションとブラウザ上で動くWebアプリケーションを主な生業とするPHPerとしては手が出にくくなっています。

gRPC-Web( https://github.com/grpc/grpc-web )は主にブラウザとサーバの間でgRPCに準じた通信を可能にするための、JavaScriptによるクライアントライブラリおよびそのプロトコルです。
gRPCに比べていくつかの制限はありますが、メリットの一部を享受することができます。

本トークではgRPC-Webの概要やgRPC-Webを用いたアプリケーション開発のメリット・実装例をご紹介し、PHPによるサーバ側の実装に挑戦した結果をお話しします。

お話ししたいこと

  • gRPCの概要
  • gRPC-Webの概要と現状
  • クライアントコードの自動生成
  • デプロイ/インフラ構成
  • アプリケーション実装例(C#実装を予定)
  • PHPでどこまでいけるのか(これからやります)

お話ししないこと

  • 本番運用の事例
  • パフォーマンスチューニング
レギュラートーク(40分)

PHPerにも捧ぐ、MySQL InnoDB Clusterの使い方

yoku0825 yoku0825
  • MySQL InnoDB Clusterという比較的新しい、公式のHAソリューションがあります
    • 今までの(非同期/準同期)レプリケーションに比べると圧倒的にデータの不整合に強い
  • 利用開始は非常に簡単、PHP側からは透過的に単なるMySQLのように見えます
    • Group Replicationというmysqld側の技術と、mysqlrouterプロセスが連携して動きます
    • Group Replicationの設定変更はMySQL Shellから操作するのが圧倒的に楽です

しかし流行っているように見えない!
使えるところには使えるソリューションだと思いますので、これを機に勉強してみませんか?

  • セットアップの方法
  • Group Replicationの仕組みの説明
  • mysqlrouterの仕組みの説明
4
採択
2021/03/26 17:30〜
Track B
レギュラートーク(20分)

PHP製のPodCast配信用WebアプリをReact+Next.jsなSSGで作り直してみた話

kaz_29 渡辺一宏

最近ではフロントエンドをJavaScript(typescript)を使用して開発するケースが増えていると思います。
また、最近ではnodejsを使ってのSSRなSPAアプリだけでなく、GatsbyやNext.jsのようなReactベースの静的サイトジェネレータも注目されています。

このセッションでは、2年ほど前にSlim3で作った簡単なPodCast配信用WebアプリのReact/Next.jsでの作り直し作業を通して、React+Next.js+SSGで静的なサイトとして構築する際の構成やメリットなどを解説したいと思います。

LT(5分)

PHPer による VSCode 使い倒し術

YKanoh65 加納悠史

エンジニアにとって、エディタは毎日使うコーディングのお供であり、また、エディタの機能をうまく使いこなすことによって、作業効率は飛躍的に上がります。
しかし、我々はエディタを本当に使いこなせているでしょうか?
普段何気なく使っていると、詳しい人から思いがけない使い方や、便利機能を紹介されたり、
ふとした拍子に知らなかった機能を見つけた経験がある人は多いかと思います。
本セッションでは、メジャーなエディタである VSCode について、存在を知ってさえすれば明日から活用できる(かもしれない)、裏ワザ的な機能や、便利機能を、発表者の独断で紹介します。

2
採択
2021/03/27 15:30〜
Track B
レギュラートーク(20分)

PHPerの知らないビットボードの世界

ボードゲーム、お好きですか?

僕が好きなボードゲームのひとつに『モザイク』というゲームがあります。
趣味が高じて『モザイク』のライブラリや、それを用いた対戦Webアプリや機械学習させたAIまで作ってしまったほどです。
(ただし本人の腕前はサッパリ)

ところで、ゲームの盤面を管理するための「ビットボード」という手法をご存じでしょうか?
2進数を用いて盤面を表現し、ビット演算を用いて盤面を計算します。
この手法はとても高速で、将棋やリバーシといったゲームの機械学習分野でも広く使われています。

本トークでは『モザイク』をビットボードで実装した経験を踏まえ、以下の内容をお話しします。
(セッション内で扱うコードはすべてPHPです)

  • ビットボードとは
  • ビットボードって本当に速いの? 比べてみた
  • 『モザイク』をビットボードで表現するには
  • 盤面の計算

以下の内容は時間があればお話しします。

  • セッション内で用いるビット演算の説明
  • 64bitより大きい盤面を扱う方法

以下の内容は扱いません。

  • リバーシや将棋のビットボードについて (『モザイク』しか実装したことがないため)
  • 機械学習やAIについて (そちら方面は素人であるため)
採択
2021/03/28 17:10〜
Track A
LT(5分)

Laravelプロダクト Fargate化への道

sogaoh sogaoh

自分は今、とある Laravel プロダクト2件で "Fargate 化" に取り組んでいます。
両方ともまだリリースには至っていませんが、現時点でも数多くの壁とぶつかり、
その度に乗り越えられたり躓いたりで一喜一憂を繰り返しています。

2021年3月時点での、この道のりで得たFargate化の意味や乗り越えてきた障壁を、
共有できればと思います。

採択
2021/03/27 14:50〜
Track B
レギュラートーク(20分)

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

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フレームワークはどれだ!

LT(5分)

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

shiori_pk 有木 詩織

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

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

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

3
採択
2021/03/26 18:50〜
Track A
レギュラートーク(20分)

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

shiori_pk 有木 詩織

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

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

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

LT(5分)

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

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

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

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

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

MasaKu_e 久山勝生

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

6
採択
2021/03/28 14:50〜
Track B
レギュラートーク(20分)

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

cakephper 市川@cakephper

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

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

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

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

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

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

hamakou108 Kosuke Hamada

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

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

4
採択
2021/03/28 16:30〜
Track A
LT(5分)

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

820zacky つざき

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

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

9
採択
2021/03/28 16:25〜
Track A
LT(5分)

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

zaregoto32 頓花貴俊

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

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

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

明日から使えるLaravel Livewire

林 雅之

明日から使えるLaravel Livewire

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

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

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

2
採択
2021/03/27 15:30〜
Track A
レギュラートーク(20分)

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

hamakou108 Kosuke Hamada

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

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