採択
2020/12/12 12:40〜
Track5 (PHP8 Special)
Long session (60 mins)

PHP 8 で作る JSON パーサ

shin1x1 新原雅司

JSON は現在の Web アプリケーション開発では一般的なデータフォーマットです。PHP でも json_encode() や json_decode() といった関数が用意されており、多くの方が日々の開発で利用されているでしょう。

実務上はこうした関数もしくはラップされたクラスを利用すれば良いのですが、仕様がシンプルではありつつも適度な複雑さを持っており、さらにとても馴染み深いという意味でパーサを書く題材に適しています。

また、JSON パーサを書くには下記のような機能を利用することになり、プログラミング言語の基本的な使い方を学ぶにも良いテーマです。

・分岐、ループ、再帰処理
・文字列の扱い
・型、構造化データの扱い

このセッションでは、パーサを書いたことが無い方、パーサを書いてみたい方、また PHP 8 の新機能を使った実装を見てみたい方を対象に PHP 8 で JSON パーサを実装する方法をご紹介します。

Track ID: Track5-2
Discord Channel: #track5-2-json-parser

Lightning talk (3 mins)

急に「採用の面接出てもらえませんか」と言われたら

sobaimoo 山崎 一樹

昨今のエンジニアの採用活動においては、人事の採用担当者やエンジニアリングマネージャーだけでなく、現場で活躍するエンジニアのかたも採用活動に関わることが多いのではないでしょうか。
また、採用の精度を上げることが課題となっている会社組織も多いのではないでしょうか。

これから採用に関わるPHPerの方々に向けて、私の失敗を踏まえながら、面接において気をつけるポイントを紹介したいと思います。

8
Regular session (25 mins)

Re:Startup Day-1

ariaki4dev ariaki

他社事業を買収し再出発するWeb系スタートアップの技術責任者。こんな経験をされる方は少ないのではないでしょうか。
このセッションでは「君、明日から技術責任者ね」と言われたエンジニアが何を考え、どう判断するのか、現在進行系のリアルな経験談をお話します。
一般的な職位のあるべき論ではなく「スタートアップのDay-1に立った」私を主語にしキャリアと思考についてお伝えします。
技術中心思考から事業全体へと視座をあげ意識を変革することは、すべてのエンジニアにとって成長のきっかけになるはずです。
技術職でのキャリアアップをめざし今後どう成長していくべきか悩まれている方に、ぜひ聴いていただきたい内容です。

6
採択
2020/12/12 10:40〜
Track3
Long session (60 mins)

初心者セッション

kashioka 柏岡秀男

PHPカンファレンス恒例の本当の初心者向けセッションです。
どのような言語か、どのような特徴があるのか、どのように学習していったらいいか。
本当の一歩目の解説を行います。デザイナーさんや多言語の経験者の方でも理解できる内容です。
これからプログラミングを始めたい人でも理解できる部分が多いセッションです。
仕事での利用経験のある方やPHPの入門書を完了されたレベルの方は他のセッションの聴講をおすすめします。

Track ID: Track3-1
Discord channel: #track3-1-beginner

Regular session (25 mins)

PHPと乱数

ariaki4dev ariaki

PHPには乱数生成関数がたくさん実装されていますが、いったいどれを使えばいいでしょうか?

rand()
mt_rand()
random_int()
random_bytes()
openssl_random_pseudo_bytes()

なんでこんなに関数があるんでしょうね。
みなさんはどの関数をどんな目的で使ってますか?それって本当に安全ですか?
それぞれどんな歴史的経緯があり、アルゴリズムや実装ってどうなっているでしょうか。
このセッションでは、そもそも乱数とは何か基礎知識からはじめ、PHPでの実装を踏まえながら解説を進めます。
さぁ、PHPの闇に触れましょう。

6
採択
2020/12/12 14:00〜
Track3
Long session (60 mins)

Webサービスをセキュアに保つために必要な視点

ariaki4dev ariaki

Webサービスは、日常から多くの危険にさらされています。
多くの方が「Webサービスをセキュアに保つことは重要」と思いながら、実際セキュリティ事故にあわない限り他人事に感じがちです。
そうして、サービス上に潜むセキュリティリスクを過小評価しているかもしれません。

このセッションでは、私がWebサービスを開発・運用するなかで遭遇した攻撃や対処などをまとめ、セキュアに保つ必要性を見つめ直します。
とくに、いま私が携わっている月間2億PVほどの大規模コミュニティサイトを題材にして、実際にあった事例をもとに掘り下げていきます。
全体をとおした難易度は、PHPが読み書きでき、簡単なサイトを構築できるレベルの方を対象にしています。

