PHP 7.0以降は引数にint, stringなどの型が書けるようになるなど静的型についての機能が充実しています。
またPhpStormのようなIDEやPHPStanのような実行しなくてもコードを解析・補完入力できるツールが揃ってきています。
今回のトークでは、できる限り型についての事前知識がなくても使えるよう以下の内容について扱います。
皆さんはDIというワードを目にしたことがあるでしょうか?
https://fortee.jp/phperkaigi-2021/proposal/bfa7dda5-fa76-472f-bfbb-3e76f3434581
私は以前、PHP関連のイベントでDIについての発表をし、DIに関する内容の話をしました。
DIがデザインパターンであるという結論を語ることができたのは良かったのですが、そこで新たな疑問が湧いてきました。
「DIとは既存のデザインパターンを組み合わせたものなのか?」
「それとも、DIとGoFのデザインパターンは全く異なるものなのか?」
DIの実装パターンの話などにも触れつつ、デザインパターンの話を深堀りしていきたいと思います。
昨今のPHP界隈では、Swooleに代表される新興のHTTP・アプリケーションサーバが注目を集めるようになりました。
従来の実行方式における「1リクエストごとに状態がリセットされる」前提を覆し、大幅なパフォーマンス向上を図れると話題を呼んでいます。
RoadRunnerはそんな新興サーバの一つで、Goで書かれています。最近ではLaravel OctaneのRoadRunner対応が発表されました。今一番の注目株です。
本発表ではRoadRunnerの紹介を通して、PHPの新しい可能性を切り開くAlt PHP-FPMの世界を探訪します。
▼お話ししたいこと
・RoadRunnerの概要
・従来の実行方式や他のAlt PHP-FPMとの違い
・利用上のハマりどころ
・Spiral Framework
▼お話ししないこと
・本番事例
Web アプリケーションを作るにあたって、絶対に外せないのは「ユーザーから受け取った値をデータベースに保存する」といったものです。
特に初心者が気をつけたいのは受け取った値の取り扱いです。例えば POST のリクエストで金額を受け取る時「is_numeric 関数だけを使えばいい」と答える人もいるかもしれませんが、これは答えとしては NO です。理由は 3 つあります。「金額は原則 0 以上の自然数である」「is_numeric だと float の値も true となる」、そして「PHP_INT_MAX 円で本当に大丈夫?」です。このようにバリデーションは実は奥が深いのです。様々なケースで、どういうバリデーションを書けばいいのか?金額だけではなく、名前、電話番号、メールアドレスなど、セキュリティではなくプロダクトで必要となるバリデーションの話を広く浅く解説していければと思います。
何かと話題な Swoole ですが、特にデータベースや KVS (例えば Redis) 周りを扱うにあたって少しコツが必要です。Swoole の最大のメリットの一つとして手軽に非同期処理を導入できるという点ですが、データベースや KVS 周りはコルーチン安全ではない可能性があります。では、実際にコルーチン安全にして、既存のアプリケーションで使用するにはどうしたらいいのか、Laravel に Swoole を導入すると仮定して laravel-swoole と呼ばれるフレームワークをベースに解説します。
ふと「別の言語も学んでみたいけど、とっつき方がわからない」と思う方も多いのではないでしょうか。
特に近年よく使われる Go などを触ってみたいけど、難しそうと思いなかなか手を出しづらいと思っている方もいらっしゃるかもしれません。
Go をチョットワカルようになるだけでも PHP にはない新鮮さ、楽しさを感じることができます。
そこで PHPer が Go を学ぶにあたって何を気をつければいいのか、どうすれば Go をチョットワカルようになるのか解説します。
ふと「別の言語も学んでみたいけど、とっつき方がわからない」と思う方も多いのではないでしょうか。
特に近年よく使われる TypeScript などを触ってみたいけど、難しそうと思いなかなか手を出しづらいと思っている方もいらっしゃるかもしれません。
TypeScript をチョットワカルようになるだけでも、業務の分野が広がり、フロントエンドエンジニアの業務がどういったことをやっているのか理解しやすくなります。
そこで PHPer が TypeScript を学ぶにあたって何を気をつければいいのか、どうすれば TypeScript をチョットワカルようになるのか解説します。
プログラミング覚えたての時、電卓を作るといったことをした方や、今現在プログラミングを学習中で電卓を作っている方もいらっしゃるかと思います。
電卓を作るといえば「1+1」と入力したら単純に「2」が出力されるイメージでしょうか。作っているうちに、「あれ?「((1 + 2) × 3)-((1 + 2) × 3)」みたいな式はどうするんだ?」と疑問に思った方も少なくないと思います。そこで本トークでは3分間という短い時間で、複雑な式を計算できる、もう一段階上の電卓を作る方法についてお話します。
みなさん、非同期処理に興味はありますか?私はめちゃくちゃ興味があります。ところで私が所属しているトラーナでは Swoole をプロダクション環境で使用しているのですが、昨今 Fiber が界隈を賑わせています。そこで Fiber を実際に試してみて、かつ Swoole とどう違うのか、何がメリットなのか、何がデメリットなのか?プロダクションで使用するにはどうすればいいのかをトークさせていただければと思います。
アプリケーションは成長します。その成長を支える基盤が必要です。
今回は成長するPHPアプリケーションを支えるインフラのパターンに関して説明します。
AWSを利用した、スケーラブルなPHPを構築するための勘所を押さえ、
PHPアプリケーションを支えるインフラを築きましょう。
■想定する聴講者
■話さない事
速いは正義、アプリケーションは速くあるべきです
話者はPHPerKaigi2021にてパフォーマンスチューニングに関する登壇を行いました
https://speakerdeck.com/seike460/php-web-application-performance-tuning
時間の関係上、理論のみのお話となってしまったのですが、今回は加えて実践結果に触れていきます。
そこで説明した理論を実際に適用すると、どのようにパフォーマンスが向上していくかを
例題のPHPアプリケーションに対して計測を行い、原因を特定して、改善した実際の様子と合わせてお伝えします
■想定する聴講者
■話さない事
PHPでは、例外をthrowとtry-catch-finallyを使って処理する実装をすることが多いと思います。
対して、GoやScalaなどthrow -> try-catch-finallyでの例外ハンドリングを実装せず、多値返却やEitherなどエラーを表すデータ型を使って例外処理を行う言語も存在します。
本セッションでは、PHPでGoやScalaのようにthrowしない例外処理をどう実装していくのかと、実際に実装した結果どのようなメリット/デメリットが得られたのかをお話します。
自分は直近までFacebook PHP Business SDKとFacebook Marketing API( https://developers.facebook.com/docs/marketing-apis/ )を利用したInstagramとの外部連携機能の開発に携わってきました。
本セッションでは、その開発経験をもとに得られた「もっとこうすればよかった」の後悔や知見を、設計やテストの観点からお話します。
パッケージを管理するツールとして Composer を利用している方が多いと思います。
一方で、自分で Composer パッケージを作成している方はどれくらいいらっしゃるでしょうか?
実は Packagist に公開しなくても、自分たちのコードを Composer から利用可能なパッケージにする方法があります。
本発表の前半ではその方法や、そうすることのメリットを解説します。
後半では、自分たちのコードをフレームワークの「外」に持っていく方法と、それ実践するために必要な「技術的でない」ことについてお話します。
Composer で見かける「PSR-0」「PSR-4」、コーディングスタイルでみかける「PSR-2」「PSR-12」など、PHP に関わっていると自然と目にする「PSR」という言葉。
「PHP Standard Recommendation(標準勧告)」の頭文字なのですが、果たしてこれは何なのか?使い方は?どんなメリットがあるのか?
そんな疑問に対して、具体的なコードとともに解説していきます。
「テスト駆動開発入門」が 2002 年に出版されてもうすぐ20年が経とうとしていますが、テスト駆動開発はどの程度普及したでしょうか。私の知る範囲でも、自動テストのないプロダクトや、自動テストを書いたことがないウェブアプリケーションエンジニアが少なからず存在しています。主にそうした自動テスト未経験の方やテスト駆動開発未経験の方向けに、テスト駆動開発の楽しさと進め方のコツをお伝えしたいと思います。
株式会社あつまるでは自社のサービス(サイト制作)のために WordPress サイトと WordPress プラグインを5年以上前から開発してきました。
度重なる改善のおかげでサイト制作効率は何倍にもなり、弊社の生産性向上に寄与しています。
が、そんな中でも「なぜこんな作りにしてしまったんだ…」「なぜもっと早くこれをやらなかったんだ…」と後悔していることも少なくありません。
WordPress 特有の問題、モダンなフレームワークに憧れて真似した結果火傷した話など、みなさまにお話しさせていただきます。
多くのサービスがRDBMSを使っています。
しかし、RDBMSは銀の弾丸ではない現実があります。
そこで今回はRDBMSが苦手な次のようなことに対して、RDBMSやNoSQLを使って如何に解決するか?をお話します。
こんな悩みをどのように解決するかをお話します。
気軽に欲しいと言われるけど実は作るのが大変な機能ランキング第1位といえば、CSVファイルによるインポート/エクスポートでしょう。(異論は認めます)
特にインポートは入力データのバリデーションやインポート前のプレビュー表示などが必要になるとやることが多くてひたすら面倒です。
エクスポートはエクスポートで、データ量の多いアプリだと結構シビアに計算量をカットする必要があったりしますね。
このように、カジュアルに要望される割に意外と腕が試されるCSVインポート/エクスポートについて、PHPでの具体的な実装例をご紹介できればと思います!
2020年10月24日に、Composer 2.0がリリースされました。
Composer初のメジャーバージョンアップデートですが、どんな新機能が増えたのでしょうか?
そこでComposer2.0で新しく実装された機能について、時間が許す限りご紹介・解説いたします。
時間の都合で全ての機能について触れられない可能性がございますが、以下の機能について触れる予定です。