PHPerKaigi 2021 トーク一覧

採択 他イベントOK 2021/03/28 14:10〜 Track B レギュラートーク(20分)

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

yamotuki yamotuki yamotuki

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

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

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

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

9
採択 他イベントOK 2021/03/28 14:50〜 Track A レギュラートーク(20分)

PHPのDI、attributesとこれから

hiro_y 山岡広幸 hiro_y

PHP 8で導入されたattributes。
今まで(やむをえず)PHPDocを用いて実装されてきた様々な書き方が、だんだん置き換わっていこうとしています。
今回は、DIの代表的なライブラリであるPHP-DIが新しいバージョン(7、2021年1月19日時点では未リリース)でどう変わろうとしているか、また、Symfonyなどの変化もあわせて紹介しつつ、PHPにおけるDIの行方について話したいと思います。

8
採択 2021/03/28 14:50〜 Track B レギュラートーク(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キャッシュや権威サーバのツリー構成など知っておくとトラブルシューティングやサイト移転時に役立ったりします。

7
採択 2021/03/28 15:30〜 Track B 招待トーク(20分)

マンガではわからないソフトウェア開発の真理

tanakahisateru 田中ひさてる tanakahisateru

2 年にわたり、ソフトウェア開発の古典=デザインパターン/アンチパターンをマンガで紹介してきました。このトークではいよいよ古典中の古典「人月の神話」に言及します。こうした古文書が、モダンな設計開発を模索して現在を生きる私たちに何を物語っているのか、時代を超えた私たちが何を学ぶべきなのかを紐解いていきたいと思います。

3
採択 他イベントOK 2021/03/28 16:10〜 Track A LT(5分)

PHPUnit 9 時代のTest Doubleの作り方

hgsgtk 東口 和暉 hgsgtk

PHPUnit もバージョン 9 になりました。長年第一線で活躍し私達PHPerにテスト可能な開発環境を提供し続けてくれているPHPUnitは、その分歴史が長く、バージョンごとに これまでの使い方は deprecated になっていきます。

PHPUnit 9 では、さまざまな機能削除や非推奨勧告がありますが、その一つが表題にある MockBuilder::setMethods の deprecated です。

そこで改めてこの変更を機に、次の点を抑えていきます。

  • PHPUnitのTestDoubleの語彙整理の根拠 xUTP本とその該当箇所、createStub / createMockの違い
  • setMethodsからaddMethods/onlyMethodsになった使い方
  • deprecatedになった理由をissueの内容から抑えて背景思想を理解する
  • PHPUnit の内部実装ではどのような変更が行われたのか(これはPHPUnit 8でのaddMethods/onlyMethodsの話でもある)
5
採択 他イベントOK 2021/03/28 16:15〜 Track A LT(5分)

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

kubotak_public Kenjiro Kubota kubotak_public

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

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

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

9
採択 他イベントOK 2021/03/28 16:20〜 Track A LT(5分)

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

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

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

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

9
採択 他イベントOK 2021/03/28 16:25〜 Track A LT(5分)

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

zaregoto32 頓花貴俊 zaregoto32

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

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

4
採択 他イベントOK 2021/03/28 16:30〜 Track A LT(5分)

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

820zacky つざき 820zacky

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

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

7
採択 他イベントOK 2021/03/28 17:10〜 Track A LT(5分)

Laravelプロダクト Fargate化への道

sogaoh sogaoh sogaoh

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

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

6
採択 他イベントOK 2021/03/28 17:15〜 Track A LT(5分)

それ make で出来るよ

take_3 タケタニヒロト take_3

皆さん、開発・運用では様々なツール、コマンドを駆使していると思います。
また、利用者もエンジニア、デザイナ、QAなど多様で、環境もローカル開発用PC、ステージング/本番サーバなど用途に応じてOS、プラットフォームを使い分けていることと思います。
そこで、makeコマンド(Makefile)で開発・運用をもっと楽にするための幾つかのノウハウを紹介いたします。

  • 複雑な操作、一連の処理をまとめてタスク名をつける
  • 必要なことだけをやる (依存関係、タイムスタンプ)
  • 環境の違いを吸収する (開発/本番, Mac/Windows/Linux, etc)

※ phpに限定しない、汎用的に活用できるテーマです。

3
採択 他イベントOK 2021/03/28 17:20〜 Track A LT(5分)

データベースを利用したテストを軽〜く実行したい時の味方: vimeo/php-mysql-engine

o0h_ きんじょうひでき o0h_

単体テストを作り込んでいくと、「データベースを使う部分をどうするべきか?」という悩みにぶち当たる場面があると思います。
「そもそも”コードのテスト”なのにデータベースに依存するなんて」や「どうしても全体実行に時間がかかるな」などです。

そこで、「vimeo/php-mysql-engine」という選択肢はいかがでしょう?

前口上

丁寧に、クリーンな構造を持ったアプリケーションであれば、その辺りはモックやスタブを利用しながら、「データベース接続」についての一切の関心を外に追いやったテストも可能になるものかと思います。
他方で、「そこまで行っていない」アプリケーションも多いでしょう。
いずれにせよ、既存のアプリケーションやフレームワークといったコードベースに、大幅な手を加えず、それでも「もっとライトにテストを回す」という願望は叶えられないものか・・・

本題

vimeo/php-mysql-engineは、実際のMySQLデータベースを用いずに、(PDO_MYSQLを想定した)RDBMS処理を再現できるライブラリです。
vimeo/php-mysql-engine - Packagist

既存のアプリケーション構造が、リレーショナルデータベースと疎結合にできる”testable"な状態になっていなくても、
php-mysql-engineを利用すれば少ない工数で「自動化テストの効率化」を狙えるかも知れません。

このトークでは、ライブラリの簡単な紹介と、実際にテストに組み込むにはどうすればいいか?を紹介します。

6
採択 他イベントOK 2021/03/28 17:25〜 Track A LT(5分)

phpinfoの写経します

youkidearitai てきめん youkidearitai

phpinfoは、インストールする時によく使いますね。
それがどのように動いているのか知りたくなったので、phpinfoを写経してみて、わかったことを共有したいです。

2