ノンフレームワークのプロダクトに、フレームワークを導入した経験はありますか?
計画で諦めた人、チャレンジして失敗した人もいるかもしれません。
私の開発しているプロダクトは2001年にリリースされました。
当然設計もレガシーで
・PHPファイルにHTMLがベタ書きされている
・ルーティングはページごとにxxx.phpが存在する
など、非常に”牧歌的”設計になっています。
そんなプロダクトを、Laravelに移植するプロジェクトが立ち上がりました。
誰もが無理だと思ったこのプロジェクトは
""載せる""をキーワードに設計され、無事にリリースされました!
このトークでは”載せる”をキーワードに
”載せる”戦略と、そのメリット
”載せる”ときに苦労した点
”載せた”あとの世界
についてお話します!
※このトークは、PHPerKaigi2023で行ったLTのレギュラートーク版です。
開発速度の優先は時にユニットテストを犠牲にします。
私のプロダクトはリリースから15年を超えてなお、テストを書くというカルチャーが根付いていませんでした。
その結果、品質問題が日々顕在化していく中で、昨今一般的であるテストを書きながら開発をする手法を取ることで品質を上げていこうという機運がチーム内で高まりました。
しかし、環境整備をしてもテストが書かれないという事例も往々にしてあります。
私たちも過去にテストライブラリ導入を行いましたが、テストはほぼ書かれませんでした。
既存プロダクトにテストを書くカルチャーを根付かせるのは難しいのです。
本トークでは、ユニットテストを書きながら開発していく環境を整備していった一連の流れとその後をお話しします。
【話す内容】
・環境整備を行った経緯・後日談
・ライブラリ移行(codeception⇒PHPUnit)
・CI運用
・テスト記述方針整備
Symfonyは、PHPのフレームワークの一つで、多くのPHPerに愛用されています。その魅力とは何でしょうか?そしてその魅力をどのように活用すれば良いのでしょうか?
このセッションでは、Laravelなど他のフレームワークが優位を占める現在でもSymfonyが一定のシェアを保つ理由、Symfonyの特性とその魅力について掘り下げます。
このセッションを通じて、他のフレームワークを使用している方に、Symfonyの可能性とその魅力を感じていただき、Symfonyを活用した開発の新たな視点を提供できればと考えています。
このセッションは、PHPフレームワークに興味がある方、Symfonyについて知りたい方に特におすすめです。
システム開発を行う上で必ず存在するもの、それは組織です。
そして組織には人の出入りがつきものです。
しかし、入る人間よりも出る人間の方が多いと次第に組織運営は立ち行かなくなってしまいます。
このトークではなぜ人は組織から去っていくのか?を自身の経験+書籍『エンジニアリングマネージャーの仕事』をもとに考察した結果をお話したいと思います。
composer.json、composer.lock、composer require、composer install......よく分かんないぞ。
そんな疑問を持ったまま、なんとなくモヤモヤとしている新米PHPerを救いたい。
このトークでは、Composerというやつが何なのかを紹介します。
現場で働くうえでよく分からん&ほぼ必須な要素としてGitが存在します。
とはいえ、gitについて調べても「 commit や push みたいな基本操作は分かるけど、深いところが何も分からん……」となりがちではないでしょうか?
このトークでは、ベテランエンジニアはなぜか知っている git 知識についてお話ししようと思います。
先日、製造業で働いている友人からIT業界に転職したいという話をいただいたのですが、その際にある疑問が湧きました。
それは、完全な初心者が2か月間訓練したら、どれくらいPHPが書けるようになるのだろうか……?というシンプルなものです。
お互いに平日はお仕事があるので、夜中や休日にひっそりとお勉強するしかありません。
IT未経験の若者が苦労の末 2か月間でPHPを習得する 話、 聞いてみたくない ?
フロントエンドやバックエンドのような技術的関心事で担当領域を区切るのではなく、プロダクトが価値を提供するために技術面全般へ責任を持つ「フルサイクルエンジニア (full-cycle developer)」という考え方が流行りつつあります。
本トークではフルサイクルエンジニアとして5年ほど仕事をしてきた私が、フルサイクルエンジニアとは何なのか、何をやり何をやらないのか、良いところ大変なところ、キャリアについての懸念についてお話します。
だいぶ市民権を得てきたフリーランスという働き方。
2019年にフリーランスになって4期目を迎えた私が、フリーランスのWebエンジニアとして働くということについて広くお話します。
アジャイルソフトウェア開発宣言の中に「包括的なドキュメントよりも動くソフトウェアを」と記載がある通り、アジャイル開発において「動くソフトウェア」というものは非常に重要視されていると思います。
そのため、普段の開発業務で「動くソフトウエア」を素早く提供することを求められる場面は、きっと多いのではないでしょうか?(むしろ、常にそういう期待値を持たれているかもしれません。)
本トークでは、そんな「動くソフトウエア」を素早く提供するために実際にスクラムチームで取り組んだことについて、実体験をベースにした知見をご紹介します。
このトークでお話すること
・「動くソフトウエア」とは何か
・どうやって価値提供のスピードを上げたのか
・内部品質を保つためにどんなことをしたのか
・まだ改善していく余地はあるのか
数年間で成長してきた自社プロダクトですが、モノリスの複雑化の増大に対して軽減・改善していくために、モジュラーモノリスを導入することにしました。
そんな話を度々耳にしたことがあるのではないでしょうか。
ただ、実際にやってみたら「こんなはずしゃなかった」「予想外にいいことがあった」みたいなことになる、そんな経験がきっとあると思います。
本トークでは、モジュラーモノリスを導入した際の現場目線での知見や体験談をお話します。
モジュラーモノリスの1歩目を踏み出そうと思っている方や、レガシーコードに日々向き合っている方に聞いていただけると嬉しいです!
このトークでお話すること
・Pakege By Feature について
・導入するに至った背景
・モジュール構成とその中身について
・導入してみてよかったこと/苦労したこと
・これからの展望
私は学生時代に学園祭実行委員会に所属し、PHPを用いた学園祭Webサイトの開発・運用や情シス業務に携わっていました。その頃の経験を振り返り、学園祭というドメインならではのWeb開発の過去と未来に触れつつ、一般のエンジニアでも他人事ではない技術選定や教育に関する話をします。
近年、ECサイトなどにおいてクレジットマスターと呼ばれる、ランダムにクレジットカード番号を生成してECサイトのクレジットカード入力欄を用いてオーソリチェックをかけまくるという迷惑極まりない攻撃が増加傾向となっています。
私の関わるサービスでも例に漏れず攻撃を受けたことがあり、その対策に追われました。
今回はLaravelの機能を用いての対策や、もう一歩踏み込んだ対策を行ったのでご紹介してみようと思います。
内容
こんな人向け
多くの現場でコーディング規約が策定され、それに沿った開発が行われています。
私のチームでもコーディング規約があり、実装者とレビュー者がそれぞれチェックを行っていました。
しかし守るべきルールの数は80を超え、人間が限られた時間の中目視でチェックするのは無理がありました。その結果見落としも頻発していました。
大変なことは自動化するのがプログラマの美徳。そこでPHP_CodeSnifferをIDEとCIに導入し、人間の負荷を下げることに成功しました!
しかしその裏では、既存プロジェクトであるが故のいくつもの障壁がありました。
「独自の規約なので、定義済みのルールセットを利用できない……」
「既存コードに違反があるせいで、毎回CIがエラーになる……」
このトークでは、約半年をかけてPHP_CodeSnifferをチームに導入した経験談と、直面した障壁の乗り越え方についてお話しします。
「推測するな、計測せよ」という言葉は、改善策を探す時だけでなく、新機能をリリースする時も同様で、「計測」することは重要です。
開発環境の少量のデータを扱う場合は問題なく動作するクエリも、本番環境の大量のデータではパフォーマンス低下し、スロークエリになる可能性があります。
今回は、フィルターによる約160万行削除とNested Loopのトータルコストが約12万、実行時間が約600msかかるクエリを、サブクエリを活用し、Nested Loopを無くし、実行時間を約0.2msに改善をした事例を取り上げます。
話すこと
注意:このトークではPostgreSQLを使用しています。
Laravel開発でのフロントエンドとしても使用されるVue/Reactは、コンポーネントを分割して開発する手法が多く取り入れられています。
その際、コンポーネント単位での開発を可能にするStorybookを活用し、コーディングはもちろん、Visual Regression TestやUIレビューのような、コーディングの先の運用についても活用してみませんか?
本トークでは、Storybook開発元のSaaS「Chromatic」について、実際に導入して感じたメリットや、導入のハードルを突破する知見を共有し、フロントエンド開発をスピードアップする方法をご紹介します。
対象の方
ブラウザでクラウドコンソールをポチポチしてインスタンスを立てる時代は終息へ向かい、現在は IaC によって 「コードでインフラを構成する」 ことが一般的になってきました。
AWS CDK は AWS CloudFormation を生成するマルチ言語ツールですが、実は AWS CDK TF と呼ばれる、 Terraform に向けて出力を行うものが存在します。
今回は AWS CDK TF を使い、多くのクラウド(ローカル仮想環境含む)で利用出来る、 LAMP ベースの Kubernetes 環境をデプロイできるようにする事例を紹介します。
MySQL や PostgreSQL は非常に安定した信頼できるプロダクトです。これまでの数々の実績を見てもそれは確実でしょう。
しかし、 IT 業界の規模が急速に拡大し、クラウドサービスが席巻している今、「1インスタンス1DB」を前提として設計されたそれらプロダクトには性能限界が来ています。つまり スケーラビリティの問題 です。
その問題を解決しようとしているのが Google Spanner や PingCAP TiDB などの NewSQL と呼ばれる新時代のリレーショナルデータベースです。
今回はその中でも TiDB に焦点を当てて、 MySQL や Spanner と比べたメリット/デメリットを実際に使って検証します。
対象者
「なんで PHP をメインで書いているのに、 JavaScript(TypeScript) も一緒に書かないといけないんですか! React ってなんですか!今は Svelte が良いって聞いたけどじゃあどれ使えばいいんですか!」
という問題を解決するかもしれないのが Laravel Livewire です。これを使えば、 PHP でフロントエンドのロジックを記述することが可能です。
今回は、 LaraconUS 2023 で発表された Livewire v3-beta と関連パッケージを使って、(ほとんど) PHP だけでフロントエンドロジックも実装してしまう技術を紹介します。
対象者
PHP はデータベース通信、ファイル操作などの I/O バウンドなユースケースで多く使われています。
これまでの PHP では I/O 処理でブロックし、処理が終わるまで待機する仕組みになっていましたが、 PHP 8.1 から Fiber がコア実装に含まれたことにより、 PHP でも非同期な処理をサードパーティ extension なしでより簡単に実装することが出来るようになりました。
中でも注目を集めるライブラリ群が amphp です。このライブラリ群は、 HTTP サーバや MySQL クエリの非同期化など様々な高レベル実装を提供しています。
今回は、現段階で実装済みの各ライブラリを紹介し、今後 PHP でも非同期処理を使いやすくなるぞ、ということを紹介したいと思います。