PHP Conference Japan 2019 トーク一覧

他イベントOK 60分枠

PHPでレトロゲーム機のエミュレータを作る

長谷川智希 tomzoh
私は1980年代から1995年頃までのレトロゲーム機が大変好きです。
この頃のゲーム機は各社の工夫でどんどん進化する一方で、技術的な制約によりどのゲーム機でも同じ様な仕様になっているところもあります。

また、それ以前にゲーム機と言えどもそれはコンピュータであり、CPUについては現在のパソコンで使われている様なCPUと同じところもあります。

このトークでは私が作成したPHPベースのファミコンエミュレータ php-terminal-nes-emulator を題材に、CPUの動作原理やレトロゲーム機に共通する仕様、それをエミュレータとして実装するための設計などをお話します。

そして、エミュレータのコードが「得体の知れない難しいもの」ではなく「ハードウェアの仕様をコードで表現したもの」であり、読んで楽しく、書いてみたくなるものであることをお伝えします!
2
他イベントOK 25分枠

PHPでファミコンエミュレータを作る

長谷川智希 tomzoh
2016年にPHPで書かれたゲームボーイエミュレータのコードを読んで大きな衝撃を受けました。以前からCPUやメモリ、この頃のゲーム機に共通する仕様のことは知っていましたが、エミュレータのコードに見たものはそれらがそのままPHPのコードとして表現されたものだったのです!

その2年後、あるカンファレンスでファミコンエミュレータに関するトークを聞いた時に、2度目の衝撃が私を襲いました。そこで紹介されたコードは初見にもかかわらず断片を見るだけで内容が理解できたのです。

このトークではその衝撃を受けて私がPHPで書いたファミコンエミュレータを題材に、エミュレータのコードの特長や設計、そしてその魅力をCPU周りを中心にお伝えします。エミュレータは新しい言語の学習や設計の練習にちょうどよいテーマでもあります。扱う内容は簡単ではありませんが、初心者のみなさまにもお楽しみ頂けると思います!
3
他イベントOK 60分枠

PHPでファミコンエミュレータを作る

長谷川智希 tomzoh
2016年にPHPで書かれたゲームボーイエミュレータのコードを読んで大きな衝撃を受けました。以前からCPUやメモリ、この頃のゲーム機に共通する仕様のことは知っていましたが、エミュレータのコードに見たものはその仕様がそのままPHPのコードとして表現されたものだったのです!

そしてその2年後、あるカンファレンスでファミコンエミュレータに関するトークを聞いた時に、2度目の衝撃が私を襲いました。そこで紹介されたコードはそこで初めて見るにもかかわらず、断片を見るだけで内容が理解できたのです。

このトークではその衝撃を受けて私がPHPで書いたファミコンエミュレータを題材に、エミュレータのコードの特長や設計、そしてその魅力をお伝えします。エミュレータは新しい言語の学習や設計の練習にちょうどよいテーマでもあります。扱う内容は簡単ではありませんが、初心者のみなさまにもお楽しみ頂けると思います!
1
他イベントOK 60分枠

ファミコンの画面描画を知る

長谷川智希 tomzoh
ファミコンの画面は8x8ピクセルで定義されたキャラクタを敷き詰めた画像の上に同じサイズで定義されたキャラクタを重ねて描画されています。

この設計はファミコンに限らず、PCエンジン, ゲームボーイ, メガドライブ等々、多くのゲーム機に共通する設計でしたが、これには当時の技術的な制約、出力先である家庭用テレビの仕様が影響していました。

このトークでは私がPHPで書いたファミコンエミュレータ php-terminal-nes-emulator を題材に、ファミコンの画面描画の仕組みと制約・その回避を解説し、それをエミュレータでどの様に設計・実装しているのかを解説します。そして、エミュレータのコードが「得体の知れない難しいもの」ではなく、読んで楽しく、書いてみたくなるものであることをお伝えします。扱う内容は簡単ではありませんが、初心者のみなさまにもお楽しみ頂けると思います!
2
他イベントOK 25分枠