本セッションでお話する内容は次のとおりです。
• Webサービスへの攻撃事例
• OWASP TOP10などのセキュリティ指針の解説
• セキュアに保つためにはどんな視点や行動が必要か

このセッションは、Webサービスへの具体的な攻撃手法を解説する可能性があります。
すべての聴講者は「本セッションで得た知識をもとに攻撃を行わない」ことにご同意ください。

Track ID: Track3-3
Discord Channel: #track3-3-secure-web-service

採択
Lightning talk (3 mins)

PHPerのためのCVEデータベースの紹介

glassmonekey ナガノ

何とかペイとか何とか口座やらでセキュリティインシデントが改めて重要視される世の中になってきました。
そのための情報収集、アップデートを管理することはエンジニアにとって義務といっても過言ではないでしょう。

しかし、優先順位の問題で手をつけられてなかったり、工数の問題で本格的に着手できてないといったこともあるのではないでしょうか?
そこで今回は我々PHPerが普段使うcomposer.lockからセキュリティインシデントのうちCVEの識別子が付与されたものを見つけてくれるツール及びデータベースを紹介します。

8
Lightning talk (3 mins)

PHPUnit 9 時代のTest Doubleの作り方

hgsgtk 東口和暉

PHPUnit もバージョン 9 になりました。長年第一線で活躍し私達PHPerにテスト可能な開発環境を提供し続けてくれているPHPUnitは、その分歴史が長く、バージョンごとに これまでの使い方は deprecated になっていきます。

PHPUnit 9 では、さまざまな機能削除や非推奨勧告がありますが、その一つが表題にある MockBuilder::setMethods の deprecated です。

そこで改めてこの変更を機に、次の点をものの3分でお得に抑える時間を提供したく思います。

  • PHPUnitのTestDoubleの語彙整理の根拠 xUTP本とその該当箇所、createStub / createMockの違い
  • setMethodsからaddMethods/onlyMethodsになった使い方
  • deprecatedになった理由をissueの内容から抑えて背景思想を理解する
  • PHPUnit の内部実装ではどのような変更が行われたのか(これはPHPUnit 8でのaddMethods/onlyMethodsの話でもある)

LTっぽい内容凝縮トークになると思います。

17
Regular session (25 mins)

アジャイル開発見積実践 〜フィードバックを継続的に得るためのユーザーストーリー分割〜

hgsgtk 東口和暉

昨今のPHPerにとって、継続的に価値を提供するソフトウェアをつくるためには、言語等の技術要素に加えて、開発の流れや人に対するエンジニアリングも必要不可欠です。
「技術と人」両方に着目するようになると、XPやアジャイルなどの考え方・取り組みに最終的に帰着するチームは多いと思います。
アジャイル開発において、ユーザーストーリーをイテレーションごとに収まるような形で分割することは、プロダクトに対する検査と適応のリズムを得るために重要な取り組みです。ユーザーストーリーが大きすぎるものをそのまま取り組もうとすると、大きさゆえに見積自体の精度もより落ちてしまったり、その実現に期間を要することから顧客からのフィードバックも得づらくなります。

今回は、実際に所属企業で実践した実例を題材にしつつ、聴講いただいた皆様が明日から使える実践的な見積もり技術話をお届けできれば思っています。

11
Regular session (25 mins)

Community Strategy 101

chmazur Chris Mazur

Communities are increasingly important in this Digital Transformation era. Getting together people and technology with common interests, a strong sense of belonging and collaboration is a powerful platform to empower individuals and connect organizations with their audience.

With 20 years of experience in software development and more than 12 years being heavily involved in tech communities as community leader and strategic advisor in Argentina, New Zealand, Australia and US I would love to dive with you the principles of building diverse and innovative communities with a positive impact in the society.

1
Regular session (25 mins)

Messaging re:Born

Thr33One Nick Chiu

How Apache Kafka is different from other messaging systems like RabbitMQ.
What are the advantages and disadvantages and why you should
consider changing your service communication.

Regular session (25 mins)

How to not break messaging

Thr33One Nick Chiu

We all know about API versioning and how painful it can be to maintain these,
especially for many services and over a long time.
What if there was a better way for this using messaging?
We will dive in, how Apache Kafka and Apache Avro can make your life
easier and how you can have evolving schemas.

2
採択
2020/12/12 16:40〜
Track6 (International)
Regular session (25 mins)

Service communication re:Born

Thr33One Nick Chiu

