PHPカンファレンス沖縄2021 プロポーザル一覧

他イベントOK LT(5分)

Snowflakeの威力を見よ!

foursue ちゅらデータCTO菱沼雄太 foursue

PHPでも2000億行のデータを扱えるんやで、そう!Snowflakeならね!

4
他イベントOK レギュラートーク(10分)

未来のPHPを先取りするPolyfillの世界

tadsan うさみけんた tadsan

うちのPHPはまだ7.1だから、その関数は使えないよ…

そんなことを言われて悲しい気持ちになったことはありませんか? PHPにもPolyfill(ポリフィル)とよばれるパッケージ群があり、バージョンの差異や環境を埋めるためのライブラリが提供されています。

今回のトークではPolyfillでできること、再現できないこと、実装方法などを簡潔に解説いたします。

4
他イベントOK レギュラートーク(10分)

技術的負債を返し続ける取り組み ~ あなたのPHPのバージョンいくつですか?~

akki_megane 秋葉 誠一 akki_megane

あなたの使っているPHPのバージョンいくつですか?
わたしはPHP8 です。

コードを書き、動くソフトウェアを作り価値を提供することがわれわれの仕事です。
しかしコードを書くということは同時に、書いたコードのメンテナンスコストという支払い続けるという負債を負うことなります。

  • サポート期限の切れた 言語、フレームワーク、ライブラリ
  • イケてない設計
  • 現実と解離する実装
  • 使われてない機能
  • あのときは最高だったコード
  • 過去の自分をしばきたい設計

こういったいわゆる技術的負債は優先度すらつけられず、「一生いつかやる」という状態になり、
気づいたときには、莫大な利子を伴い返済不可な状態になってしまいます。
そんなことにならないために弊社で行っている、「技術課題リファインメント」を用いた日々のプロダクト改善活動の事例をご紹介します。

6
他イベントOK LT(5分)

思い出すシリーズ: 非推奨になった PHP の構文

__Mitsui ミツイ __Mitsui

どうも!PHP 5.3 でも動くプログラムを書いている三井です。
ついに PHP 8 がリリースされ、アロー関数をはじめとして便利な機能・便利な構文も増えましたね。

...でも、そんないまどきな機能使えないんです。なぜなら PHP 5.3 でも動くプログラムを書いているから。
そんなことを言って下を向いていても仕方がない。もっと前を向いて、遥か昔に非推奨になった構文を振り返りましょう(?)

PHP 8 時代の今だからこそ味わいたい、PHP 4 の頃はこんな書き方してたよねシリーズをお送りします。

1
他イベントOK レギュラートーク(30分)

今日からできる安心型付け入門

tadsan うさみけんた tadsan

PHP 7.0以降は引数にint, stringなどの型が書けるようになるなど静的型についての機能が充実しています。
またPhpStormのようなIDEやPHPStanのような実行しなくてもコードを解析・補完入力できるツールが揃ってきています。

今回のトークでは、できる限り型についての事前知識がなくても使えるよう以下の内容について扱います。

  • プロジェクトに段階的に静的解析を導入するための考えかた
  • PHPの型の特性とPHPDocでつける詳細な型
  • 自分が使おうとしている「配列」が何者なのかを見極める
  • 外部入力値を静的な値として扱うための方法
  • 関数やオブジェクトの型を複雑しすぎないための考えかた
4
他イベントOK レギュラートーク(30分)

Dependency Injectionとデザインパターン

rukiadia Sho Yamada rukiadia

皆さんはDIというワードを目にしたことがあるでしょうか?

https://fortee.jp/phperkaigi-2021/proposal/bfa7dda5-fa76-472f-bfbb-3e76f3434581
私は以前、PHP関連のイベントでDIについての発表をし、DIに関する内容の話をしました。
DIがデザインパターンであるという結論を語ることができたのは良かったのですが、そこで新たな疑問が湧いてきました。

「DIとは既存のデザインパターンを組み合わせたものなのか?」
「それとも、DIとGoFのデザインパターンは全く異なるものなのか?」

DIの実装パターンの話などにも触れつつ、デザインパターンの話を深堀りしていきたいと思います。

4
他イベントOK LT(5分)

駆け出しプログラマ必見!『サイゼリヤのまちがいさがし』で学ぶエンジニアリング精神

__Mitsui ミツイ __Mitsui

2018年に発売されて以来、多くのプログラマに愛読されている書籍『サイゼリヤのまちがいさがし』。
このトークでは『サイゼリヤのまちがいさがし』を紐解きながら、駆け出しプログラマにもぜひ押さえてほしいエンジニアリング精神について語ってみます。

2018年に書いたブログ記事『【入門】駆け出しエンジニアに薦める、最初に読むべき至高の技術書』のデジタルリマスター版みたいなトークを繰り広げる予定です。
https://tech.atsu-maru.co.jp/entry/2018/11/19/125833

2
他イベントOK レギュラートーク(10分)

たまには PHP で、パーサ(構文解析器)を書いていこう

__Mitsui ミツイ __Mitsui

