PHPerKaigi 2022 トーク一覧

採択 原稿(8ページ)

PHPer vs モナド

tadsan うさみけんた tadsan

型安全なコードを書いていますか? 私は変なプログラミングが好きなのですが、函数プログラミング、その中でもしばしば静的型付きな函数型とセットで語られがちな「モナド」という概念について長年にわたって苦手意識を持っていました。JavaScript、Ruby、Lisp、PHPといくつかの言語に触れてきて一度F#を学んだあと静的型とは仲良くなれなくても動的言語で楽しくやってきましたが、世は大静的検査時代、動的言語においても型の概念からは逃れられなくなってきました。本稿においては「モナド」という、やや哲学的な香りを持つキーワードを切り口に普段のPHPでは使わないかもしれない、でもちょっと発展的に知っておくと楽しめるかもしれない(そして私がいままで仲良くなれなかった…!)概念について和解を経て紹介します。

21
採択 原稿(2ページ)

JSを書かずにLaravelプロジェクトをPWAに対応しよう

ichii731 市井 ichii731

Webサイトをネイティブアプリのように扱うことができる技術「PWA」を目にする機会が増えて来ました。
ですが、機能実装にはJavaScriptでServiceWorkerを書かなければならず「PWAに割く暇なんてねぇ!」と感じるPHPerもいらっしゃるでしょう。
そんな方のために、JavaScriptを一切書かずにオフライン対応も含めたPWA・TWAの実装方法を超簡潔に御紹介致します。
※TWAとはPWAアプリケーションをPlayストアに配信できる技術のことです

4
採択 原稿(4ページ)

そこそこ巨大な Laravel の Unit test を Github Actions で出来るだけ早く回すためにやっていること

tsuzukit2 都筑 友昭 tsuzukit2

Larevelで開発を行なっているとサービスが成長するにつれてテストが肥大化してどんどんテストが遅くなってしまうという事が発生する事があると思います(弊社では発生しました & しています)。
そこで Github Actions を使って Laravel のテストを行なう際に出来るだけ早くテストを回すために行なっている事とセットアップ方法をご紹介させて頂きます。

11
採択 原稿(4ページ)

日本語で開発してラクしよう、そして効率良く経験値をもらおう

chatii0079 ちゃちい chatii0079

技術力を高めるためには、場数が必要ではないでしょうか。それは、どれだけ思考し、手を動かし、また思考…の繰り返しだと思います。
「どのように設計するか」「どのように実装するか」だけを考えて試行錯誤したいものです。
しかしながら、思考を邪魔するものがいます。そうです、我々日本人に立ちはだかる大きな壁、英語とそれによる名付けの問題です。
複雑な要件を設計・実装するときに、ふと思い至り、英語の壁を取り払ってみたところ、とても快適な開発体験を得られることができました。
その経験をもとに、日本語をそのままコードに使うことでどんなメリットがあるか、どのような流れで開発したら良いかを共有したいと思います。
※"ぜったい英語禁止"にする話ではないです

8
採択 原稿(2ページ)

【脱・初心者】どちらのコードも動くけど…PHPで迷う書き方を整理しよう!

maikeru 三雲 maikeru

PHPは他の言語にも比べて柔軟性の高く、動的型付け言語でもあるため、なんとなくコードを書いても動いてしまう初心者に優しい言語です。
PSR を代表としたコーディング規約や慣習を基に、より読みやすいコードを書くきっかけを与えたいと思います。
2通り書き方があるけど、どちらがより望ましいのかを提示し、初心者に考えて納得していただこうという企画です。

記事は2つの表記法を並列で記載し、慣習やコーディング規約を基に望ましい表記法を伝える記事になります。例として、下記のような違いを提示し解説する予定です。

● else if と elseif
● True と true
● foreach と array_map
● 三項演算子 と エルビス演算子 など

この記事の最終目的は、読みやすいコードを書くことを考えられるような、脱初心者を目指すところとなります。

7
採択 原稿(4ページ)

FiberとEventLoopで作るPHP製ウェブサーバー

hanhan1978 富所 亮 hanhan1978

PHP 8.1 から導入された Fiber。PHPマニュアルや、RFC の参考実装だけではなかなか理解することが難しい機能でもあります。本記事では、直感的に理解しやすいPHPのコードを使って、ステップバイステップで非同期処理を利用したPHP製ウェブサーバーを作成します。写経して実際に動作するサンプルを自ら作ってみることで、Fiber が導入された意味を体で覚えてみましょう。

8
採択 原稿(4ページ)

