エヴァンゲリオンとPHPに意外なつながりがあった!
そんな話をします。
https://speakerdeck.com/sapi_kawahara/php-with-high-synchronization-rate-with-evangelion
これのリニューアル版です。
PHP歴だけは長いぼくが Laravel よくわからないので避けようとしたものの
結局 Laravel を使うことにしました
その結果 Laravel の乗り方がようやくわかりました
アーキテクチャ(設計) というほど高尚なものではありませんが
フレームワークの利便性とアプリケーションコードの適切な分離を思いついたので話したいと思います
平たくいえば
「ぼくのかんがえたさいこうのLaravelのつかいかた」
です
「早くPHP 8.1を使いたい… でもうちはまだ7.3なんだお…」
PHPの新バージョン8.1の機能は既に確定していますが、PHPは毎年11月末にリリースされるので、あと2ヶ月待たなければいけません。
また、そもそもリリース済みの7.4や8.0の機能を使いたいけれど、自分の一存では上げられない… そんなこともあります。
このLTではそんなときに便利なsymfony/polyfillと、その限界についてお伝えいたします。
型付けしてますか? PHPで型安全なコードを追求しはじめると、やや取り回しの悪いPHPの標準関数の型に煩わされます。
そのような型には歴史的事情があるのですが、このLTでは標準関数の型の問題を解決するthecodingmachine/safeパッケージについて紹介します。
先進技術を貪欲に取り入れ続ける皆様にとって、PHPとGoを組み合わせた全く新しい (ver1リリースが2017年) FrameworkであるSpiral Frameworkの存在は周知のことかと思います。今回はこのSpiralとそれが採用しているCycleORM利用することで、エンティティの定義からデータベースのテーブル定義を同期させる機能をご紹介いたします。
Laravelなどのような積み上げ式のデータベースマイグレーションを採用している場合、時とともにマイグレーションファイルが増えていき、現在のデータ定義がわかりにくくなっていきます。一方、CycleORMを採用するSpiralでは、エンティティのプロパティ定義を利用して、データベースのテーブル定義との差分を検出し、定義内容を同期する機能が用意されています。この機能を活用することで、積み上げ式のマイグレーションファイルは不要となり、テーブル定義もエンティティのプロパティを見ればわかるようになります。
今時だとLaravelやCakePHPが割と覇権みたいに言われていますが、だからこそ、あえて、このSpiral Frameworkを通して、新しい開発体験をしてみてはいかがでしょうか。
AWS Lambda の新機能としてコンテナイメージのサポートが開始されました!
PHPerがサーバーレスラーになれる!嬉しくてたまりませんね!
じゃあどうすれば良いのか、具体的なデプロイ手順をライトニングなトークでお話します!
デプロイさえ出来ればあとはあなた次第、
めくるめくサーバーレスライフを堪能しましょう!
■想定する聴講者
- サーバーレスアーキテクチャに興味がある方
- とにかくPHPをサーバーレスで動かしたい方
■お話しないこと
- Productionで利用できるようなためになるお話
- 細かい理論
速いは正義、アプリケーションは速くあるべきです。
ではどうすれば良いのか
細かい理論などは気にしない、こうしたら早くなった
結果を貼り付けながら、何をしたのかひたすら話しますが、細かいことは話しません
OS、Webサーバー、PHP、RDBMS等の見直すべき要素に関して、情報を詰め込むだけ詰め込むことに挑戦します。
※注釈は付けますので細かな理論はそちらでご確認ください
■想定する聴講者
- PHPWebアプリケーションのパフォーマンスに興味がある方
- PHPのインフラを整備するエンジニア
- PHPでISUCONに挑戦する方
■お話しないこと
- パフォーマンス以外の話
- アプリケーションコードによる改善
- 劇的なパフォーマンス改善策
2021年8月に開催された「ISUCON11予選」に参加してきました。
GopherやRubyistが巣食う予選で、PHPerはどれだけ成績を残せたのでしょうか...!
本トークでは、予選に参加する過程で生まれたエピソードや成果をご紹介します。
例えば、以下のような話題を扱う予定です。
Google Cloud Platformの Cloud Run をご存知でしょうか。
Dockerのイメージで起動し、PHPで書いたWEBアプリケーションが直ぐにデプロイされて公開できる便利なサービスです。
デプロイするだけで証明書付きURLが発行されたり、トラフィック量調整によるカナリアリリースができたりと、
ものすごく便利でものすごく強力なのですが、意外に皆さんご存知ではないのでしょうか?
ということで、実際に現場で使っている感想も交えてCloud Runについてお話します。
初めての登壇チャレンジです。 よろしくお願いします!
PHP-FPM(FastCGI Process Manager)の設定項目を「なんとなく」「デフォルトのまま」にしていませんか?
不適切な設定は充分なパフォーマンスが発揮できないばかりか、障害の原因にもなりかねません。
本発表では PHP-FPM の子プロセス制御方法と設定項目の意味、適切な設定値の判断方法について説明します。
CI(継続的インテグレーション)してますか?
このセッションでは、CircleCIを使ったCIの構築事例と、テスト高速化やデプロイフローの効率化などのさまざまな工夫を紹介します。
「CIやってみようかな」「うちでもテスト高速化できそう」「え?こんな機能あったの?」といった学びがあれば幸いです。
工夫の一例
スタッフに興味あるけど「スタッフってつよつよエンジニアばかりなんじゃないの?」とか「自分なんかにできるのか?」なんて不安を感じて応募を躊躇ってしまっていませんか?
いつもお世話になるばかりだった私が、当日スタッフに応募しようと思った動機と、実際にやってみてどうだったかという話をしたいと思います。
そして「次回は応募してみようかな」と思った方が一人でもいたら嬉しいです。
コンピュータシステムの理論と実装という本を読んでおり,アセンブラの実装をすることになったので,アセンブラとはどのような機能を提供し,どのようにして実装をするのかという話をします.
コンピュータのソフトウェア階層の中で,最も基礎となるモジュールであるアセンブラを実装することによって,アセンブリ言語で書かれているプログラムがどのようにしてバイナリで書かれたプログラムに変換されるのか,その仕組みを広く浅く話したいと思っています.
PHPでモノを作るのがお好きな方,なぜか知らないけれどPHPでモノを作ることにロマンを感じる方,低レイヤーがお好きな方
大きなカンファレンスなどに登壇するのは初めてです.
小学校でプログラミング教育が必修化される中、「Scrach」のような
ビジュアルプログラミングは注目されています
そんな中、LOVOT(https://groove-x.com/)と呼ばれる
『役に立たない、でも愛着がある” 新しい家庭用ロボット』がコンセプトの
ロボットに、「LOVOT STUDY ビジュアルプログラミング」という
ブラウザを用いてビジュアルプログラミングし、LOVOTを操る仕組みが提供されています
"ビジュアルプログラミング"でできることは、PHPでもできる!ことを
実証するために、
本来、ビジュアルプログラミングで操作するLOVOTを
直接PHPのプログラムから操作してみました(非公式)
まずは、ビジュアルプログラミングを解析する過程、そして
解析内容を元にPHP(Ampを用いて)で再実装する過程をお話しします
Let's PHP programming!
【トーク対象】
・AWS RDS を利用されている方
【分野】
運用、データベース
【トークの概要】
AWSのRDSでMySQLを利用されている方は比較的多くいらっしゃると思います。
MySQL5.6が2021年2月にExtended Supportが終了したのをご存知でしょうか。
Extended Support終了に伴い、RDSのMySQLも5.6が廃止されます(2021年8月に廃止でしたが、どうも難航しているようで2022年2月まで延期されました)。
RDSはマネージド環境であるため一見管理不要なように思いがちですが、メジャーバージョンアップなどでは停止を伴うメンテナンスが必要になります。RDSを利用するwebアプリケーションによりますが、ダウンタイムの発生で大きな影響が発生しうるので計画的に対応する必要があります。
本セッションでは、実際のMySQL5.5から5.6、5.6から5.7へのアップグレード対応の事例を紹介します。マネージド環境でもダウンタイムが発生しうること、ダウンタイムを0もしくはできる限り短くしなければいけない場合の対応方法についてお話します。マネージド環境であってもメンテナンスを続けていかなければいけないことをお伝えできれば良いなと思います。
【トーク対象】
・LaravelのSessionについて知りたい
・障害発生時の原因特定から対策までの流れが聞きたい
【分野】
運用、データベース
【トークの概要】
webアプリケーションでCookieを利用したSession管理を行うことが多いと思います。
最近のフレームワークはSessionをとても簡単に活用できるためその維持管理について特に考えないことが多いです。
Laravelで構築したwebアプリケーションで、急激な性能劣化が発生して原因の特定と対策をすぐに行わなければいけない状況が発生しました。結果的にLaravelのSession設定を変更することで劇的にパフォーマンスが改善しました。
本セッションでは、なぜSessionが原因で性能が劣化したのか、また改善した理由について、経緯を踏まえてお話します。PHP/Laravelでのセッションの大まかな仕組み、性能劣化の要因、対策方法について説明します。
1番最初にOSSにPRを出した時に、皆さんは緊張されませんでしたか?僕はしました笑
PRを出すのはこの方法であっているのだろうか、的外れなPRではないだろうか…などなど。
このセッションでは、OSSにPR出すのにあたってまずは翻訳から参加することで心理的なハードルが下がったり、翻訳も案外勉強になってしまうことを、翻訳のtipsと共にお話しします。
クラウドファーストが謳われるようになっている現在、その利用を検討することは避けられないと思います。
このLTでは、自分のこれまでの経験から把握している、クラウド利用料金の抑え方のポイントをお話しします。
また、個々の施策の効果について、大きかった事例を優先的に、差し支えのない範囲でご紹介していきます。
[補足]
自分は現在フリーランスで、複数のLaravelベースなプロジェクトに参画していて、インフラ面を担当しています。
そのため、事業/案件規模に応じたコスト改善対応を経験しました。この背景が話の情報源になります。
開発したプロダクト、その価値を届けるにはいわゆるDeployを行わなければなりません。
このLTでは、デプロイ先の環境でアプリケーションがDocker上で稼働することを前提として、
デプロイ時に利用できる便利なCLIツールをいくつか紹介します。
現場によって様々な事情やユースケースがそれぞれあると予想されるので、「こういうときに使うのが適切」という観点での事例や見解を交えてお話しします。
プロダクトに関わる皆さんの今後の運用・成長に有益となる情報を提供できれば幸いです。
2021/8/7 時点では、ecspresso・copilot・jsonnet・direnv 等を紹介する候補として想定しています。
2021/10/3 追記: Reveal.js 版スライド -> https://kutt.it/53AoU3 (シークレットウィンドウで開くのを推奨。履歴が増殖するので)
みなさんのチームでは日頃からコードレビューはされてますか?
弊社でもリリースするコードに対して2人以上のコードレビューを必須にしたりと活発に取り組んでいます。
コードレビューには以下のような効果が期待できます
・ソフトウェア品質の向上とアーキテクチャの統一
・スキルの向上とナレッジの共有
いかに効果的にコードレビューを実施するかによって、チームの成熟度やプロダクトの品質に影響すると言っても過言では無いかもしれませんね。
しかし、正直なところ自分はコードレビューに苦手意識がありました。
一度のレビューに時間がかかったり、他のメンバーと比較してコードの改善提案をする回数が少ないのです。。。
そんな私が苦手意識のあるコードレビューをどの様に克服していくのか、体験談を踏まえてお話しできればと思います!(現在進行形)
▼お話しする内容
・苦手意識のあるコードレビューをどのように克服していったのか(体験談)
・チームの過去1年分のコードレビューを分析してみる
・ペアプロならぬペアレビューをしてみる
・とにかくレビューしてみる
などなど