PHPerKaigi 2020 トーク一覧

採択 2020/02/10 12:20〜 Track A ランチセッション

エキサイトの大改造を大解剖!

齋藤 匠 takumi_saitoh
2018年12月より新経営陣を迎え、創立22年のエキサイトは再始動いたしました。
抜本的な改革を断行した結果、2020年3月期の上期決算において、エキサイト史上最高の利益を残すことができました。
その大改造の様子や今後について説明いたします。
採択 2020/02/11 12:20〜 Track A ランチセッション

クリーンな実装を目指して

Hamee株式会社
・なんでそのクラスにそのメソッドをもたせたの?
・そもそもどうしてそのクラスを作ったの?
・どうしてインターフェースを作るの?

実装していてこんな質問を受けた時
体系的にわかりやすく答えることって難しいですよね

「この場合〇〇になってしまうから」とか「こうやって実装したときに後々いいから」といった具体例を挙げた回答だけではなく、設計の観点からお話します。

このセッションでは、レガシーコードに新機能を追加するにあたってどうすれば変更に強く、理解しやすい実装ができるのか。弊社サービスのある機能開発を通して学んだことを実例を交えて紹介します。主にドメイン駆動設計の視点から設計やリファクタリングについて「やってよかったこと」「こうするともっとよかった」という話をします
他イベントOK 30分トーク

SQLServerの操作が辛い?それPHPでコマンドラインクライアント作れますよ?

hanhan1978 富所 亮 hanhan1978
SQLServerの操作って大変ですよね。基本GUIのツールを使う必要がありますし。
MySQLみたいに、簡単にクライアントから接続できて、気軽にSQL発行出来たらなぁ...

それPHPで出来ます!
Readlineを使って、mssqlコマンドを作っちゃいましょう!
他イベントOK 30分トーク

パワポの操作が辛い?それ PHP で自動化できますよ。

m3m0r7 めもりー m3m0r7
パワポを使用する業務、大変じゃありませんか?全スライドのフォントを整えたり、座標を調節したり、画像の配置を変えたり、本来の業務の時間を割いてやるのは時間がもったいないです。
そこで、自動化をしたいと考えたことはありませんか?でも VBA 難しいしな… と思う必要はありません。
そう PHP でパワポの生成や全スライドのフォントを整えたり、座標を調節したり、画像の配置の変更を自動化すればいいのです。
本セッションでは PHP でパワポのファイル生成をどのようにやるのかを解説します。
他イベントOK 30分トーク

ワードの操作が辛い?それ PHP で自動化できますよ。

m3m0r7 めもりー m3m0r7
ワードを使用する業務、大変じゃありませんか?フォントを整えたり、画像の配置を変えたり、本来の業務の時間を割いてやるのは時間がもったいないです。
そこで、自動化をしたいと考えたことはありませんか?でも VBA 難しいしな… と思う必要はありません。
そう PHP でワードファイルの生成やフォントを整えたり、画像の配置の変更を自動化すればいいのです。
本セッションでは PHP でワードファイルの生成をどのようにやるのかを解説します。
他イベントOK 30分トーク

エクセルの操作が辛い?それ PHP で自動化できますよ。

m3m0r7 めもりー m3m0r7
エクセルを使用する業務、大変じゃありませんか?方眼紙にして入力したり、セルの枠を調整したり、本来の業務の時間を割いてやるのは時間がもったいないです。
そこで、自動化をしたいと考えたことはありませんか?でも VBA 難しいしな… と思う必要はありません。
そう PHP でエクセルの生成やセルの調整などを自動化すればいいのです。
本セッションでは PHP でエクセルファイルの生成をどのようにやるのかを解説します。
他イベントOK 15分トーク

10数年続いた配信サービスの配信基盤とAPIをリプレイスしている話

juve534 juve534 juve534
私達は昨年から、10数年続いたサービスの配信基盤とAPIをリプレイスしています。
現在Adobe Media ServerとFlashで構築しているシステムを、WebRTCで再構築しています。

APIはフレームワークを使わず実装されていましたが、PHP7とLaravelの構成に作り直しています。
このセッションでは、自分たちの昨年からの歩みとして、現在のアーキテクチャになった経緯と苦労を話して行きたいと思います。
今後リプレイスする方の参考になれば幸いです。

話そうと思う技術
・WebRTC
・Laravel
・AWS
他イベントOK LT

インフラ詳しくない男がTCP/IPのハーフクローズを知った話

