レギュラーセッション(30分)

Artisanコードリーディング

tadsan うさみけんた

Laravelを使っていればご存じの通り、ArtisanはLaravelのCLIインターフェイスです。

その中にはさまざまなサブコマンドが用意されていますし、ユーザーが拡張できるようにもなっています。
Artisanそのものがどのように構成されているのか、そしてそれぞれのサブコマンドがどのように実装されているかについて解説します。

レギュラーセッション(30分)

Composerを学ぶ

tadsan うさみけんた

PHPの25年の歴史にはさまざまなフレームワークがありましたが、現代と過去を分ける一つの画期として「Composer以前/以後」があります。Laravelをはじめとして、近年のPHPフレームワークとライブラリはすべてComposerを基盤にして相互運用できるように構成されています。

この発表ではComposerとPHPの機能の関係およびLaravelがComposerをどのように使っているか、そしてWebアプリケーションを本番環境で運用するためにComposerの観点からどのように注目するかについて解説します。

レギュラーセッション(30分)

Preloading Laravel

hanhan1978 富所 亮

PHP7.4から、OPCacheにpreloadという新しい設定が加わりました。この設定を利用すると、既にOPCacheを利用しているアプリケーションでも、動作速度を10倍[注1]に上げることが出来ます。

本トークでは、OPCacheの基本からおさらいし、preloadの機能を丁寧に解説した上で、Laravelで利用する場合の利用法や注意点を紹介します。
また、実際に本番で運用する際の、サーバー構成やデプロイの注意点もまとめます。

このトークでお話すること

  • OPCacheのおさらい
  • preloadの仕組み
  • Laravelにおけるpreloadの利用法
  • 本番運用でpreloadを使うときの注意点

対象者

  • OPCacheの基本を覚えたい方。
  • アプリケーションのチューニングに興味がある方。

[注1] DB接続等のIOバウンドな処理が含まれない場合に限る。

レギュラーセッション(30分)

Laravelにおけるサービスコンテナ、サービスプロバイダ、ファサード、契約の考え方を学ぶ

Panda_Program Panda_Program

Laravelは柔軟で強力なフレームワークです。
その柔軟性は、Laravelの機能をどこからでも利用できることに由来します。
Laravelの公式ドキュメント「構成の概念」章から、「サービスコンテナ」「サービスプロバイダ」「ファサード」「契約」を読み、OOPの観点からそれぞれの考え方を比較します。

レギュラーセッション(30分)

High Concurrency Architecture and Laravel Performance Tuning

albert_cht Albert Chen

We all love the elegance and high maintainability of Laravel. And we all know the the performance of PHP has amazingly improved from PHP 5 to PHP 7 in the past few years. However, in some cases, when your website faces high traffic, you still need to optimize your code and architecture in case your server went down.

In this talk, I will introduce some performance tuning skills in PHP and Laravel. Moreover, I will share with you some advanced thoughts and web architecture design for high concurrency in different use cases.

レギュラーセッション(30分)

Cast magic on Laravel to improve development efficiency

Sasaya

In this agenda Sasaya will share with you how to make your Laravel smarter, more convenient and easier to use through magic.
Clever use of SOLID principles and Laravel Container to make testing easier.
Clever use of OOP concepts and Design Patterns to make code more reusable.
Clever use of Metaprogramming to eliminate all unnecessary code, enabling developers to focus on business logic.
Accroding to above, they allow engineers to spend time in the worthy way, thereby improving development efficiency and increasing team production value.

レギュラーセッション(30分)

Laravel での開発経験を、Hyperf へ応用することについて

shengyou Shengyou Fan