ファミコンの画面描画を知る

長谷川智希 tomzoh
ファミコンの画面は8x8ピクセルで定義されたキャラクタを敷き詰めた画像の上に同じサイズで定義されたキャラクタを重ねて描画されています。

この設計はファミコンに限らず、PCエンジン, ゲームボーイ, メガドライブ等々、多くのゲーム機に共通する設計でしたが、それはなぜなのでしょうか。これには当時の技術的な制約、出力先である家庭用テレビの仕様が影響していました。

このトークでは私がPHPで書いたファミコンエミュレータ php-terminal-nes-emulator を題材に、ファミコンの画面描画の仕組みと、それをエミュレータでどの様に設計・実装しているのかを解説し、エミュレータのコードが「得体の知れない難しいもの」ではなく、読んで楽しく、書いてみたくなるものであることをお伝えします。扱う内容は簡単ではありませんが、初心者のみなさまにもお楽しみ頂けると思います!
2
採択 他イベントOK 2019/12/01 16:45〜 Track 1 (1F 大展示ホール) Lightning Talks

PHP-CS-FixerをIDEに取り込ませてPSRを強制する開発スタイル

sogaoh sogaoh
PHPの開発でコーディング規約をどうするかはどの現場でも悩ましい話だと思います。
キャメルケースにする / スネークケースにする、などある程度の選択は個々に必要になるものの、
PHP-CS-Fixerに整形を委ねるのも1つの手ではないかと思います。

現在自分が所属している開発プロジェクトではPHP-CS-Fixerを利用しているので、
利用中の課題点と自分が感じた「クセ」について、簡単にお話しできればと思います。

大規模なカンファレンスでの「初めてのスピーカー」にチャレンジさせていただければ幸いです。
他イベントOK 60分枠

I just became team-lead, now what

Frederick Vanbrabant maybeFrederick
In this talk, we will take a look at how you can keep the team motivated and inspired, see if we can apply the same mindset to job interviews and dive into some do's and don't of talking to customers. You're going to do great, but a little guidance never hurt anyone.
1
他イベントOK 60分枠

ゼロから作るポートフォリオ ~ 趣味と実益は紙一重 ~

しろぐちゆうま yu_mashirou
エンジニアとして開発を続けていると、たまに要件に縛られず自分の好きなものを創りたいと考えることも割とあると思います。
今回、ご紹介するのは自分で作ったポートフォリオ兼、実用をかけたツールの開発の裏をお話させていただければと思います。
ゼロから開発するにあたり、どこから手を入れてどうやって解決をしていったのか、発生した問題にはどのように解消へと導いたのか、その結果と反省をソースコードの一部とともに説明していきます。
Laravel + vue.jsのお話です。
※ぶっちゃけこの日のために開発しています。いわゆる締切駆動開発というやつです。

過去にセミナー等でLT登壇経験はありますが、今回のような大規模カンファレンスには初挑戦となります。
1
他イベントOK 60分枠

失敗したVue ComponentワールドをAtomic Designを用いて解決する話

しろぐちゆうま yu_mashirou
新規開発で突然採用されたVueを使ってなんとか開発をしたが、かなり見にくい状態になってしまいそのまま運用が続いてしまいました。
しばらく間をおいて追加開発の依頼が来たので、この荒れ狂う大海原と化したComponentを治水するために、我々は原子の力を借り、混沌を解決するための戦いをはじめた。

これはその戦いの記録と反省の記録となります。
Atomic Designを浸透させたい方や整備されていないフロントエンドを整地したいという方にぜひ共有できれば非常に嬉しいと考えています。
実益と趣味を兼ねたソースコードも当日公開する予定です。


過去にセミナー等でLT登壇経験はありますが、今回のような大規模カンファレンスには初挑戦となります。
2
採択 他イベントOK 2019/12/01 11:00〜 Track 2 (2F 小展示ホール) 25分枠

