PHP Conference Japan 2021 トーク一覧

Long session (60 mins)

PHPer のための Go の歩み方

m3m0r7 めもり〜 m3m0r7

ふと「別の言語も学んでみたいけど、とっつき方がわからない」と思う方も多いのではないでしょうか。
特に近年よく使われる Go などを触ってみたいけど、難しそうと思いなかなか手を出しづらいと思っている方もいらっしゃるかもしれません。
Go をチョットワカルようになるだけでも PHP にはない新鮮さ、楽しさを感じることができます。
そこで PHPer が Go を学ぶにあたって何を気をつければいいのか、どうすれば Go をチョットワカルようになるのか解説します。

2
Long session (60 mins)

PHPer のための TypeScript の歩み方

m3m0r7 めもり〜 m3m0r7

ふと「別の言語も学んでみたいけど、とっつき方がわからない」と思う方も多いのではないでしょうか。
特に近年よく使われる TypeScript などを触ってみたいけど、難しそうと思いなかなか手を出しづらいと思っている方もいらっしゃるかもしれません。
TypeScript をチョットワカルようになるだけでも、業務の分野が広がり、フロントエンドエンジニアの業務がどういったことをやっているのか理解しやすくなります。
そこで PHPer が TypeScript を学ぶにあたって何を気をつければいいのか、どうすれば TypeScript をチョットワカルようになるのか解説します。

1
PHP8 Long session (60 mins)

噂の Fiber 試してみました

m3m0r7 めもり〜 m3m0r7

みなさん、非同期処理に興味はありますか?私はめちゃくちゃ興味があります。ところで私が所属しているトラーナでは Swoole をプロダクション環境で使用しているのですが、昨今 Fiber が界隈を賑わせています。そこで Fiber を実際に試してみて、かつ Swoole とどう違うのか、何がメリットなのか、何がデメリットなのか?プロダクションで使用するにはどうすればいいのかをトークさせていただければと思います。

2
Database Regular session (25 mins)

PHPer のための Elasticsearch 入門

m3m0r7 めもり〜 m3m0r7

みなさんは全文検索エンジンを使用したことはありますか。全文検索エンジンで有名なものと言えば Elasticsearch や Groonga, MySQL に備わっている Full Text Search (FTS) などです。MySQL の like で検索するとレコード数が多いデータの場合、数秒どころか数十秒、数分かかるなんてザラです。そこで全文検索エンジンを使うことで、多くのレコードやドキュメントを瞬時に検索できるようになります。Elasticsearch の仕組みの解説から、Elasticsearch-PHP を使って、実際にどのように全文検索のためのクエリを構築するのか、ユースケースを交えてお話できればと思います。

Service Development Test / Quality Regular session (25 mins)

理解しておくべき PHP のバリデーション

m3m0r7 めもり〜 m3m0r7

Web アプリケーションを作るにあたって、絶対に外せないのは「ユーザーから受け取った値をデータベースに保存する」といったものです。
特に初心者が気をつけたいのは受け取った値の取り扱いです。例えば POST のリクエストで金額を受け取る時「is_numeric 関数だけを使えばいい」と答える人もいるかもしれませんが、これは答えとしては NO です。理由は 3 つあります。「金額は原則 0 以上の自然数である」「is_numeric だと float の値も true となる」、そして「PHP_INT_MAX 円で本当に大丈夫?」です。このようにバリデーションは実は奥が深いのです。様々なケースで、どういうバリデーションを書けばいいのか?金額だけではなく、電話番号、メールアドレスなど、セキュリティではなくプロダクトで必要となるバリデーションの話を広く浅く解説していければと思います。

2
Asynchronous Regular session (25 mins)

Swoole で安全にコルーチンを使うには

m3m0r7 めもり〜 m3m0r7

何かと話題な Swoole ですが、特にデータベースや KVS (例えば Redis) 周りを扱うにあたって少しコツが必要です。Swoole の最大のメリットの一つとして手軽に非同期処理を導入できるという点ですが、データベースや KVS 周りはコルーチン安全ではない可能性があります。では、実際にコルーチン安全にして、既存のアプリケーションで使用するにはどうしたらいいのか、Laravel に Swoole を導入すると仮定して laravel-swoole と呼ばれるフレームワークをベースに解説します。

2
Regular session (25 mins)

PHPer のための Go の歩み方

m3m0r7 めもり〜 m3m0r7

ふと「別の言語も学んでみたいけど、とっつき方がわからない」と思う方も多いのではないでしょうか。
特に近年よく使われる Go などを触ってみたいけど、難しそうと思いなかなか手を出しづらいと思っている方もいらっしゃるかもしれません。
Go をチョットワカルようになるだけでも PHP にはない新鮮さ、楽しさを感じることができます。
そこで PHPer が Go を学ぶにあたって何を気をつければいいのか、どうすれば Go をチョットワカルようになるのか解説します。

4
Regular session (25 mins)

PHPer のための TypeScript の歩み方

m3m0r7 めもり〜 m3m0r7

ふと「別の言語も学んでみたいけど、とっつき方がわからない」と思う方も多いのではないでしょうか。
特に近年よく使われる TypeScript などを触ってみたいけど、難しそうと思いなかなか手を出しづらいと思っている方もいらっしゃるかもしれません。
TypeScript をチョットワカルようになるだけでも、業務の分野が広がり、フロントエンドエンジニアの業務がどういったことをやっているのか理解しやすくなります。
そこで PHPer が TypeScript を学ぶにあたって何を気をつければいいのか、どうすれば TypeScript をチョットワカルようになるのか解説します。