私たちデベロッパーはLaravelを愛用しているが、PHP由来の制限があり、またLaravelのRAMへの負荷によって、高い並列処理 (High Concurrency) 負荷への対応に課題がある。一方、Swooleの登場は、デベロッパーに希望を与えた。そこで、Swooleの速度効果とLaravelの表現力の両立で、開発フレームワークに新たな手法を見せられないかと悩んでいたところ、幸いにHyperfを利用することで、その潜在能力を引き出すことができると分かった。この発表は、まず、各開発フレームワークの効率を比較し、LaravelのデメリットとHyperfのメリットを説明する。次に、アプリケーションを実例として、両フレームワークを利用した開発上の違いを比較する。また、デベロッパーがHyperfを活用しやすくなるように、開発テクニックをシェアする。今回の発表によって、より多くのPHP/Laravelデベロッパーがコンフォートゾーンから一歩踏み出し、更なる開発に取り組んでくれることを期待している。(このトークは英語で発表いたします)

レギュラーセッション(30分)

Laravelの教材を作ってみた

k_yuchul yuchul

現在プログラミング教室に務めており、生徒にヒアリングしながら教材作成に取り組んでいます。
今勉強中の人、これから勉強する人、初心者に指導していく人に向けて有意義な共有ができればなと思い応募しました!

現在考えている内容としては以下2点を重点的に掘れればいいなと思っています。

・初学者は何がわからないのか
・Laravelこう教えるといい感じ

よろしくお願いします!

レギュラーセッション(30分)

Laravel on Amazon ECSで作る落ちないAPIサーバー

imunew imunew

LaravelはWebアプリケーションを開発する上で必要な機能が揃っているよくできたフレームワークですが、フルスタックがゆえに、遅い・重いイメージを持たれている方も多いのではないでしょうか?
APIサーバーをLaravelで開発し、Amazon ECS上で運用してきた中で、これまでに取り組んできた負荷対策についてお話しします。

ざっくり、以下のような内容を考えています。

• まずは負荷テストをしてボトルネックを明らかにする
• とにかくキャッシュ
• キャッシュし過ぎたせいか、Redisへの接続数が激増
• 一部のキャッシュをAPCuに逃す
• Read Replica / Write Master
• AWS Fargate にて php-fpm が悲鳴をあげる(11: Resource temporarily unavailable)
• AWS Fargate から EC2 へ変更
• Capacity Provider によるスケーリング戦略

プロポーザル提出時点で、取り組んでいる最中の対策も含みますが、当日(2020/3/21)までには対策を完了し、整理してお話しできるように頑張りますので、期待していてください!

3
レギュラーセッション(30分)

「CPUとは何か」をPHPで考える

tomzoh 長谷川智希

中学生の頃にMSXというパソコンのCPUであるZ80のプログラミングを体験していました。

その約25年後、2016年にPHPで書かれたゲームボーイエミュレータのコードを読んで衝撃を受けました。ゲームボーイのCPUはZ80ベースであり、エミュレータで実装されていたのはまさにZ80の命令だったのです。この体験で、エミュレータがハードウェア仕様をソフトウェア的に表現したものであることを理解しました。

そしてさらにその3年後。名著「CPUの創りかた」で紹介されているCPU、TD4を実装し衝撃を受けました。そこに見たCPUは電気回路として表現された状態機械でした。

このトークではPHPでTD4のエミュレータを実装し、マシン語実行環境、エミュレータの対象、そして電気回路としてのCPUがどの様に動作するのかを解説し、CPUの魅力をみなさまにお伝えします!

レギュラーセッション(30分)

Laravel でもサーバレス!PHPerも明日からサーバレスを始めよう

t_tsuru 鶴島 剛

昨年のデプロイ戦略に続き、今年はAWS Lambdaへのデプロイ一本でお話します。
PHP以外の言語では、サーバレスの話題が多くなっていますが、PHPではまだまだ実例が少ないと思います。

本トークでは、Brefを利用し、既存のLaravelプロジェクトを明日からでもLambdaで動かすために必要なポイントを解説します。
LaravelをLambdaで動かすことにより、PHPerはよりコードに集中できるようになり、スケーラブルなシステムを構築可能です。コストも大幅に削減できます。

