LT(5分)

メイキング・オブ・PHP カンファレンス

2024年は 各地で PHP コミュニティのカンファレンスが開催されます。
PHPカンファレンス小田原2024 もその一つです。

私はこれまで 一般参加者として カンファレンスに参加してきました。
2024年2月開催の PHPカンファレンス関西2024 では、初めて実行委員という 運営側として 参加します。

本トークでは、 PHPカンファレンス関西2024 の実行委員の経験をもとに、 カンファレンスの舞台裏 について紹介します。

あなたもカンファレンスのスタッフになって、舞台裏での物語をつむいでみませんか?

2
LT(5分)

5分で学ぶ autoload 概略

Laravel では、 ファイル名と namespace を対応させることで、 require 文を書かずとも別ファイルに定義されたクラスを読み込むことができます。
これは、 PHP の autoload という機能で実現されています。

このトークでは、 PHP の autoload の概要について 5分で紹介します。
autoload の例として、 Laravel でどのように別ファイルのクラスを読み込んでいるかも簡単に説明します。

5分という短時間 で autoload についてなんとなく理解してみませんか?

1
採択
2024/04/13 14:40〜
ぼこ
セッション(15分)

SREとその組織類型 ~多様化するSREについて改めて考えてみた~

tatsuo4848 よこやまたつお

SRE、この言葉からあなたは何を想像しましたか?
会社のAWSアカウントを管理してくれている人!困ったときに助けてくれる人!SLI/SLOを推進する人!
さまざまあると思います。
SREの起源であるGoogleではSRE(サイト信頼性エンジニア)の名の通り、運用するサービスの信頼性を保つことが責務とされていました。
現代では Enabling,Embedded,Platformなどなど多様なSREが存在しています。
サービスの信頼性を保つという観点は同じでもそのアプローチ方法は多様です。
このトークではこれらの違いについて弊社での実体験も交えて説明します。
ぜひ、皆さんの会社におけるSREについて考えるきっかけを作れればと思っています!

小田原っこ: 小田原の会社で働いていました!

セッション(15分)

PHPのOSSのコードを読んでみる、どこからやる?

o0h_ きんじょうひでき

開発をやっていると、ソースコードという「中見を知る」のは便利、もしくは逃げられません。
そして、Web系の開発ではOSS=部外者のコードにお世話になっている事がとても多いです。
──つまり、「スラスラとOSSなコードを読めたら、問題の解決の質や早さが向上する」と言えます!

しかしながら、初めてOSSの中見を読んでいくのには、いくつかの難しさもあると思います。

  • 「自分のチームでの開発物」なら隣の人に聞ける事を、コードから読み解いていく必要がある
  • コードの量がある程度大きくなっている

このトークでは、PHPのOSSパッケージを実例として取り上げ、そうした壁を乗り越えて「やってみる」ためのコツや情報の使い方を共有します。
少し大きめのコードでも臆せず読んでいけるようになるぞ!!

話すこと

  • 動かしながら読む
  • テストから読む
  • 便利な道具
  • 心構え的なもの
2
セッション(15分)

「うわっ…うちのテスト、遅すぎ…?」PHPUnit高速化テクニック

pinkumohikan pinkumohikan

「テストがないコードはレガシーコードだ!」
Webアプリ開発において、テストコードが書かれることは一般的になりました。

ですが、テスト完走までにかかる時間は適切でしょうか?
テストにかかる時間は生産性に直接的な影響を及ぼす重要な要素です。早ければ早いほど良い。
本トークでは、PHPUnitで書かれているテストを高速化するテクニックについてお話します。

お話すること

  • 「phpunit-speedtrap」プラグインを使って遅いテストを検出する
  • Googleが提唱する「Test Sizes」を取り入れて、テスト対象をCIとローカルで変えるテスト戦略
  • makeやparatestを使ったテスト実行の並列化
  • (Laravelの場合) DatabaseMigrations Traitは遅いので出来るだけ使わないほうが良い
  • テスト時でもOPcacheは効くのか
2
セッション(15分)

どうやってWebサービスのページ表示速度を1/3にしたか

pinkumohikan pinkumohikan

速さは正義。Googleもそう言っている。

