LT(5分)

クイズ!この変数の寿命はどれくらい?

変数のスコープ、意識していますか?
ライフサイクルやスコープを意識していないと思わぬバグを埋め込んでしまったり、踏んでしまったりすることがありますよね!

このトークではサンプルソースコードを交えてスコープと変数のライフサイクルに目を向けてみます。
変数がいつ生まれ、いつ消えていくのかを意識してバグを減らし、保守性の高いコードを書けるようになりましょう!

2
レギュラートーク(15分)

闇のPHPに対する防衛術〜レガシィな環境でも開発者体験を諦めない〜

突然ですが、皆さんの現場のPHPはバージョンはいくつでしょうか?

既にPHP7系もEOLとなって久しく、先日行われたPHPerKaigiで行われたアンケートでは8系がマジョリティーとなっていました。
CIで静的解析やユニットテストが回り、デプロイは自動化され、RectorやDependabotでライブラリは最新、エディタはPhpStorm一択!
といったモダンな現場がある一方で、無視できないのは少なくない「5系」に入った票です。

現実には様々なしがらみからレガシィ化してしまったコードベースは存在します。
無限に広がるarrayの可能性、なくならないバグやデグレ、属人化したデプロイ作業...
そんなPHPの闇の中でもDeveloper eXperienceを諦めたくない!

このトークではレガシィな環境で戦ってきた中で培った自分なりの工夫、実際の現場で使っているツールや行っている取り組みをお話します。
過去の自分と同じような境遇の方の参考になれば幸いです。

お話すること

  • PHP5系でも使える品質向上のための開発支援ツールの紹介
  • 既存コードベースに引きずられないように開発している箇所とそのアーキテクチャ
  • レガシィと向き合うための自分なりの工夫とマインドセット

お話しないこと

  • PHP4系で動いているシステムへの言及
  • PHP8系で動いているシステムへの言及
  • リプレースの話
8
レギュラートーク(30分)

gRPCことはじめ 〜フロントエンドからバックエンドまでみんな大集合〜

tascript 森田 亘

gRPCというワードを聞いて、「何から始めればいいの?」「何がメリットなの?」「REST
APIでよくない?」という疑問が浮かぶ方に向けて、gRPCの基礎から具体的なアプローチまでお話します。
gRPCの概要をはじめ、gRPCを活用したWebアプリケーション開発を中心にフロントエンドからバックエンドまでの実装における実践的なポイントについてお話します。
私自身もほんの数ヶ月前までgRPCが全くわからなかった人間なので、「大丈夫!gRPCは怖くないよ!」ということがお伝えできれば幸いです。

【トーク予定内容】

・ gRPCの概要
・ 各レイヤー(フロントエンド/バックエンド)の実装方法
・ 周辺ツールの紹介
・ 成功体験/失敗体験

など

4
LT(5分)

Laravel Worker が ECS の Scale In でエラーを吐かないようにする

tsuzukit2 tomoaki.tsuzuki

コンテナでの運用が当たり前になった現代、Laravel を ECS Fargate で動かしている方も多いのではないかと思います

非同期処理を行うための worker を ECS Fargate で動かす事もそれなりに一般的だと思いますが、Queue の詰まり具合に応じて worker の数をオートスケールさせようとすると、scale in の際にエラーを吐く事があります

このセッションでは laravel の worker を ECS Fargate で動かす際にエラーを吐かないように設定する Tips を紹介します

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

laravel-doctrineハンズオン〜LaravelでDoctrineORMを使う〜

77web 菱田裕美

Laravelでアプリケーションを開発するとき、デフォルトORM(Object Relational Mapper)であるEloquent(Model)を使うことが多いと思います。しかし、EloquentはPHPの世界の唯一のORMではありません。この機会に普通のModelとは一味違ったORM, Doctrineに入門してみませんか?
特にDoctrineMigrationsの便利さは、Laravelユーザーの皆さんに一度体験してみて欲しいです!

■予定内容

  • ORMとは何か?
  • ORMを使ってデータベースのデータを扱う考え方
  • LaravelでDoctrineORMを使う(laravel-doctrine/ormを使う)ときの設定方法
  • LaravelでDoctrineORMを使ってデータベースのデータを扱う方法
  • laravel-doctrine/migrationを使う
7
レギュラートーク(15分)