明日からサーバレスの世界に踏み出しましょう。

2
レギュラーセッション(30分)

Laravel × Dacapo で始める快適マイグレーション生活!

ucan_lab ゆうきゃん

開発初期段階ではテーブル構成の変更が激しく、マイグレーションファイルの管理が混沌となっていました。

  • カラムの増減のたびに追加されるマイグレーションファイル
  • 使用されないテーブルのマイグレーションファイル
  • upとdownの整合性を保つコスト
  • 最新のテーブル構成をマイグレーションファイルから読み取れない

開発段階はカジュアルに、スムーズにテーブル構成を変更して高い開発をしたい!

そんな要望に応えるためLaravel開発者のDX(開発者体験)を爆上げする、
Laravelのマイグレーションファイル生成サポートツール「laravel-dacapo」を開発したお話をします。

3
レギュラーセッション(30分)

バージョンアップで心が折れた話

nyamucoro ういろう

注)この話はフィクションです。きっと。

■対象
・今最新を使っている人(メインターゲットです)
・これからやる人
・もうやって、あるある話を聞いて涙したい人

皆さん、バージョンアップしてますか?
PHPや、Laravel、古くなってきたからバージョンアップしよう。
よくある話ですね。

でも、何も考えずにプログラムを書くと、あとで痛い目を見ます。

これは、本当にあったかはわからない、バージョンアップで悲しみを背負った人の話。

■内容
・vendor配下をいじった報い
・コードをコピペで拡張した悲しみ
・Laravelを見捨ててPHP上げたらLaravelがお亡くなりに
・テストコードなんてなかった
・このライブラリはもう居ない
・消えた機能
・見つからない変更点
・再度襲いかかるコピペの悲しみ
・見えない終わり
・把握できない予算、見積もり
・PHPのアプデは簡単だったという圧力
・本当はマイナーバージョンアップではない誤解
・把握できないバージョンアップの利点

1
レギュラーセッション(30分)

LaravelDB.comの設計から実装まで「ER図←→CRUD生成」を作った

daisu_yamazaki Yamazaki Daisuke

「 LaravelDB.com 」
https://qiita.com/daisu_yamazaki/items/3755467b39ef158b81a3
を参考に見てください。『Laravelを使う人を幸せにしたいという思いから作った』アプリケーションです。
これは「あったら便利だ!!」の思いから作った始まりから〜完成するまで、そして操作方法や勘所など全て話せたらと思います。
一念発起して作り始めたはいいが、、、カラムとMigration等の想定外のことやCRUD生成処理の想定外など結構大変な開発でした。
操作方法含め、お話できればと思います。

2
レギュラーセッション(30分)

PHP の昔話をしよう

m3m0r7 めもり〜

今でこそ PHP は CakePHP, Laravel など多岐にわたるフレームワークがあり、私達開発者はそれぞれのルールに則り言語の仕組み自体をそこまで知らなくても開発ができるようになりました。
品質を担保するためにはチーム開発では、より最適化されたコードをいかに多く生み出せるかだと私は考えています。ルールが存在するということは、そのフレームワークに最適化されているということとも捉えることができます。とても開発しやすい時代になったと考えます。
しかし、昔の PHP はどうでしたでしょうか。 PHP 4 の時代、私達はどのようにしてサービスやプロダクトを作ってきたのでしょうか。そして、 PHP 5 が登場したあの時の感動、 create_function から無名関数に次第に置き換わっていく快感、配列のシンタックスが array から [ と ] に変わった瞬間、そして PHP 7 が登場し、PHPer 達が驚愕したあの瞬間。
そんな PHP 4 の時代, PHP 5 の時代 そして PHP 7 に移り変わる歴史的な瞬間、それらを昔話を交えながらお話しようと思います。

2
レギュラーセッション(30分)

Laravel の Blade をプレーンな PHP のみで自作する

m3m0r7 めもり〜

Laravel の Blade 、便利ですよね。テンプレートエンジンとしても優秀だと私は思います。
そこで、 Blade を自作してみたいと思ったことはありませんか? 今回は View ファイルにかかれている HTML をを字句解析していき、 Blade のようなテンプレートエンジンを Laravel を使わずに素の PHP だけで実装するお話をします。
もちろん Blade だけに関わらず、 Smarty など他のテンプレートエンジンのような形にすることも可能です。

レギュラーセッション(30分)

PHP を使って java コマンドで動く class ファイルを生成するコンパイラを作る

m3m0r7 めもり〜

みなさんは PHP にどのようなイメージをお持ちでしょうか。Web のイメージが強いのではないかと思います。
PHP はそれ以外の用途としてバイナリを書き込んで何かしらを行うことも可能だったりします。
例えば、java が実行する class ファイルのようなバイナリを PHP で生成して、 java コマンドで動かすことも可能です。
言い換えると java コマンドで動くバイナリファイルを PHP のみで生成する、つまりコンパイラを作るということです。
本トークでは、 class ファイルの構造やオペコード(プログラムを実行する命令のこと)を PHP だけを使い、
どのようにしてファイルに書き込んだら java コマンドで動くかをお話できたらと思います。

レギュラーセッション(30分)

PHP を JVM 言語にするためのコンパイラをつくる

m3m0r7 めもり〜

みなさんは PHP にどのようなイメージをお持ちでしょうか。Web のイメージが強いのではないかと思います。
PHP はそれ以外の用途としてバイナリを書き込んで何かしらを行うことも可能だったりします。
そう、例えば PHP のソースコード自体を PHP を使って Java のクラスファイルにコンパイルし、java コマンドで動かすようにすることも可能です。
言い換えると、 Kotlin や Scala のような JVM 言語を PHP のソースコードを用いて PHP で実装するということです。
本トークでは、 PHP を AST (抽象構文木、簡単に言うとソースコードがプログラムで理解されやすいように最適化した状態) に分解し、それを Java のクラスファイル(バイナリファイル)にコンパイルしてから java コマンドで動かすまでの一連の流れをお話できればと思います。

レギュラーセッション(30分)

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

m3m0r7 めもり〜

みなさんは PHP にどのようなイメージをお持ちでしょうか。Web のイメージが強いのではないかと思います。
PHP はそれ以外の用途としてバイナリを読み込んで何かしらを行うことも可能だったりします。
例えば mp3 の ID3 タグを取得する, zip を解凍する, jpg のメタデータを取得する、などなど。
しかし、これらは一般的にはライブラリや拡張機能が提供されていて、刺激が少ないかと思います。
そんな中で、今まで誰もやったことがなさそうなこととして PHP でバイトコードにコンパイルされた Python を動かしてみたいとは思いませんでしょうか。
私は動かしてみたいと思います。本セッションでは PHP でどのようにしてバイトコードにコンパイルされた Python を動かすのかをトークできればと思います。

レギュラーセッション(30分)

--enable-zip が使えなくなった?それ PHP 単体で読み込めば解決できます。

m3m0r7 めもり〜

PHP 7.4 より、PHP をビルドする際に使用されるオプションである --enable-zip が正式にバンドルされなくなりました。
これにより、 PHP で zip を展開したり、読み込んだりすることにハードルが上がってしまいました。
libzip は PHP 7.3 より、libzip 自体の野良ビルドが必要であったり、 cmake のバージョン自体もあげないといけなかったり、必要なモジュール導入のハードルが高くなっていました。
PECL に移ったとはいえ、ビルドするのはなかなか敷居が高いです。ではどうしたらいいのか。何もモジュールにこだわる必要はありません。 PHP 単体で zip ファイルを読めばいいのです。本セッションでは、 PHP でどのようにして zip ファイルを読み込むのかをトークさせていただければと思います。