PHP における並列処理と非同期処理入門

めもり〜 m3m0r7
みなさんは PHP で並列処理や非同期処理をする方法を知ってますか?以前は pthreads といった拡張機能があり、 PHP で並列処理を実現するには主にこの拡張を使用していました。一方で非同期処理に関しては、libevent だったり最近だと Swoole が注目されており、容易に PHP で非同期処理を行うことができます。
pthreads はデータの受け渡しが難しかったり、導入にはいくつかのハードルがありましたが、Swoole は一般的な拡張機能の導入の方法がほぼ同じなため導入しやすいです。
本セッションでは、 phtreads と Swoole を比較しつつ、実際に今まで触れてきたり、 pthreads の導入に挫折はしたもののプロダクションに導入しようとしたり、
Swoole を使って実際にアプリケーション開発をした過程をノンフィクションでトークできればと思います。
他イベントOK 25分枠

PHPer のための PHPUnit と Selenium を使ったブラウザテストのすゝめ

めもり〜 m3m0r7
みなさんはブラウザテストをする際に、どのようにテストしていますか?
ブラウザテストをする際に有名なソフトウェアとして Selenium があります。
また、 PHP では Selenium と繋ぐための OSS として Facebook WebDriver があります。
Selenium を使うことにより、リンク切れが発生していないかの確認をしたり、動的に生成される DOM の検証を行ったりなど、様々なテストを行うことができます。
さらに、 Selenium は JavaScript をその場で実行できたり、 Firefox など Chrome 以外のブラウザでテストを行うことも可能です。
Selenium と Facebook WebDriver と PHPUnit を使ったテストの方法や、導入するにあたってどのような苦労があったのかをトークできたらと思います。
7
他イベントOK 25分枠

ハムスター監視システムを噂の PHP の拡張機能の Swoole と Raspberry Pi でつくってみた

めもり〜 m3m0r7
ペット、かわいいですよね。私はハムスターを二匹飼っています。それぞれキンクマとジャンガリアンです。
可愛すぎて「常時見ていたい…」そのような気持ちになることはありませんか?
ありますよね。更に、ストリーミングで常に見れたらうれしいですよね。
そんなニーズに答えるため、 PHP の拡張の Swoole と Raspberry Pi を使用して、ストリーミング再生で常に最新の情報が送られるようなハムスター監視システムをつくってみました。
実装までの過程で、Swoole や Raspberry Pi で乗り越えた壁や、どのような形で開発をしたのか一つのドラマとしてトークします。
4
他イベントOK 25分枠

PHP でソケット通信入門

めもり〜 m3m0r7
みなさんは、PHP をどのような用途に使っていますか?ウェブサイトなどのウェブサービスを作成する目的でしょうか?
PHP ではウェブサービス以外の用途にも使用できます。例えば、Laravelをご利用の方は arisan コマンド、 CakePHP をご利用の方は bake コマンドなど、用途は多岐にわたるかと思います。
それ以外にも、PHPではソケット通信を行うことができます。ソケット通信でできることといえば、例えば PHP を HTTP サーバーそのものにする、PHPで WebSocket を実装する、サーバーへ SSH ログインするなどができたりします。他には ルーターと接続して、 UPnP の設定を行い、いわゆるポート開放を行ったり、ストリーミングで動画配信などもできます。
私がこれらを創ってきた経験から PHP でソケット通信に関するトークをできればと思います。
4
他イベントOK 25分枠

PHP で非同期処理で動く WebSocket サーバーをつくる