juve534 juve534 juve534
私は普段、TCP/IPを意識することはありませんでした。
しかし、映像配信サービスの開発に携わる中で、サーバでWebSocketの切断検知がうまくいかず、TCP/IPのハーフクローズを知りました。
そこで実体験をもとに、TCP/IPのハーフクローズを話していきたいと思います。
採択 2020/02/10 14:15〜 Track A 15分トーク

磯野ー、MySQLのロック競合を表示しようぜー

yoku0825 yoku0825 yoku0825
MySQLのロックはお好きですか?
行ロックギャップロックにテーブルロック、メタデータロックauto_incrementロックetcetcetc..
目XPLAINで戦うには多彩すぎる種類のロックがあります。

これを可視化できる performance_schema.data_locks (MySQL 8.0で導入された) のすばらしさ、5.7とそれ以前との違いを説明します。

https://dev.mysql.com/doc/mysql-perfschema-excerpt/8.0/en/data-locks-table.html
30分トーク

MySQL、令和時代のレプリケーション

yoku0825 yoku0825 yoku0825
MySQLも8.0になって、5.xの頃とはだいぶレプリケーションの定石も変わってきたような気がします。

- Non-GTIDなレプリケーションを(新規で)選ぶ理由ってある?
- master.info, relay-log.infoがどっかいった?
- Cloneプラグイン + GTIDでレプリケーションを増やすのが自動化できそう

令和時代のレプリケーション詰めて「令プリケーション」の現在を紹介します。
(このセッションは割とインフラ寄りです)
30分トーク

CTEとWindow関数で何ができるか考える

yoku0825 yoku0825 yoku0825
MySQL 8.0にはついにCTE(WITH句)とWindow関数が実装されました。
とはいえ「今までなかったもの」は使い方も想像がつかぬもの、どんな用途に使えるのか、そもそもCTEやWindow関数の名前をここで初めて聞いた! みたいな人もいるかも知れません。

それぞれの構文の詳解/説明や「こんなことに使えるんじゃない?」のような提案をしたいと思っています。
採択 2020/02/11 14:00〜 Track B 15分トーク

ぼっちからはじめるレガシーカルチャー改善ガイド 〜はじめの一歩編〜

blue_goheimochi 大橋 佑太 blue_goheimochi
勉強会やカンファレンスに参加するとムクムクと湧いてくるカイゼン意欲。
「よっしゃ明日からやってやるぞー!!」と思って気持ちよく寝ても、
いざ翌日出社すると「あれ・・・どこから手をつけたらいいか分からない・・・」となったりしていませんか?
わたしはそうでした。(いまでもそんな時はあります)

会社の制度やチームの文化を変えるための「銀の弾丸」はないと思っています。

わたしの会社やチームもまだまだカイゼンの余地がありますが、
様々なアプローチを試行錯誤し、少しずつ少しずつカイゼンが進んでいっているなという実感を持っています。

今回のセッションでは特に「カイゼンをまず1人ではじめよう!」と思った時に、わたしが実際に行なったアプローチを時間の許す限り紹介したいと思います。
聞いてくださったみなさんが、明日(明後日?)に出社して、もっと気軽にカイゼンをはじめるためのヒントとなれば幸いです。
15分トーク

PHP Mode Kaigi

tadsan うさみけんた tadsan
PHPは多くのテキストエディタでサポートされている言語ですが、どこまでPHPに特化して編集をサポートしているかはエディタによってさまざまです。

PHP ModeはEmacs上に構築されたPHPの開発環境であり、私はPHP Modeの現行メンテナを務めています。

本トークではテキストエディタやPhpStormを含めたIDE(統合開発環境)によるPHPサポートの現状と、エディタによる開発支援機能の理想について、PhpStormやEmacs PHP Modeの実例を挙げて紹介します。

Emacsの言語編集モード(メジャーモード)は伝統的に構文要素を色付けするだけでなく、自動インデントなど比較的高度な機能が要求されます。

技術的なおもしろさとして、テキストエディタは完成されたプログラムではなく、人間がキーボードで入力する途中の不完全な状態のソースコードを対象とする必要があり、通常の言語処理系とは多少違った独特の考慮事項についても紹介します。
他イベントOK 15分トーク

Hello PHPer! I am Ansible!

attakei kAZUYA tAKEI attakei
コンテナコンテナしている時代ですが、それでもDockerやk8sなどを使わないサーバー構成はなくなることはないでしょう。

このトークでは、AnsibleでPHP環境を構築するユースケースを紹介します。
Pythonなんて必要ないので、是非気軽に構成管理を持ち帰ってください。
LT

レガシーなJava製サービス内通貨管理システムをPHPでリプレイスした話