EventDispatcherソースコードリーディング

77web 菱田裕美

アプリケーションを実装する時にEventDispatcherを使ったことのある人は多いと思います。
そんな便利に使っているEventDispatcherの仕組みはご存知でしょうか?
まずSymfonyのEventDispatcherの仕組みを参加者の皆さんと一緒にソースコードリーディングで解明するとともに、SymfonyのEventDispatcherがどのようにPSR-14を実装しているかも見ていきます。

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

良いポストモーテムできてますか?〜障害対応を組織の「学習」に活かすための観点を身に着ける〜

o0h_ きんじょうひでき

障害、嫌ですよねぇ。
嫌だから、起こしません・・・!素晴らしいのですが、「リリース怖い」「改修怖い」では、前に進めなくなります。

1番良いのは「適切に怖がる」「転んだら盛大に学び尽くす」という態度です。
スクラムを筆頭に、「ふりかえり」の力は「組織を強くする」ためのアジャイルな組織に必須な力と考えられています。もっと広げれば、体験学習の世界でも重要なことです。

そうした、本来の「これから先に活かすふりかえり」の姿を取り返しませんか?

お伝えしたいこと

  • ただの「事実確認」で終わらせない、障害のふりかえりをやろう
  • 「同じことはもう起きない」ではなく、「組織としての課題」につなげよう
7
レギュラートーク(45分)

RDBアンチパターンと戦う - 削除フラグ 完全攻略ガイド

soudai1025 曽根 壮大

目の前に立ちはだかる削除フラグ......
削除フラグがアンチパターンであることは知っていても、目の前の削除フラグと付き合っていくしか無い...
そう思って諦めていませんか?

削除フラグを既存のアプリケーションに影響をできるだけ閉じて無くすことはできます。
テーブルから状態や属性を別のテーブルに移し、アプリケーションを壊すことなくリファクタリングしていくために必要なことを説明します。

  • 削除フラグがあるテーブルをどうやって分割するか
  • 既存のコードの振る舞いを維持しながら如何にリファクタリングするか
  • リファクタリングをやりきる ために必要なステップ

レガシィコードと向き合い、リファクタリングして、目の前のプロダクトを改善している現場のテクニック、余すこと無くお話します!

15
レギュラートーク(45分)

"課題を解決するエンジニア" になるために今からできること、必要なこと ~ 先人の言葉から学ぶ、生き残る道 ~

soudai1025 曽根 壮大

生涯エンジニアを続けたい。
しかしインターネットを見渡せば凄腕のエンジニアばかり。
このまま、自分は生き残れるのだろうか...

私も今年、38歳を越え、職場ではCTOとして決断を迫られる中、それでも新しい技術を理解し、向き合って行かねばなりません。 もちろん一日は有限ですから勉強する時間も限られます。

そんな中、私がどうやって新しい技術を理解し、未来の技術を予測し、今の技術を選定しているか。
そのために日々をどう過ごしているか。そんな "エンジニアとして生き残るためのhack" を皆さんにお伝えします。

ピカソは言った。「優れた芸術家は模倣し、偉大な芸術家は盗む。」

先人の言葉を例に上げながら、課題を解決するエンジニアになるためのロードマップをお話します。

16
採択
2023/06/24 17:15〜
Fusicホール
LT(5分)

Laravel ShiftでLaravelのバージョンアップしてみた話

kanbo0605 カンボ@沖縄

皆さんはこんな課題ありませんか?
・そろそろLaravelのサポート切れるのでバージョンをアップしないとまずい。
・でも、手動で一つ一つコード書き換えていくのが大変。

そんな時に便利なのがLaravel Shiftです!
Laravel Shiftは簡単にいうと、課金すれば Laravel のアップグレードを自動でやってくれるというものです。
今回は実際にLaravelリポジトリのバージョンアップをしてみた体験談も交えて話します!
ただ、一筋縄ではいかなかったので、その辺も含めて話します!笑

2
レギュラートーク(45分)

オレがオブジェクト指向をやめるために必要な3つのPHP RFC

kis きしだ なおき
kis

みんな、オブジェクト指向やめたいですよね?(うんうん)
けれども、オブジェクト指向やめたいと思ってもPHPには機能が足りません。
このセッションでは、オブジェクト指向をやめてコードを書くときに大事な考え方、抽象データ型と代数的データ型、そしてそのために必要な機能とそれを提案するPHP RFCについて紹介します。

