採択
2019/03/30 17:15〜
Track B
レギュラートーク 15分

PHPerのための計算量入門

hanhan1978 富所 亮

プログラムを書くときに計算量を意識していますか?計算量の基本を理解することで、サービスが成長したときに問題を起こしにくいプログラムを作成することができます。簡単なプログラムを例にして、まず計算量という概念に慣れてみましょう。

採択
2019/03/30 17:15〜
Track A
レギュラートーク 15分

コンパイラ作りの魅力を語る

DQNEO DQNEO

長年PHPをやってきた普通のウェブエンジニアが、ある日突然コンパイラの魅力にとりこまれ、寝ても覚めてもコンパイラのことしか考えられなくなりました。
こんなに面白いものがあったのかと。

まずC言語コンパイラをCで書き(写経)、つぎにC言語コンパイラをGoで書き(移植)、気がついたらGo言語コンパイラをGo言語で書いている自分がいました。
そこで見えてきたものは、それまでWeb開発で見ていた景色とは全然違う世界でした。

値とは何か。式とは何か。解釈とは何か。
コンパイラを作る者は、それらの問に対して自分なりの答えを見つけなければなりません。

Goコンパイラに挑戦して1日目Hello wordがで動いたとき、ソフトウェアエンジニアとして非連続的な成長をしつつあるのを実感しました。

コンパイラが書きたい。もっと書きたい。
コンパイラ作りの魅力について語ります。

採択
2019/03/31 10:25〜
Track B
レギュラートーク 15分

255オクテットのドメインはツラみがある!

rela1470 Jun Watanabe

皆さんの日常生活には欠かせない、ドメインという仕組み。
なんとなく使っていませんか!?

例えば、何文字まで長く出来るかわかりますか?
(タイトルでネタバレ)

ドメインを最長にした際、
・メールアドレスはどうなる?
・Nginxの設定は?
・サーバーレスは?
・SSL証明書は?

今回は仕様最長のドメインで実際にサイト運営した経験を題材に、
RFCの仕様からFirebase検討までの奮闘記をお話します。

採択
2019/03/31 10:25〜
Track A
レギュラートーク 15分

マニュアルにない引数を与えるとどうなる?php-srcへのバグ報告をした時の話

youkidearitai てきめん

とある日に、いつものようにPHP 5.6でmbstringの関数へ引数をarray()にして挙動を楽しんでいました。
同じように当時の PHP 7.3.0 RC5 に対して、挙動を楽しんでいると、
mb_check_encodingのときに、Segfaultになりました。

報告したところ、修正いただきました。

今回は、そのバグをどう見つけて、どう報告したのかということと、
php-src上での問題か、スクリプト上の問題かを切り分ける方法、

そもそもPHPのビルトイン関数へ(わざと|誤って|たまたま)マニュアルにない引数を加えるとどうなるのか、
7.2からmb_check_encodingとmb_convert_encodingにはarrayが使えるようになっていること

などの発見したこと、報告した後の心境を共有させていただきたいなと思います。

採択
2019/03/31 10:55〜
Track B
レギュラートーク 15分

PHPerKaigi2019のサイトができるまで

cotolier_risa yasui risa

PHPerKaigi2019にてデザインスポンサーとしてWebサイトの制作をさせていただきました!PHPerKaigi2019のサイトができるまでの過程において、デザインに込めた想いやワークフロー、Nuxt.jsでの実装の内容でお話したいと思います。

採択
2019/03/31 10:55〜
Track A
レギュラートーク 15分

PHPでURLルーティングをつくる

bmf_san bmf_san

PHPでURLルーティングをつくってみた話をします。
普段フレームワークを活用していると、ルーティングの実装はフレームワークが用意したパッケージや外部ライブラリ依存であることが多く、自作するモチベーションやメリットはあまり浮かばないかもしれません。
今回、実用性のあるものを作り上げるのは難しかったですが、敢えて車輪の再発明に挑戦することで
様々なライブラリの実装パターンや実行速度のパフォーマンスの懸念点を知る機会になったり、
アルゴリズムの実装力(エンジニアの基礎体力)を鍛える良い練習にもなりました。
15分の時間内でURLルーティングを自作するメリットと楽しさについてお話できればと思います。

採択
2019/03/31 11:25〜
Track B
レギュラートーク 15分

PhpStormでコードを理解する技術

tenkoma 田中孝治

