PHPerKaigi 2020 プロポーザル一覧

他イベントOK 15分トーク

Rectorを使って既存コードのupgradeをもっと手軽に

きんじょうひでき o0h_
‪https://github.com/rectorphp/rector は、既存のPHPコードのリファクタリングやアップグレードを自動実行するツールです。‬

‪フレームワークのバージョンアップをした、IDEを本格的に導入し始めた、新しいバージョンのPHPを使い始めた・・・開発を続けていると、色々な場面で「コードの書き方を変える必要が出て来た」「今までの書き方だと足りていない」という問題が発生します。かといって、膨大な量の(しかも退屈な!)書き換えを行うのは、なかなか気の進まない作業です。‬

‪rectorを利用すると、設定したルールに従い簡単な書き換えを自動的に実施できます!‬

‪ツールの概要や使い方、独自のルール作成の方法を紹介したいと思います。‬また、php-parserの動かし方についても言及しながら、「rectorは内部で何を行なっているのか?」というイメージを掴むことで、この不思議でパワフルなツールが皆さんにとって「怖くないよ!」といえるような、手助けになればと思います。
他イベントOK 15分トーク

PHPUnitでテストダブルについて考える

きんじょうひでき o0h_
PHPUnitは、PHPソフトウェアのデファクトスタンダードとも言えるテストフレームワークです。それを利用して、どんなテストが書けるでしょう?
昨今のアプリケーションの開発は、より「責務」について重んじるようになり、それぞれの境界線を明確にする意欲が高まっているように感じます。そのため、開発者が「このテストは、何が出来れば(⇔何が出来なくて)良いんだっけ」を考えるのは正しい姿勢でしょう。

皆さんも、「モック」や「スタブ」が好きですよね。PHPUnitには、いくつかの「テストダブル 」の機能がサポートされています。このセッションでは、具体的なコード例を用いて、「やりたいテストを表現するための素敵な方法はないのかな」「どうしてこういう機能があるのかな」について考えてみたいと思います。
他イベントOK LT

PHPでOSSを公開する時に気をつけている「これは整えたい」

きんじょうひでき o0h_
自作したソフトウェアを世の中に公開する時に考えることは何でしょう?
そのPJが解決する課題やコード自体の品質・機能はもちろんのこと、「オープン」しているからには、色んな人に関わってもらいたい!というのは、誰しも思うことではないでしょうか。
いくつかのPHP製OSSに取り組む中で気付いた、「こうしたらコントリビューターにとって便利かも」という点をお話したいと思います。

このセッション内では「良いコードの作り方」のようなトピックは扱いませんが、
これから初めてOSSを作りたい!発信したい!という人に、お届けしたい内容です。
他イベントOK 15分トーク

レガシーにLaravelを導入するのは間違っているだろうか

手島 尚人 mao_sum
皆さん、Laravelは大好きですか?私は大好きです。
皆さん、オレオレフレームワーク使ってますか?私は使っています。

今やPHPでWEBアプリケーションを作るならLaravelが候補に挙がるくらいには有名になりましたが、それはあくまでも新規案件のお話し。
レガシーなPHPアプリケーションにも、もっと簡単にLaravelを導入できれば…!そう夢見る日が3日に1回くらいありました。

一言に導入すると言っても、それは簡単な話ではありません。
いきなり全部のコードを入れ替えるわけにもいきません。既存のサービスを止めるわけにもいきません。Laravelは導入するけど、既存の資産はそのまま使いたい…!などなど、いろいろな要望や懸念があるかと思います。
そんな中、私が担当するPHPアプリケーションでLaravelを導入するために取った戦略とは…!?

本セッションでは、以下のことを実際の実装を見つつハートフルにお伝えする予定です。
- レガシーアプリケーションにLaravelを入れるまでの苦労話について
- どのようなハマりポイントがあったかについて
- Laravelのどの機能を使っているのかについて
- プレーンなLaravelと比べて制限される機能について