2
Regular session (25 mins)

PHP で電卓を作る

m3m0r7 めもり〜 m3m0r7

プログラミング覚えたての時、電卓を作るといったことをした方や、今現在プログラミングを学習中で電卓を作っている方もいらっしゃるかと思います。
電卓を作るといえば「1+1」と入力したら単純に「2」が出力されるイメージでしょうか。作っているうちに、「あれ?「((1 + 2) × 3)-((1 + 2) × 3)」みたいな式はどうするんだ?」と疑問に思った方も少なくないと思います。そこで本トークでは3分間という短い時間で、複雑な式を計算できる、もう一段階上の電卓を作る方法についてお話します。

3
PHP8 Asynchronous Regular session (25 mins)

噂の Fiber 試してみました

m3m0r7 めもり〜 m3m0r7

みなさん、非同期処理に興味はありますか?私はめちゃくちゃ興味があります。ところで私が所属しているトラーナでは Swoole をプロダクション環境で使用しているのですが、昨今 Fiber が界隈を賑わせています。そこで Fiber を実際に試してみて、かつ Swoole とどう違うのか、何がメリットなのか、何がデメリットなのか?プロダクションで使用するにはどうすればいいのかをトークさせていただければと思います。

2
採択 2021/10/03 10:00〜 Track3 Regular session (25 mins)

SVG画像をPHPで生成しよう

t_motooka motooka t_motooka

会員登録を求めるWebアプリでの初期アバター、ECサイトに商品を登録したときの初期画像。
こういった画像は固定のものを1つ用意しておいても良いのですが、Webアプリケーションの実行時つまりHTTPリクエストを受けたタイミング等で生成することができれば、そのWebアプリはもっとリッチなものになることでしょう。
SVG画像はXMLつまりテキストで書かれるものであるため、生成のために必要な特殊技術は少なく、また現代ではほとんどのブラウザで表示可能であることから、アプリケーション実行時の生成に大変適しています。
このセッションでは、PHPでSVG画像を生成する手法について解説します。以下のものの一部または全部を含む予定です。

  • SVG画像の基礎知識
  • SVG画像の生成手法その1:文字列処理
  • SVG画像の生成手法その2:DOMツリーの処理
  • SVG画像生成のパフォーマンス
  • ラスタライズ(PNG画像化等)の方法や注意点
  • 生成する画像にランダム要素を入れる(色、形、etc...)
Database Regular session (25 mins)

アプリケーションエンジニアが始めたデータ分析入門

glassmonekey 永野峻輔 glassmonekey

昨今のプロダクトの改善・開発を実施していくには、データを可視化・分析することはこの時代必須といえます。
しかし、そのために必要なデータはRDB、ログなどの様々な形式、場所にあり分析をすることは容易ではありません。

今回は私たちのアプリケーションの分析環境をBigQueryに構築したので、その際に得られた以下の学びをご紹介します。

  • アプリケーションデータの永続化で利用しているAuroraからBigQueryとのデータの連携の方法
  • BigQueryを使うことで得られた恩恵
  • 便利な集計クエリのパターン
  • BigQueryの権限管理
6
採択 Composer 2021/10/03 13:00〜 Track2 Regular session (25 mins)

Composer2.0 新機能概論

2020年10月24日に、Composer 2.0がリリースされました。
Composer初のメジャーバージョンアップデートですが、どんな新機能が増えたのでしょうか?

そこでComposer2.0で新しく実装された機能について、時間が許す限りご紹介・解説いたします。
時間の都合で全ての機能について触れられない可能性がございますが、以下の機能について触れる予定です。

  • パフォーマンス向上
  • アーキテクチャの変更による依存関係の更新プロセスの改善
  • ランタイムの新機能
  • 依存関係のエラーレポートの改善
  • パッケージのバージョンの部分的な更新
  • その他便利なオプションなど

Discord Channel: #track2-6-a-composer2

IDE Lightning talk (4 mins)

PhpStorm使ってるんなら.ideaは共有していこうぜ!!

o0h_ きんじょうひでき o0h_

「より良くPhpStormを使うために、コーディング規約やテスト実行の設定をプロジェクトやチームで共通化しよう」

.idea/ ディレクトリを.gitignoreで無視するように設定しているレポジトリをよく見かけます。
もし”慣習的に”そうしているのであれば、勿体ないかも知れません!

普段の開発にPhpStormやInteliJ IDEAファミリーを利用している方も多いのではないかと思います。
高機能でありながら、「少しだけ」使う分にも充分に威力を発揮することには、ユーザーの皆さんも同意されるのではないかと思います。
他方で、「設定しなければいけない項目」も少なくないのも事実です。

Inspectionの設定、Interpreterの設定、テスト実行の設定・・・
これらを「PJメンバー全員で同期する」ことができれば、一気に効率が良くなります。
「生産効率」の水準が揃う、という手段となります。

そのための手段が「.ideaを共有する」なのです!!

どのように使えば良いのでしょうか?
また、それによってどこまで実現できるのでしょうか?

本トークを通じて紹介します!

11