採択
2020/12/12 16:40〜
Track2
Regular session (25 mins)

効果的な静的解析のCI導入パターンを求めて

oogFranz 杉山 祐一

既存の大規模システム、とくに自動テストがないレガシーシステムにおいては、静的解析のCI導入は改善の足掛かりとして非常に有用です。
しかしながら、既存システムへの静的解析のCI導入は一筋縄ではいきません。
厳しすぎるルールで導入しても、大量のエラーやワーニングでチームが疲弊してしまいますし、
逆にルールがゆるい状態で導入しても、静的解析の良いメリットが得られません。

本セッションでは、静的解析ツールの特徴に合わせて、効率的なCIの導入パターンを紹介します。
具体的には、最低限のルールから自動的にルールを厳しくする方法や、
既存コードにはゆるいルールを適用しつつ、新規ファイル・新規コードには厳しいルールを適用する方法を紹介します。

Track ID: Track2-5-A
Discord Channel: #track2-5-a-static-analysis-ci

Long session (60 mins)

PHPも8になるんですか? 奇遇ですね、MySQLも8になりました

yoku0825 yoku0825
  • 長らく「お互い6は黒歴史、いつまでも5.x系」だったMySQLとPHP

    • MySQL 5.7「そうか…お前は7に行くんだな」
    • PHP7「お別れだな」
    • 5年くらいの時を経て、ふたり(?)は再び8で巡り合う…!
  • PHP成分はありません。MySQL 8.0のことを紹介します

    • 5.7から8.0になって増えた機能、変わったもの
    • CTE/Window関数、知っていれば使えるかも知れない新しいクエリー
    • TCP over SSL推しの新しい認証
    • ついにいなくなったクエリーキャッシュ
    • その他増えたり減ったりした機能
    • 継続的リリースモデル
    • 何故か3カ月に一度、新しい機能が増える
    • GA(General Availability)とは何だったのか
6
採択
2020/12/12 15:55〜
Track2
Regular session (25 mins)

今こそ理解する、PHPの日時計算

rukiadia Sho Yamada

「特定日時を過ぎたら実行される分岐処理を書こう」

このようなロジックを実装した経験が皆さんにもあると思います。

PHPに限らず、時間が絡む処理を書く場面は多いです。しかし、「安全」な実装を「早く」作れる人は意外と少ないのではないでしょうか?
「PHP 日付比較」で毎回検索するのは手間ですし、アンチパターンを踏み抜いてしまうリスクすらあります。
2020年の歳の瀬に日付の扱いに習熟し、PHPをより上手く安全に使いこなしていきましょう。

※PHPの標準実装やライブラリの話がメインにはなりますが、フレームワークを取り巻く状況についても触れる予定です。

Track ID: Track2-4-B
Discord Channel: #track2-4-b-phpdatetime

Lightning talk (3 mins)

半年以上続けられた輪読会のススメ

_ohshige おおしげ

現在、社内で有志を集めて輪読会を開催しています。
週に1回の開催で既に第30回にもなり、現在課題本として扱っている書籍で4冊目となります。
まだまだ少ない開催数ではありますが、順調に続けられてきています。
輪読会や勉強会を開催したいけど運営が面倒で続かないなどの経験がある方もいるのではないでしょうか?
本LTでは、3分間で、輪読会をやる理由・やり方・続けるコツなどをご紹介します。

輪読会や勉強会を開催したいけどなかなか続かない、開催を検討している、どんな本を選んでるのか気になる、といった方々に聴いていただきたいと思っています。

9
Regular session (25 mins)

オンプレのOracleからクラウドのPostgreSQLへの移行をやることになった

_ohshige おおしげ

弊サービスは今年で14年目となりました。
そんなサービスをずっと支えてきたオンプレのデータベースOracle、これをAWSのPostgreSQLに移行することになりました。
これは、弊社全体としてクラウド移行が推進されるなかでの、私たちチームのクラウド移行プロジェクトの第一弾です。
データベースはアプリケーションよりも寿命が長いと言いますが、積年のデータの詰まったデータベース移行はサービスの中心にあるためいきなりラスボス級の難易度です。
本セッションでは、オンプレのOracleからAWSのPostgreSQLへの移行に伴って行った意思決定や方針・やり方をご紹介します。

主に、以下の内容をお話します。
・弊サービスの構成と移行方針
・なぜラスボス級のDB移行を先に行うことを決めたのか
・移行に役立つAWSサービスのDMSとSCTの軽い紹介
・アプリケーション(PHP)の修正の方針
・移行に伴うあらゆる罠