--
抽象データ型、代数的データ型の考え方と、直積型、直和型、パターンマッチングとそれを提案する「PHP RFC: Algebraic Data Types」について話そうと思います。
https://wiki.php.net/rfc/adts

15
レギュラートーク(30分)

PHP で学ぶ非同期処理

m3m0r7 めもり〜

以前まで PHP で非同期処理を扱うためには様々な制約をクリアする必要がありました。しかし,昨今の PHP では非同期処理を容易に扱うためのライブラリである Swoole や,parallel,PHP 8.1 からビルトインされた Fibers などがあります。
しかし,そもそも非同期処理とはどういったものなのでしょうか。非同期処理を調べていくと並行処理や並列処理,マルチスレッドやマルチプロセスなど様々な単語が出現しますが理解するのもハードルが高いと感じる方もいらっしゃるかと思います。
本トークは初級者から中級者向けに非同期処理について,拙著「Swooleで学ぶPHP非同期処理」からいくつか引用・補足し,非同期処理の基礎から PHP で非同期処理を実現する方法をお伝えします。

9
レギュラートーク(30分)

PhpStormとGitHub CopilotでAIと協働する

ippey_s 角田 一平

ChatGPTやGitHub Copilot Xなど、今年に入ってさらに熱くなってきたAI業界。
今年からGitHub Copilotを使い、AIと一緒にプログラムを書いていますが、私たちの仕事にも大きな変化が訪れる気配を感じます。

今セッションでは、PhpStormとGitHub Copilotを使ったライブコーディングを行いながら、AIと協働するメリットや気をつけるべき点などをご紹介します。

17
レギュラートーク(45分)

PHPerも(?)本を読もう

uzulla uzulla

「いい本ありますか?」しばしば聞かれます。紹介したとして貴方は本当に読んでいるのか…?というのはさておき、本を読むというのは一般的にはメリットのある行為です。

紹介した本が本当に読まれているのかはさておき(???)、聞かれたときに答える最近の本をご紹介するのは当然として、さらに一歩進み、「読んだ本を経典・正義にするな」という話をしたいと思います。

なお、PHP以外の本もご紹介します。なぜならPHPの本がないから…ではなく、万物は大体同じだからです。
PHP以外の本を読む事により、あらたなインサイトを貴方がえられるように頑張ってみたいと思います。

まあ、そうはいうても私の趣味もはいりますので、「これが聖書…!」と言う受け止め方はしないでくださいね!!

8
レギュラートーク(45分)

使おう!!xdebug!!

uzulla uzulla

PHPは実のところ非常にデバッグがしやすい言語です。なぜならxdebugという非常に優秀なデバッガがあり、それを支えるエコシステムが存在するからです。xdebugを使うことで便利に、詳細に、迅速にデバッグを行うことができます。

しかしながら「xdebugなんていらないよ!print debugで十分!」という声もよく聞きます。

そんなことはない!!(断言)

ということで、多機能なxdebugで単なるステップ実行以上をご紹介します。

こんな魔法のような事までできる!そうxdebugならね!!

話さないこと

  • xdebugのインストール方法(ググればでてきますし、個々の環境で差があるので)
14
レギュラートーク(45分)

愉快なイベント駆動型システム アンチパターン

ex_takezawa ytake

イベントソーシングやCDCなどのテクニックは、
レガシーシステムの移行やデータ移行・データパイプライン、
リアクティブシステム構築に欠かせない重要な要素です。
しかし、取り入れ方を間違えると致命的なアンチパターンに陥ってしまうこともあるんです。
例えば、状態をもたせないイベントでマテリアライズドビュー化してしまったり、
巨大なランタイムを持たせてしまったハンドラ、
分割しすぎて時系列を無視したイベント、
まったく互換性のないメッセージなどなど。
でも大丈夫!少しのミドルウェアの知識やドメインについての知識があれば、これらの問題は防ぐことができます。
ここでイベントソーシングやCDC、Outboxについて説明しながら、複雑さに立ち向かう方法を楽しくお伝えします!
実際にやってしまった失敗談や成功談をもとに、
これらのテクニックが何なのかをわかりやすく説明します。一緒に楽しく学びましょう!

