弊社で5月から11月に行われたプロジェクトはエンジニアから見てウォーターフォールのようにスケジュールが組まれていた。
終わってみると特に炎上らしい炎上はなく、プロジェクトは成功した。
ここで疑問が湧いた。ウォーターフォールに思えたプロジェクトは何が要因でうまく遂行できたのか?
弊社では昨年末よりスクラムによるアジャイル開発に力を入れていたが今回は明確な期日が決められ、スケジュールが組まれたウォーターフォール・・・
力を入れていたアジャイル開発とはなにか、なぜアジャイル開発が良いと思っていたのか。そこでRobert C. Martin著「クリーンアジャイル基本に立ち戻れ(邦題)」を輪読し、うまく行ったウォーターフォールにあったアジャイル要素を見つけた。
このセッションでは弊社のウォーターフォールの事例からクリーンアジャイルで説明されているプラクティスの何が効いたのか紹介します。
Xdebug は開発時に最も頼りになる相棒です。
一般的には、ウェブアプリケーションのステップ実行が有名ですが、コンソールコマンドや、PHPUnit のテストでもステップ実行させることが可能です。
しかし、慣れていない人には、Xdebug の設定は少しむずかしいです。本記事では、Xdebug の仕組みをかんたんに抑えつつ、PhpStorm + Docker という最近の開発環境における Xdebug の設定方法についてまとめます。
上手に Xdebug を設定して、スムーズなウェブアプリケーション開発が出来るようになりましょう。
『パフォーマンスを改善せよ!』突如下された指令...あなたはこのミッションをクリアしなくてはなりません。
しかし、「方法論を知っていても実施困難」「改善効果が測りにくい」「予測を立てづらい」などの様々な課題を抱えているのが実情です。
では、効率的に確実にこのミッションを遂行するにはどうすればよいのか?
すぱらしいソフトウェアのお医者さん、ロブ・パイクは言いました。「推測するな、計測せよ。」 なんかかっこいい。
このトークでは、この格言の通りにパフォーマンス改善に挑んだ実話を基に「効率的な正しいアプローチ」「パフォーマンス改善方法」をご紹介させてもらいます。
■話さない内容
・詳細なツールの使い方
・解析結果の読み方
■主な内容
・パフォーマンス改善方法の紹介
・パフォーマンス改善業務の進め方
・パフォーマンス改善の失敗談
PHPのアプリケーションを運用・保守していく中で、PHPのバージョンアップは重要な課題です。
本稿ではPHPをバージョンアップするために必要な技術や戦略を、コードの削除・静的解析から監視・リリースまで幅広く紹介します。
EOLではないモダンなPHPアプリケーションがより多く運用されるきっかけになれば幸いです。
Eloquentには多くの機能がありますが、そのうちよく使うものは実は一部だけです。
Eloquentチートシートは主要な機能をメソッド・プロパティ単位で、それらの引数や戻り値・型を簡潔に、またグループ分けすることで把握しやすい形で一覧できるチートシートです。
使用時に引っかかりがちな罠を回避するヒントも満載!
メソッドインジェクション、使っていますか?
Laravelではコントローラーのインスタンス化の際にコンストラクタに明示された依存クラスを注入してくれる「コンストラクタインジェクション」だけでなく、メソッド実行時に引数に明示された依存クラスをフレームワーク側が自動で解決してくれる「メソッドインジェクション」と呼ばれる便利な仕組みがありますが、この便利機能はどうやったら実現できるのでしょうか?
今回のトークでは簡易ルーティングライブラリを実装して、その大まかな仕組みを実演してみたいと思います!
書いたら書いただけ動くのが PHP のいいところですが、書き散らかしたコードは長年維持管理するのがたいへんですよね。そんな悩みからちょっとアーキテクチャの設計に興味を持った PHPer のみなさんに、設計でどんなポイントをおさえるといいかを、マンガでわかるかたちで書きたいと思います。マンガのオチはもう決まっています。「つづきは『ちょうぜつソフトウェア設計入門』で → 今すぐ購入」になる予定です。
php8からJITコンパイラが導入されました。
JITコンパイラを有効化すると平均で1.5〜2倍のパフォーマンスの改善があったと公式サイトに書いてあります。
https://www.php.net/releases/8.0/ja.php
JITコンパイラの仕組みについてや、実際にどのくらいのパフォーマンスが改善するのか等をまとめて書いていこうと思う。
Webサイト制作を仕事として受けているか否かに関わらず、
企業から相談を受ける立場で仕事をしていると、定期的にやってくるのが「Webサイトがハッキングされた!」という駆込みです。
私は会社員時代も含め、かれこれ10回以上この手の相談を受けてきました。
そしてそのほとんどは、Webサイトのサーバにバックドアを設置された事案でした。
WordPress 等の普及によって、本来システム屋ではないWebサイト制作事業者が気軽に PHP を動かすようになったことがその大きな要因ですが、
それが PHP である以上、我々 PHPer にとっても他人事ではありません。
今回のセッションでは、実際に PHP でバックドアプログラムを書きながら、
・バックドアとは具体的にどのようなものか
・原因と対策
・我々 PHPer に何ができるのか
をお話しします。
PHPStanはプログラムを実行することなくコードの怪しい箇所を特定できる静的解析ツールです。
本稿では2018年からPHPStanを業務で利用している筆者が実アプリケーションにPHPStanを導入する上でのベストプラクティス、心がまえ、アンチパターン、便利な型について紹介します。
昨年のPHPerKaigiで「エラー監視とテスト体制への改善作戦」というタイトルでチームへのテストコード推進と奮闘についてトークをしました。
https://fortee.jp/phperkaigi-2022/proposal/4a7e3ded-9134-4919-955c-ec7bf4491c0d
あれから一年。テスト体制がどのように変わってきたかの話と、テストコードを高カバレッジで維持したシステム開発・運用をして得た話をします。
【トーク対象】
「キャリア10年超のphperなら大体読んでいそう」と思えるくらい、非常に頼れるパーフェクトPHPという書籍があります。
出版当時、2010年。
タイミング的に、世界は「Composer前夜」であり、PHP-FIGも生まれかけレベル。HackやPHP7といった激震を迎える前の話です。
そんな時代の偉大な成果物を、令和5年にPHP8.2で「今風」に書き直したら──どんな感じになるのでしょう?
「10年前のMVCを支えるコード」と「最近っぽいFWの要件」の比較を交えながら、大げさに新機能を使ったりしてみて、実際にFWを作ってみましょう。
プログラマやIT系エンジニアの実務は、(漫画やハリウッド映画でのイメージとは違い)ステークホルダーや同僚・部下との関係が欠かせず、絶え間ない学習・成長が必要で──とても「人間的な」側面が大きいものです。
何だって、人間を学ばないと!
「アドラー心理学」って言葉に聞き覚えは?仕事にどう役立つのでしょう。「認知負荷」って聞きますよね。その定義は説明できますか?
「言っている事が伝わらない」「教えても伸びない」等々、人間関係やメンタルモデルの問題は普段の仕事と密接に関わります
リーダーシップやコーチングを学ぶ中で出会った「こういう領域があるんだ」について共有します
Laravelは、PHPの中で最も利用者数が多い一方で賛否両論のあるフレームワークでもあります。中核機能であるEloquentもまた疑問を投げかけられることの多い対象です。
・Eloquentは果たして使うべきなのか?
・Laravelの何が便利なのか解らない。
私も最初そう感じつつ、数多くの開発を経てLaravelにおける驚くような生産性を手に入れることができました。使うべき機能、そうでない機能、実装のベストプラクティス、本番運用を含むコンテナ構築、これら「Laravel Way」を幅広くご紹介します。
苦労しながらLaravelを使っている方に是非ともお伝えしたい内容です。
PHP における参照に似た機能は、他の言語にも存在しています。C のポインタ、C++ の参照、Java の参照型、C# の参照渡し……。しかしこれらは、それぞれ細かな点で PHP のそれとは異なっています。
PHP における参照を完全に理解すべく、1) PHP レベルでの挙動を観察し、2) PHP 処理系 (https://github.com/php/php-src) のソースコードを追いかけます。
対象: 重箱の隅をつつきたい PHPer、または PHP の language lawyer になりたい人。PHP 処理系は C で書かれていますが、C の知識は (あまり) 要求しないようにするつもりです
目標: PHP の参照を、実装レベルで完全に理解すること、また、php-src を少しだけ探索できるようになること
話さないこと: 参照のメリット・デメリットや使うべき場面
メリークリスマス!
クリスマスといえば、Advent Calendarですね。
世の中には、クリスマス当日まで待ちきれなすぎて1人でカレンダーを埋めていく人も居ます。
私も、2018年に1人adventに初めて挑戦し、2021年には3枚の1人adventに挑んでみました。
このLTでは、自身の経験を通じて感じた「助かったこと」「苦しかったこと」やノウハウを共有し、「今年の12月は私もやってみようかな!!」と 道を踏み外す 奮い立つ人を1人でも増やすことを目的にお話をします。
[ネタバレ]このトークにおいて、タイトルにある「1人Advent Calendarを支える技術(よりも大事なもの) 」は「根性」です。
Web系の開発に携わっていると、「作って終わり」ではなく「ちゃんと動き続けていること」が重要になります。
そのための行為が「監視」であり、その質を保証する特性が「可観測性(Observability)」です。
私はこれまで「開発」「運用」「保守」といった区分けの無いような小規模組織で過ごした時間が長く、その経験から「アプリの人こそ、監視や可観測性を強く意識すべきだ」と確信しています。
皆さんのチームでは、「システムが動いているか気にする人/関心が薄い人」といった分断は発生していませんか?
もしくは、「監視の必要性は理解しているが、”良い監視”って?」と悩んでいる人もいるかも知れません。
このトークでは、「なぜ監視を」「なぜアプリの人が」に触れつつ「可観測性とは何か」について考えを深めていきます。
Rectorを使っているととても便利で、「フレームワークのバージョンを上げたら今までのメソッドがdeprecatedになって書き変えなきゃだぜ!!」といった場面をコマンド1発で乗り切ることが出来ます。
主要なFWやライブラリなどのマイグレーションには公式に対応していますが、自分たちのPJに適したルールは自分たちで作っていく必要があります。
「どういう風に、自動での書き換えを行わせるか・・」は知っておいて損はないはずです!
LTの中で伝えられる範囲で、Rectorを拡張するためのルールの作り方を紹介します。
みんな大好きComposer、もっと仲良くなりたいです。
仲良くなるにはどうすれば・・・やっぱりバラバラに解剖して、自分なりに構築してみることだと思います。
突き詰めれば、やっていることは「JSONを解釈して」「ネットワーク越しにファイルを落として」「ZIPを解凍して」「良い感じに展開すること」になります。
PHP自体の実行箇所(Pluginやscriptsの実行)を除けば、動かすことができるのでは・・?
Composerの一部の機能をGoで再発明してみると同時に、「Composerってそういう仕組なんですね」をシェアします!
2023/02/03 に約3年ぶりのメジャーバージョンアップデートであるPHPUnit 10がリリースされます。
3年ぶりということもあって、PHPUnit 9からの変更はとても多いです。
例えばPHPのrequireが7.3->8.1へと大きく変わったり、大量のクラスやメソッド、オプションが削除されたりなど・・・
今回のトークではPHPUnit 10で何が変わったのか、changelogベースで解説していきます。
必要に応じて、実際に動かしたりしながらの解説もしていきます。