以下の内容についてはお話しない予定です。
・AWSサービスの詳細な説明
・Oracleの詳細な説明
・PostgreSQLの詳細な説明

移行を検討している、移行の進め方が気になる、どんな罠があるのか知りたい、といった方々に聴いていただきたいと思っています。

9
採択
Lightning talk (3 mins)

8年運用しているCakePHPのECサイトをLaravelにリプレイスした一年後の話

ukshinpei 近藤 心平

短いWebの歴史の中で、約10年というスパンで運用され、
この先も継続して開発・運用されていく事業を支えるアプリケーションの事例は多くありません。

本プレゼンテーションでは、2019年にCakePHP + jQueryからLaravel + vueにリプレイスしたECサイトが、
その後の1年で開発や運用、デザイナー / ディレクターの意識の変化など、
社内の人等にどのような変化があったのかをお話しさせていただきたいと思います。

8
採択
2020/12/12 16:40〜
Track3
Regular session (25 mins)

PhpStormを使えばほとんどコード補完されるんだってばさ

makies マキ

PhpStorm を使って Laravel案件の開発をするとき、どのくらいコードを書いてますか?

便利なプラグインを入れ、案件に合った設定を行い、自動生成されるものも活用すると
こんなにも、コード補完でコードが書けちゃうんです。

っていう実演をしようと思います。

Track ID: Track3-5-A
Discord Channel: #track3-5-a-php-storm

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

事業のスケールアウトを支えるPHPで作る分散アーキテクチャ

ex_takezawa 竹澤有貴

大きく複雑になったアプリケーション、マイクロサービス間の複雑な連携、
事業がスケールしていくとそれまでうまく解決できていたものが、一筋縄ではいかない問題となることが多くあります。
こうした問題にはデータベースリファクタリングや、ソースコードの継続的なリファクタリングなどを活用することが多くありますが、
事業をさらにスピーディに支えるには、リアーキテクティングが必要となるケースが多くあります。
事業を支えるレガシーと云われるアプリケーションはどの様にして改善していくべきでしょうか。

本セッションではリアーキテクティングにEvent SourcingとCQRSを取り入れ、
多くのアプリケーションが事業が大きくなった場合や仕様変更に足かせとなってしまいがちなデータベースとフレームワーク機能の密結合、
多様化していくアプリケーション間連携などを解決していく実践的な内容をお届けします。
分散トランザクションや様々な手法に触れ、実際に改善してきた例も交えて解説していきます。

Track ID: Track1-3
Discord Channel: #track1-3-php-scale-out

Regular session (25 mins)

PHPerの私がお勧めするSPAフロントエンド開発環境

kaz_29 渡辺一宏

最近ではフロントエンド側をJavaScript(typescript)を使用して開発するケースがかなり増えていると思います。
私もここ数年、いくつかのフロントエンドアプリを作ってきました。

しかし、フロントエンドの開発環境は、進化・変化が早くキャッチアップするのがなかなかに大変です。

このセッションでは、PHPer/Bakerの私が最近気に入っている、React/Next.jsなどを利用したSPAフロントエンドの開発環境、技術要素、開発方法などについて紹介します。

5
Regular session (25 mins)

Laravel Livewire で体験する Server-side Two-Way Bindings

localdisk localdisk

昨今インタラクティブなwebアプリケーションの需要が高まっています。

その需要を満たすため React, Vue.js, Angular 等の JavaScript Framework を使いこなす必要がありますが、フロントエンドの学習コストの問題でなかなか手をつけられない人も多いのではないかと私は推測しています。

Laravel Livewire はそういった問題を解決するために開発されたライブラリで、フロントエンドの多くの処理をサーバーサイドで記述することができます。
本セッションでは Laravel Livewire の紹介と、実際のライブコーディングをあわせてその便利さを体験してもらいます。

5
採択
Lightning talk (3 mins)

PHPConのElePHPantができるまで

nauleyco nauleyco

昨年、日本PHPカンファレンス版のElePHPantを作りました。
作りたいと思ってから、みなさんの手に届くまで、どのような流れだったのか、振り返ってみたいと思います。
また、時間があれば、めずらしいElePHPantの紹介や、オーナーランキングの紹介もしたいと思います。

9
採択
2020/12/12 12:40〜
Track3
Regular session (25 mins)

GCPとPHP

gamu1012 サイトウ

Google Cloud Platform(GCP)ではPHPを動かす環境がたくさんあります。

Google App Engine(GAE)だけでも3パターンあり、
他にもGoogle Compute Engine(GCE),、Google Kubernetes Engine(GKE)、Cloud Run があります。

この発表では、それぞれの環境でやれること、メリットデメリットについてお伝えします。

