開発をしていると「この変数は何を表しているのだろう?」とか、「この関数は何をしているのだろう?」とか、一目見ただけでは何を伝えたいのかが分からない命名を目にすることがあります。
意図が伝わらないだけであれば調べれば済むかも知れませんが、時には命名が誤解を招き大問題に発展することもあります。
そんな不幸を呼び寄せる命名をあなたも知らず知らずのうちにしているかも知れません。
ここでは実際に私が見た「君はそもそも何をされてる方なの?」と言いたくなる命名の数々をご紹介し、命名の重要性を論じていきたいと思います。
PHPで構築したシステムの監視運用について、お悩みはないでしょうか。
あるいは、「最近Obserbavilityという単語を耳にするけど、実際なに?」という方も多くいらっしゃるのではないでしょうか。
本LTでは、PHP-fpmでWordPressをAWS EC2上に構築し、
Obserbavilityの3本柱と言われるAPM, Log, MetricsがObservabilityツールの一つであるDatadogでどのように見えるかみてみたいと思います。
Obserbavilityの基礎から実際の見え方までお伝えできるよう、基本概念からお話し予定です。
PHP8.2から動的プロパティが非推奨となり将来的には禁止となることは、多くのPHPerに衝撃を与えたことでしょう。
そのような中で、例外的に動的プロパティが認められた特殊なクラスが存在します。
それが「stdClass」です。
このクラスは一体何者なのでしょう。
公式の説明を見ると「PHP には全てのクラスの親となる基底クラスの概念がないため、 このクラスは基底クラスではありません。」と記されています。
...では一体何なのか?!
現代的なコーディングにおいて動的プロパティは良くないとされ、PHPが徐々に厳格なコーディングスタイルを取り入れていく中で、なぜstdClassだけが許されているのでしょうか。
ここではstdClassの機能と用途からその正体に迫り、今後のコーディングにおいてstdClassは使って良いものなのかを説明していきます。
皆さんが使っているフレームワークは何でしょう??
ウェブアプリケーションの開発において開発効率の向上、セキュリティの対応等のためにフレームワークを使うことが多いと思います。
私は普段はLaravelを使ってます。というか業務ではLaravelしか使ったことがありません。
他のフレームワークの様子がどうやら違うらしいという噂を聞きました。
そこで調べてみたところ、驚愕!
フレームワークによって全然違う!
調べた中で見つけた違いと魅力について、私の意見を交えて説明します。
各フレームワークの比較をして違いを理解している人は少ないかと思いますので、この発表で違いを理解しましょう!
トーク内容
各フレームワークの特徴
それぞれの設計思想、魅力
どういうプロジェクト、どういう人におすすめなのか?
対象のフレームワーク
・ Laravel
・ CakePHP
・ Yii
・ Slim
顧客情報やカード情報の流出などの問題から、サービスのセキュリティ面に対する非機能要求は年々高まりつつあります。
昨年私たちのチームで担当したアーキテクチャのリプレイスプロジェクトでは、Java製のCSMで構築されたサービスをPHP&Laravelの構成へリプレイスしました。
リプレイス前後ではサービス、機能としてのふるまいが変わらない点を重点的にテストしました。しかしふるまいに対してのテストのみでは、セキュリティ上の問題発見が困難でした。
そこで、私たちのチームではWeb脆弱性診断ツールであるVAddyを選定し、セキュリティテストを実施しました。
シナリオに沿って自動的にセキュリティテストを実施する方法や導入に関する課題、問題があるコードの発見と対処についてお話しします!
.NETというとC#というイメージでPHPerにとってはあまり関係ないものと思っていませんか?
なんとPHPも.NETのランタイムで実行することができるんです!
PeachPieというオープンソースプロジェクトがあり、それを用いることでコンパイルしたPHPを.NETランタイム上で実行し、C#とPHPの相互運用が可能になりました。
このトークではPeachPieの紹介と、実際にPeachPieを用いて個人開発してみた際の知見や感想をお話しします。
みんさんはLinterを導入されていますか?
・実装時のコーディング規約・ネーミング規約のチェック漏れが発生し、指摘対応・再レビューに工数がかかる
・コードレビュー時にコーディング規約・ネーミング規約の確認が面倒くさい
このような悩みを持たれている方は少なくないと思います。
「PHP_CodeSniffer」を導入することでそのような悩みを解決できるかもしれません!
そこで本セッションでは、「PHP_CodeSniffer」を導入したときの「実際にやって困ったこと」「やってみて初めて分かったこと」など
体験談を交えながら話していきます。
具体的には以下のような内容について話をする予定です。
・「PHP_CodeSniffer」とはなにか?
・「PHP_CodeSniffer」を導入するに至った経緯
・「PHP_CodeSniffer」を導入してみて
列挙型がPHP8.1でリリースされて約1年が経ちました。
みなさんの現場で列挙型はうまく活用されていますか?
本トークではJava, pythonなど、他言語の列挙型の仕様と比較しながら、
PHPにおける列挙型の役割や使い方を解説します。
このトークを聴いて貴方も列挙型マスター!
列挙型を使いこなしてより楽しく、そして安全なシステム作りをしていきましょう!
皆さんは普段どのようにデバッグをしてますでしょうか?
var_dumpは勿論、echoなどを普段使うと思います。
ただ、毎回デバッグする度にブラウザで実行したり、スクリプトを実行して結果を待つのは手間です。
ブレイクポイントを貼って検証をしたり、実行前の変数の中身を素早く確認したいときがあると思います。
そこで「PsySH」の登場です!
このLTでは「PsySH」の導入から使い方を通じて、効率的なデバッグ方法について紹介します
7.xのコミュニティーによるサポートが終わり8.xが今後のPHPの中心となる中、このLTではPHP8.xで追加された機能を紹介しながらその特徴についても紹介する。このLTで紹介する新機能は「match式」、「名前付き引数」、「コンストラクタ」の3つでそれぞれの基本的な書き方を紹介する他に、7系との処理の比較を行うことで新機能を使用することのメリットと注意点などについて紹介する。このLTの目的は8.xの新機能に関する参加者の理解を深めることで8.xの使用に対する参加者のモチベーションを上げること。このLTを通し、PHPのバージョンアップに対しての参加者の意識をよりポジティブにすることでPHPの関心を高めていきたい。
みなさんはPHPからディレクトリを作ったことはありますか?
PHPには mkdir というファイルシステム関数があるため、ディレクトリを作成するのに困ることは少ないかもしれません。
しかしながら、パスの指定方法や実行タイミング、パーミッションの指定方法を正しく理解していないと、
mkdirでエラーが発生したり、思った通りのディレクトリが作成されなかったりします。
このトークでは、ラッパー関数を作成しながらmkdirだけでもどのような問題が発生する可能性があるのかをお話しします。
PHPerの皆さんが仲良しのIDE、PhpStormくん。
そんなPhpStormくんにはたくさんの機能があり、多くのショートカットキーが割り当てられています。
このLTでは、PhpStormくんの様々な機能のショートカットキーを、時間が許す限りたくさん紹介します!!
デフォルトで設定されているショートカットキーはもちろん、私自身がカスタマイズして使っているショートカットキーも紹介します。
PhpStormくんとまだお話したことがない(まだ使ったことがない)方にもいろんな機能を知っていただき、魅力をお伝えできればと思います。
PHPerKaigiで得た知見を社内に共有するために、勉強会を開催しようと意気込んでる方!
実際の会場で勉強会をしたいが、何かトラブルがおこらないか不安な方!
そんな方に、リアル会場でのイベント運用方法から機材の事、5選です!
内容は、PHP勉強会@東京や自社の社内勉強会で実践・運用している事です。
●運用
集客、タイムテーブル、参加者の満足度を上げる方法など、運用して成功、失敗した事。
●機材
プロの配信エンジニアに教えてもらった、よくおこるトラブルの対処法で、私がおこなっている事。
20分発表とLTは違う種類のマイクを使った方がいい?
実は、ハンドマイクは扱いが凄く難しい。では、扱いの簡単なマイクの種類とは何か?
発表者の持ち込みPCがスクリーンに映らないトラブルを減らす方法は?
トラブルが起こりにくいメーカーのケーブル、コネクタ、コンバーターの紹介。
PHPに存在する "魔法のような" メソッド「マジックメソッド」。
普段はあまり気にしなくても、フレームワークやライブラリのコードを読むときに、見慣れないメソッドが出てきて処理を追う手が止まってしまったことはありませんか?
一つ上のPHPerになるために、これを機にマジックメソッドについての理解を深めましょう!!
本セッションではいくつかのマジックメソッドについて、クイズ形式でその効果や利用方法を説明します。
Laravelの登場は2011年、Cake PHP、Symfony、ZendFrameworkは2005年と、PHPのフレームワークには歴史があります。
しかし、私の開発しているプロダクトは2001年にリリースされており、そんな贅沢なものは使われていませんでした。
当然設計もレガシーで
・ビューロジックとビジネスロジックが分離されていない
・処理が上から下に流れるだけ
・共通関数を大量に抱えたファイルがある
など、とうてい現代の設計についていけそうにない状態でした。
そんなレガシープロダクトを、Laravelで動くようにした実装戦略を、”載せる”をキーワードにお話したいと思います。
PHPのコードを書いたり読んだりするだけでなく、PHPに関するクイズを作ったり解いたりすることも、PHPに親しみ、詳しくなるための手段の一つです。
新卒2年目の新米PHPerである発表者が、周りの助けを借りながら、イベント向けに作問した経験をもとに、PHPに親しめた例を紹介します。
この発表では、次に示す内容を話します。
実際に作問した問題: https://tech.pepabo.com/2022/10/05/php-conference-japan-2022-quiz/
我々が普段使うCPUは長いことIntel製またはAMD製でしたが、最近ではAppleのM1/M2チップなどARM環境も身近になってきました。現時点でAWS/GCP/AzureそれぞれがARMインスタンスを提供していますし、今後もARMの採用事例は増えていくと考えられます。
ARMが注目される理由は電力あたりの計算性能が高いこと、言い換えるとコストパフォーマンスが高い点でしょう。しかし、CPU単体の性能が良いとしてもCPU上で動作するアプリケーションの最適化が不十分だとその実力は発揮できません。アプリケーションまで含めて考えないとARM環境を採用すべきか判断できないと言えるでしょう。
ところで、PHPについてはARM向けの最適化が実装されています。これは2019年頃にAWSの技術者が実装したものです。本トークでは、このARM向け最適化の中身とその背景知識を紹介します。