Laravelをレガシーアプリケーションに導入してみたい方、どんな構成になっているのか気になられた方、どなたでも構いません。
ご興味を持たれた方はぜひご参加ください!!
他イベントOK 30分トーク

ぼくのかんがえたさいつよDBI

若葉 章 effy_staffs
20年近くPHPを使いたどり着いた、実用で使いやすいオレオレDBIをご紹介します。
他イベントOK 30分トーク

クエリビルダの構築から見る再利用しやすいオブジェクトの作り方

若葉 章 effy_staffs
実用クエリビルダの構築から得た再利用しやすいクラス、インターフェース、トレイトの切り方についてお話します。
他イベントOK 30分トーク

マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜

a-suenami a_suenami
現在では PHP も立派なオブジェクト指向パラダイムを持つ言語のひとつとなりました。しかし、オブジェクトとは一体何でしょうか?

モデリングパラダイムとしてはオブジェクトの他にもデータモデルの設計によく使われるERモデルやリレーショナルモデル、または関数型言語のベースになっているラムダ計算などがあります。

本発表ではオブジェクトとは抽象データ型であるという立場を基本とし、その他のモデリングパラダイムとどのような共通点・相違点があるのか考察し、異なるモデリングパラダイムの間に生じてしまうインピーダンスミスマッチをどのように最小化していくかについて述べていきたいと思います。
30分トーク

レンサバけもの道

uzulla uzulla
PHPといえばレンタルサーバー、そういう時代がありました。いや今もあります。

数多くのサイトを提供しているレンタルサーバーは、PHPerKaigiのようなカンファレンスにいらっしゃる「エンジニア」な人たちには少々嫌われているような気がします。おっしゃることはわかります、私も人に手放しで勧めたりはしません。

しかし、私はレンタルサーバーが好きです。

長らくCMS実行環境としてしか見られていないレンタルサーバーですが、時代が進むにつれ、あれ?これっていいんじゃないの?もしかしてワンチャンあるのでは?という魅力も増えていると私は考えています。

いま一度私とレンタルサーバーを見つめてみましょう。

話す事
・PHPer目線で見る、レンタルサーバーの強みと弱点
・レンタルサーバーをPHPerとして活用するテク
・モダン(?)なデプロイと開発、運用
・VPSからレンサバにアプリを移管する話

話さないこと
・WordPressなどのCMSに関係すること
・定番フレームワークがどうたらこうたら

想定聴講者層
・上記にピンときた人
・レンタルサーバーをつかったことがない、最近つかっていない人
・レンタルサーバー業者の人

非想定聴講者層
・マイノリティな好奇心や探究を、マジョリティでないだけで最大公倍数的な優劣と考えてしまう人
・フレームワークのフレームに完全にはまっている人
・業者から最悪Banされることに耐えられない人
1
他イベントOK 15分トーク

Inside SWOOLE:非同期処理はどのようにして動くのか

小山哲志 koyhoge
最近注目を浴びているPHPの非同期処理機能拡張が「Swoole」です。Swoole を利用することで、PHP単独では実現不可能だった同時並列処理が実現できます。
では Swoole の非同期処理は、一体どのように実装されているのでしょうか?
本セッションでは Swoole のC++ソースコードの奥深くまで探索し、非同期処理がどのように実現されているかを解説します。
このセッションを聞けば、ブラックボックスの魔法のようだった Swoole がより身近になり、中で何が起きているか容易に想像できるようになるでしょう。
2
LT

PHPでleetCodeのeasyレベル100問ノック

yamotuki yamotuki
PHPでも競技プログラミングは学べるんだ。
競技プログラミングのズブの素人が、PHPで簡単な問題を中心に100問やってみた結果を共有する。
PHPの懐は広い。便利関数を使って楽できることもある。しかし便利関数の裏の動きを想像しないと実行が遅すぎたりするのだ。
1
他イベントOK LT

Rectorを使って既存コードのupgradeをもっと手軽に!

きんじょうひでき o0h_
https://github.com/rectorphp/rector は、既存のPHPコードのリファクタリングやアップグレードを自動実行するツールです。

