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との統合方法、そしてリアルタイム機能や高トラフィック対応の具体的なユースケースについて解説します。
皆さん、コードの品質に悩まされたことはありませんか?
バグと格闘する夜を過ごしていませんか?そんなあなたに、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苦手ですか?私は苦手でした。
苦手を克服するにはひたすら倒していくのが遠いようで近道です。
よく遭遇するパターンを5分で紹介できるだけ紹介していければと思います。
メンタルは崩れると業務のパフォーマンスに大きな影響を及ぼします。
比較的メンタルが弱い私が継続して業務に携わるため実践してきたセルフケアやレジリエンスと言われる回復力の鍛え方をお話します。
基本的にどなたでもではありますが。
DDD(ドメイン駆動設計)に興味があるけど、どの本から読めばいいか迷ったことはありませんか?数多くのDDD関連書籍をすべて読むのは大変ですが、安心してください!とりあえず、手に入る本は全部読んで見ました!本トークでは、どんな人がどのDDD関連本を読めばいいのか、独断と偏見で発表します!
自社サービスでも、受託開発でも、機能開発の一部分だけを担当していると、全体感がわからずいつまでたっても半人前という状態になってしまいます。
本ワークショップでは「本番Webアプリケーションをデプロイして運用するという経験」を一気通貫してやったことがない方を対象に、100分間でLaravelのWebアプリケーションを作って、仕様変更をして、修正リリースを行います。
本ワークショップで得られる体験
本ワークショップの前に必要な準備
正規表現はテキストの抽象表現です。ソフトウェアでは入力値のチェックやテキストの整形などに用いられるので、私たちプログラマにとって馴染みが深いものの一つです。
ところで、正規表現の「正規」という名前が「良い性質」という意味を持っていることをご存知でしょうか? 実際、統計の分野では良い性質を持ち、理論の根幹となる分布に正規分布という名前が付けられています。同様に、シンプルで汎用性の高い正規表現もまた、正規という名前に相応しいといえるでしょう。
しかし、開発者に正規表現の話題を振ると 「複雑で可読性・編集容易性が低くく、辛い」 という話題になりがちです。本セッションでは、正規表現が何故複雑になり、読めなくなってしまうのかという疑問に答え、その解決方法を示します。
なお、本セッションはPHPerKaigi 2024で発表し、改良したものです.
本番運用においても、ローカルで開発を行う場合においても、Dockerなどのコンテナ技術およびAWS ECSなどの周辺サービスを利用するのはすでに一般的かと思います。
ただ、確かに便利な技術ではあるのですが、運用を続けていくうちに以下のような課題に出くわすことがあります。
・CIの実行に時間がかかる
・本番・CI・ローカル環境ごとにライブラリ・パッケージをインストールする記述が分散しておりメンテが面倒
・aptなどでバージョン固定してインストールしているパッケージが、リリース用イメージのビルドタイミングでインストール失敗しリリース時に困る
このトークでは、実際にPHPのDockerイメージを毎日自動ビルド・プッシュすることで上記のような課題を解消した事例についてお話しします。
dbt-coverageというツールをご存知ですか?
dbt-coverageとは、dbtのテストやドキュメントのカバレッジを計測するツールです。dbtはデータワークフローをSQLとYAMLで定義するソフトウェアで、dbt-coverageとはDBのテーブルに対するテストケースや、YAMLファイルにdescriptionの項目が書いてあるかを計測します。
一見するとよくあるツールに見えるのですが、コードの量が非常に少ない。実のところ、ソースコードが1000行ぐらいしかありません。この量では、とてもYAMLをASTに直し、構文解析することは不可能なように感じました。
本セッションでは、このdbt-coverageのソースコードを解説し、どのようにして短いコードで有用なカバレッジ計測ツールを実現していのかを解説します。