プログラミングを始めた人が必ず一度は作る物といえば、そう、「独自のプログラミング言語」ですよね?
独自プログラミング言語を実装する最初の一歩は、ソースコードを構文解析して抽象構文木(AST)を得るところから始まります。今回はこの構文解析に着目して、PHP でパーサ(構文解析器)を書いてみました。
文字列処理と聞くとすぐに正規表現を書きたくなる方も多いと思いますが。正規表現とは一味違ったパーサの世界もちょっと覗いてみませんか?

3
LT(5分)

フロントエンドエンジニアがLaravelでテストコードを書いてみた

初学者向けの内容になります。
[内容]
・テストコードについて
・Laravelでのテストコードの書き方
・感想

4
他イベントOK レギュラートーク(30分)

RoadRunnerの世界 ~ Yet Another Alt PHP-FPM

n_1215 中榮健二 n_1215

昨今のPHP界隈では、Swooleに代表される新興のHTTP・アプリケーションサーバが注目を集めるようになりました。

従来の実行方式における「1リクエストごとに状態がリセットされる」前提を覆し、大幅なパフォーマンス向上を図れると話題を呼んでいます。

RoadRunnerはそんな新興サーバの一つで、Goで書かれています。最近ではLaravel OctaneのRoadRunner対応が発表されました。今一番の注目株です。

本発表ではRoadRunnerの紹介を通して、PHPの新しい可能性を切り開くAlt PHP-FPMの世界を探訪します。

▼お話ししたいこと
・RoadRunnerの概要
・従来の実行方式や他のAlt PHP-FPMとの違い
・利用上のハマりどころ
・Spiral Framework

▼お話ししないこと
・本番事例

4
他イベントOK レギュラートーク(30分)

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

m3m0r7 めもりー m3m0r7

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

5
他イベントOK レギュラートーク(30分)

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

m3m0r7 めもりー m3m0r7

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

2
他イベントOK レギュラートーク(30分)

PHPer のための Go の歩み方

m3m0r7 めもりー m3m0r7

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

1
他イベントOK レギュラートーク(30分)

PHPer のための TypeScript の歩み方

m3m0r7 めもりー m3m0r7

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

2
他イベントOK レギュラートーク(30分)

PHP で電卓を作る

m3m0r7 めもりー m3m0r7

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

2
他イベントOK レギュラートーク(30分)

噂の Fiber 試してみました

m3m0r7 めもりー m3m0r7

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

2
他イベントOK レギュラートーク(30分)

スケーラブル PHP AWS インフラパターン

seike460 清家史郎 seike460

アプリケーションは成長します。その成長を支える基盤が必要です。

今回は成長するPHPアプリケーションを支えるインフラのパターンに関して説明します。

AWSを利用した、スケーラブルなPHPを構築するための勘所を押さえ、
PHPアプリケーションを支えるインフラを築きましょう。

■想定する聴講者

  • PHPのインフラを整備するAWSエンジニア
  • PHPを構築する上でインフラを意識してないエンジニア

■話さない事

  • 最新技術をふんだんに使ったアーキテクチャ
5
他イベントOK レギュラートーク(30分)

実践!PHPWebアプリケーション パフォーマンスチューニング

seike460 清家史郎 seike460

速いは正義、アプリケーションは速くあるべきです

話者はPHPerKaigi2021にてパフォーマンスチューニングに関する登壇を行いました
https://speakerdeck.com/seike460/php-web-application-performance-tuning

時間の関係上、理論のみのお話となってしまったのですが、今回は加えて実践結果に触れていきます。
そこで説明した理論を実際に適用すると、どのようにパフォーマンスが向上していくかを
例題のPHPアプリケーションに対して計測を行い、原因を特定して、改善した実際の様子と合わせてお伝えします

■想定する聴講者

  • 実際のパフォーマンスチューニングの様子を知りたい方
  • PHPのインフラを整備するエンジニア

■話さない事

  • パフォーマンス以外の話
  • 劇的なパフォーマンス改善策
5
他イベントOK レギュラートーク(30分)

PHPでthrowしない例外ハンドリング

tac_tanden 炭田高輝 tac_tanden

PHPでは、例外をthrowとtry-catch-fanallyを使って処理する実装をすることが多いと思います。
対して、GoやScalaなどthrow -> try-catch-fanallyでの例外ハンドリングを実装せず、多値返却やEitherなどエラーを表すデータ型を使って例外処理を行う言語も存在します。
本セッションでは、PHPでGoやScalaのようにthrowしない例外処理をどう実装していくのかと、実際に実装した結果どのようなメリット/デメリットが得られたのかをお話します。

7
他イベントOK レギュラートーク(30分)

外部API連携にどう立ち向かうか / Facebook Marketing API 戦記

tac_tanden 炭田高輝 tac_tanden

自分は直近までFacebook PHP Business SDKとFacebook Marketing API( https://developers.facebook.com/docs/marketing-apis/ )を利用したInstagramとの外部連携機能の開発に携わってきました。
本セッションでは、その開発経験をもとに得られた「もっとこうすればよかった」の後悔や知見を、設計やテストの観点からお話します。

  • 外部APIとの連携をどう設計して実装するか
  • 外部APIを使ったメソッドのテストをどうするか
  • 外部APIのバグとの付き合い方
2