2012年頃から開発が始まったシステムを現在リプレースしています。
開発開始当時は社内に知見がない中で苦労をして価値を出してきたことは素晴らしいことだと思います。しかし、10数年たった現在さまざまな問題があることも事実です。
転職を機に現在このシステムを、基幹システムのリプレースに合わせてリプレースをしています。DevOpsが国内で話題に上がる様になって10数年経過した現在ではDevSecOpsのような、セキュリティを開発フェーズから意識する考え方も普及してきています。
このセッションでは、私が10数年DevOps/CI/CDを継続して進めてきた経験を活かし、0から構築している環境の考え方や実践している内容を共有したいと思います。
Fiber は、PHP 8.1 から導入された stackful な coroutine です。
ここで一度、Fiber の実装を PHP の処理系レベルまで追いかけることで、Fiber が何であるか、そして、裏で何をしているのかを理解することにしましょう。
役割や責任が変わったとき、「思うようにできていない」「期待に応えられていない」と不安を抱く人は多いのではないかと思います。
そんなときに役立つのが「コントロールの三分法」という考え方です。
物事を「コントロールできること」「ある程度できること」「まったくできないこと」に分けて考えることで、「コト」に集中する感覚が生まれるように思います。
私自身、プログラマからEMというロールに変わる中で、無力感や焦りに振り回されていましたが、「コントロールできることは何か?」を意識することで、少しずつ前に進めるようになりました。
このトークでは、自分と向き合いながらレジリエンスを育てていく中で取り組んだことや思考の変化を共有します。
ロールチェンジに限らず、「今の立場でどう進めばいいのか」と悩む方に、少しでも前に進むヒントを届けられたら嬉しいです。
任意の時点の PHP プロセスのメモリ状態のスナップショットをとり、SQL で「一番大きな文字列」「あるクラスの全インスタンスにおける特定プロパティに格納された配列の平均サイズ」「前回取得時のスナップショットから生き残り続けているオブジェクト」といった情報を自由に取り出せるとしたら、とてもおもしろいと思いませんか?
このトークでは自作のメモリプロファイラを利用し、PHP スクリプトのメモリ内容を SQL で問い合わせるための技術について解説するとともに、その実用的な応用例をいくつか紹介します。メモリリークを潰したり、メモリボトルネックを解消したりできます。
このトークを聞いた人に「ためしてみたい!はやく Allowed memory size of ウンチャラカンチャラ のエラーが出ないかな」「PHP でけっこう何でもできるんだなあ」というような気持ちになってもらえれば嬉しいです。
当時、「効率よく生きることこそ、正義」というマインドを持っていました。
「楽をして生きること」が正しいと考えていました。
しかし、時代の流れと共に「何物でもない」ことへの焦りを感じていました。
そんな私が
好きな技術に出会い
コミュニティイベントへ参加し
ブログや登壇などアウトプットをするようになり
今や好きなことを仕事にできています。
実体験を元に今に至るまでの過程をご紹介したいと思います。
好きなことを仕事にするための何かヒントになれば幸いです。
皆さんは普段、何気なくルーティングを書いていませんか?
私もその1人でした。
しかし、実はその裏には複数の設計方式があり、それぞれの選択には“意図”があります。
本LTでは、PHPの世界にも共通するルーティングエンジンの代表的な設計思想に焦点を当て、普段あまり意識することのない裏側の仕組みをPHP初心者の目線で紹介します!
コードの世界にも、いろいろなルーティングエンジンがあるように、キャリアにおいてもまた、自分に合ったルーティングがあるのかもしれない。
私自身が最近直面した「育児と仕事の両立」という分岐点において、そんなことをふと考えるきっかけにもなったルーティングの世界をお話しします!
対象者
・PHPやWeb開発初心者の方
・なんとなくルーティングを使っているけど仕組みは知らない方
・技術の裏側にある設計思想に興味がある方
・私と同じく育児やキャリアの選択に悩んでいる方
サービスAとサービスBがつながればいいのに…!
そんなもどかしさを感じたことはありませんか?今の時代、自分で簡単に作れます!
この発表では、私のいくつかの隙間ツールの開発の経験から得た知見や恩恵と、昨今のAIによるコーディングを活用すると如何に簡単に隙間ツールが開発できるかについて発表します。
隙間ツールとは隙間家具と比べて個別の事象に対して書かれたコード(ツール)のことを示しております。
隙間家具OSSとは: https://speakerdeck.com/fujiwara3/ecspresso-meetup
私が開発した隙間ツールの例
アプリケーション開発において重要な非同期処理。
昨今ではLLMを利用した機能開発の需要も高まってきており、
特にレスポンスに長時間を要する推論モデルを利用する場合などにもやはり非同期処理が必要となってくる場合があります。
本セッションでは、Laravelのジョブキューを用いた非同期処理について、
適切に運用するために重要なキューワーカーの台数・ジョブの優先度・タイムアウト・リトライといった設定、重複実行の防止方法や考え方などを初学者向けに分かりやすく紹介します。
アプリケーション開発において重要な非同期処理。
昨今ではLLMを利用した機能開発の需要も高まってきており、
特にレスポンスに長時間を要する推論モデルを利用する場合などにもやはり非同期処理が必要となってくる場合があります。
本セッションでは、Laravelのジョブキューを用いた非同期処理について、
適切に運用するために重要なキューワーカーの台数・ジョブの優先度・タイムアウト・リトライといった設定、重複実行の防止方法や考え方などを初学者向けに分かりやすく紹介します。
現在、私は1年間に及ぶデザインリニューアルプロジェクトのチームリーダーをしています(登壇時はリリース済み予定です)。ほぼ全ての画面を書き換えますので、画面数は100を超え、関係するプロジェクトは5 Project 以上、部署の数も IR やブランドチーム、CS など影響範囲は広範に及びます。
このような状況の中で、タスクを整理し、関係部署と調整をしたうえで、チームメンバーが開発に集中できる環境を作る重要性が身に染みました。
1年に及ぶプロジェクトに携わることはなかなかありません。 このプロジェクトを経験することで学んだ、難易度の高いプロジェクトであってもうまくいくチーム運営のエッセンスを凝縮した形で皆様にお伝えできればと思います。
Webアプリケーションは繁盛するとどんどん機能が追加されていきます。Laravelを代表とするWebアプリケーションフレームワーク(WAF)は、機能が少ない間は開発スピードも早く、比較的理解も用意なプログラムが書けますが、年を重ねるごとに複雑化していきます。
このように肥大化したWebアプリケーションのことを巨大泥団子(Big Ball of Mud)と呼びます。運用・保守性が下がることは、誰も望んでいないにもかかわらず、なぜこのような複雑なWebアプリケーションが
生まれるのでしょうか?
本トークで話す内容
複雑さという概念をご存知でしょうか?プログラムは放置しておくと、際限なく複雑になっていきます。この複雑さは、プログラムそのものから発生するものはもちろん、インフラやミドルウェアなどのアーキテクチャー設計、さらにはチーム体制や組織設計から発生するものまで、多種多様な発生源から現れます。本トークでは、プログラムにどのようにして複雑さが入り込むのかをマクロな視点、ミクロな視点の両方から解説します。複雑さが入り込む要因について、解像度を上げることで、今後の開発において複雑さの混入を防ぐ予防的な措置が取れるようになりましょう。
技術書が多すぎると思っていませんか?名著とよばれる古い書籍もたくさんありますし、新しい書籍も次々と出版されます。あれも読みたい!これも読みたい!そうして、書籍を手に入れるのは良いのですが、問題は読む時間の捻出です。可処分時間には限りがあります。ゲームもやりたいし、家事もある、どうしても技術書を読む時間を多く捻出できない。結果として、積読ばかりが増えていきます。
本LTでは、限られた時間を使って技術書を読む方法を紹介します。積読に怯えず、たくさんの本を読むことができるようになるでしょう。
本トークで話す内容
本トークで話さない内容
私は今まで行われた「PHPカンファレンス福岡」のすべての回で登壇をしています。このカンファレンスとともに技術者として、また一人の人間として大きく成長し、自分のキャリアを作り上げてきました。本LTでは、エンジニアにとってカンファレンスというものがどういう存在なのか?そして、カンファレンスを通じて、どのように成長するのか。実体験を通して紹介します。
カンファレンスというイベントはさまざまな側面で人間を成長させてくれます。技術的な側面だけではないカンファレンスの魅力や素晴らしさをお伝えします。
昨今のPHP開発では保守性と拡張性を確保するためオブジェクト指向設計が重要と言われています。
しかし私は、オブジェクト指向を採用していない組織からオブジェクト指向を採用している組織へ転職した際、その必然性を実感できずに戸惑っていました。
本LTでは、オブジェクト指向という言葉は知ってる。用語もわかる。使い方もわかる。でもなんでそれが必要とされているのか分からなかった状態からオブジェクト指向の必要性を理解できるようになるためにやったこと、経験したことを共有します。
本や勉強でオブジェクト指向聞いたことあるけどイマイチ腑に落ちない。効果がよくわからない。そんな方の役に立てると嬉しいです。
「ふりかえり会で決めたTryは達成した。でも、なぜかチームは苦しいまま……」
「合意した要件・仕様を作り切った。それでも、プロダクトは思うように伸びない……」
「設定した個人目標をクリアした。なのに、評価が上がらない……」
こうした状況は、なぜ起きるのでしょうか?
実は、その背景には、「そもそも何を問題と捉えるか」という出発点のズレがあります。
どれほど見事な解決策でも、問題設定自体がズレていれば得られる価値は低くなります。
問題設定の質が、成果の上限を左右してしまうのです。
本セッションでは、"時間的変化"と"視座操作"という2つのアプローチを使って、問題設定の質を高める手法を紹介します。
現在HTTP Cacheに関するRFCは7234...ではありません。2022年に改訂され、RFC9111 HTTP CachingとしてInternet Standardになっています。
本発表ではRFC9111、特に共有キャッシュについて見ていきます。
プロキシサーバのアップストリームに位置するWebアプリケーションとしてどうすればキャッシュをしてくれるのか、もしくは拒否できるのか。理解すれば、実装にはよりますが少なくともRFCに沿った議論ができるようになります。
発表者はRFC9111に沿ったキャッシュミドルウェアを実装しています。
https://github.com/2manymws/rc
この実装経験に基づいた紹介をします。
(なお、2025年8月現在rfc9111で検索して出てくるのは我々のリポジトリを含めて5つ)
この機会に「RFC9111完全に理解した」になりましょう!
「いつかはカンファレンスで発表したい」そんな風に思っている方も多いのではないでしょうか。
私は今でこそ年に何度も発表をしていますが、勉強会デビューは30代後半のことでした。そして、初めてカンファレンスで発表したのは10年前、第1回のPHPカンファレンス福岡 2015でのことでした。
このトークでは2013年の勉強会デビューからどの様にしてカンファレンスで発表する様になったのか、勉強会やカンファレンスの楽しみ方、そしてそれから10年、カンファレンスでの発表が人生に与えた最高の影響についてお話します。
このトークを聞いた方がカンファレンスを一緒に楽しめる「仲間」になることを祈っています。
近年、PHP系カンファレンスが大流行していて、今後もその流れは続きそうです。
このトークでは過去に16回のカンファレンス主催をしてきた私が、これからカンファレンス主催したい方の最初の一歩に役立つであろう内容をお話します。
カンファレンス主催したい方だけでなく、スタッフとしてカンファレンスを作ってみたい方、カンファレンスがどうやって作られているかが気になる方にもお楽しみ頂けると思います。
このトークがカンファレンス主催したい方の助けになり、PHPカンファレンス福岡の復活や、福岡での新たなカンファレンス誕生の助けになることを祈っています。
E2Eテストの重要性は理解していても、実行時間の長さがボトルネックになっていませんか?
Playwrightはユーザー体験をテストするE2Eテストツールです。
PHPのテストでよく使われるバックエンド検証のユニットテストツールPHPUnitでは検証が困難な領域をカバーできます。
Playwrightは実際のブラウザを動かすため、ユーザーがWebサイトを操作するのと近い状況でテストを実行できます。
しかし、ユニットテストと比較すると実行時間が長くなる傾向があります。
テストケース数が増加すると、CI/CDのボトルネックとなり、開発者のテスト実行頻度低下の要因となります。
本セッションでは、Playwrightのテスト実行時間を大幅に短縮するための実践的なテクニックをご紹介します。