採択
2022/04/09 20:15〜
Track A
レギュラートーク(20分)

PHPのエラーを理解して適切なエラーハンドリングを学ぼう

namizatork 並里

PHPを使ってるとよく遭遇する Fatal error / Parse error / Warning / Notice 理解していますか?
これらのエラー文を理解することで、すぐにエラーの原因に気付き適切に対象できる様になります!
またそれらを理解した上でのエラーハンドリングを学びましょう。

採択
2022/04/09 20:15〜
Track B
レギュラートーク(20分)

Datadog APM で始める Laravel アプリケーションのパフォーマンスチューニング

小黒 陽弘

Webアプリケーションを長年運用していると、至る所でパフォーマンスの問題が出てきますよね
リリース当初は問題なく動いていたものが、突然動かなくなるなどの経験をした方も少なくないのではないでしょうか

私たちの運用しているLaravelアプリケーションも例外ではなく、稀にデータベースが悲鳴をあげたり、特定条件でアプリのレスポンスが遅くなったりという状況に遭遇する機会が増えてきました

そんな問題の特定・解消のために導入したのがDatadog APMでした
発行されているSQLの数や処理時間、外部APIのコールやphpの処理時間などのデータが全て見える化されており、非常にパフォーマンス改善しやすい環境を作ることができました

本セッションではそんなDatadogの導入までにやったことやDatadogを活用してどうやって改善を繰り返しているかなど、事例を交えてご紹介したいと思います

採択
2022/04/09 21:05〜
Track A
レギュラートーク(20分)

エラー監視とテスト体制への改善作戦

zosokh ヒエイカザト

毎日流れてくるエラーに皆さんはどう向き合ってますか?
エラーを出さない事が一番ですが、完全に塞ぐ事は難しいと考えます。
サービス運用の中で本番環境から発生するエラー(サーバー・クライアントサイド・サードパーティ起因のエラー)への監視体制と、
エラー・バグ防御のためチームで行っているテストコード文化づくりの話をします。

  • sentryを使ったエラー監視体制
  • エラー種類の集計
  • チームでテストコードを書くために
  • カバレッジ向上へ向けた施策

【トーク対象】

  • webサービス運用エンジニアの方
  • いまいちサービスのエラーを把握しきれていない方。知らないふりしている方。
  • テストコード書いてない方。書きたい方。
  • 明日なんとかしよう、、と思って数ヶ月経っている方。
採択
2022/04/09 21:05〜
Track B
レギュラートーク(20分)

サイト制作をぐるっと一周して分かった、WordPress が人類に提供しているもの

__Mitsui 株式会社あつまる 三井 翔吾

WordPress でサイト作って約7年、「WordPress 完全に理解した」の先に待っていた失敗事例を踏まえつつ WordPress が人類に提供しているあれこれを俯瞰します。
最後に、近年の CMS に求められている機能とからめて WordPress が愛される理由について持論を展開してみます。

採択
2022/04/10 11:35〜
Track A
レギュラートーク(20分)

PHPでEventLoopを書いて非同期処理を完全に理解する

hanhan1978 富所 亮

同期処理がメインのPHPウェブアプリケーション開発者が非同期処理を理解するのは難しいです。PHP自体も非同期プログラミングを積極的に支援する仕組みがありません。しかし、逆に考えればチャンスです。PHPで非同期処理に必要な仕組みから自分で作って見ると、非同期処理を腹の底から理解することが出来ます。

本トークでは、仕事で同期処理ばかり書いているエンジニアが、非同期APIの作成から、非同期処理を行うEventLoopをFiberで作り上げる所までを解説します。非同期処理を仕組みから理解することで、他の言語学習もスムーズになることでしょう。

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

  • 非同期処理とはなんなのか
  • Generator や Fiber は非同期処理に必要なのか
  • どうすれば、PHPで非同期処理を書けるのか
  • そうまでして非同期処理を覚えることに意味はあるのか
採択
2022/04/10 11:35〜
Track B
レギュラートーク(20分)

MongoDB に溜まった約1.6億レコード、データ量1TBのあらゆるサイトの記事データを BigQuery で高速検索できるようにした話

