速さは正義。Googleもそう言っている。
Webページの表示速度はユーザ体験に直結し、ひいてはビジネスKPI (購買率、アクティブ率、解約率、etc...) にも影響を及ぼします。
本トークでは、Instagram分析ツール 「SINIS for Instagram」 のページ表示速度を約1/3にした事例をもとに、どうやって課題を見つけ、何の改善を試み、その結果どうなったのかについてお話します。
PHP8.3で追加されたjson_validate()
ですが、痒いところに手が届く大変素晴らしい関数です。
この機能について、具体的にどの辺が便利になったのかを、自身が経験してきたケースと実際の解決方法、json_validate()
を用いた場合どう改善するかのご紹介をします。
そして内部処理がどのようになっているかphp-src
の内部処理から深掘りをしていきます。
json_validate()
を用いない場合の実装ケース
json_validate()
を用いた場合の実装ケースjson_validate()
の内部処理を深掘りしていこう静的解析ツールは使っていますでしょうか?
昨今のPHPのバージョンアップでは型定義が厳しくなってきており、静的解析ツールを導入することの優位性が高まってきています。
15年以上続いているレガシーシステムにPHPStanを導入した際の課題と効果について紹介します。
・既存の静的解析ツールからPHPStanへの移行
・PHPStanの導入時の課題
・導入から半年での効果と課題
既存の静的管理ツールに課題を感じている方や、静的解析ツールを導入したいと考えている方にとって参考になる内容となっています。
※ PHPConference関西2024と同じ内容になります。
WebAssemblyはWebブラウザでの利用にとどまらず、エッジコンピューティングでの実行やプラグインとしての記述手段、マイコン用のランタイムまで存在します。
本トークではWebで動くWebAssemblyとは一味違う、WebAssemblyのWebブラウザの外の話をご紹介します。
また、 PHPをWebAssemblyバイナリにする方法を模索し、マイコン上でPHPを動かす試みを行います。(登壇までに実演できることを期待しつつ……現在はPHPバイトコード→Javaバイトコード→WebAssemblyが最有力)
皆さんは match 派?それとも switch 派?
PHP 8 から待望の match 式が switch 文の改善形として新たに導入されました。 switch 文が抱えがちな潜在的なバグのリスクが軽減され、より使いやすく洗練された構造になりました。
しかし switch 文もまだまだ現役! match 式にはない良さを見つけていきたい!
この発表では、match 式と switch 文の良さをそれぞれ深掘って適切な使い方を紹介していきます。
PHPにも多種多様なフレームワークがあります。
LaravelやCakePHPなどを思い浮かべる方が多いと思いますが、弊社では「BEAR.Sunday」を使用してシステム開発を行っております。
私はPHP/Laravelについては多少知識がありましたが、入社するまでBEAR.Sundayについて知りませんでした。
実務である程度触れてみて他のフレームワークとの違いについて意識するようになり、
MVCパターンではなく、リソース指向という考え方があることを知りました。
LaravelなどのMVCフレームワークとは異なり、
BEAR.SundayはAPI中心のRESTfulアプリケーションのフレームワークを提供することを目標としており、
リソース指向のResource-Method-Representationパターンを採用しています。
本LTではBEAR.Sundayの特徴や設計思想、実際のコードの書き方の違い等をLaravelと比較して解説します。
リソース指向の概念を初学者の立場から、どのように掴んだかまとめることで、
MVCで書く時との具体的な違いについてお話できたらと思います。
本LTを通じて一般的なMVCフレームワークとは一味違う考え方や視点をお届けします。
対象者
Apache Solr(以後Solr)という名前を聞いたことがある人は全文検索用に使うやつでしょ?というイメージが強いのではないかと思います。
Solrは全文検索だけではありません。なかなかイケてる検索もできます。
ただRDBとは違うので導入時に気をつけなければいけないこともあります。
Solrを使うとこんな検索が簡単にできるよというお話と、導入時のハマりどころについてお話できればと思います。
ちなみにSolrの読み方は「ソーラー」です。
話さないこと(LTでは話しきれないので・・・)
・Solrへのデータ登録方法
・Solrを運用するインフラ構成について
皆様は、ペアプロに行ったことはあるでしょうか、ペアテストはどうでしょうか?
あまり有名ではないので、やったことがないです。
自分では、万全だと思っていたのに、気が付かなかった、変な挙動とか、想定の操作とか、「僕のPCでは動きますが」といったのに、QAに突き返されたことはありませんか?(私は、ちなみに私はQAです。)
ペアテストとは、エンジニアとQA2人1組もしくは3人1組で一つのPCを囲み行うテストのことを言います。BDDやAgileの開発手法でも取り上げられることがあります。
品質上昇はもちろん、自分が気付かないエッジケースの不具合や、気が付かなかった仕様漏れ!などに、効果的で、手戻りを防ぐことができ結果、開発速度も向上します。
私は、エンジニアではなく、QAですが、皆さんに体感してみて頂きたい!!
内容
ペアテストの簡単なやり方や実例
ペアテストの私のお勧めするTips
これで、あなたも見落としによる不具合などを減らしていきましょう。
このセッションでは、 require と use 宣言は似てそうだけど違うということが分かったということについて話します。
私は、素のPHPからPHPを勉強し始めました。その時は、「他のPHPファイルを読み込むときは require を書く!」でとにかくファイルの先頭に require を書いて読み込んでいました。
そして、フレームワークも勉強したいと思いLaravelを始めました。すると、ファイルの中には require を先頭には書いておらず、 namespace と use がたくさん書いてありました。
自分でフレームワークもどきを作ってみて、 namespace と use を使い、PHPでブログサイトを作ってみました。namespace と use 宣言、 require は書く必要があった!ということがわかりました。
弊社の「エキサイト電話占い」は、弊社通話システムを通すことで安心安全に占い師と通話できます。
(電話越しに占いができるんです!)
「エキサイト電話占い」には、
・ユーザと占い師お互いの電話番号は非表示
・電波状況などユーザと占い師の環境に合わせた通話手段(通常の電話 or 通話アプリ)を用意
・分単位でのサービス利用料金の計算ができる
などの要件があります。
私はTwilioを用いて上記の要件をみたした通話システムを構築しました。
この通話システムを構築するという経験はとても新鮮だったため、
皆さんに共有させてください。
このLTでは、
・Twilioを用いた通話システムの作成方法
・上記課題の解決方法
について話します。
●●●LTを聞くメリット●●●
・Twilioの基礎を知ることができる
・電話占いの裏側を知ることができる
●●●対象者●●●
・通話を用いたサービス提供を検討中の方
・通話の実装を考えたことがない方
・電話占いを知らない方
・占いが好きな方
みなさん、PHPのEnumは使っていますか?
PHP8.1がリリースされてEnumが使えるようになってから2年が経ちました。
定数の代わりにEnumを使うことで、より型安全で管理しやすいコードを書くことができるので
ぜひ皆さんにも使っていただきたいと思っています!!
このLTでは、僕が一番便利だと感じたEnumを使ったバリデーションの書き方をはじめに、
Enumの利点や実際の活用方法について簡単な例を交えて、
皆さんがEnumを使用する際のメリットを理解していただけるようお話させていただきます。
PHPフレームワークとして広く利用されているLaravelの機能の一つ、Collectionの魅力を活用例も交えながらお伝えします!
Collectionの強力なメソッドを活用すれば、一見複雑な処理でも簡単かつシンプル、そして分かりやすく実装ができることを実際の悩みや解決などの事例も交えながらお見せします。
辞書型のアイテムがたくさん入ったCollectionから特定のプロパティだけ抜き出すには…?
特定の条件に沿ってCollectionの要素を選別するには…?逆に除外するには…?
似たようなことができそうなこのメソッド、どう使い分ける…?
などなど、最新版では100を超えるメソッドの中から実際に活躍したものを厳選してお届けします!!
「君の担当プロダクト、圧倒的に障害発生率が高いよねえ」
誕生から5年が経過し、新機能の追加に焦点を当ててきた結果、社内で一番障害が発生してしまっているプロダクトがありました。
このセッションでは、テストコードが(ほぼ)存在しない状態のプロダクトに、どのようにテストコードを導入していったかについて、実践的な視点からお話しします。
下記どれかに当てはまる点がある方にご視聴をお勧めします。
・機能追加の圧が強すぎてテストコードなんて書いてられない
・既存のコードを大きく変更するのが怖い
・なぜか毎日障害の問い合わせがくる
今では新機能を不安なくリリースできていますが、これもテストコードを導入したおかげです。
テストコードを無理なく導入してみんなで幸せな開発ライフを送りましょう。
フォーム等の入力があるシステムでは、必ず実装しなければならないバリデーション処理。
Laravelでは、標準で便利なバリデーションルールが定義されています。しかし、シンプルなチェックであれば実装は容易ですが、フォームが少し複雑になると、どのように実装するか悩むことも多いのではないでしょうか?
カスタムルールを定義して一からバリデーション処理を実装するのも一つの方法ですが、標準のバリデーションルールだけでも、ある程度複雑なパターンにも対応可能です。
今回は相関バリデーション(他の入力欄の値によって入力のチェック内容が変わる)の実装について、標準のバリデーションルールを活用して実現した方法を紹介します。
みなさん、PHPを書いたことはありますか?
この画面を見ているほとんどの方は「YES」と答えるでしょうが、もちろん書いたことのない方もいらっしゃるでしょう。
私は昨年のPHPerKaigiを皮切りにPHPコミュニティに触れるようになり、2024年には某地方のPHPカンファレンス実行委員長をやることになりました。
しかし、PHPを実際に書き始めたのは2023年の11月。
普段はQAエンジニアとして勤務していたこともあり、開発自体にも少し苦手意識がありました。
本セッションでは、「PHPどころか開発経験も少ない私が、2ヶ月でどんなことに取り組んでPHPの理解を深めたのか」に焦点を当て
PHP未経験者が「実際にPHPを書く」ことにまずは興味を持ってもらうことを目標にします。
PHPは特にWeb開発に適した言語とされ、筆者はバックエンドの実装に用いることが大半でした。
ではPHPが向いていない処理や、ネットに先行事例がない用途の場合はどのように実装すればいいのでしょうか?
その疑問を解決すべく、このトークではネットに先行事例のなかった「オレオレ」ソフトシンセ(CPUによって音信号を合成するソフトウェア)をPHP(とC言語)で自作しました。
この「オレオレ」ソフトシンセを用いて、当日はライブデモを行い蛍の光を演奏します。
このトークを聞くことで、一般的にPHPプログラムでは実装されないようなソフトウェアをも実装することができ、あなたの今後のPHPerとしての可能性を広げることができるでしょう。
対象の方
アウトライン
B+木をご存知でしょうか?RDBMSのインデックス作成に採用されているデータ構造で、ディスクの効率的な利用や、検索を行いやすいなどの特徴があります。しかし、耳学問で聞いてもイマイチ特徴がピンと来ないのです。
本トークでは、PHPでB+木のデータ構造を実装して、RDBMSでB+木が採用される理由、インデックスの構造的な仕組み、何故検索が速くなるのか?などなど、データベースの仕組みの根幹を覗いてみましょう。
本トークで話す内容
PHP を使っていると、予期しない、意図しない動作をすることがあります。
大抵は自分の書いたプログラムのミスですが、まれに PHP 本体のバグや意図しない挙動の変化であることもあります。
今回は "バグかな?" と思ったときの迅速な検証方法から、実際に php-src に報告を行うまでの流れを実例をもとに紹介させていただきたいと思います。
運用で回避せず、レッツコントリビュート!