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

15分で分かった気になるGraphQL

ichikawa_0829 市川 慎吾

Facebookが公開し、GitHubのAPI v4にも採用されたことでも知られるGraphQL。旧来のRESTfulな形式のAPIを爆発的に置き換えていっている!とは言えませんが最近少しずつ国内でも採用事例を聞くようになりました。
このトークではGraphQLの魅力について話し懇親会で話のネタに出来るくらいに分かった気になるトークをしたいと思います。

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

PHP でも Raspberry Pi がしたい!

H_Shinonome 東雲

Raspberry Pi でLEDを光らせたりするのは、Python / C だけだと思っていませんか。
このトークでは電子工作の基礎から、PHP から Raspberry Pi の GPIO を制御する方法や、OSS のライブラリを紹介します。

  • Python / C をあまり良くわからないけど Raspberry Pi 触ってみたいPHPer
  • Webから制御できる電子工作を気軽にやりたいPHPer

そんな方の背中を少しでも押せたらいいなと思います。

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

設計力を上げるバリエーションの見極め術

77web 77web

昨年のベストトーク賞「SOLIDの原則ってどういうふうに使うの?」でも話題になったとおり、設計の難度を上げるのは「バリエーション」です。
そのバリエーションの発生パターンの見極め・予測法こそがプログラマーとしての経験値と言っても過言ではないと思います。
いざバリエーションが発生してから「しまった…!」とならないように、発生しうるバリエーションの予測精度を上げるには設計時にどこに注目・注意すればいいか?のコツをお伝えします。

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

ゼロから始める自作ファミコンエミュレータ生活

cakephper 市川

この数ヶ月、Rust版、PHP版ファミコンエミュレータを読み、Go言語に移植しています。
PHP版を元に、PHPでどのようにファミコンエミュレータを実装しているのか、Goで再実装した時に見えた違いなどを解説。
そもそも2019年にもなって何でファコミンエミュレータなのか、何が楽しいのか、魅惑のエミュレータワールドを通して体験できたコンピュータの世界をご紹介。

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

サーバーレスPHP

ippey_s 角田 一平

去年の11月にAWS LambdaでCustom Runtimeがサポートされることが発表されました。
PHPでは "PHP Layer for AWS Lambda" を利用して、サーバーレスなPHP実行環境を構築することができるようになりました。
そんなサーバーレスPHPの概要や環境構築手順、Symfonyなどのフレームワークを利用する際のTipsなどをご紹介したいと思います。

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

Swooleでフレームワークを高速化 - もう動作が遅いなんて言わせない!

niisantokyo 新倉涼太

今話題のSwooleはPHPにイベント形式の非同期処理をエクステンションという形で導入することができます。これを利用することで、PHPのフレームワークを高速化してみようと試みます。一般に、フレームワークや外部ライブラリを利用していると、それらのソースファイルを読み込むために多くの時間がかかるようで、Swooleを使ってイベント形式のサーバを建てることで、この読み込みコストをほぼゼロにできると期待できます。今回はLaravelを例に取り、Swooleによる高速化の導入、及び、Swooleによってどれだけ高速化できたかを、apacheやfpmなどの別の形式のサーバと比較します。また、Swooleの導入によって発生する問題についても言及します。

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

ネットワークのことを知るためソフトウェアルータを自作した話

kobatako_ kobatako

日ごろからお世話になっているインターネット。
そのインターネットはネットワーク同士を接続した巨大なネットワークです。
そのネットワーク内でルータがどう動いているのか、ネットワークをつなげるためルータがどれだけ頑張っているのかを少しでも理解したいと思い、ソフトウェアルータを自作しました。
コアな部分はErlangで実装し、追加のモジュール部分はElixirで実装しました。
内容はL2、L3の実装、ルーティングの実装を行い、さらにL4以上をコントロールするためのモジュール実装をどのように行ったのかを話せればと思います。

ネットワークはアプリケーションにない面白いところが沢山あります。
あまり意識することのないネットワークに焦点を当ててみてはどうですか。

少しでもネットワークのことに興味を持ってもらえると嬉しいです。

採択
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 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のエラーが発生して何が起きたかを慌てるのではなくて、
発生した瞬間に認識する方法を思考します