developer_kazu 植江田和成

メディア露出の調査・分析などがおこえるWebアプリケーションのWebClipping。WebClippingではあらゆるサイトから1日に10万件超の記事をクロールし、MongoDBに保存します。
二度と手に入らないかもしれない記事データを、ただ削除するのはもったいないです。
そこで今後活用できるように記事データをBigQueryへ移動させることになりました。
しかしPHPを使用して大量のデータをmongoDBから引き、そのデータをファイルに書き込んでいく作業は予想以上に難しかったです。
今回は、上記対応で行ったPHP上の工夫を紹介します!

主な内容
・約1.6億レコードのデータをどのようにcsvファイルに書き込むのか?
・PHPのファイル処理に便利なStream Wrapperで圧縮して書き込む
・ファイル処理の速度を向上させるために入出力ストリームへアクセスする

採択
2022/04/10 12:10〜
Track A
レギュラートーク(20分)

大規模サービスのCakePHP2をCakePHP4にジャンプアップさせた話

katsukii 香月 雄介

ペライチというサービスのCakePHP2をCakePHP4にジャンプアップさせた話です。ソースコードの量が多すぎたため一括移行は難しく、2つのバージョンを並行稼動させながら段階的に移行していきました。大規模サービスにおいてサービスを停止させずにバージョンアップするためにどんな工夫をしたかについてお話します。

採択
2022/04/10 12:10〜
Track B
レギュラートーク(20分)

PHPとGraphQL

glassmonekey 永野 峻輔

昨今宣言的UIの台頭とともに、GraphQLが注目を浴びています。
特にReactではApollo Clientの存在もあり大変便利です。

ではPHPではGraphQLのエコシステムはどうなっているのでしょうか?

今回のトークではGraphQLを活用するメリット・デメリットから、PHPでGraphQLを扱う是非、PHPでGraphQLを扱う場合のライブラリやエコシステムについて解説をします。

採択
2022/04/10 14:20〜
Track A
レギュラートーク(20分)

ブラウザ自動化技術の深層へ、直接触れて学ぶWebDriverとChrome DevTools Protocol

hgsgtk Kazuki Higashiguchi

ウェブアプリケーションの開発においてE2Eテストの自動化は身近なトピックです。SeleniumやPuppetter、PlaywrightやAppiumなどがブラウザ・ネイティブアプリの自動操作のOSSとしてよく挙げられます。しかし、それらの裏側はご存知でしょうか?

本トークではこれらのツールの背後にいるWebDriver、Chrome DevTools Protocolsに焦点を当てます。

WebDriver、CDPとはなにか、その違い、仕様について、PHPエンジニアに身近な言語を用いて"直接"実装することを通じて解説します。

本トークを通じて直接触れることでライブラリでwrapされている裏側まで知ることできます。E2Eテスト自動化の課題に出会ったときに「裏側がこうだからたぶんこういうことだよね」と想像できるようになる、少し世界の見え方が変わる時間を提供します。

採択
2022/04/10 14:20〜
Track B
レギュラートーク(20分)

設計におけるソリューションドメイン

strtyuu 吉田あひる

ソリューションドメインという単語をご存知でしょうか?
ソリューションドメインとはPHPのようなプログラミング言語やMySQLのようなデータベースといった技術に関するドメインですが、ソリューションドメインに関する知識が少ないと、不必要な複雑さをアプリケーションに持ち込んでしまったり、適切でないモデルを構築するハメになってしまうことがあります。

エンジニアであれば技術の勉強を通してソリューションドメインへの理解を深めているはずですが、このトークでは改めてソリューションドメインについてまとめたいと思います。

  • ソリューションドメインとは何なのか
  • 設計とソリューションドメインの関係性
  • ソリューションドメインを学ぶことで設計にどのような影響があるのか
  • どのような問題ドメインに対してはPHPを使わない方がいいのか
採択
2022/04/10 14:55〜
Track A
レギュラートーク(20分)

今だから話せるPHP8バージョンアップの裏側 ~全5サービスの事例紹介~

MasaKu_e 久山勝生

