静的解析は堅牢なPHPアプリケーションを作るための手段として広く認知、活用されるようになりました。
特にPHPStanは技術カンファレンスでも多く言及されており、PHPにおける静的解析のデファクトスタンダードとも言えるツールです。
PHPStanはそれ単体だけでも効果を発揮しますが、拡張機能を使うことでより精緻な解析ができます。
例えばLaravel向けの拡張であるLarastanを使うと、マイグレーションファイルのスキーマ情報により、EloquentモデルのDBカラムの型を解釈できるようになります。
本トークではPHPStanの拡張機能の読み方を紹介するとともに、実際の拡張機能がどのように実装・実現されているのかを見ていきます。
拡張機能のコードを読むことで静的解析の威力を知っていただき、より効果的に静的解析を活用していくきっかけとなれば幸いです。
あなたの社内にも「あの人になら相談しやすいな」という人はいませんか?
社内で頼られる人にはどのような特徴があるのでしょう。
エンジニア歴25年、8社を渡り歩いてきた私が
社内コミュニケーションにおいて心がけている、細かすぎるけど大切なことをお話します。
NeoVim IDE。
本セッションでは、VsCodeやJetBrains製品が提供する「統合開発環境」としての機能を、NeoVimとTUIを利用してTerminal内で表現する事であると定義します。
LSP、DAP、補完やGitにDocker操作等々のIDEとしての環境をNeoVimで構築するまでのステップと、その効率性について解説する内容になります。
皆さんに「こんな選択肢があるのか」と自分の開発環境を見直す機会になることがGoalです。
話すこと
弊社はPHPで自社サービスを提供しているスタートアップ。
エンジニアは超売り手市場でなかなか採用ができない。
毎日レジュメを眺め、スカウトメールを送る日々。
とある日、ようやく弊社事業に興味を持ってくれたエンジニアがカジュアル面談に来てくれた!
幸いにも事業関心も高く、マッチしそう!
ところが、弊社の採用言語がPHPであることを伝えると
「PHPはちょっと…」
え?
え?
そこで温度感下がってしまうの?
カジュアル面談でこんな状況に遭遇したら、どうすればいいでしょう?
このLTで採用担当のそんなお悩みを解決します。
とある機能を実装していたときのことです。その機能には、動的に作成・削除されるファイルの存在有無によって分岐する処理がありました。
検証環境でのテストも問題なく、満を持して本番環境にデプロイしたところ、なんと大量のエラーアラートが!
エラー内容を見てみると、どうやら削除したはずのファイルがなぜか存在すると判定されてしまっているようなのです。
調査の結果、PHPの意外な仕様が原因であることがわかりました。
上記の経験をもとに、あなたの知らない(かもしれない)PHPのファイル操作にまつわる仕様とその対策をお話しします。
私のチームでは最近GitLabからGitHubへと移行し、CIもGitHub Actionsを使い始めました。
せっかく移行するなら、単なる書き換えではなくGitHub Actionsならではの機能やベストプラクティスを取り入れたいと思い、いろいろと調査を行いました。
このLTでは、PHPアプリケーションのCIをGitHub Actionsで実装するにあたって得られた知見を共有します!
想定する聞き手
話すこと
話さないこと
Next.jsを今年から触り始めたんですが、フロント側のテストって何を書いていいかわからない、UI部分のテストって書くのが難しそう、と思っていました。
そこでフロント開発(Next.js)の自動テストについて調べて、実際に作成した時、こんなライブラリやツールを使ってこんなテストをしたよ、っていうようなことを話したいと思います。
具体的には以下のような内容を話す予定です。
•自動テストのタイミング(コミット時、GitHubのプルリクを出した時、mainにマージされた時など)
•ESLintでの静的解析
•Storybookを使った自動テストの作成
•Jestを用いたテストの作成
•Chromaticを用いたUIの変更点のテスト作成
•Codecovを用いてコードカバレッジの取得
2ヶ月間毎日Qiitaに投稿したらめっちゃ強くなった(気がする)
皆さんは、インプットだけでなく、記事を書いたり、LTをしたりといったアウトプットをしていますか?僕は、去年まではほとんどアウトプットをしていませんでした。
そんな僕が、2月から4月にかけての約2ヶ月間、毎日Qiitaに記事を書いて投稿しました。その時の体験談をお話ししたいと思います。
具体的には、以下の内容をお伝えする予定です。
PHPのパフォーマンスを飛躍的に向上させる次世代のPHPサーバー「FrankenPHP」とLaravel Octaneを組み合わせることで実現する高速なPHPアプリケーション開発について紹介します。
本セッションでは、FrankenPHPの基本概念、従来のPHP FPMとの違い、Laravel Octaneとの統合方法、そしてリアルタイム機能や高トラフィック対応の具体的なユースケースについて解説します。
Laravelにおいて認証・認可はGate・Policyの仕組みに沿えばイージーに実装が可能です。
しかし、OktaやMicrosoft Entra IDといった外部IDプロパイダーを使用し、認証自体はWebアプリケーションに到達する前に行いたい場合もあります。
このトークでは、AWS ALBと外部IDプロバイダーを使用しOIDCで認証を行いつつ、LaravelではCasbinという複数言語をサポートしているアクセス制御するための認可ライブラリを使ったRBACの実装例を紹介します。
また、ALBの誤った設定によるALBeastと呼ばれる脆弱性についても触れます。
No one likes to wait. Yet, PHP scripts are often waiting on databases, email servers, HTTP servers, file systems, and even RAM. The result? Your customers are left waiting too. In this talk, we'll dive into the power of RabbitMQ and ReactPHP to significantly reduce waiting times and optimise performance. Get ready for live coding!
皆さん、コードの品質に悩まされたことはありませんか?
バグと格闘する夜を過ごしていませんか?そんなあなたに、Larastanをご紹介します!
Larastanは、PHPStanの力を借りて、あなたのコードを守る不可視の盾となります。
主な特徴:
Larastanを使えば、本番環境でのハプニングとはおさらば。より堅牢で、メンテナンスしやすいアプリケーションを、自信を持って構築できます。
さあ、Larastanと共に、より洗練されたLaravel開発の世界へ飛び込みましょう!
マニュアル読んでますか?
PHP のマニュアルを読むと何が嬉しいのか、以下の観点からお話します。
私が携わったホスティングサービスでは、ユーザーがコントロールパネルからワンクリックで WordPress をインストールできる機能を提供しています。特定の契約者には、購入された WordPress テーマも同時にインストールできる機能も提供しています。
この機能の実現にあたって、テーマファイルを契約者のみにアクセス制御して配布することが重要な課題でした。この LT では、WordPress 簡単インストール機能の仕組みに触れた後、テーマを適切にアクセス制御して配布するための具体的な方法について、WordPress の制約を踏まえた解決策をお伝えします。
また、パブリッククラウドのオブジェクトストレージに保存されたテーマの転送コスト削減のために採用したキャッシュ戦略についても共有します。アクセス制御を維持しつつ、効率的な配布システムを構築するための工夫をお話しします。
このセッションでは、LaravelとInertia.jsを組み合わせたモダンなフルスタック開発について紹介します。
Inertia.jsは、ReactやVueなどのモダンなフロントエンド技術のメリットを活かしながら、サーバーサイドアプリケーションのシンプルさを維持するためのツールです。これにより、複雑なAPIやクライアント側の状態管理なしで、モダンでインタラクティブなウェブアプリケーションを構築できます。
ReactやVue、TypeScriptと組み合わせて使用する方法や、Inertia 2.0で導入される新機能、UIコンポーネントライブラリのshadcn/uiの活用法、ライブバリデーションを実現するPrecognitionについても説明します。
さらに、VitestやDuskを使ったテストの方法や、Laravel公式のVS Code拡張機能を活用する方法についても触れます。
他社がどのようにスクラムを行っているか、気になったことはありませんか?
このセッションでは、私たちがどのようにスクラムを実践しているか、その具体的な取り組みをシェアします。
私たちのチームでは、サーバーサイド、フロントエンド、そしてネイティブアプリのエンジニアが同じチームで協力しながらスクラムを進めていますが、それゆえに発生する課題も少なくありません。
使用しているツールやスクラムイベントの実施方法はもちろん、発生した課題とその対策について詳しく話します。
また、モチベーションを高めながら楽しく仕事を進めるための工夫も紹介します。
これからスクラムを始めようとしている方や、スクラムの進め方に悩んでいる方にとって、少しでも役立つヒントになれば幸いです。
セッション後は、ぜひ皆さんのスクラムについても教えてください!
話さないこと
・PHPに関すること m( )m
皆さんは、PHPStanを使って開発していますか?
PHPStanは静的解析ツールであり、PHPの開発をサポートしてくれます。
例えば、未定義の変数のチェック、PHPDocの間違いの確認、型の確認などの機能があります。
これは、動的型付け言語であるPHPで開発していく中で、必ず役に立つ機能です。
さて、私が開発しているプロダクトは、20年前から存在します。
古いコードには型宣言がなかったり、クラスを利用しておらず、グローバル領域で書かれたコードも多くあります。
そんなプロダクトに静的解析を導入するまでの苦難の道程と、入れたらどのような警告が出たのかをLTでお話しします!
皆さんは、PHPStanを使って開発していますか?
PHPStanは静的解析ツールであり、PHPの開発をサポートしてくれます。
例えば、未定義の変数のチェック、PHPDocの間違いの確認、型の確認などの機能があります。
これは、動的型付け言語であるPHPで開発していく中で、必ず役に立つ機能です。
さて、私が開発しているプロダクトは、20年前から存在します。
当然、古いコードには型宣言がなく、付け足しの結果、気づかずに未到達コードが生まれてしまったことがあります。
さらには、クラスを利用しておらず、グローバル領域で書かれたコードも多くあります。
そんな古いプロダクトに、いかにしてPHPStanを導入したか、どこに苦労したのか、どう解決していったのかをお話ししたいと思います!
みなさんはDDoS攻撃代行サービスというものが存在することをご存知でしょうか?
DDoS業界は価格破壊が起きており、お手頃に攻撃できる時代となっています。
そんな簡単に攻撃可能な時代に突入しているのであれば、ある日突然あなたが管理しているサーバーが攻撃の標的になってもおかしくはありません。
私は最近までDDoS攻撃は「大量にリクエストが来るヤバイやつ」くらいの認識で正直ナニモワカラナイといった状態だったので、本セッションでは以下のような疑問について発表いたします。
PHPStan苦手ですか?私は苦手でした。
苦手を克服するにはひたすら倒していくのが遠いようで近道です。
よく遭遇するパターンを5分で紹介できるだけ紹介していければと思います。