PHP で echo サーバーを書いて I/Oモデルを理解する

hanhan1978 富所 亮 hanhan1978

普段、PHPでウェブアプリケーションを書いていると、I/OモデルなどOSレイヤーに近い知見に触れる機会が少ないです。しかし、PHP はネットワークプログラミングも出来るのです。PHPで手軽に echo サーバーを書いて I/Oモデルをサクッと理解しましょう。

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

テスト放送

uzulla uzulla uzulla

テスト放送です。

そして、最近の進捗どうですか?
かわりつつあるPHP、様々清濁併せ呑むPHP、UNION型もサポートするPHP空間に対する主観的な漫談をして、つじつま合わせだけでない世界を夢見たテスト放送素材トークです。

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

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

namizatork 並里 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 20:40〜 Track A スポンサーセッション(20分)

サムザップにおけるNotionの活用事例とPHPでのNotionAPIを利用した仕組み構築の紹介

若田部 誠

Notionは、タスク・Wiki・データベースなどを統合するマークダウンサポートを備えた次世代ドキュメントアプリケーションです。
「戦国炎舞 -KIZNA-」、「この素晴らしい世界に祝福を!ファンタスティックデイズ」、「呪術廻戦 ファントムパレード」などのスマホゲームを開発・運営している株式会社サムザップでは、情報共有のツールとしてNotionを活用しています。
こちらのセッションでは「Notionを活用することにした経緯」、「別のツールからNotionに移行するまでのあれこれ」、「Notionをどのように活用しているのか」などについてお話しします。
また、「Notionをどのように活用しているのか」では、NotionのAPIをPHPで活用している部分についてもご紹介します。

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

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

zosokh ヒエイカザト zosokh

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

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

【トーク対象】

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

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

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

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

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

予防に勝る防御なし - 堅牢なコードを導く様々な設計のヒント

t_wada 和田卓人 t_wada

PHP はバージョンを追う毎に型宣言、例外、表明、列挙型などの機能が大幅に強化され、堅牢なコードを書くための機能が充実してきました。それらの機能はどう使うと効果的なのでしょうか。

本講演では PHP 8.1 をベースにして、誤りを想定してチェックするのではなく、そもそも誤りにくい設計とはどのようなものか、つまり「予防」の観点を軸足に、堅牢なコードを導くための様々な設計のヒントをご紹介します。

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

PHP で NFC リーダーを実装する 〜 PHP とハードを繋ぐ 〜

m3m0r7 めもり〜 m3m0r7

Suica や PASMO をデバイスにタッチして値を取得する、そんな夢を PHP で叶えたいと思っていた PHPer も多いかと思います。
PHP7.4 から PHP FFI と呼ばれるものが導入され、その夢も今まで以上に叶えやすくなりました。Suica や PASMO は FeliCa と呼ばれる NFC の規格の 1 つです。実装方法は多岐に渡りますが、概ね libnfc と呼ばれるライブラリや libusb を使う方法などがあります。しかし、今までの PHP ではこのライブラリを呼び出すことさえ叶いませんでした。そこで、本セッションでは PHP7.4 から導入された PHP FFI を用いてどのように PHP で NFC リーダーを実装するのか、そして実際のデモを交えてトークできればと思います。

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

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

hanhan1978 富所 亮 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 植江田和成 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 香月 雄介 katsukii

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

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

PHPとGraphQL

glassmonekey 永野 峻輔 glassmonekey

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

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

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

採択 スポンサーセッション 2022/04/10 12:45〜 Track A スポンサーセッション(20分)

チームの仕事はまわっていたけど、メンバーはそれぞれモヤモヤを抱えていた話──40名の大規模開発チームで1on1ログを公開してみた

vaccho 柴田 一帆 vaccho

サイボウズの大企業向けグループウェアのGaroon(ガルーン)は、PHPで開発されている20年目の製品です。ガルーン開発チームは日本で40名、ベトナムで50名の計90名ほどのチームになっています。また、コロナ禍でフルリモートでの活動がこの2年ほど継続してきました。

フルリモートになっても仕事はまわっており、継続的にリリースはしていましたが、一方でお互いの考えていることや感じている問題意識が見えづらくなり、モヤモヤを抱えているメンバーが増えていました。

このセッションでは、そういう状況で私がチーム外からジョインし、聴き役に徹しながら見える化することで状況を改善していった取り組みを紹介します。同じように大きなチームやリモートワークで難しさを感じている人に、難しさの原因への気づきや取り組みへのヒントがあれば幸いです。