フレームワークのバージョンアップをした、IDEを本格的に導入し始めた、新しいバージョンのPHPを使い始めた・・・開発を続けていると、色々な場面で「コードの書き方を変える必要が出て来た」「今までの書き方だと足りていない」という問題が発生します。かといって、膨大な量の(しかも退屈な!)書き換えを行うのは、なかなか気の進まない作業です。

rectorを利用すると、設定したルールに従い簡単な書き換えを自動的に実施できます!

ツールの概要や使い方、独自のルール作成の方法を紹介したいと思います。
他イベントOK 15分トーク

今だからこそ振り返る register_globals

gongo gongoZ
かつて

Q.「セキュアなWebアプリケーションを作るにはどうすればいいか」
A.「まず PHP を避ける」

とまで言わしめた 古い PHP が活躍していた時代、その中心的機能である register_globals を知っていますか。この機能を on にしたが最後、リクエストパラメータは問答無用でグローバル変数に展開されてしまうという、お手軽且つ凶悪な機能でした。変数汚染攻撃の温床ともなり、「PHP is 脆弱性」とまで言われるようになった所以です。

そんな register_globals も PHP 5.4 で姿を消し、この機能を使ったことのある人の方が少ない時代になっていると思います。
しかし、そんな時代だからこそ皆さんと振り返っていきたいです。

・ register_globals とはどんな機能なのか
・ ドキュメントには載っていない register_globals の動き
・ PHP 5.4 以上でも使える! register_globals
1
他イベントOK 30分トーク

もっと気軽にOSSにPRを出そう!

DQNEO(ドキュネオ) DQNEO
OSSにPRを出すのは、すごいエンジニアや上級者がやることだと思っていませんか?
そんなことは全くありません。
たとえあなたがエンジニアになりたてだったとしても、そのOSSを使ったことがなくても、PRを出すチャンスはあります。

本トークでは、私が過去に数々のPHPライブラリに対して送ってきたPRを紹介しながら、PRを送りつけるときの心構えやチャンスの探し方を紹介したいと思います。

OSSの例:

* Symfony
* Guzzle
* AWS-SDK-for-PHP
* Monolog
* Ethna
* DietCake

本トークを聞けば、
「あ、こういうところにチャンスがあるのか」
「自分もやってみよう」
という気持ちになれるかもしれません。

その結果、PHPのエコシステムがどんどん良くなるといいなと思っています。
5
他イベントOK 15分トーク

一切開発に手を出さずに言葉と資料でドメイン駆動設計を布教した

柚口 ましろう yu_mashirou
ドメイン駆動設計をどのようにして知ってもらい、文化を広めるというのは非常に難しいです。
色んな手法で広めていくと思うのですが、今回私が行ったのは「言葉と資料」で駆動設計をプロダクトに盛り込むことにしました。
今回はドメイン駆動設計を布教した一連の流れをお話できればと思います。

ドメイン駆動設計を社内で布教したい、実践でやってもらいたいという方へ一例として知見に貯めていただければと思います。
他イベントOK 30分トーク

AWS Lambda にCustom RuntimeでPHPを導入したシステムに改修を加えてUT導入まで行った話

柚口 ましろう yu_mashirou
AWSのLambdaにCustom RuntimeでPHPの導入出来るようになってから日が経ち、私が関わった案件でもLambda for PHPを導入したシステムがあります。

別の開発者が初めて作成し初めて載せたものでどういった感覚で作られていたのか、そして実装面に対して問題等などは起きていなかったのか、といった部分を段階的に紐解いた話をいたします。
そして当時リリース優先でやらなかったUTについても実装を行い、そのUT実装に至るまでの手順などもお話します。

LambdaでCustom Runtimeで動かしたい方、またはLambdaには載せたけどUTの実装まで至らなかった方にはご参考になる情報を発信できればと思います。
1
他イベントOK 30分トーク

PHPerがインフラを兼務することで見えるもの

