私は2024年11月から新しい環境で仕事しています。
そして2024年12月現在、絶賛オンボーディング の真っ最中です。
ここで進めているオンボーディングを通して良かった点、改善したほうが良いとフィードバックした点などをお話しして、聞いてくださった皆さんがオンボーディング する時、される時に活かしていただきたいなという想いでお話しします。
私のエンジニアとしてのキャリアは、予想外の展開をたどってきました。皆さんのキャリアも、同様に多様な道を歩んでいるのではないでしょうか。
私がPHPerとしてキャリアをスタートさせたのは約4年前のことです。その後の道のりを以下に示します。
1年目
└既存サービスの運用開発(PHPerとしての開発)
2年目
└SREチームに所属し、コンテナ化や新規サービス立ち上げを経験
3年目〜現在
└新規サービスの立ち上げメンバーとして、インフラ〜アプリケーション開発を経験
└クライアントへのサービス導入アポイントメントに同席
このキャリアの道筋は、当初の予想とは異なるものですが、その中で得た「エンジニアとしての基礎技術」の重要性についてお話ししたいと思います。
特に、キャリアの選択に迷っている若手エンジニアや、新しい分野に挑戦したいと考えている方に、このトークはぜひお聞きいただきたい内容です。
非常に便利な PHPStan ですが、大規模プロジェクト、特に Laravel を採用したプロジェクトだとものすごく時間がかかってしまったりすることも多いかと思われます
そんな PHPStan を様々な手法を用いて高速化を試み、最終的にどうなったかをライトニングにお話してみたいと思います
皆さんはコードレビューしていますか?
コードレビューするとき、レビューイの気持ちを考えることはできていますか?
日々の業務に追われる中でコードレビューを行うとだんだんと相手の気持ちを考えることができなくなり、
時には厳しい言葉だけを投げてしまう状況になってしまい、レビューイのモチベーションを奪いかねません。
本LTでは、そんな忙しいあなたでも最低限のワーディングで相手をやる気にさせるコメントを厳選して紹介します!
「なぜこのコメントが良いのか」の解説も交えながら消化しようと思います!
EC2のセキュリティがガバガバに穴が空いている状態の皆さん息してますかー?
すみません。いきなり煽りから入ってしまいました。
最近、サーバー構築作業をしている中でセキュリティ担保の方法を学ぶことがあったので、この場を借りて皆さんに共有させて頂ければ幸いです。
EC2へSSH接続を行い、サーバーでの作業を行っているバックエンド側の人の幸せにつながってくれたら嬉しいです〜
EC2のSSH鍵の扱いどうしていますか?
複数人でプロジェクトを組んでいる場合、サーバーで作業をする人が複数出てくると思います。
そうなってくると以下の作業を 作業者の人数分 × サーバーの台数分 実施しなければいけなくなります。
この時点で億劫ですね。
また、上記の作業に加えて 鍵の定期的なローテーション、チームの入退場が発生した時のユーザー管理が発生してしまいます。
死ぬほど面倒くさい!
更にセキュリティに興味が無いメンバーが存在すると、鍵のローテーションはやらなくていいじゃんとか抜かすんですよ。。あー、面倒くさい。
その問題、ECS Instance Connect で解決しましょう
EC2 Insatnce Conncetを使うと僕達ユーザーが鍵の管理をする必要がなくなるので、運用の手間をかなり減らすことができます。
(サーバー運用やったことにしか伝わらないと思いますが、管理するものを減らすという事は運用において絶大に効果があるのです!!
EC2 Instance Connect を使う際には、セキュリティグループで SSHのポート 22 を開放して置く必要があります。
22番ポートを開けるのは多少なりとも気が引けますよね〜
最低限のセキュリティ担保として、 EC2 が所属する Region のみからアクセスできるようにIP指定をすることができます。
運用負荷が下がると幸せになれます。
幸せになろう。
ISUCONにPHPで挑み続けて8回(ISUCON7〜ISUCON14)。
ふと、こんな疑問が頭をよぎることがあります。
「自分(私たち)は本当に成長しているのだろうか?」
8回も挑戦を重ねてなお、悔しさや「まだまだできないことが多いなぁ」という気持ちに直面します。
それでも、振り返ってみると、できることや考えられることが確実に増えていると実感しています。
「できない」と「できる」には壁があります。
しかし、その差は小さいことも多く、ふとしたきっかけで「できる」になるなと感じています。
この過程こそが成長であり、試行錯誤を通じて得られる価値ではないかなと思います。
ISUCONに挑む中で得た学びと、「続けることで見えてくる成長」について共有します。
技術的なノウハウだけでなく、挑戦することの意義や、それを続ける中で見つけたヒントをお伝えしたいと思います!
Svelteって名前、聞いたことありますか?
SvelteはReactやVue、Angularなどと同じ、リアクティビティをもったWebアプリケーションライブラリです。
Reactに対してNext.jsがあるように、SvelteにもフレームワークとしてSvelteKitがあります。
このLTではPHPerの皆さんにだからこそ伝えたい、
SvelteKitの魅力やおすすめポイントを5分でギュギュっとお伝えします!
このLTがおすすめの人
このLTで得られること
我々はメモリの確保・解放をほとんど気にすることなく、プログラムを書くことができます。
PHPを触れていると、このGarbage Collectionを意識することもないと思います。
Garbage Collectionは、プログラムがメモリを効率的に利用できるようにする重要な仕組みです。
本セッションでは、PHPにおけるGarbage Collectionの動作やgc_XXX関数について簡単に解説します。
皆さんと共に、Garbage Collectionの恩恵を再認識し、より効率的なプログラミングを目指す旅に出かけましょう。
メンドウ?タイクツ?書き方がわからない??
決めたことを文書にまとめない理由はたくさんあるかと思います。
一時的には文書を書かない方が、仕事のスピードは早いかもしれませんが、長期的に見たときにはどうでしょうか?
この発表では一時の時間短縮のためにドキュメント化を怠った結果、どのような末路が待っているかを具体例を交えて紹介します。
PHPStanはPHP開発者にとって頼れる相棒ですが、そのエラーは時に悩ましいもの。このセッションでは、私が独断と偏見で選んだ実例をもとに、PHPStanのエラーがどのような場面で発生するのか、具体的な修正方法をお伝えします。「PHPStan初心者」から「ちょっと苦手」な人まで、役立つ情報をギュッと詰め込みました。今日からPHPStanをあなたの最高の同僚にしましょう!
循環参照、聞いたことはあるけれど実際に遭遇したことがある方はどれくらいいるでしょうか?私もまさか遭遇するとは思っていませんでしたが、ついにその“おとぎ話”のような存在に出会ってしまいました。そして、それを解決するために地獄のような改修作業が始まりました…。
このセッションでは、循環参照が引き起こす問題やその発見方法、解決するために取った具体的なアプローチを共有します。さらに、再び循環参照に遭遇しないための防止策についてもお話しします。二度と同じ目に遭わないために、一緒に循環参照の対処法を学びましょう!
副業でPHP(Laravel)を教える中で、技術力だけでなく、自分のエンジニアとしての姿勢やスキルにも大きな変化がありました。
「このエンジニアに教わりたい」と思ってもらえる存在を目指し、GitHubの自己紹介やブログに力を入れたり、プライベートでコードを書く時間が増えたりと、活動の幅が広がりました。
また、人に教えるには深い理解が必要なため、「分からないことを徹底的に調べる」「ドキュメントやコードを読む」「一次情報にあたる」などをこれまで以上に重視するようになりました。
教える中では、短時間での原因切り分けやペアプロのナビゲーションを行う場面もあり、そこで得た経験と気づきは、自分の成長に大きく寄与していると思います。実際業務でデバッグするときにも、まず現状を把握する、どこまでできているかを探る、1次情報に当たるなどがより一層実践でき、課題を解決するまでの時間を短くできているのではと思います。
このセッションでは、副業での教える経験を通じて得た学びがどのように業務に活かされているかを具体的にお話しし、参加者の皆さんが自分自身の成長に役立てられるヒントを提供します。
Laravelでの開発経験者ならおなじみのBladeテンプレート。
あなたは本当に使いこなせていますか?
このセッションは、まず日常的に使う基本的なディレクティブ @if や @foreach といったディレクティブをおさらいし、意外と知られていない隠れたディレクティブのご紹介や、 @csrf などのディレクティブの裏側で行われている処理内容、さらには独自のニーズに応えるカスタムディレクティブの作成方法まで幅広くご紹介します。
「実はこんな使い方ができたのか!」と思わず驚くトピックを盛り込みつつ、テンプレートコードをシンプルかつ可読性を高めるコツをお伝えします。
このセッションを通じてBladeディレクティブを使いこなし、テンプレートを効率的に管理するスキルを身につけ、日々のLaravel開発を一層効率化しましょう!
私が携わっている長年稼働しているサービスには、巨大連想配列$resultsが存在します。これは、元々は小さな配列だったものが、改修を重ねる中で次第に肥大化していきました。
巨大連想配列は可読性やメンテナンス性を低下させるため、私は以下のアプローチで改善を進めています。
巨大配列で頭を悩ませている方の改善のヒントになれば嬉しいです。
「いつまでも できると思うな 夜メンテ」
深夜メンテナンス作業を経験したことはありますか?
作業には様々なメリット・デメリットがありますが、何よりも体力的に辛いですよね。
あるカラムの暗号化作業を進める中で、深夜メンテナンスが必要だという結論になりました。しかし、シニアエンジニアに相談したところ、「今回は深夜メンテができるが、できないサービスも世の中にはある。深夜メンテ不要でリリースする方法を一度考えてみては?」というアドバイスを受け、リリース方法をチームで再考しました。
その結果、リリースを3段階に分けた小さなリリースを採用することで、深夜メンテを回避することができました。さらに、小さくリリースしたことで、各リリース段階で不具合が発生した際も原因を特定しやすく、迅速に戻せる状態の確保ができました。
開発者にとっても、ユーザーにとっても、メンテナンス時間は短いほど嬉しいものです。
このLTでは、深夜メンテに頼らずにリリースを進めるための工夫や実例を共有し、参加者にとって実践的なアイデアとなるような内容をお届けします!
2024年11月24日にPHP8.4がリリースされました!皆さんは既に8.4へアップデートしましたか?
私は昨年にPHP7.3→8.2化をしたので、「余裕でしょ」と思っていたら、PHP8.3→8.4化で300個近くのテスト、10個近くのライブラリが落ちてしまい、全くすんなり行かないことが分かりました。
とは言え、マイナーバージョンアップをサボっていると、後のアップデートで苦労する羽目になります。
そこで、PHP8.4化をテンポ良く行うために、リファクタリングツールのRectorや簡単にパッチを当てられるcomposer-patchesといったツールを駆使し、実際に取り組んだ手法を5分で解説します!
今、めっちゃ流行ってますよね、AI。
抽象的な質問しても、結構いい感じで答えを提示してくれます。
コーディングもさせることが出来て、「◯◯のアプリを作って」みたいな指示で
コードを仕上げてくれます。割といい感じでそのまま使えるものもあれば、
エラーハンドリングがまだまだのものもあります。
たまに、全然意図を履き違えてるものもあります・・・笑
今回は、そんなAIに作ってもらったコードをみなさんで見ながらワイワイしましょう。
ツッコミ大歓迎。プロンプトと出力結果を見比べて、どう改善したら良いかをXで呟くのもアリ。
今回ばかりはマサカリも飛ばしてもらって良いですよ
Laravelの監査ライブラリ「Laravel Auditing」は、Eloquentモデルでのレコードの作成、変更、削除を詳細に追跡する強力なツールです。しかし、Query Builder経由の操作は監査対象外のため、重要な変更が見落とされるリスクがありました。
私たちのチームでは、この課題を解決するため、Query Builderによるレコードの作成、編集、削除も監査ログに残せるように拡張を行いました。
本LTでは、以下の内容をお届けします。
・Query Builderの操作をログに含める必要性
・Laravel Auditingの仕組みを理解するポイント
・Query Builder操作のログ拡張方法(実装の工夫や設計の考え方)
・拡張後のメリットと運用のポイント
これにより、監査ログが取りこぼされるリスクを大幅に低減させ、システムの透明性と信頼性を向上させる方法をご紹介します。
EloquentとQuery Builderの両方を活用するチームにとって、日々の開発に役立つ内容をお届けします。
対象者
・Laravelを使ってシステム開発を行うエンジニア
・Laravel Auditingを導入している、または導入を検討しているチーム
・EloquentとQuery Builderを併用して開発を進めている開発者
このセッションではPHPで作成したアプリケーションをVercelにデプロイする方法を紹介します。
Vercelは「Vercel のフロントエンド クラウドは、開発者にフレームワーク、ワークフロー、インフラストラクチャを提供し、より高速でパーソナライズされた Web を構築します。」(X:@vercelより引用)で、PHPのイメージはありませんが、PHPのアプリケーションをデプロイすることができます。
また、VercelにはVercel PostgresというPostgreSQL(データベース)を提供するサービスもあります。PHPとVercel Postgresを用いてアプリケーションを作成し、Vercelで公開することができます。
このセッションでは、VerceでPHPを用いたアプロケーションを公開する方法とVercel Postgreの紹介をします。
私はコミュニティ活動として、PHPTeaNightというオンラインイベントを定期開催しています。
その会でPHPStanをテーマとして参加者の方からいただいたPHPStanとの向き合い方がとても良かったので共有したいと思います。
baselineは減らすにはどうしたら良いのか?そもそも減らすべきなのか?レベルはどのくらいが良いのか?
など普段疑問に思っていることを利用者はどう感じて、どうPHPStanと向き合っているのかLTでお伝えできればと思います。
(あと、そんな利用者の声が聞けるPHPerTeaNightについても知ってもらえたらと思います)