セッション(30分)

PDO / Eloquent / Doctrine ORM それぞれでの生 SQL の扱い方

okashoi おかしょい/岡田 正平

フレームワークに備わっているようなクエリビルダや ORM、便利ですね。

一方で「この SQL 文はクエリビルダの機能では表現できないな」「長年使われてきた秘伝の SQL 文があってな......」といったケースで生の SQL 文を使わざるを得ない、というケースがあるかもしれません。

そこで今回は以下の 3 つの手段で生 SQL を扱う方法を説明します。

  • PHP に組み込まれている PDO
  • Laravel で使われている Eloquent
  • Symfony で使われている Doctrine ORM

本トークで扱うもの

  • 各手段で生の SQL を実行し結果をオブジェクトにマッピングする方法
  • 具体的なコードやセットアップ
  • それぞれのメリット・デメリット

本トークで扱わないもの

  • 各 ORM の「王道」の使い方
  • 実アプリケーションにおける応用
1
セッション(15分)

静的解析ツール PHPStan を活用して実装上のうっかりミスを早期発見しよう!

okashoi おかしょい/岡田 正平

不具合が確認され、丸一日かけて調査したら原因はうっかりミスによる構文エラーだった.......そんな経験ありませんか?
「そんなうっかりミスを実行する前に気づけたらいいな」そう思ったあなたにお勧めするのが静的解析です!

本トークでは PHP 静的解析ツールの一例として PHPStan を取り上げて、それが使えるとどんなことがいいのかをお話します。

本トークで話すこと

  • 静的解析と PHPStan についての概要
  • こんなうっかりミスを検出できます

本トークで話さないこと

  • PHPStan の詳細な使い方、設定
  • 型にまつわるお話
1
セッション(15分)

ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜

okashoi おかしょい/岡田 正平

フレームワークのドキュメントに従って、あるいはプロジェクトの既存のコードに従ってファイル上部に書いた「namespace」「use」といったキーワード。

この意味、正しく理解していますか?
「ディレクトリ名と対応させて書くやつ」「他の言語でいう import みたいなやつでしょ?」みたいな認識をしていませんか?

実は PHP の機能としては namespace(名前空間)とディレクトリ名、ファイル名には一切の関係はありません!

「じゃあ、なんで require とかを書かずに他のファイルに定義したクラスを使えているの?」と思ったあなたに、その仕組みと、それらを支えている存在をお教えします。

1
LT(5分)

プルリクエストを小さくしてみんなで幸せな開発ライフを送ろう〜巨大PRからの脱却〜

takaaki_w しみたか

2人月くらいの工数がかかる機能開発を1人で担当することになりました。
必死にコードを書いた結果、気づけば1回で80ファイル分の変更がある地獄のような巨大プルリクが出来上がっていました。

レビューをすり抜けたバグが障害を発生させてしまい、どげんかせんといかん!となった時に改善しなければならないと決意しました。
その結果、リリースを細かくできたり、障害の発生が抑えられたりと良いことづくめで開発品質を上げることができるようになりました。

このLTでは、PRを分割した方法や分割することの得られた効果についてお話します。

PRを小さくしてみんなで幸せな開発ライフを送りましょう。

セッション(30分)

Laravel で GraphQL サーバーを実装してみよう

GraphQL はクエリ言語を用いて、クライアントが必要とするデータを API に 過不足なく伝達できる という、 従来の REST API では実現が難しい機能 が利用できます。

GraphQL はさまざまなプログラミング言語でサポートするためのライブラリが用意されており、 PHP 用のライブラリも用意されています。

本トークでは、 GraphQL の基礎を説明したあと、 Laravel で GraphQL サーバーを実装する方法を紹介します。
Laravel の GraphQL サーバーライブラリとして、 Lighthouse を利用します。

GraphQL の基礎を学び、 API サーバーを実装してメリットを体感してみませんか?

1
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
セッション(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
セッション(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
セッション(15分)

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

takeokunn たけてぃ

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

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

想定対象者

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

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

o0h_ きんじょうひでき

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

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

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

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

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

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

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

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

セッション(15分)

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

ttskch たつきち

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

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

1