めもり〜 m3m0r7
みなさんは、PHP をどのような用途に使っていますか?ウェブサービスを作成する目的でしょうか?
PHP ではいくつかのソケットに関する関数が提供されています。 PHP ではそれらのソケット関数を使うことによって
WebSocket に限らず HTTP サーバーなども比較的容易につくることができます。また、関数を一つ呼ぶだけで、SSL や TLS として通信することも可能です。
また、少し前までは並列処理や非同期処理はできるが、あまり実用的ではなかったのかなと感じています。
昨今では Swoole のような非同期処理を扱う拡張機能が話題になっています。この Swoole が本当に実用的なのかどうかも含めて、非同期処理で動く
WebSocket サーバーを SSL/TLS に対応するのも含めて自作し、プライベート環境で実際に運用してみた過程をトークさせていただければと思います。
4
他イベントOK 25分枠

PHP でバイナリファイルを読み込んでデータを表示したり書き換えてみる

めもり〜 m3m0r7
みなさんは PHP にどのようなイメージをお持ちでしょうか。Web のイメージが強いのではないかと思います。
PHP はそれ以外の用途としてバイナリを読み込んで何かしらを行うことも可能だったりします。
例えば mp3 の ID3 タグを取得する, zip を解凍する, jpg のメタデータを取得する、などなど。
本セッションでは jpg のメタデータを PHP で取得して実際に表示したり、書き換えたりするまでのトークを行えたらと思います。
2
他イベントOK 60分枠

PHP で JVM を実装して、 HelloWorld を出力してみる

めもり〜 m3m0r7
みなさんは PHP にどのようなイメージをお持ちでしょうか。Web のイメージが強いのではないかと思います。
しかし、PHP は Web 系以外、例えばそう、 JVM などを実装することも可能なのです。
JVM とは、 Java Virtual Machine の略で、 中間コードにコンパイルされた class ファイルを動かすための仮想マシンのことです。
JVM は JVM Spec と呼ばれる Oracle が公開しているドキュメントがあるため実は PHP でも開発することは可能です。
30 億のデバイスで PHP が走ると思うとワクワクしますよね。
本セッションは PHP という言語の枠組みの中でどのようにして JVM のようなスタックマシンを実装したのかをトークさせていただきつつ
実際に Hello World を出力するところまでをお話できればと思っております。
4
他イベントOK 60分枠

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

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

設計文化のないチームに文化を広めたが冴えない一手で混沌を招いた話を聞いてほしい

しろぐちゆうま yu_mashirou
タイトルどおりですが、中途半端に「設計をする」という文化を浸透するためのやり方に不具合が生じるとチームが思わぬ方向へと向かうこともしばしば。
今回はそんな失敗した一例と解決した方法について、簡単に発表できればと思います。
5
採択 他イベントOK 2019/12/01 11:00〜 Track 3 (4F コンベンションホール 鶯) 25分枠

Chatworkのシステムから学ぶレガシーなPHPの限界とレガシーからの脱却

村上 俊介 shaka0maru
Chatworkでは10年近く前から運用されているプログラムがメインのシステムとして稼働しておりますが、近い将来に限界を迎えそうになっています。
システムがなぜ限界を迎えるのか、どういうタイミングで限界が訪れるのか。長く運用されているシステムだからこその理由や、PHPだからこその事情を踏まえ、将来に向けて継続的にシステムを運用していくために今後どうしていこうとしているのか について話します。
他イベントOK 25分枠

Hands-On: Creating a fast CRUD app by Phalcon Framework

Piti Champeethong ninefyi
I will demonstrate how fast to create a CRUD (Create, Read, Update and Delete Form) app using Phalcon Framework. It is a C-extension framework. It is build in to PHP library extension. It will high performance because of it is already compiled. The session is suitable for beginner level and I hope you to enjoy the hands-on.
1
phpcon-2018-sponsors
2018 2017 スペシャル プラチナ ゴールド シルバー ブロンズ ランチ ネットワーク サンクス スポンサーセッション
初めてのスピーカー International CfPあり 来日意思あり ビデオ通話希望 採択あり LT採択あり スピーカーディナー参加 スピーカーディナー不参加 スポンサースピーカー Tシャツ情報募集中
初心者向け 初めてのスピーカー インフラ 20回記念 設計 Test/CI/CD Security データベース レガシーコード フレームワーク