Webページの表示速度はユーザ体験に直結し、ひいてはビジネスKPI (購買率、アクティブ率、解約率、etc...) にも影響を及ぼします。
本トークでは、Instagram分析ツール 「SINIS for Instagram」 のページ表示速度を約1/3にした事例をもとに、どうやって課題を見つけ、何の改善を試み、その結果どうなったのかについてお話します。

お話しすること

  • Core Web Vitals
  • ベンチマークツール Vegeta
  • index見直しやSQL組み換えによるクエリチューニング
  • XDebug x Webgrindでプロファイリング
  • GraphQL Schema Caching
  • PHP OPcacheでPHPバイトコードのキャッシュ
2
セッション(15分)

キャリアとしてのフリーランスWebエンジニア

pinkumohikan pinkumohikan

だいぶ市民権を得てきたフリーランスという働き方。
Web開発者界隈でも人気のキャリアになりつつあると感じます。

本トークでは2019年にフリーランスになって4期目を迎え、酸いも甘いも経験してきたわたくしがフリーランスのWebエンジニアとして働くということのメリット・デメリット、理想と現実についてお話します。

想定観客

  • Webエンジニアとしてのキャリアに悩まれている方
  • フリーランスという働き方に関心がある方
  • フリーランスになるか迷っている方

お話しすること

  • そもそもフリーランスとは何なのか
  • 正社員との働き方の違い
  • 理想と現実
  • どういう人がフリーランスに向いている、向いてないのか
  • どうやって仕事を取るか
  • いつまでフリーランスとして働けるのか
2
セッション(30分)

Azureもなかなか良いですよ! - PHPerの為のAzure入門

kaz_29 渡辺一宏

みなさん様々な環境にPHPのアプリをデプロイしていることと思います。

PHPコミュニティでは、Azureを使った事例はあまり公開されていないように思います。
AzureにもPHPをデプロイするのに適した良いサービスがたくさんあるのですが、「Azureはどこから手をつけていいかわからない...」といった話を聞くことも多いです。

そこで、このセッションでは、AzuereでPHPを含む今時なWebアプリケーションを動かすことのできる様々な環境を比較しつつご紹介しようと思います。

想定する聴講者
PHPをAzureで利用する環境に興味がある方
Azureには興味があるが、どこから手をつけて良いかわからない方
Azure初心者〜中級者の方

1
セッション(30分)

PHPからはじめるコンピュータアーキテクチャ

tomzoh 長谷川智希

現代のコンピュータはハードウェアから私たちプログラマが書くプログラムの動作までの間が多くのレイヤーに分けられて動作しています。
レイヤーは自分より下を抽象化し、下のレイヤーを詳しく理解しなくても多くの場合プログラマはプログラムを書けます。
一方、プログラムが期待した様に動作しない時には下のレイヤーの動作の理解が問題の解決の助けになることもあります。

このトークでは私たちが愛するPHPをスタート地点にして、「CPUによる"プログラム実行"」「 PHPやJavaとC言語の根本的な違い」など、コンピュータプログラムがどの様に動作するのかを解説します。

コンピュータのレイヤー構造を理解すると、いままでは見えていなかった角度からプログラミングを楽しめるようになります。
このトークを通じて、低レイヤーが好きになったり、いろいろなレイヤーで面白いことをしたりする方が増えることを期待しています!

2
採択
2024/04/13 17:15〜
かま
LT(5分)

PHP初心者がカンファレンス締め切り駆動で何か作ってくるよ

stefafafan すてにゃん

私はこれまでの業務で主にPerl、Go、TypeScriptなどを書いてきました。PHPは1行も書いたことがありません。

PHPカンファレンス福岡2023に何気なく参加したところとっても楽しく暖かいコミュニティだったので、「これは登壇する側にならねば!」と思いました。

このLTではPHPカンファレンス小田原2024当日までに締め切り駆動で初めて扱うPHPで何かしら成果を作り公開します。作ったものを当日発表するのでクオリティはおいておいて楽しみにしてもらえれば嬉しいです。

開発の中でPHPに対しての感想も出てくると思うので他言語経験した人からの視点も共有できればと思っております。

セッション(30分)

PHPでメールを取り込む 2024

tomzoh 長谷川智希

PHPでメールサーバからメールを取り込みたいと思ったことはありますか?
メールと言えばPOP3/IMAP4ですのでPOP3やIMAP4を使えば良さそうですが自分でPOP3/IMAP4を喋るのはややシンドイですね。