As we move more and more to microservices communication between services becomes more important.
Using messaging is an effective way and gives us a lot of freedom & benefits, especially when using Apache Kafka.
This helps services to be very resilient and being able to scale without losing the control and overview.

Track ID: Track6-5-A
Discord Channel: #track6-5-a-service-communication

採択
Lightning talk (3 mins)

PHPer のための Vim 実践入門

hamakou108 濱田 晃輔

Vim は他のエディタに代えられない素晴らしい開発体験を提供してくれます。
その一方 PhpStorm や VS Code のような IDE が持つ豊富な開発補助機能が Vanilla Vim には存在しないため、実用面では IDE の後塵を拝する状況となっています。

Vim か IDE のどちらかなんて選べない!
そんな私は Vim をいかに IDE の書き味に仕上げることができるか、その可能性を突き詰めてみました。
Neovim と各種 Vim Plugins 、 Language Server の PHP Intelephense を使ってファイラ、自動補完、スニペット、リンタなどの機能を実現する方法を紹介します。

7
Long session (60 mins)

From dev to prod with GitLab CI

shochdoerfer Stephan Hochdoerfer

Continuous Delivery Pipeline as code is key helping you to ensure long-term maintainability. Treating your pipeline as code helps you to version it in your SCM of choice, makes changes easily traceable, and lets anyone on your team make required changes. In this session, I will show you how we build and maintain our Continuous Delivery pipeline using tools like GitLab CI, Docker, Nexus, and Traefik. Together we will take a deep dive into the GitLab CI Build Pipelines to build and deploy docker containers to dev, stage, and production environments.

採択
2020/12/12 17:15〜
Track6 (International)
Regular session (25 mins)

How good are my tests?

shochdoerfer Stephan Hochdoerfer

How to measure the quality of unit tests? Code coverage is not necessarily a good indicator to answer this question. What other options do we have? Do we need tests to test the quality of our tests? In some way, yes we do. In this session, I will introduce you to the concept of mutation-based testing and how this technique can be used to improve the quality of your test suite.

Track ID: Track6-5-B
Discord Channel: #track6-5-b-how-good-are-my-test

Regular session (25 mins)

【Symfony】DBマイグレーションの前に常にmysqldumpを実行するようにして心の平穏ゲットだぜ!

ttskch たつきち

SymfonyプロジェクトでのDBマイグレーションの不安を和らげるために、マイグレーションを実行する前にmysqldumpを出力するようにする方法について紹介します。
ちゃんとBlue Green Deploymentしているようなプロジェクトでは無縁の話ですが、サーバー1台にアプリもDBも同居しているような古き良き構成ではとても役立ちます。
インフラに投資してもらえないSymfonyプロジェクトをお持ちの方必見!

3
Regular session (25 mins)

【Symfony】シンプルでカスタマイズしやすい最強のページネーションバンドル

ttskch たつきち

Symfonyユーザーの皆さんに朗報です。

シンプルでカスタマイズしやすい最強のページネーションバンドルを作りました。
https://github.com/ttskch/TtskchPaginatorBundle

・超軽量
・Symfony以外に一切依存なし
・ページャー部分のHTMLなどはtwigで簡単にカスタマイズ可能
・見出し部分を簡単にソートのためのリンクにできる
・検索フォームとの連動も簡単
・ページャー部分のHTMLのBootstrap4テーマをプリセット

といった特徴を備えています。

本セッションでは、このバンドルを使って実際にページネーションを実装する手順や、Doctrineと連携した応用的な使い方について解説します。

2
採択
Lightning talk (3 mins)

めざせブレークポイントマスター

820zacky つざき

ブレークポイントを制するものがデバッグを制する。
PhpStormのブレークポイントを学び、ブレークポイントの真のチカラを解放しましょう。

PhpStormのブレークポイントには様々なオプションがあります。
「条件」、「ログ出力」、「次のブレークポイントに到達するまで無効にする」など、デバッグを便利にするオプションについて例を挙げながら解説します。

17
Regular session (25 mins)

LaravelとAWSでサービスとともに設計を成長させる

kazuhei__ かずへい

開発当初はインスタンス一つで動いていたWebサービスも機能が増えるにつれて複雑になっていきます。
メールを送りたい、定期実行したい、高度な検索をしたい、ログを取りたい、アセットをCDNに置きたい。
Laravelをサービスをつなぎ合わせる糊として使うことでAWSにはたくさんの便利なサービスを有効活用できます。
設計が変化していった変遷をその時の苦労話を交えてお伝えします。

10