PHP はバージョンを追う毎に型宣言、例外、表明、列挙型などの機能が大幅に強化され、堅牢なコードを書くための機能が充実してきました。それらの機能はどう使うと効果的なのでしょうか。
本講演では PHP 8.1 をベースにして、誤りを想定してチェックするのではなく、そもそも誤りにくい設計とはどのようなものか、つまり「予防」の観点を軸足に、堅牢なコードを導くための様々な設計のヒントをご紹介します。
Suica や PASMO をデバイスにタッチして値を取得する、そんな夢を PHP で叶えたいと思っていた PHPer も多いかと思います。
PHP7.4 から PHP FFI と呼ばれるものが導入され、その夢も今まで以上に叶えやすくなりました。Suica や PASMO は FeliCa と呼ばれる NFC の規格の 1 つです。実装方法は多岐に渡りますが、概ね libnfc と呼ばれるライブラリや libusb を使う方法などがあります。しかし、今までの PHP ではこのライブラリを呼び出すことさえ叶いませんでした。そこで、本セッションでは PHP7.4 から導入された PHP FFI を用いてどのように PHP で NFC リーダーを実装するのか、そして実際のデモを交えてトークできればと思います。
2018年のGitHub UniverseでGitHub Actionsが発表されてから約3年、今ではGitHubを代表するなくてはならない機能の1つになっています。
発表者もv2(not HCL)から使い始めており、作成したOSSのCI/CD環境として活用するだけでなく、独自に作成したActionもいくつかGitHub Marketplaceに公開しています。
本発表では、GitHub Actionsを使いこなすに当たって、私の知る知見を時間の許す限り紹介します。
細かすぎて全く必要のなさそうな情報ばかりかもしれません。しかし、あなたがGitHub Actionsを使いつづけていくといつか必要になる情報かもしれません。
そして本発表では最終的に「PHPで独自Actionを作成する」ところまでいきたいと思います。
BASEはCakePHP2という古いフレームワークを使っています。バージョンアップ計画は水面下で動いていましたが、コロナ特需によるサービスの急成長とそれに伴う開発組織の急拡大を背景に、バージョンアップだけでなくサービスの中長期的な成長を支えながら組織の問題も解決するような統合的な戦略が求められ、もはやバックエンドテクノロジーのリアーキテクチャリングと呼べるプロジェクトへと定義が更新されています。
事業会社における開発組織として中長期的にサービスとテクノロジーにどう向き合えばよいのかを考え続けた結果、我々はマイクロサービスではなくモジュラモノリスを中心に据えた戦略をたてました。この発表では我々の考える中長期的なアーキテクチャ戦略の概要と、PHPにおけるモジュラモノリスの実践について、1つの他社事例として皆様にお伝えしたく思います。
スタッフ uzulla がPHPerKaigi 2022のスポンサーブースにお邪魔します。
オフラインで来場できない皆様の代わりに、やたらとやかましい人間がお邪魔して転送いたします!!!
誰かが言った。
「データベースの寿命は、アプリケーションよりも長い。」
多くの人が感覚として持っているのではないでしょうか。
この10年間で多くの技術が生まれ、そして変化し、開発の現場も進化してきました。
そんな中、データベースの世界では何十年もRDBMSが活躍しています。
それはなぜでしょうか。
この10年間のRDBMSの変化から開発に必要なことが見えてくるはずです。
そして、そこからこの先の10年を見据えたシステム開発の勘所を紐解きます。
様々な商用データベースに対して、MySQLやPostgreSQLのようなOSSデータベースは如何に追従しているのでしょうか。
そしてクラウドならではの新しい形のデータベースも次々に生まれています。
これらを題材に今、あなたが新しいサービスを作る時、10年戦えるデータベースの作り方を見つけていきましょう。
昨年開催されたISUCON11にて問題(参考実装)のPHPへの移植を担当させていただきました。
最終的なソースコードこそシンプルなWebアプリケーションではありますが、その裏には
・「(私の思う)良い設計」を実現するための意思決定
・「ISUCONの問題」という位置付けに由来する取捨選択
・移植中に遭遇したトラブルとその解決策
といった文脈や葛藤が存在しています。
本発表はそれらを共有することで
・PHPアプリケーションの設計、実装事例として役立ててもらう
・ISUCONの言語移植に興味を持ってもらう
・ISUCON問題移植の「実装や設計の練習をする教材」としての可能性を知ってもらう
ことを目的とします。
なお、以下のテーマは扱いません。
・(移植に利用した)Slim Frameworkの使い方
・ISUCON11の問題解説
・パフォーマンスチューニングに関する知識、技術
モデルという言葉から皆さんはどんなものを想像しますか?
我々の日常生活やエンジニアチーム、エンジニア以外のチームとのコミュニケーションでは、
耳に入る言葉にはそれぞれコンテキストが多分に含まれています。
コンテキストを理解せずにそれぞれのチームが微妙に異なった認識で物事を進めると、
どんなことになってしまうのでしょうか?!
コンテキストを正しく理解することは、その時の仕様を満たすシステムを作るだけではなく
うまく活用することでビジネスを加速させるためのコミュニケーション改善や、
複雑な仕組みを解決する力となります。
より良いシステムづくりのためにも是非入門してみましょう!
近年注目を集めるマイクロサービスアーキテクチャ。GoやScalaのような華々しい言語で実装した話はよく語られていますが、もちろん我々PHPerの愛するPHPでもできるんです!
私は2018年〜PHPシステムのマイクロサービス化プロジェクトを始め、2021年現在もPHP製マイクロサービスを運用・進化させています。PHPシステムの中でマイクロサービスに向く機能・PHPマイクロサービスをどうやって作って運用するかまでお話しします。
(1)マイクロサービスとは?
(2)PHPでマイクロサービスの作り方(設計、コード)
(3)AWSでPHPのマイクロサービスを動かすための仕組み
PSR-7がPHPにおけるHTTPの標準的なインターフェイスとして採択されて久しく、それに対応するHTTPハンドラ/ミドルウェアの仕様であるPSR-15を使えば特定のフレームワークに依存せずWebアプリケーションを実装できます。ピクシブ百科事典はPSR-7/PSR-18ベースのWebアプリケーションで実装されており、このトークではその経験を踏まえたアプリケーション実装パターンについて紹介します。
この発表ではPSRで学ぶHTTP Webアプリケーションの実践などで説明しているHTTPとPSR-7の関係について知っていることを前提に、よりアプリケーション実装やユニットテストなどの実践にフォーカスして説明します。
PHPerKaigi2022は事前録画方式でした。それら動画を全チェックするパーソンによる、独断と偏見と主観によってまとめられた全トークの感想についてつらつらと語る動画です。
全部のトークを見きれないよ…という人、ぜひこのトークで全トークをキャッチアップし、タイムシフト再生など後日視聴の参考にしてください!
※動画内でも語っていますが、深夜のホテルで疲れたそして謎のテンションで一気に作成していますので、一部不明瞭、読み上げのミスがあります。ご容赦ください :bow: :bow: :bow: