Laravel って,便利な機能が沢山実装されているし,ディレクトリ構成もテンプレートがそのまま使えて初学者に優しいですよね.
かくいう僕も,ほとんど Laravel の実務経験が無いまま新卒で社内プロダクトを引き継いだ頃は「便利だ便利だ」とLaravelに乗っかりまくっていました.
そんな中,だんだん「これってどうなの」と思う点がチラホラ出てきました.
・Controller と Model だけに処理を記述すると,肥大化して責務が不明瞭になってしまう
・Facade はどこでも使えて便利だが,依存関係が分かりづらくなってテストや拡張がしずらくなってきた
n番煎じかもしれませんが,「Laravel・PHP 初学者だったらこうしがち,でもちょっとできる人はこうやるよ」という観点で,実際に僕が経験した Laravel のコレジャナイ感とその解決法をお話します.
2018年のGitHub UniverseでGitHub Actionsが発表されてから約3年、今ではGitHubを代表するなくてはならない機能の1つになっています。
発表者もv2(not HCL)から使い始めており、作成したOSSのCI/CD環境として活用するだけでなく、独自に作成したActionもいくつかGitHub Marketplaceに公開しています。
本発表では、GitHub Actionsを使いこなすに当たって、私の知る知見を時間の許す限り紹介します。
細かすぎて全く必要のなさそうな情報ばかりかもしれません。しかし、あなたがGitHub Actionsを使いつづけていくといつか必要になる情報かもしれません。
そして本発表では最終的に「PHPで独自Actionを作成する」ところまでいきたいと思います。
BASEはCakePHP2という古いフレームワークを使っています。バージョンアップ計画は水面下で動いていましたが、コロナ特需によるサービスの急成長とそれに伴う開発組織の急拡大を背景に、バージョンアップだけでなくサービスの中長期的な成長を支えながら組織の問題も解決するような統合的な戦略が求められ、もはやバックエンドテクノロジーのリアーキテクチャリングと呼べるプロジェクトへと定義が更新されています。
事業会社における開発組織として中長期的にサービスとテクノロジーにどう向き合えばよいのかを考え続けた結果、我々はマイクロサービスではなくモジュラモノリスを中心に据えた戦略をたてました。この発表では我々の考える中長期的なアーキテクチャ戦略の概要と、PHPにおけるモジュラモノリスの実践について、1つの他社事例として皆様にお伝えしたく思います。
ウェブアプリケーションの開発においてE2Eテストの自動化は身近なトピックです。SeleniumやPuppetter、PlaywrightやAppiumなどがブラウザ・ネイティブアプリの自動操作のOSSとしてよく挙げられます。しかし、それらの裏側はご存知でしょうか?
本トークではこれらのツールの背後にいるWebDriver、Chrome DevTools Protocolsに焦点を当てます。
WebDriver、CDPとはなにか、その違い、仕様について、PHPエンジニアに身近な言語を用いて"直接"実装することを通じて解説します。
本トークを通じて直接触れることでライブラリでwrapされている裏側まで知ることできます。E2Eテスト自動化の課題に出会ったときに「裏側がこうだからたぶんこういうことだよね」と想像できるようになる、少し世界の見え方が変わる時間を提供します。
ソリューションドメインという単語をご存知でしょうか?
ソリューションドメインとはPHPのようなプログラミング言語やMySQLのようなデータベースといった技術に関するドメインですが、ソリューションドメインに関する知識が少ないと、不必要な複雑さをアプリケーションに持ち込んでしまったり、適切でないモデルを構築するハメになってしまうことがあります。
エンジニアであれば技術の勉強を通してソリューションドメインへの理解を深めているはずですが、このトークでは改めてソリューションドメインについてまとめたいと思います。
EOL対応はエンジニアの永遠の課題ですよね。
弊社では5つのサービスがPHPで作られており、そのうち4サービスは10年以上の歴史を持つサービスです。
そんな中始まったPHP8へのバージョンアップ対応は一筋縄ではいきませんでしたが、以下のステップで取り組んだことで大きな問題なくバージョンアップを終わらせることができました。
このセッションでは、弊社の全5サービスで行ったPHP8へのバージョンアップ対応の取り組みやそこから得られたノウハウをご紹介し、これからPHP8へのバージョンアップを検討されている方に有益な情報をお届けできればと思います。
Laravel Octane(オクタン)は、SwooleやRoadRunnerなどの高性能なアプリケーションサーバを使用し、アプリケーションを提供することで、アプリケーションのパフォーマンスを向上させます。Octaneはアプリケーションを一度起動したら、メモリ内に保持し、そして超音速でリクエストを送り返します
(引用:https://readouble.com/laravel/8.x/ja/octane.html)
Laravel Octane(Swoole版)でPharをつかってワンバイナリアプリケーションにして運用してみた話です
過去、PHPカンファレンス北海道(2019)にて
「pharによるワンバイナリアプリケーションの可能性を探ってみた」
でお話ししましたが、そのリベンジ(現実版)になります
PHPだけど、Buildして(Pharでpackして)、Deployして運用してみよう!
巨大なPHP製モノリスアプリケーションにおいて、マイクロサービス化というアプローチでは上手く解決できなかった問題を、アプローチを変えて解こうとしています。何をどのように進めているのか、具体例を交えてお話します。
本セッションではマインクラフトを使ってスクラムワークショップをする様子をお届けします。
ソフトウェア開発におけるスクラムはチームが価値を生み出すためのフレームワークです。
不確実性がつきもののソフトウェア開発において、その有効性が認められ、現在では多くの成功事例が存在します。
そのため、スクラムを採用したいと検討しているチームもあることでしょう。
しかしながら、スクラムはただ聞いただけでは実践するのが難しいという問題があります。
そこで活用できるのがワークショップです。
短い期間に集中して体験すれば、スクラムのフレームワークに対する理解が深まり、スクラムの実践に役立つことでしょう。
今回はそんなスクラムワークショップをご紹介いたします。
ワークショップで取り扱う題材はマインクラフトです。
PHPは主にHTTPサーバアプリケーションの実装に用いられますが、案外長い時間がかかるバッチ処理なんかも書けたりします
数十分~数日かかる処理まで、長い時間がかかる処理をPHPで並列で回す方法や気を付けるべき点などを、仕事で主にインフラを担当している自分が実際に業務であった経験ををもとにお話します
Xdebugを使うとブレークポイントやステップ実行によるデバッグができるようになります。
XdebugはDBGpという通信プロトコルを使って、IDEとデバッグ対象のコミュニケーションを行いデバッグしています。
本セッションではPHPのソケット通信を使った簡易的なデバッガーを通じて、DBGpのプロトコルやデバッガーの裏側についてご紹介します。
Composerには、Pluginという仕組みがあります。
2.0が来るまでは、hirak/prestissimoにお世話になっていた方も多いと思います。(私もその1人です!!)
では、「どういうことが出来るのか」はご存知ですか?
知ることが全ての始まりです。
もしかしたら、あなたの仕事に革命を起こすような素晴らしい可能性が眠っているかもしれません。
「Composer Pluginとはなんだろう?」とイメージを掴むために、「どういう仕組みになっているのか」「どういう機能があるのか」を紹介したいと思います。
PHPでも型を付ける事で不意なバグを減らしながら、快適にプログラミングする事ができる静的解析ツールが開発されています。
また、PHPのヴァージョンが上がるにつれて型に関するサポートも充実してきており、現代のPHPは、昔のPHPの印象で語られる世界とは別の世界と言っても過言ではないでしょう
他の言語でも型システムが強力なしくみが導入されたり、強力な言語が話題になったりしていますが、フロントエンドフレームワークと通信する時など、言語を跨いだ型情報の共有に便利な仕組みがquicktypeです
PHPはquicktypeでの対応が現時点では無いのですが、有効に利用するための工夫を纏め発表します。
依存ライブラリの更新、定期的に実施できていますか?
恥ずかしながら担当プロダクトで更新ができていないケースがありました。
そしていざ更新を試みると対象ライブラリがいくつもあり、大幅なバージョンアップが必要なものも・・・
このような状況はまずいと感じ調べたところRenovateという依存ライブラリの自動更新を行うツールを知り、導入を試みましたが、更新を怠っていたプロジェクトでの素直な導入は難しいと判断。
そこで導入までにステップを置き、ライブラリのバージョン更新・Renovateの導入、そこから定期的に更新するという運用の流れを構築し、現在はライブラリの更新が健全にできていると感じています。
本トークでは依存ライブラリの更新を怠っていたプロジェクトにRenovateというツールを導入した流れと導入後の運用状況をお話させていただき、皆様の依存ライブラリ管理の一助となればと思っております。
スタッフ uzulla がPHPerKaigi 2022のスポンサーブースにお邪魔します。
オフラインで来場できない皆様の代わりに、やたらとやかましい人間がお邪魔して転送いたします!!!
推測するな、計測せよ
パフォーマンスチューニングの文脈でよく使われる格言です。
ではこの格言を実際に実行するにはどの様な手法をとるべきなのでしょうか。
一言に計測と言っても、Webアプリケーションには
Webサーバー、アプリケーション、データーベース、フロントエンドと様々なレイヤーが存在します。
今回はWebアプリケーションを計測する第一歩を進める為に必要な手法についてお話します。
アプリケーションを計測する手法を知ることで、アプリケーションが内包している問題を見つけ、さらなる改善を進める一手にしましょう。
php の基本の foreach 。
しっかり正しく記述できていますか?
foreach は簡単そうに見えて柔軟すぎて、結局難しかったりします。
こんな悩みはありませんか?
・foreach の中に if 文がたくさん詰まってしまう。
・Promise を foreach で回すのが難しく感じる
・同時実行上限
・終了時上限の付与
・Generator が苦手
・遅延処理が書けるって聞くけどよくわからない
・結局 foreach で終了までを全部詰め直すから読みにくくなってしまう
それらを解決する概念が下記の3つです。
・map処理
・並列処理
・遅延処理
この概念をいい感じに foreach で説明できたらいいなって思います。
phpとはhypertext preprocessorである。
phpの機能が高度で複雑怪奇になっている現在、若者のhypertextのpreprocess離れが深刻である。
改めてpreprocessorとは何か、どんなことができるのか、またyay等のライブラリを用いて話していこうと思う。(lispによくある便利macroなども含めて話したい)
初心者も楽しめる、視聴者参加型の高速 LT クイズと解説です。
易しいレベルから、殆ど知られていない難しいレベルまでを4択クイズで高速 LT します。
チャットや Twitter などでどんどんお答えください!
初心者はプログラミングを始めていくと、記号が意外とググりにくいということに気づくと思います。
また他の言語を習得している上級者は、突然聞かれると一瞬他言語と混ざっちゃってわからなくなることがあると思います。
高速で問題を出されると、初心者も上級者も楽しめると思った次第です。
気分転換の頭の体操にいかがですか?
以下、例題です。これを問題文を読むところも含めて10秒程度で次々解いていくイメージです。
問題:べき乗 (例:2の3乗など)を計算する記号はどれ?
A. ^
B. **
C. ^^
D. 記号はない(pow() 関数で対応)
PHPは言語仕様上、stringやintegerといったスカラー型にRubyやPythonのような他の言語のようにメソッドが生えておらず、手続き型のAPIを用いてそれらを操作する必要があります。
しかしながら、メソッドが生えている方が便利な場面もあり「そのように書けたらなあ...」と思う事もあると思います。
これらを達成するのにエクステンションを用いて言語仕様を拡張しスカラー型にメソッドを生やす事も出来ますが、今後の言語仕様の追加や変更に追従しなければならないなどの点を考慮して、純粋なPHPのクラスでスカラー型をラップしてそこに便利に扱う為の関数を生やしたライブラリを作った話をしたいと思います。