PhpStormを知っていますか?
PHPStormはプラグインのインストールや設定カスタマイズをしなくても様々な便利な機能がついている統合開発環境です。
しかし、自分のプロジェクトに合わせて多少の設定を行うと、コードリーディングがさらに楽になります。
このトークではPHPユーザー向けに読みたいコードを探し出すための検索機能から、静的解析連携、テスト・デバッグを使ってコードを理解する方法などを説明して、PhpStormがプログラマのコードを理解する能力をどう拡張してくれるか紹介します。

採択
2019/03/31 11:25〜
Track A
レギュラートーク 30分

Hack HTTP Request and Response Interfaces

ex_takezawa ytake

Hackには、HTTPの処理に関してPSR-7のように相互運用を可能にするためのインターフェースが存在します。
PSR-7と異なるインターフェースはなぜ用意されたのか、
PSR-7とHackのインターフェースの違いはなにか、
Hackでの実装例と他言語のHTTP処理を比べながら、リクエストレスポンスの表現について理解を深めるセッションです。

採択
2019/03/31 12:20〜
Track A
ランチセッション

ランチセッション

株式会社メルカリ

株式会社メルカリ さまによるランチセッションです

採択
2019/03/31 13:30〜
Track C
企画: 出張版PHP勉強会

出張版PHP勉強会@東京

phpstudy 日本PHPユーザ会

●セッション内容
PHP勉強会@東京の紹介
全員で自己紹介
●メイン発表
PHPを学ぶということ @sizuhiko しずひこさん
https://speakerdeck.com/sizuhiko/phperkaigi-2019-phpstudy

PHPの新元号対応について @sapi_kawahara 川原英明さん
https://speakerdeck.com/sapi_kawahara/about-the-new-era-fixes-of-php-language

1
採択
2019/03/31 13:30〜
Track A
レギュラートーク 30分

帰ってきた!平成最後のオレオレフレームワークの作り方

uzulla うずら

唐突ですがフレームワーク(以後FW)は古代存在しませんでした、よって昭和の人間は自分でFWを書いていたと伝えられています(諸説ある)。

とはいえ今は<?= $php_fw_list; ?>といった素晴らしいFWがありますよね。平成も終わる今、タイトルのようにオレオレフレームワークを書く意味があるのか?その疑問は一理あります。

所でFWとは枠組みで、枠組みは内を支えるものです。つまりFWを書く事で自分の内面を知ることに繋がります。そう、自分を知るためにFWを書くべきです!(?)

平成の終わり、オレオレフレームワークを書き、自分を知りましょう!そして…!

*

  • 空のファイルから全部書いたことがない人へ
  • FWとはスタイル・ベストプラクティスである
  • 最大公約数とパラダイム、時代の移り変わり
  • 模倣にはじまり、オリジナルを見出し、はしかにかかり、「大人」になっていく
採択
2019/03/31 13:30〜
Track B
レギュラートーク 30分

アンチパターンから学ぶ、RDBの正しい設計

soudai1025 曽根 壮大

データベースの寿命はアプリケーションより長い。
皆さんも感覚的に理解していても、では実際にどのように付き合っていけばいいのでしょうか。
そこで誰もが経験のあるアンチパターンを題材に正しい設計について紐解いていきます。

  • あの時どうすればよかったのか
  • アンチパターンを防ぐためには
  • 今あるアンチパターンとどのよに戦っていくか

そんなヒントを散りばめた濃厚なデータベースのノウハウをお届けします。
今回のアンチパターンは

  • キャッシュ中毒
  • ORM依存症
  • 知らないロック

の3点をお届けします!

採択
2019/03/31 14:15〜
Track B
レギュラートーク 15分

Swooleのフレームワークをくらべてみた

goodoo 白井 英