また、どういう考えで環境を選ぶかというプロセスを実体験を交えながら、ご紹介します。

Track ID: Track3-2-A
Discord Channel: #track3-2-a-gcp

採択
Lightning talk (3 mins)

Symfony公式の『日本語』入門書ができたよって話

ippey_s 角田 一平

Symfonyから『日本語』の入門書が発売されました。翻訳を手伝ったので本の紹介と、時間的に余裕があればどのように翻訳作業したかをすごく簡単にご紹介します。

4
Regular session (25 mins)

Symfony CLIを使ってPHPアプリケーションの開発用Webサーバをつくる

ippey_s 角田 一平

MAMPやvagrant、Dockerなど、PHPアプリケーションを開発・検証するWebサーバをつくるにはいろいろな方法があります。
いずれも便利なツールですが、"Symfony CLI"でも簡単に開発Webサーバをつくることができます。
Symfony CLIを使って、そこそこ快適な、壊しやすい開発Webサーバのつくり方をご紹介します。

Lightning talk (3 mins)

PHPで動的なOGP画像を生成しよう!

gamu1012 サイトウ

各コンテンツのタイトルが含まれるような動的な自動生成のOGP画像を活用しているサービスが増えてきました。

これを実現する方法はいくつかありますが、私達になじみのあるPHPでも、もちろん実装することができます。

このLTではOGP画像生成のながれとポイントなどをご紹介します。

8
Regular session (25 mins)

ライフステージ別技術イベントとの付き合い方 〜仕事と子育て、時々勉強会〜

s_yo_ko しもおか

エンジニア夫を見送る側、見送られる側、両方の経験をしてきました。
独り身の時には気軽に参加していた勉強会やカンファレンス。
パートナーができたら?子供ができたら?
いつまでも今までと同じように参加できると思っていたりしませんか?
長年イベント参加するには家族の理解を怠ってはいけません。
送り出す側の気持ちを伝えたいと共に、子育て真っ最中の方やこれから子育てする若い方々に、エールを送りたいと思います。

6
採択
Lightning talk (3 mins)

静的解析から始める負債コード解消

mushacabbage 藤岡大樹

長年続くサービスになると負の遺産が溜まっていくもの。
いち関数の役割が多く読めたものじゃない、未使用の関数が放置されているなどといったコードが多く混在してしまいます。
私のチームではこれらの負の遺産による可読性の低下によって、生産性が悪化したり開発そのものを見送るという事態が発生しました。
そこで私のチームではPhpStormのInspection機能に注目し、既存コードの可読性を高める取り組みを行いました。
・未使用の変数や関数を検知する
・関数コメントが書かれていない関数を検知する
・引数なし関数を引数ありで呼び出している箇所を検知する
など
本発表では、リファクタリング活動におけるInspection機能の活用事例を時間の許す限りご紹介します!

8
採択
2020/12/11 19:35〜
Track1
Regular session (25 mins)

SPAのAPI開発の「やりづらさ」をDDDとオブジェクト指向の発想で解決する

77web 菱田裕美

ここ数年、フロントエンド開発がリッチになるとともに、PHP界でもシングルページアプリケーション向けAPIの開発が多くなっていると思います。
そんな中、一般的な解説書や解説記事に従ってAPI実装を始めると課題にぶつかることになります。
たとえば、

  • ロジックがフロントエンドとバックエンドに重複して実装される
  • APIコールについてn+1問題が起きる
    といった課題です。
    こういったAPI開発の「あるある」な課題について、長期間の運用が想定される自社サービスのSPA用APIを開発するにあたって、社外のメンターにアドバイスをいただいたりフロントエンドエンジニアと議論しながらたどり着いた現時点でのベストプラクティスについてお話します。
Long session (60 mins)

Laravelの黒魔術(拡大版)

localdisk localdisk

Laravelの黒魔術

ここ数年、Laravelの利用者は大幅に増えました。

Laravelにはたくさんの便利な機能がありますが、その機能はどのように動いているか知っていますか?

本セッションではLaravelのコードの中で私がとくに面白い!と思ったものを(なるべく)わかりやすく解説します。

拡大版はおもしろポイントを増やしてがっつり解説します。

7
採択
2020/12/11 19:00〜
Track1
Regular session (25 mins)

Laravelの黒魔術

localdisk localdisk

ここ数年、Laravelの利用者は大幅に増えました。

Laravelにはたくさんの便利な機能がありますが、その機能はどのように動いているか知っていますか?

本セッションではLaravelのコードの中で私がとくに面白い!と思ったものを(なるべく)わかりやすく解説します。