motokiito2 伊藤 本気 motokiito2
10年以上続いているとあるサービスで利用されるJava製のサービス内通貨管理システムを、PHPでリプレイスした際の話をします。

システムの規模の大きさから改修が敬遠されていたレガシーなシステムのリプレイスに踏み切った経緯や苦労した点などをお話できればと思います。

具体的には以下の内容を予定しています。
- JavaとPHPの言語仕様の違いで苦労したこと
- イケてないレガシーな実装を、仕様を極力変えずにスマートに実装しようとがんばったこと
2
採択 他イベントOK 2020/02/11 13:30〜 Track A 15分トーク

Zend VMにおける例外の実装

hnw hnw hnw
PHPスクリプトの実行時には「コンパイル」と呼ばれる処理が行われ、スクリプトはZend VM(PHPの仮想的なCPU)の命令列に変換されてから実行されます。このZend VMは本物のCPUと似た命令も持っていますが、本物のCPUではあり得ない命令も持っています。その一つが例外処理に関わるものでしょう。

本講演では、例外処理をZend VMはどのように実現しているのか、Zend VMと本物のCPUとの違いは何か、といった実装の詳細をPHPのCソースコードを交えて紹介します。
採択 他イベントOK 2020/02/11 10:25〜 Track B 15分トーク

ジェネレータで無限を手玉に取る術

tadsan うさみけんた tadsan
「PHPでforeachで反復できるものは何でしょう?」配列、オブジェクト、Iterator、そして“ジェネレータ”です。

ジェネレータは言語によってコルーチン、semicoroutineやFiberとも呼ばれるものと同等の言語機能であり、SICPのような計算機科学の教科書で説明されるストリーム・無限リストを簡潔に実現できます。
foreachループで配列を反復するのは既に作成済みのデータを頭から辿っていくだけのものであるのに対して、ジェネレータは配列のキーや要素に相当するものを計算によって生み出すことができるため、省メモリで効率のよい計算が可能です。

このトークではジェネレータの基礎概念と、実際に応用できるパターンについて紹介していきます。
他イベントOK 15分トーク

PHP5からPHP7へ移行するメリットを語る(動作スピード以外で)

sapi_kawahara さっぴー川原 sapi_kawahara
私は、何件かPHP5からPHP7移行をしてきました。
実はPHP7に移行して動かなくなるのは、実は稀なケースであり、すんなりと動きます。
PHP7は怖くないです、移行する価値は絶対にある、そんな話をしても、移行していない人は乗り気じゃない。

移行しない理由にメリットの少なさというか、早さ以外のメリットが出てこないのです!
「PHP7早くなったんでしょ?うちでは動作スピードを求められてないからねー」
「PHP7は早くなったけど、色々と無くなった(関数)んでしょ?」
「PHP7の早さだけで移行予算は組めないんだよね」

そこで早さ以外のメリットを語ってみたいと思います。
1
15分トーク

PHPによるバックエンドGraphQLサーバー構築で得た教訓

sogaoh sogaoh sogaoh
だいぶ流行になってきているGraphQL、これをフロントエンドとのインターフェースに利用した、
バックエンドGraphQLサーバーの構築を機会あって経験しました。

以下のような事項に関して、この経験で得た教訓をご紹介できればと思います。
- スキーマ駆動開発のメリット・デメリット
- リポジトリパターン実装におけるスキーマから実DBへの処理クラス切り換えタイミング
- lighthouse-php の「利用のしどころ」
- このようなLaravelとの連携ツールがあってほしかった
- 通信・環境面での苦労

可能な限り、バックエンド開発者としての自分のみではなく、フロントエンド開発者・インフラ運用者、等の
複数の立場からの見解を盛り込めればと思っています。
1
採択 他イベントOK 2020/02/11 16:00〜 Track A LT

自分の名前を"ちゃんと"入力したい人生だった

hamaco hamaco hamaco
私の苗字は「濱󠄂中」なのですが、実は普通に「はまなか」を変換してでてくる「濱」の字とは違う字体が使われています。
これは異体字と呼ばれるもので、「はしご高(髙)」や「立つ崎(﨑)」の仲間なんですが、この辺のメジャーな文字と違って変換も表示もできなくて辛い思いをしてきました。

けれど、最近のOSでは普通に異体字を扱えるようになり、(頑張れば)私の「濱󠄂」の字が読み書きできる時代が来ています。
ここでは、異体字がどういうものなのか、自分の名前を読み書きするためにどうしたのか、結果どうなったのかそういったことを話せればと思います。