uzullaさんのPHPerKaigi2018「大統一PHP」(https://speakerdeck.com/uzulla/da-tong-php)で紹介されているSwooleという非同期かつ、Coroutineの仕組みをもったPHPのextensionがあります
Swooleを用いたフレームワークはいくつかあります。
今回、EasySwoole(v2,v3)、Swoft、Laravel-Swooleの4つを比べてみた結果をお話しします。
それぞれのフレームワークのISUCON8予選のベンチマークの結果をお伝えします(恒例)
No.1 Swooleフレームワークはどれだ!

採択
2019/03/31 14:15〜
Track A
レギュラートーク 15分

PHP監視、サービスを守る為に行う不測の事態への努力

seike460 清家史郎

みなさん試行錯誤してPHPサービスを止めないように努力されていると思いますが、
現実世界上でSLA100%を完全保証することは不可能です

では最速で復帰させる為にどの様な努力を行えば宜しいのでしょうか?

僕が行っている最速で「気付く」方法を赤裸々に語ります

  • サーバの中からのアプローチ
  • サーバの外からのアプローチ
  • 各種のアプローチを行う金の弾丸と努力の結晶

PHPのエラーが発生して何が起きたかを慌てるのではなくて、
発生した瞬間に認識する方法を思考します

採択
2019/03/31 14:50〜
Track A
ルーキーズLT

みんなが愛したvar_dump()の実装を探しに旅に出た

MasakiKuwako くわこ

僕たちが幾度となくお世話になったvar_dump()
ちょっとまって、この関数すごくない?
var_dump()半端ないって。どんなオブジェクト入れても表示するもん。そんなんできひんやん、普通。

ということでvar_dump()のルーツ(実装)を探りにgithub/php-srcに向かった僕だった

採択
2019/03/31 14:55〜
Track A
ルーキーズLT

はじめまして!Webアクセシビリティ -PHPer編-

shiori_pk 古賀詩織

PHPerの皆さんは普段Webアクセシビリティについて何か取り組んでいますか?
皆さんが作っているWebサイト、Webサービスは本当に、すべてのユーザーに使ってもらえるものですか?

今回のLTでは

  • Webアクセシビリティの概要
  • よくあるWebアクセシビリティのアンチパターン
  • PHPerとして考えるべきWebアクセシビリティについて

を紹介したいと思います。

採択
2019/03/31 15:00〜
Track A
ルーキーズLT

レガシーコードに最低限の秩序をもたせる

juve534 ユーベ

仕様書もないレガシーモジュールに最低限の秩序をもたせる為に何ができるかを考え、対応した話をします。
主にCI環境を構築した話になると思います。

テストコードを書いて、カバレッジ100%とかは非現実的な話はしません。

採択
2019/03/31 15:05〜
Track A
ルーキーズLT

Laravel の開発環境構築、何が良いかを比較検証してみた!

hunhunyosshy k_yoshikawa

laravelを触ってみたいと思っても、環境構築が面倒くさいと思って挫折した人いませんか?
また本に書いてあるやり方だと実践的ではないと思ってやる気がなくなっちゃった人いませんか?
これ2つとも2018年までの私です。

でもそんな自分でも作ってみて、Laravelの使いやすさ、楽しさが最近ようやくわかってきました。
ぜひ皆様にもLaravelのよさをわかっていただけたらと思います。
そのために環境構築を試してみて、どのやり方がどんな感じでオススメかを紹介できたらと思います。
以下の3つを紹介できたらと思います。

・Laravel 内蔵サーバ
・MAMP(XAMPP)
・Docker

採択
2019/03/31 15:10〜
Track A
ルーキーズLT

エンジニアインターンが1年間でソースコードレビューの指摘が365回を超えた話

gawa2101 小川将輝

プログラミング未経験の大学生がとあるスタートアップでエンジニアを志し、時に挫折し、時に成長を実感しながら歩んだ1年間の物語です。
現在のインターン先では、ソースコードレビューを行う文化があり、インターンを始めてソースコードレビューを知り、経験しました。
インターンを通してレビューには意義のあるレビューと意義のないレビューがあると気づきました。意義のあるレビューはより良いソースコードにしていくために議論を重ねる場、意義のないレビューは本来レビューで指摘されるべきではないつまらないミスだと思います。
ある時、レビューワーが自分のつまらないミスのためにレビュワーの時間を奪っていることに気づきました。そこで、ソースコードレビューで指摘を受ける回数をカウントをして、指摘を減らすために思考錯誤をしていきました。
今回はそんな話をしていきたいと思います。

採択
2019/03/31 15:15〜
Track A
ルーキーズLT

CTFで学ぶPHPセキュリティ

CTF (Capture the Flag) は、情報技術のセキュリティ脆弱性を利用して攻略する様々な問題からflagと呼ばれる文字列をできるだけ多く、そして早く獲得するコンテストです。その中にWebセキュリティのジャンルがあり、PHP製アプリケーションも例外なく出題されます。
その難易度も出題によって幅広く、SQLインジェクションなど基礎的な問題から、PHPの仕様を詳しく知らないと解けないような難問まで存在します。
謎解き感覚で楽しくPHPセキュリティを勉強しましょう!