PHPerKaigi2022は事前録画方式でした。それら動画を全チェックするパーソンによる、独断と偏見と主観によってまとめられた全トークの感想についてつらつらと語る動画です。
全部のトークを見きれないよ…という人、ぜひこのトークで全トークをキャッチアップし、タイムシフト再生など後日視聴の参考にしてください!
※動画内でも語っていますが、深夜のホテルで疲れたそして謎のテンションで一気に作成していますので、一部不明瞭、読み上げのミスがあります。ご容赦ください :bow: :bow: :bow:
スタッフ uzulla がPHPerKaigi 2022のスポンサーブースにお邪魔します。
オフラインで来場できない皆様の代わりに、やたらとやかましい人間がお邪魔して転送いたします!!!
20分のレビュラートークでは以下のように主にOOUIモデリングをエンジニアとデザイナで行う過程の話になっています。
40分の本トークではそれに加えてOOUIのモデリングをどう実装に落とし込んで幸せになったのかを弊社BASEでの事例を元にお話させて頂きます。
フルサーバーレスな構成を取る場合、必要な様々なクラウドサービスの知識に加え
実践的な利用方法が求められます。
フルサーバーレスの恩恵を受けたいが、その第一歩が難しい。
そのような悩みを、定まったフレームワーク上でフルサーバーレスな構成を簡単に実現出来るAWS Amplifyを利用することで解決出来ます。
今回はその流れについてReact + GraphQLで作成するログイン付きの
Webアプリケーションをバックエンドアプリケーションを開発することなく爆速で構築する手法について、
フルサーバーレスにしたことで得られたメリット・デメリットも含めてお話します。
2018年のGitHub UniverseでGitHub Actionsが発表されてから約3年、今ではGitHubを代表するなくてはならない機能の1つになっています。
発表者もv2(not HCL)から使い始めており、作成したOSSのCI/CD環境として活用するだけでなく、独自に作成したActionもいくつかGitHub Marketplaceに公開しています。
本発表では、GitHub Actionsを使いこなすに当たって、私の知る知見を時間の許す限り紹介します。
細かすぎて全く必要のなさそうな情報ばかりかもしれません。しかし、あなたがGitHub Actionsを使いつづけていくといつか必要になる情報かもしれません。
そして本発表では最終的に「PHPで独自Actionを作成する」ところまでいきたいと思います。
PHP はバージョンを追う毎に型宣言、例外、表明、列挙型などの機能が大幅に強化され、堅牢なコードを書くための機能が充実してきました。それらの機能はどう使うと効果的なのでしょうか。
本講演では PHP 8.1 をベースにして、誤りを想定してチェックするのではなく、そもそも誤りにくい設計とはどのようなものか、つまり「予防」の観点を軸足に、堅牢なコードを導くための様々な設計のヒントをご紹介します。
PSR-7がPHPにおけるHTTPの標準的なインターフェイスとして採択されて久しく、それに対応するHTTPハンドラ/ミドルウェアの仕様であるPSR-15を使えば特定のフレームワークに依存せずWebアプリケーションを実装できます。ピクシブ百科事典はPSR-7/PSR-18ベースのWebアプリケーションで実装されており、このトークではその経験を踏まえたアプリケーション実装パターンについて紹介します。
この発表ではPSRで学ぶHTTP Webアプリケーションの実践などで説明しているHTTPとPSR-7の関係について知っていることを前提に、よりアプリケーション実装やユニットテストなどの実践にフォーカスして説明します。
NoSQLのような可用性・柔軟性を持ちながらSQL・トランザクションをサポートすると言われているNewSQLの導入事例が最近目につくようになってきました。
ですが、NewSQLと既存のNoSQLとの違い、また実際どのようなメリットがあるのか、よくわからない部分も多いと思います。
今回の発表ではNewSQLの1つであり、MySQL互換のTiDB(タイデービー)をPHPのアプリケーションからつないで使ってみるところまでを、発表したいと思います。
アプリケーションエンジニアの視点から調査した以下の内容をまとめて発表予定です
誰かが言った。
「データベースの寿命は、アプリケーションよりも長い。」
多くの人が感覚として持っているのではないでしょうか。
この10年間で多くの技術が生まれ、そして変化し、開発の現場も進化してきました。
そんな中、データベースの世界では何十年もRDBMSが活躍しています。
それはなぜでしょうか。
この10年間のRDBMSの変化から開発に必要なことが見えてくるはずです。
そして、そこからこの先の10年を見据えたシステム開発の勘所を紐解きます。
様々な商用データベースに対して、MySQLやPostgreSQLのようなOSSデータベースは如何に追従しているのでしょうか。
そしてクラウドならではの新しい形のデータベースも次々に生まれています。
これらを題材に今、あなたが新しいサービスを作る時、10年戦えるデータベースの作り方を見つけていきましょう。
BASEはCakePHP2という古いフレームワークを使っています。バージョンアップ計画は水面下で動いていましたが、コロナ特需によるサービスの急成長とそれに伴う開発組織の急拡大を背景に、バージョンアップだけでなくサービスの中長期的な成長を支えながら組織の問題も解決するような統合的な戦略が求められ、もはやバックエンドテクノロジーのリアーキテクチャリングと呼べるプロジェクトへと定義が更新されています。
事業会社における開発組織として中長期的にサービスとテクノロジーにどう向き合えばよいのかを考え続けた結果、我々はマイクロサービスではなくモジュラモノリスを中心に据えた戦略をたてました。この発表では我々の考える中長期的なアーキテクチャ戦略の概要と、PHPにおけるモジュラモノリスの実践について、1つの他社事例として皆様にお伝えしたく思います。
昨年開催されたISUCON11にて問題(参考実装)のPHPへの移植を担当させていただきました。
最終的なソースコードこそシンプルなWebアプリケーションではありますが、その裏には
・「(私の思う)良い設計」を実現するための意思決定
・「ISUCONの問題」という位置付けに由来する取捨選択
・移植中に遭遇したトラブルとその解決策
といった文脈や葛藤が存在しています。
本発表はそれらを共有することで
・PHPアプリケーションの設計、実装事例として役立ててもらう
・ISUCONの言語移植に興味を持ってもらう
・ISUCON問題移植の「実装や設計の練習をする教材」としての可能性を知ってもらう
ことを目的とします。
なお、以下のテーマは扱いません。
・(移植に利用した)Slim Frameworkの使い方
・ISUCON11の問題解説
・パフォーマンスチューニングに関する知識、技術
「バグやエラーだらけのソフトウェア」は、開発運用していて大変ですよね。
何をしてもどこかが壊れている、増え続ける問い合わせ‥そんな状態を抜け出したい!と思ったことはありませんか?
エラーやバグの退治に取り組みましょう。
「健全化」されたアプリケーションは、チームの自信や誇りに繋がります。
泥沼から、どうやって一歩を踏み込んで行くかを話します。
重たい処理をキューに任せることで、早めにレスポンスを返すことが可能です。しかし、Laravel 標準のキューサーバーの処理速度にはある一定の限界があります。
弊社では、1 回あたり数十秒かかるような処理をキューに任せているのですが、キューが積まれすぎて処理しきれず破棄されるといった事象が起こっていました。
Laravel には Laravel Horizon と呼ばれる並行並列でキューを処理ができるライブラリがあるのですが Redis のみのサポートで、弊社では Amazon SQS を使用しているため、導入には至りませんでした。そこで、Amazon SQS 向けに Laravel のキューサーバーを自前で実装し直し、処理速度を 4 倍に向上させました。
どのように処理速度を高めるのか、そのテクニックのご紹介と実際のプロダクションへの投入、得られたパフォーマンスなどを本トークでお話します。
昨今PHPでHTMLをレンダリングすることは少なくなり、SPAとrest APIを使ったクラサバ構成のwebアプリケーションが増えてきました。
そこで問題になってくるのは、双方のインターフェースを担保するのをどうするかというところです。
Rest APIのIDLとしてOpen API specificationを用い、IFを担保するケースは多いと思いますが、どうしても運用メンテに工数がかかってしまいます。
今回Laravelを用い、1行コードを追加するだけでOASのファイルを吐き出せるようなライブラリを作ったのでその紹介をさせてもらいます。
Nuxtを使いクライアントから呼び出す方法、ないしはmswを使ってサーバーレスにAPIモックを作る方法も紹介させていただきます。
モデルという言葉から皆さんはどんなものを想像しますか?
我々の日常生活やエンジニアチーム、エンジニア以外のチームとのコミュニケーションでは、
耳に入る言葉にはそれぞれコンテキストが多分に含まれています。
コンテキストを理解せずにそれぞれのチームが微妙に異なった認識で物事を進めると、
どんなことになってしまうのでしょうか?!
コンテキストを正しく理解することは、その時の仕様を満たすシステムを作るだけではなく
うまく活用することでビジネスを加速させるためのコミュニケーション改善や、
複雑な仕組みを解決する力となります。
より良いシステムづくりのためにも是非入門してみましょう!
Event SourcingはCQRSとの組み合わせだけでなく、そのエッセンスは様々な仕組みに取り入れることができます。
マイクロサービスアーキテクチャ化、大規模なデータ処理の改善、
リアクティブシステム構築などではほぼ必須のテクニックとなりますが、
ネット上にある記事を鵜呑みにしてしまうと致命的なアンチパターンに繋がってしまうことも多くあります。
状態をもたせないイベントでマテリアライズドビュー化してしまう、
巨大なランタイムを持たせてしまったハンドラ、
分割しすぎて時系列を無視したイベントなどなど。
いくつかは実際にやってしまったこともありますが、体験や例をもとに
Event Sourcingとは何かを説明しながら、何をすべきでやるべきでないのかを楽しくお伝えします
In this talk i am going to explore ways that PHP can be made more secure by looking at some known common vulnerabilities and coding techniques. Covering topics like user input sanitisation using Filter_Var i will also look at ways that libraries and dependancies can introduce known vulnerable paths.
近年注目を集めるマイクロサービスアーキテクチャ。GoやScalaのような華々しい言語で実装した話はよく語られていますが、もちろん我々PHPerの愛するPHPでもできるんです!
私は2018年〜PHPシステムのマイクロサービス化プロジェクトを始め、2021年現在もPHP製マイクロサービスを運用・進化させています。PHPシステムの中でマイクロサービスに向く機能・PHPマイクロサービスをどうやって作って運用するかまでお話しします。
(1)マイクロサービスとは?
(2)PHPでマイクロサービスの作り方(設計、コード)
(3)AWSでPHPのマイクロサービスを動かすための仕組み
Suica や PASMO をデバイスにタッチして値を取得する、そんな夢を PHP で叶えたいと思っていた PHPer も多いかと思います。
PHP7.4 から PHP FFI と呼ばれるものが導入され、その夢も今まで以上に叶えやすくなりました。Suica や PASMO は FeliCa と呼ばれる NFC の規格の 1 つです。実装方法は多岐に渡りますが、概ね libnfc と呼ばれるライブラリや libusb を使う方法などがあります。しかし、今までの PHP ではこのライブラリを呼び出すことさえ叶いませんでした。そこで、本セッションでは PHP7.4 から導入された PHP FFI を用いてどのように PHP で NFC リーダーを実装するのか、そして実際のデモを交えてトークできればと思います。