柚口 ましろう yu_mashirou
みなさんはインフラ(またはクラウド)の構築、運用、整備を行ったことはありますか?
普段、サーバサイドエンジニアがインフラを兼任することはあまり多いケースではないと思います。
今回その多くないケースを踏み、インフラ面を兼務したことで得た利点、課題点、発展をそれぞれお話できればと思います。

インフラエンジニアという人の仕事がどういった業務を行い、私達サーバサイドがあまり気にしていなかったことや、気がかりだったところ等、
サーバサイドの視点を交えながら知見としてご参考いただければと思います。
他イベントOK 30分トーク

ブランコの比喩の出自からソフトウェア開発の歴史を紐解く

東口 和暉 hgsgtk
ブランコの比喩がどこから来たのかご存知でしょうか。あの比喩は建築業界の比喩から来たものです。ソフトウェア設計は大きく建築業界にインスピレーションを受けています。我々がすでに知っているデザインパターン・XPなどは、建築家クリストファー・アレグザンダーという方のパタン・ランゲージなどから来ています。クリストファー・アレグザンダーのアイデアをどうソフトウェア設計においてどう参考にしたかを知ることで、例えばデザインパターンは何を解決しようとしたのかといった輪郭が見えてきます。先人たちがどのように課題に取り組んできたのかを振り返ることで、一回のソフトウェアエンジニアの足場を強化する時間になればと思います。
2
他イベントOK 30分トーク

PHP を使って java コマンドで動く class ファイルを生成するコンパイラを作る

めもりー m3m0r7
みなさんは PHP にどのようなイメージをお持ちでしょうか。Web のイメージが強いのではないかと思います。
PHP はそれ以外の用途としてバイナリを書き込んで何かしらを行うことも可能だったりします。
例えば、java が実行する class ファイルのようなバイナリを PHP で生成して、 java コマンドで動かすことも可能です。
言い換えると java コマンドで動くバイナリファイルを PHP のみで生成する、つまりコンパイラを作るということです。
本トークでは、 class ファイルの構造やオペコード(プログラムを実行する命令のこと)を PHP だけを使い、
どのようにしてファイルに書き込んだら java コマンドで動くかをお話できたらと思います。
他イベントOK 30分トーク

PHP を JVM 言語にするためのコンパイラをつくる

めもりー m3m0r7
みなさんは PHP にどのようなイメージをお持ちでしょうか。Web のイメージが強いのではないかと思います。
PHP はそれ以外の用途としてバイナリを書き込んで何かしらを行うことも可能だったりします。
そう、例えば PHP のソースコード自体を PHP を使って Java のクラスファイルにコンパイルし、java コマンドで動かすようにすることも可能です。
言い換えると、 Kotlin や Scala のような JVM 言語を PHP のソースコードを用いて PHP で実装するということです。
本トークでは、 PHP を AST (抽象構文木、簡単に言うとソースコードがプログラムで理解されやすいように最適化した状態) に分解し、それを Java のクラスファイル(バイナリファイル)にコンパイルしてから java コマンドで動かすまでの一連の流れをお話できればと思います。
1
他イベントOK 30分トーク

PHP で バイトコードにコンパイルされた Python を動かす

めもりー m3m0r7
みなさんは PHP にどのようなイメージをお持ちでしょうか。Web のイメージが強いのではないかと思います。
PHP はそれ以外の用途としてバイナリを読み込んで何かしらを行うことも可能だったりします。
例えば mp3 の ID3 タグを取得する, zip を解凍する, jpg のメタデータを取得する、などなど。
しかし、これらは一般的にはライブラリや拡張機能が提供されていて、刺激が少ないかと思います。
そんな中で、今まで誰もやったことがなさそうなこととして PHP でバイトコードにコンパイルされた Python を動かしてみたいとは思いませんでしょうか。
私は動かしてみたいと思います。本セッションでは PHP でどのようにしてバイトコードにコンパイルされた Python を動かすのかをトークできればと思います。
1
  • 1 (current)
  • 2
phperkaigi-2019 sponsors phperkaigi-2019 potential-sponsors