このトークではPHPでメールをメールを取り込むにはどうしたら良いか、そして最も広く使われているであろうメールサービスのGmailからメールを取り込む方法をお話します。

  • PHPで使えるPOP3/IMAP4のライブラリ
  • メール受信に関わる多数の落とし穴
  • IMAP4で新着メールのみを取り込む方法
  • GmailのアプリパスワードとXOAUTH2対応

インターネット黎明期から存在するインターネットメールに放たれる自由奔放なメールは素手で立ち向かうにはやや手強い。
このトークがメールと戦うみなさんの力となることを祈っています。

2
セッション(15分)

XOAUTH2を使ってGmailからメールを取り込む

tomzoh 長谷川智希

Gmailからメールを取り込みたいと思ったことはありますか?
GmailはPOP3/IMAP4をサポートしているのでPOP3やIMAP4を使えば良さそうですがIDやパスワードは何を使えば良いでしょうか。
実はGmailはXOAUTH2という規格に対応しており、XOAUTH2を使ってWebベースの画面遷移でパスワードを取得することができます。
このトークではGmail + XOAUTH2を想定して以下の様なトピックをお話します。

  • PHPで使えるIMAP4のライブラリ
  • IMAP4で新着メールのみを取り込む方法
  • GmailのアプリパスワードとXOAUTH2対応

なかなか情報が少ないIMAPやGmailのXOAUTH2対応ですので、このトークが同じ課題に立ち向かうみなさんの力になることを祈っています。

1
セッション(15分)

PHPのビルトインウェブサーバーを本番環境で使ってはいけないN個の理由

takeokunn たけてぃ

PHPのビルトインウェブサーバーを使ったことはありますか?
Laravelユーザーの方ならおそらく「php artisan serve」というコマンドで使ったことがあるかもしれません。

HerokuやAWS ECSのLaravelデプロイ時に「php artisan serve」を使用する例もちらほら見受けられますし、公式サイトでもこのようなサンプルが紹介されています。
しかし、php公式では本番環境での使用を禁止しています。
https://www.php.net/manual/ja/features.commandline.webserver.php

本トークでは、ビルトインウェブサーバーの注意点について実例を踏まえてその弊害についてお話しします。

2
LT(5分)

PHP pcntl拡張でプロセス制御しよう

takeokunn たけてぃ

PHPには公式野良含め数多の拡張が存在しています。

その中の一つに、プロセス制御を行うための公式の拡張機能であるpcntlがあります。
知られている使い方の一つには、Laravel Jobのタイムアウト処理やPHP-FPMでの利用があります。
このトークでは、pcntlの導入方法と実例を交えた利用方法について話します。

1
採択
2024/04/13 16:05〜
かま
セッション(15分)

Laravelに0からPHPStanを導入して継続的に運用する方法

takeokunn たけてぃ

近年、PHPプロジェクトの品質を高めるためのツールとしてPHPStanのような静的解析ツールが導入されるケースが増えています。

PHPStanを導入することによって、PHPでもJavaやTypeScriptのように静的解析の恩恵を受けることができます。

  • コードを解析しやすくなるのでIDEが賢くなって補完やコードジャンプがしやすくなる
  • 網羅的に検査しているのでコード修正によるエンバグを減らすことができる
  • etc

既存のコードベースに初期導入するのは、コードベースが大きい程ハードルが高くなりがちです。
本トークでは40万行のLaravel PHPにPHPStanを導入した実例を踏まえて、どのように導入したのかをお話しします。

想定対象読者

  • これからLaravelにPHPStanを導入したい人
  • PHPStanを継続的に運用する方法に興味がある人
セッション(15分)

WordPressのブロックエディタでテーマ開発をしよう

takeokunn たけてぃ

WordPressの機能の一つにブロックエディタというものがあります。
ブロックエディタはカスタマイズ性や柔軟性が非常に高く、デザインの編集など、管理画面上で殆どの対応が完結します。