このセッションはPHPにフォーカスしたものではなく、システムやアプリケーション全般に関するトークとなります。

19
レギュラートーク(30分)

ぼくの PhpStorm の使い方を見せるからみんなの使い方も見せてくれ!!

chatii ちゃちい

超強力な統合開発環境 PhpStorm
今や多くの PHPer にとって無くてはならないエディタでありIDEであることに疑いはありません
多機能であるがゆえ、「えっ、何そんな便利機能があるの?知らんかった!」がまれによく発生します

PhpStorm を使い始めてそろそろ12年 (マジかよ) になりますが
まったく使いこなせている気がしません

ライブで「こんな機能あるんだよ」を紹介しますので
おおーなどと反応したり
こんな機能もあるぞーなど紹介(ガヤ)してほしいです

(ショートカットキーの話はしないです)
(PhpStorm を使っていない方はその便利さに圧倒されてください)

8
採択
2023/06/24 13:10〜
VAddyホール
レギュラートーク(45分)

あなたのPHPアプリ、ログはでてますか?あるいはログをだしてますか?

uzulla uzulla

ログでてますか?当たり前ですよね、でてますよね。しかし「ログを出す」事については無頓着な人が多い印象があります。

過去、ログで助かった人も大勢いるのではないでしょうか?しかしながら、APMなどが発達した今においてはログなんて適当でよいや、とかなってませんか?あるいはなんとなく出すだけでリリースしたら見てないな〜ってなってませんか?

  • ログなんて書いたことが無いな〜
  • Apacheやphp-fpmのエラーログのこと?
  • フレームワークについているロガーで十分だよ

そういった方々、今一度ログについてかんがえてみませんか?

あなたはちゃんとログを出していますか?

話すこと(予定)

  • PHPの標準ログ機能は便利で複雑
  • ログと割れ窓
  • デファクトスタンダードのmonologはいろんな事ができる
  • より運用に沿ったログとは?
20
レギュラートーク(45分)

その場にいる皆さんと一緒にオレオレフレームワークを作ってみましょう

o0h_ きんじょうひでき

FWの気持ちを理解できると、きっと素敵ですよね
その為に「自分でFWを作ってみる」というアプローチがあります。今風の要件を備えた物を自作する事で、普段使っているFWを読み解く勘所を掴みやすくするのです

PHPerKaigi 2023では、FWの自作は開発者のレベルを高めるはずだ!という仮定のもと、今風のFWの要件を考察し実装するというテーマのトークを行いました
今回のトークでは、その際に得たFWを例に、実際に動くものを作り上げていく事に主眼を置いて発表します
ハンズオンっぽい形やライブコーディング風の説明を多く取り入れるので、是非その場で一緒に手を動かしながら聞いてください

狙い

  • FW、怖くないやい!読める!と思える
    • 普段から気軽にFWのコードリーディングをしちゃう人を増やす
  • DIコンテナの使われ方(FWがどう依存を注入しているか)を掴む
  • PSR-15/ミドルウェアパターンのイメージを掴む

対象

内容

  1. 作成するFWの概要
  2. FWを作ってみる
  3. 2を使って簡単なアプリを作成する

「2. FWを作ってみる」のスコープ

  • ルーティング、ディスパッチ
  • PSR-15のミドルウェア
  • コンテンツの描画(プレゼンテーション層)
  • コンテンツを出力するEmitter
  • ユースケースの処理(アクション)

※ 以下は実装を割愛

  • DIコンテナ(PSR-11): league/containerを利用
  • HTTP Factories(PSR-17): nyholm/psr7を利用
  • DB層(”モデル”): 割愛
3
レギュラートーク(30分)

すばやく実装するための戦略とテクニック 2023年版

77web 菱田裕美

2018年のPHPカンファレンス関西で発表した「すばやく実装するための戦略とテクニック」から5年、「速さは力」をモットーに相変わらずスピードを出してコードを書いています。
自分では「長く在籍してドメイン知識がついたせいでは?」と思っていましたが、副業に行っても、転職しても、やはり「プルリクが光速」「レビューが追いつかない」と同僚から褒められたりクレームを言われたりします。
文系ですし、20代半ばで初心者からPHPを始めた身なので、才能があるわけではありません。
速さを実現するために積み重ねている工夫や使っているテクニックを、2023年現在の内容にアップデートしてお伝えします。

18