あなたのプロジェクトはどうやってコードを整形していますか?
PHP_CodeSniffer? それともPHP-CS-Fixer?
私は… 両方!
_人人人人_
> 両方 <
 ̄Y^Y^Y^Y^ ̄
そうなんです、EasyCodingStandardを使えば両方のいいとこどり、しかも爆速でコードを整形できちゃうんです。
このトークではこのツールの特徴とプロジェクトへの導入方法、設定方法などを爆速で紹介します。
ComposerでPHPライブラリを作成する方法を解説します。
ライブラリの作成、Packagistへの公開までを5分以内で紹介します。
公開に必要なことに中心に紹介するため、すぐに実践することができます。
Composerは使うけど、案外なんとなく使っていたりしないでしょうか。
ライブラリ作成を通してComposerの理解を深めましょう!
PHPerKaigiではPHPerチャレンジというイベントがあり、そこで複数バージョンのPHPを実行しなければトークンを得られない問題がありました。例えば下記です。
https://fortee.jp/phperkaigi-2023/proposal/07411094-2fc1-4abd-904f-9470454531e6
この問題、回答方針の一つとして複数バージョンのDockerを用意するという方法がありますが、Dockerを使いたくないときもありますよね?
発表者は asdf を利用してPHPの複数バージョンインストールを行い、検証しました。そして無事に問題を解き、トークンをゲットできました。
このLTでは次の3つについてお話しします。
PHPだけでなく、複数のプログラミング言語・ツールのバージョン管理ができる asdf の利便性を感じていただき、複数バージョンのツールが使いたい…けどめんどくさいと…いう悩みを解消しましょう!
令和のPHPerの皆さんはテストを書いていますね?
テストを書くとき、カバレッジという数値を闇雲に上げようとしていませんか?
実は、カバレッジの数字を上げたところでコードの可読性も変更容易性も上がらないし、バグも減らすことができません。
意味あるカバレッジの上げ方についてお伝えします。
PHPStan使ってますか? ここ数年のPHP界隈で品質保証のために最も使われるようになったツールのひとつと言えます。
私はいままでカンファレンスなどでPHP静的解析の布教を試みてきましたが、同時に機能追加提案から些細な修正まで約20個のPRを提出しています。
このトークにおいては5分の制限時間内でPHPStanへの貢献方法を難易度別に紹介します。
SaaS全盛の昨今、マネージドなデータベースにロードバランサー、セッション用のKVSなどを含めるとPHPアプリケーションの運用費用は軽く月額数万円になってしまいます。ステージング環境や、CI後の確認環境を含めると運用費は掛け算で増えていきます。
本トークでは、なるべく安い値段でPHPアプリケーションを本番運用する可能性を探求します。
競技プログラミングは、アルゴリズムやデータ構造の理解を深め、プログラミングスキルを向上させるための素晴らしい方法です。
「AtCoder」や「LeetCod」などの多くの競技プログラミングサイトがありますが、競技プログラミングで問題を解く時の言語としてPythonやGo、Rustが人気でよく使われていますが、PHPでも十分競技プログラミングに挑戦する事は可能です!
このセッションでは、競技プログラミングにおいてPHPを活用するためのテクニックについて解説します。
いくつか例題を出しながら、PHPにおけるデータ構造やアルゴリズムの実装方法について他の言語と比較しながら説明します。
テストがあるとコードレビューが捗ると思いませんか?
・テストがコードの仕様書になる
・テストを通じてどのような入力値が想定されているのか、どのような振る舞いが期待されているのかがわかりやすくなる
・プログラムの構造が見やすくなりレビューの正確性と速度が上がる
また、レビューを受ける側にとってもテストによりコードの動作が保証される安心感があるので、レビュー中の修正もしやすくなります。
このように、テストの恩恵は保守フェーズを待たずにコードレビュー中から受けることができます。
トークではレビューを受ける側・行う側の双方の視点から、テストによりコードレビューが捗る理由とテストコードの書き方を並行して紹介します。
・テストの目的は何?〜テストメソッド名でコードの可読性を上げる
・データの入出力をわかりやすく表現する〜データの流れはレビュアーの想像力に頼らずテストに落としこむ
・テストパターンと仕様について
私たちの運営するサービスは、コア機能部分が未だにレガシーコードとなっており、リファクタリングが必要な状況になっていました。
しかし、影響範囲が大きくテストもないので中々触りたくない、サービスの成長(機能追加)のための開発と両立できない、自分の担当プロジェクト以外は分からない、等など一筋縄では行かない問題もありました。
そこで私たちは、月に一度、大規模にリファクタリングが可能な日(リファクタリングデー)を設けました。
リファクタリングデーでは通常の開発を1日止めて、コア機能も含めた影響範囲の大きい箇所のリファクタリングを行い、全ての機能をQAしてリリースします。
このトークでは、リファクタリングデーを行うために何をしているのか、また、実際に1年ほど行って感じたメリットや、課題などについて説明します。
https://developers.prtimes.jp/2021/12/13/introducing-refactoring-day/
なんと世の中にまだこの言葉が無いので、トークで伝えたい!
※PHP とは関係ありませんが、開発チームとしての考え方が今日から変わるかも!?
フルリモートで仕事をするようになりはや3年。どうしても対面での働き方とは変わってきた部分がいくつもありました。
このトークでは私が今の会社で日々意識していることや実践していることを共有していきます。主にテキストコミュニケーションやオンライン上の仕草について紹介します。
リモートワークでの働き方に不安を持っている方や検討している方にぜひ聞いてもらえたら嬉しいです。
テスト初心者の皆さん、このような悩みを抱えていませんか?
・テストメソッドとテストデータが混在していて読みづらい
・テストの出力結果が見づらい
・テストの実行範囲を明確にしたい
このトークでは、PHPUnitのアノテーション機能を使って初心者でも可読性と保守性の高いテストコードを書ける方法を紹介します。
・@dataproviderを使ってテストケースをまとめ、再利用する
・@testdox × @dataproviderでテストメソッド名をよりわかりやすく表現する
・@groupを使ってテストをグループ化する
これらの機能は明日からすぐに使える簡単なものです。
アノテーションを活用し、見やすいテストコードでスムーズにテストを実行しましょう!
【概要】
プロダクト開発・運用において、顧客要望への対応や新規顧客獲得が優先されることが多い中、技術的負債や陳腐化の解消が後回しにされがちです。本セッションでは、継続的かつ効果的に技術的負債と陳腐化の解消を実現するための戦略やルールを、自社プロダクトでの実例とともに紹介します。
【内容】
・プロダクト開発における機能追加・改善・ 技術的負債・陳腐化の解消のバランス
・技術的負債と陳腐化の解消に向けた取り組み
・意思決定者に対してROIや緊急性を効果的に伝える方法
【対象者】
・プロダクト開発・運用に携わる方々(エンジニア、プロダクトマネージャー、営業担当者など)
皆さんはサービスを運用していますか?
運用は日々継続して行う必要があるため、とても大切な仕事の1つです。
私は新卒でエンジニアになる前は、新しい技術でサービスを立ち上げたり新しい機能を開発しユーザーに価値を提供する新規開発が、エンジニアの主な仕事だと思っていました。
しかし実際に経験した業務は、既存のサービスをメンテナンスやリファクタリング、ライブラリをアップデートするなどの運用の業務も多かったです。
そのような運用の仕事は、新規開発に比べると地道なものです。
日々の運用をこなす中で「運用の中にエンジニアとして成長できる要素や面白さがある」と気づきました。
本LTでは、新卒2年目のエンジニアがサービスを運用・改善を行う中で得られた成長と技術的な面白さについてお話しします。
※ 本LTの内容はPHPに関連しません。
少数を整数にしたり、大きな数字を有効数字にしたりするために四捨五入(丸め)をすると思いますが、その時にPHPでは「round()」関数を用いると思います。
round関数には第三引数にオプション値がありますが、引数を省略した場合、文字通りの四捨五入(有効桁より一つ下の桁が5以上なら有効桁が1大きくなる : PHP_ROUND_HALF_UP)となります。
実はその丸め処理、安直に四捨五入を選ぶと計算や動作に問題が出ることがあります。
先日ちょっとした問題になり、良い機会なので発表したいと思います。
当方ン十年エンジニアをしていましたがずっと意識したことがなく、多分皆様もそうじゃないかと思いますので。
※今回の話はPHPに限らずどの言語でも当てはまると思います
ChatGPTを使って、AWS上で簡単にサーバーレスアプリケーションを開発する方法を紹介します。
このセッションでは、結婚式やパーティーなどの余興に活用できる写真投稿アプリケーションを例に、ChatGPTとServerless Frameworkを使った構築手順を解説します。AWSに自信がない人でも、簡単にサーバーレスアプリケーションを開発できる、そんなChatGPTの活用方法をお話します。
内容
・サーバーレスアプリケーションとは?
・写真投稿アプリケーションの設計
・ChatGPTを使ってServerless Frameworkを用いてAWS Lambda、S3、API Gateway、DynamoDBなどをAWS上にデプロイする手順
対象者
・AWS初心者、特にサーバーレスアプリケーションに興味がある人
・ChatGPTを使ってAWS上でアプリケーションを開発したい人
・結婚式やパーティーなどの余興に活用できるアプリケーションを開発したい人
Xdebug は開発時に最も頼りになる相棒です。
一般的には、ウェブアプリケーションのステップ実行が有名ですが、コンソールコマンドや、PHPUnit のテストでもステップ実行させることが可能です。
しかし、慣れていない人には、Xdebug の設定はむずかしいです。あれもこれも色々試すけど、上手く行かないことも多いです。
本LTでは、ポイントを一つに絞り、PhpStorm と Xdebug の連携方式にのみフォーカスします。
仕組みさえ押さえれば、どう設定すればよいかは自ずと思い浮かんで来ます!
Xdebug の設定はこわくない!上手に Xdebug を設定して、スムーズなウェブアプリケーション開発を楽しみましょう!
みなさん、毎日元気に仕事できていますか?
リモートワーク全盛になって、家に一人でいるとモチベーションの維持が難しい?
この LT では、中堅エンジニアの私が、日々安定したパフォーマンスを維持しつつ、エンジニアとして必須である「学習」を維持するためにやっていることを紹介します。
同じことをやれと押し付けるわけではありません。こんな工夫をしているのか?と参考になれば幸いです。
このトークで話す内容
2022年の4月から、ふと思い立って PHP のメーリングリスト(Internals)と PHP のバグイシューを全部読む行動を始めました。最初はしんどかったのですが、段々と体が慣れてきて、ついには週1でまとめを発表するまでになりました。
当然ですが、メーリングリストの中身は PHP の話題で満載です。知らない機能、使ったことのない関数、初見の仕様などが盛りだくさんです。
本 LT では、PHP 情報にまみれた生活を送ることで得られる経験について解説します。
WebAssembly (WASM) とか WASI と呼ばれる単語が、ウェブエンジニア界隈で飛び交っています。PHPerKaigi 2023 では、ブラウザ上で動作する PHP についての登壇もありましたが、本 LT では、実際に動作するサンプルを見せつつ、WebAssembly の基本を解説します。ついでに、ちょっと WebAssembly で遊んで見ましょう!もちろん PHP で!