ブロックエディタは管理画面上での編集のみならずコードベースでの管理もすることができます。
しかしながら、コードベースで管理する方法についてWeb上で検索すると不十分な公式ドキュメントしか見つかりません。
機能を十分に使うにはWordPress本体のコードを読むしかなく、ベストプラクティスのようなものも自分が知る限りでは存在していないようです。
今回のトークでは、実際に自分が初期導入から実装までやった経験を踏まえて、どのように開発していけば良いのかの一例をご紹介します。

想定対象者

  • これからWordPressでテーマ開発をする人
  • ブロックエディタを深堀したい人
セッション(15分)

ITエンジニアにとって、なぜ「本を読むと良い」と考えるのか

o0h_ きんじょうひでき

当トークは、
聴取者にとって「自分は本を読むべきか、どう読書をすれば良いのか」を発見するヒントになることを目指します。

──本を読むのは良いぞ!!
それは何故でしょうか?

読書による学習方法には、例えば次のような特徴があると考えます

  • アーカイブ性: 時期や時代に関わらずアクセスできる
  • 流通性: 質・幅・量の面で色々なものにアクセスしやすい

ここから色々な旨みが生じます

  • 今の自分の状況を超越して知識にアクセスできる
  • 共通の本を読んだ人のリアクションや考えにアクセスできる

私自身は、こうした特性に助けられてきました。
実際、読書を通じて「壁を突破できた」ような経験をする場面が何度もあります。
当トークで、その想いや分析を共有できるでしょう。

「成長したい」「楽したい」を叶えたい人に聞いて欲しいです。
読書ができると何を得られ、どう活かすかを一緒に考えてみませんか?

採択
2024/04/13 16:30〜
ぼこ
セッション(15分)

単体テストを書かない技術

o0h_ きんじょうひでき

テスト書いてますか?ますよね?
─果たして、本当にそれが正解でしょうか。

テストには「欠陥があることの証明」が重要です。
「証明しなくて良い事」が増えれば、テストの責任も軽減されるでしょう。
つまり、書くべきモノが減ります!!
実際に、設計技法やPHPの機能、ツールによって、そんな願いが叶えられると考えます。
例えば「引数にint型宣言」で、「文字列を受け取ったらどうバグるかの証明」はお役御免です。

良い意味でテストを減らす道・・・探りましょう!

持ち帰って欲しいもの

  • 改めて「テストの訳」に立ち返る
  • 「横着してテストを書く」以外の方法を模索する

話すこと

  • 単体テストに何を期待していますか?
  • 安心できて開発体験も良いコードに想いを馳せる
  • 「テストを書く」以外に責任を分散する

話さないこと

  • E2Eなど、単体テストよりも「広め」のテストについて
セッション(15分)

PHPでNotionのデータベースにCSVをインポートするフォームを作ってみる

ttskch たつきち

NotionにはデータベースにCSVでレコードを一括投入するための 「CSV取り込み」 という機能が標準で搭載されています。
が、少なくとも2023年11月現在においては正直だいぶ貧弱な機能で、本当に最低限のことしかできません。
(例えば、インポートできるプロパティの種類が限られている、ページ本文はインポートできない、「名前」カラムの値が重複している行があると正常にインポートできない、など)

そこで最近、必要に迫られてPHPでNotionのデータベースにCSVをおインポートするフォームを自作しました。
このトークでは、このフォームの具体的な実装手順を、デモを交えつつサクッと解説します。

1
LT(5分)

要件ヒアリングに自信ニキは顧客との対話中に何を考えているのか

ttskch たつきち

どうも、要件ヒアリングに自信ニキです。
私はフリーランスエンジニアとして受託開発のお仕事をよく頂くのですが、お客さんとの対話・ヒアリングを割と得意としています。

お客さんはシステム開発のプロではないので、説明が的を射ないことも多く、複雑なシステム要件のヒアリングには根気と体力を要しますよね。
そればかりか、なかなか合意や結論に辿り着けずいたずらに時間が奪われた挙句、結局失注して悲しみ、といった経験はないでしょうか。

私はよくお客さんから「1しか言ってないのに100のアウトプット出てくるんやが」「話が早すぎてもはや笑える」などと言われます。
一体私はお客さんとの対話中に何を考え、どんな手順でヒアリングを進めているのでしょうか。

このLTでは、お客さんとの対話中の私の頭の中身をまるっと皆さんにシェアします。
明日からのお客さんとの対話・ヒアリングに少しでも役立てていただけると嬉しいです!

4