EOL対応はエンジニアの永遠の課題ですよね。
弊社では5つのサービスがPHPで作られており、そのうち4サービスは10年以上の歴史を持つサービスです。
そんな中始まったPHP8へのバージョンアップ対応は一筋縄ではいきませんでしたが、以下のステップで取り組んだことで大きな問題なくバージョンアップを終わらせることができました。

  1. 5つのサービスの担当者間で注意すべきポイントなどを共有
  2. 担当サービスの技術特性や抱えている事情の違いを考慮してアプローチ

このセッションでは、弊社の全5サービスで行ったPHP8へのバージョンアップ対応の取り組みやそこから得られたノウハウをご紹介し、これからPHP8へのバージョンアップを検討されている方に有益な情報をお届けできればと思います。

採択
2022/04/10 14:55〜
Track B
レギュラートーク(20分)

Laravel OctaneをどうしてもPharで運用したい話

goodoo 白井 英

Laravel Octane(オクタン)は、SwooleやRoadRunnerなどの高性能なアプリケーションサーバを使用し、アプリケーションを提供することで、アプリケーションのパフォーマンスを向上させます。Octaneはアプリケーションを一度起動したら、メモリ内に保持し、そして超音速でリクエストを送り返します
(引用:https://readouble.com/laravel/8.x/ja/octane.html
Laravel Octane(Swoole版)でPharをつかってワンバイナリアプリケーションにして運用してみた話です
過去、PHPカンファレンス北海道(2019)にて
「pharによるワンバイナリアプリケーションの可能性を探ってみた」
でお話ししましたが、そのリベンジ(現実版)になります
PHPだけど、Buildして(Pharでpackして)、Deployして運用してみよう!

採択
2022/04/10 16:05〜
Track A
レギュラートーク(20分)

PHPで「時間がかかる処理」を並列でブン回す

kiridaruma kiridaruma

PHPは主にHTTPサーバアプリケーションの実装に用いられますが、案外長い時間がかかるバッチ処理なんかも書けたりします
数十分~数日かかる処理まで、長い時間がかかる処理をPHPで並列で回す方法や気を付けるべき点などを、仕事で主にインフラを担当している自分が実際に業務であった経験ををもとにお話します

採択
2022/04/10 16:05〜
Track B
レギュラートーク(20分)

DBGpを使ってPHPのデバッガーをつくろう

tzm_freedom 田実 誠

Xdebugを使うとブレークポイントやステップ実行によるデバッグができるようになります。
XdebugはDBGpという通信プロトコルを使って、IDEとデバッグ対象のコミュニケーションを行いデバッグしています。
本セッションではPHPのソケット通信を使った簡易的なデバッガーを通じて、DBGpのプロトコルやデバッガーの裏側についてご紹介します。

採択
2022/04/10 16:40〜
Track A
レギュラートーク(20分)

作って遊ぼう!Composer Plugin

o0h_ きんじょうひでき

Composerには、Pluginという仕組みがあります。
2.0が来るまでは、hirak/prestissimoにお世話になっていた方も多いと思います。(私もその1人です!!)

では、「どういうことが出来るのか」はご存知ですか?
知ることが全ての始まりです。
もしかしたら、あなたの仕事に革命を起こすような素晴らしい可能性が眠っているかもしれません。

「Composer Pluginとはなんだろう?」とイメージを掴むために、「どういう仕組みになっているのか」「どういう機能があるのか」を紹介したいと思います。

お届けすること

  • Pluginの仕組みと概念を知り、開発者体験の向上を進めるための引き出しを増やす
  • 実例を通じたPluginの効果・ユースケース

話さないこと

  • Composerの基本的な使い方、仕組み
  • Composer v1.xからv2.xへの移行
採択
2022/04/10 16:40〜
Track B
レギュラートーク(20分)

PHP流 quicktypeとの付き合いかた

yosatak たけうちよしたか

PHPでも型を付ける事で不意なバグを減らしながら、快適にプログラミングする事ができる静的解析ツールが開発されています。
また、PHPのヴァージョンが上がるにつれて型に関するサポートも充実してきており、現代のPHPは、昔のPHPの印象で語られる世界とは別の世界と言っても過言ではないでしょう

他の言語でも型システムが強力なしくみが導入されたり、強力な言語が話題になったりしていますが、フロントエンドフレームワークと通信する時など、言語を跨いだ型情報の共有に便利な仕組みがquicktypeです

PHPはquicktypeでの対応が現時点では無いのですが、有効に利用するための工夫を纏め発表します。

採択
2022/04/10 17:15〜
Track B
レギュラートーク(20分)

依存ライブラリの定期的な更新のためにRenovateを導入・運用する

blue_goheimochi 大橋佑太

依存ライブラリの更新、定期的に実施できていますか?

恥ずかしながら担当プロダクトで更新ができていないケースがありました。
そしていざ更新を試みると対象ライブラリがいくつもあり、大幅なバージョンアップが必要なものも・・・

このような状況はまずいと感じ調べたところRenovateという依存ライブラリの自動更新を行うツールを知り、導入を試みましたが、更新を怠っていたプロジェクトでの素直な導入は難しいと判断。
そこで導入までにステップを置き、ライブラリのバージョン更新・Renovateの導入、そこから定期的に更新するという運用の流れを構築し、現在はライブラリの更新が健全にできていると感じています。

本トークでは依存ライブラリの更新を怠っていたプロジェクトにRenovateというツールを導入した流れと導入後の運用状況をお話させていただき、皆様の依存ライブラリ管理の一助となればと思っております。

採択
2022/04/10 17:50〜
Track B
レギュラートーク(20分)

計測ことはじめ 〜アプリケーションを知るために〜

seike460 清家史郎

推測するな、計測せよ
パフォーマンスチューニングの文脈でよく使われる格言です。

ではこの格言を実際に実行するにはどの様な手法をとるべきなのでしょうか。

一言に計測と言っても、Webアプリケーションには
Webサーバー、アプリケーション、データーベース、フロントエンドと様々なレイヤーが存在します。

今回はWebアプリケーションを計測する第一歩を進める為に必要な手法についてお話します。

アプリケーションを計測する手法を知ることで、アプリケーションが内包している問題を見つけ、さらなる改善を進める一手にしましょう。

  • 想定する聴講者
    • なぜ計測するのかを知りたい方
    • Webアプリケーションを計測する手法について幅広く知りたい方
    • N+1問題、DBパフォーマンス等の課題を抱えている方
採択
2022/04/11 11:35〜
Track A
レギュラートーク(20分)

2022年版php-srcのバグ報告の仕方

youkidearitai てきめん

php-srcのバグ報告ですが、実は2021年末にbugs.php.netからGitHubへと移行しました。
(厳密に言うと、セキュリティが絡む場合には引き続きbugs.php.netを使用します)

そのため、バグ報告の仕方がすこし違ってきています。
GitHubだからいざ報告となるとしやすくなったのでしょうか?
GitHubで報告されたバグはどのように扱われるのでしょうか?
php-srcほどだとバグは見つからないかもしれませんが、見つけてしまったときにどうしたらよいか考えてみませんか。

採択
2022/04/11 11:35〜
Track B
レギュラートーク(20分)

PHP で PHP のプロファイラをつくろう

sji_ch sji

個人で PHP 用のプロファイラを作っておりまして、これは FFI を経由して Linux のシステムコールを呼び出し、別プロセスで実行中の PHP 処理系のメモリ内容を覗き見し、内部データを解釈して実行中の PHP スクリプトの情報を盗みとる、という少し変わった PHP スクリプトです。

https://github.com/sj-i/php-profiler

2020 年から半分くらいギャグのつもりで少しずつ開発を続けているものですが、作っているうちに案外実用性が出てきてしまった気がするので、内部実装や利用方法について少しだけご紹介します。

■ 想定する聴講者

  • PHP の性能計測についてちょっと変な奴でもいいから手札を増やしたい人
  • PHP での低レベル寄りの大道芸が好きな人
  • 年に 1 回や 2 回くらいは「PHP で何やってんだよwww」という種類の笑いがほしい人