LT(5分)

「~」が勝手に文字化けした!?VSCodeを使っただけなのに ~EUC-JPのソースコードを編集する苦悩~

aki_artisan あかつか

文字コードがEUC-JPのソースコード編集で直面した問題とその解消法に着いて話します。

話すこと

  • なぜソース編集しただけで文字化けが起こるのか
  • git diff をちゃんと見よう
  • pre-commit hookで安心を得よう
1
LT(5分)

作ってわかるNullオブジェクトパターン

aki_artisan あかつか

Laravelのoptional()関数を使ったことはあるでしょうか?
Nullである可能性のあるオブジェクトに対してoptional関数を用いることで、nullでない時はオブジェクトの動きをさせ、nullの時はnullを返させることができるようになります。

optional関数を使って実装していたある日、ふと「どのようにして動いているのか」が気になりました。
調べてみると、Null Objectパターンというものを使って実装されていることがわかりました。

このトークでは、簡単なNullオブジェクトを自作することで、optionalがどのように実現されているのかを見ていきます。

話すこと

  • optional関数の説明
  • Nullオブジェクトの実装方法
  • Nullsafe operatorとの比較
LT(5分)

削除フラグの落とし穴:実例から学ぶデータベース設計のアンチパターンとその回避法

myblackcat7112 まさき。

「とりあえず削除フラグ」という言葉を、耳にしたことがある方は多いかと思います。
削除フラグは、データを物理的に削除せず、論理的に削除された状態を示す方法で、一般的にデータベース設計で使用されます。
これはデータベースのテーブル設計におけるアンチパターンとして、数多くの技術書で取り上げられているものです。
一般に、論理削除の実装方法としてフラグをテーブルに持たせるのは推奨されていません。論理削除を本当に採用すべきかどうかを慎重に検討するべきです。

それはそうなんですが、アンチパターンって実際に踏み抜いてみないと何でダメなのかわかりにくくないですか?
今回私は、既存のテーブルにあった削除フラグを安易に利用してしまい、想定外の箇所でもトラブルが発生し、改めて削除フラグの利用は慎重にしたほうがいいんだな、と
痛みを伴いつつも理解したので、みなさんには擬似的な痛みだけで済むように何が起こるのか、どんな状況だったか、どうすればよかったのか?などを説明します。

1
LT(5分)

PHPDocで実現するジェネリクスとその実践例

kajitack 梶川 琢馬

PHPは型安全性の向上を目指して進化していますが、ジェネリクスを直接サポートしていないため、柔軟性と安全性を両立するには工夫が必要です。その解決策のひとつが、PHPDocの@templateタグを活用してジェネリクスを再現する方法です。

このセッションでは、PHPDocの@templateタグを活用してOption型を実装する具体的な手法をお伝えします。
Option型は、Rustなどの言語で採用されている設計で、値の存在(Some)と不在(None)を型で表現します。

これをPHPに応用することで、次のようなメリットを得られます:

  • 型安全性の向上によりバグのリスクを軽減
  • nullチェックの削減でコードの可読性を向上
  • 設計が明確になり保守性が向上

本トークを通じて、PHPDocを活用した型安全性の向上方法を学び、実際の開発に役立てていただければと思います。
PHPDocで型システムを最大限に活用しましょう!

1
LT(5分)

非フレームワークなPHPのススメ

aki_artisan あかつか

フレームワークを用いないPHPでの開発をした経験はあるでしょうか?
現在では、Laravelなどの便利なフレームワークが多数あり、業務で使うPHPは専らフレームワーク上のもの、ということもあるかもしれません。

私は、非フレームワークなPHPを使って、リバーシや物理エンジンなどを作って遊んでいます。

フレームワークを使わないPHPでは、本で見た設計を柔軟に試せたり、必要なパッケージをミニマムな状態で試せたりなど、独特の学びがあります。

レールは自分で敷く、そんな開発を体験してみませんか?

LT(5分)

プロジェクトリーダーをやることになる/なった人におすすめしたい本を時間の許す限り紹介する

aki_artisan あかつか

ある程度タスクがこなせるようになったジュニアエンジニアが、次に任せられがちなプロジェクトリーダー(以下、PL)。
やることは組織やプロジェクトによって違いはありますが、プレイヤーをやりつつマネージャーのもとでメンバーのタスク管理や実装方針の決定などをすることが多いと思います。

このLTでは初めてのPLをやってみて、役に立った本、拠り所になった本を時間の許す限り、10冊程度紹介します。

プロジェクトの成否を左右することになるPLの仕事を、うまく進めるためのヒントをお伝えできればと思います。

紹介する本の領域

  • プロジェクトマネジメント系
  • リーダーシップ系
  • 開発組織系
  • 品質管理/テスト系
LT(5分)

オンボーディング される技術

yamato_sorariku 足利大和

私は2024年11月から新しい環境で仕事しています。
そして2024年12月現在、絶賛オンボーディング の真っ最中です。

ここで進めているオンボーディングを通して良かった点、改善したほうが良いとフィードバックした点などをお話しして、聞いてくださった皆さんがオンボーディング する時、される時に活かしていただきたいなという想いでお話しします。

1
LT(5分)

PHPerからのキャリア変遷:意外な道のりで学んだ大切なこと

私のエンジニアとしてのキャリアは、予想外の展開をたどってきました。皆さんのキャリアも、同様に多様な道を歩んでいるのではないでしょうか。

私がPHPerとしてキャリアをスタートさせたのは約4年前のことです。その後の道のりを以下に示します。
1年目
└既存サービスの運用開発(PHPerとしての開発)
2年目
└SREチームに所属し、コンテナ化や新規サービス立ち上げを経験
3年目〜現在
└新規サービスの立ち上げメンバーとして、インフラ〜アプリケーション開発を経験
└クライアントへのサービス導入アポイントメントに同席

このキャリアの道筋は、当初の予想とは異なるものですが、その中で得た「エンジニアとしての基礎技術」の重要性についてお話ししたいと思います。

特に、キャリアの選択に迷っている若手エンジニアや、新しい分野に挑戦したいと考えている方に、このトークはぜひお聞きいただきたい内容です。

3
LT(5分)

相手をやる気にさせるレビューコメント3選

unan

皆さんはコードレビューしていますか?

コードレビューするとき、レビューイの気持ちを考えることはできていますか?
日々の業務に追われる中でコードレビューを行うとだんだんと相手の気持ちを考えることができなくなり、
時には厳しい言葉だけを投げてしまう状況になってしまい、レビューイのモチベーションを奪いかねません。

本LTでは、そんな忙しいあなたでも最低限のワーディングで相手をやる気にさせるコメントを厳選して紹介します!

「なぜこのコメントが良いのか」の解説も交えながら消化しようと思います!

6
LT(5分)

DevOpsはEC2のSSHのセキュリティを高めたい

HrOkiG2

EC2のセキュリティがガバガバに穴が空いている状態の皆さん息してますかー?
すみません。いきなり煽りから入ってしまいました。
最近、サーバー構築作業をしている中でセキュリティ担保の方法を学ぶことがあったので、この場を借りて皆さんに共有させて頂ければ幸いです。
EC2へSSH接続を行い、サーバーでの作業を行っているバックエンド側の人の幸せにつながってくれたら嬉しいです〜
EC2のSSH鍵の扱いどうしていますか?
複数人でプロジェクトを組んでいる場合、サーバーで作業をする人が複数出てくると思います。
そうなってくると以下の作業を 作業者の人数分 × サーバーの台数分 実施しなければいけなくなります。
この時点で億劫ですね。
また、上記の作業に加えて 鍵の定期的なローテーション、チームの入退場が発生した時のユーザー管理が発生してしまいます。
死ぬほど面倒くさい!
更にセキュリティに興味が無いメンバーが存在すると、鍵のローテーションはやらなくていいじゃんとか抜かすんですよ。。あー、面倒くさい。
その問題、ECS Instance Connect で解決しましょう
EC2 Insatnce Conncetを使うと僕達ユーザーが鍵の管理をする必要がなくなるので、運用の手間をかなり減らすことができます。
(サーバー運用やったことにしか伝わらないと思いますが、管理するものを減らすという事は運用において絶大に効果があるのです!!
EC2 Instance Connect を使う際には、セキュリティグループで SSHのポート 22 を開放して置く必要があります。
22番ポートを開けるのは多少なりとも気が引けますよね〜
最低限のセキュリティ担保として、 EC2 が所属する Region のみからアクセスできるようにIP指定をすることができます。
運用負荷が下がると幸せになれます。
幸せになろう。

2
LT(5分)

5分で入門!SvelteKit!

hibiki_cube ヒビキ

Svelteって名前、聞いたことありますか?
SvelteはReactやVue、Angularなどと同じ、リアクティビティをもったWebアプリケーションライブラリです。
Reactに対してNext.jsがあるように、SvelteにもフレームワークとしてSvelteKitがあります。

このLTではPHPerの皆さんにだからこそ伝えたい、
SvelteKitの魅力やおすすめポイントを5分でギュギュっとお伝えします!

このLTがおすすめの人

  • SvelteやSvelteKitに興味がある人
  • よりよいUIフレームワークを探し求めている人
  • 状態管理でつらい思いをしたことがある人

このLTで得られること

  • SvelteやSvelteKitの概要
  • SvelteKitの基本
  • 「早速触ってみたいぞ!」という気持ち
5
LT(5分)

なんだかんだ言わずドキュメント化しようぜ

YKanoh65 加納悠史

メンドウ?タイクツ?書き方がわからない??

決めたことを文書にまとめない理由はたくさんあるかと思います。
一時的には文書を書かない方が、仕事のスピードは早いかもしれませんが、長期的に見たときにはどうでしょうか?

この発表では一時の時間短縮のためにドキュメント化を怠った結果、どのような末路が待っているかを具体例を交えて紹介します。

1
LT(5分)

独断と偏見で選ぶ!PHPStanエラー大全とその解決法

myblackcat7112 まさき。

PHPStanはPHP開発者にとって頼れる相棒ですが、そのエラーは時に悩ましいもの。このセッションでは、私が独断と偏見で選んだ実例をもとに、PHPStanのエラーがどのような場面で発生するのか、具体的な修正方法をお伝えします。「PHPStan初心者」から「ちょっと苦手」な人まで、役立つ情報をギュッと詰め込みました。今日からPHPStanをあなたの最高の同僚にしましょう!

LT(5分)

循環参照って本当にあるんですね、私はもう2度と会いたくないので傾向と対策を考えます!

myblackcat7112 まさき。

循環参照、聞いたことはあるけれど実際に遭遇したことがある方はどれくらいいるでしょうか?私もまさか遭遇するとは思っていませんでしたが、ついにその“おとぎ話”のような存在に出会ってしまいました。そして、それを解決するために地獄のような改修作業が始まりました…。
このセッションでは、循環参照が引き起こす問題やその発見方法、解決するために取った具体的なアプローチを共有します。さらに、再び循環参照に遭遇しないための防止策についてもお話しします。二度と同じ目に遭わないために、一緒に循環参照の対処法を学びましょう!

LT(5分)

エンジニアの成長は「誰かに教えること」から始まる!のかもしれない。誰かに教えることのすゝめ

myblackcat7112 まさき。

副業でPHP(Laravel)を教える中で、技術力だけでなく、自分のエンジニアとしての姿勢やスキルにも大きな変化がありました。

「このエンジニアに教わりたい」と思ってもらえる存在を目指し、GitHubの自己紹介やブログに力を入れたり、プライベートでコードを書く時間が増えたりと、活動の幅が広がりました。
また、人に教えるには深い理解が必要なため、「分からないことを徹底的に調べる」「ドキュメントやコードを読む」「一次情報にあたる」などをこれまで以上に重視するようになりました。
教える中では、短時間での原因切り分けやペアプロのナビゲーションを行う場面もあり、そこで得た経験と気づきは、自分の成長に大きく寄与していると思います。実際業務でデバッグするときにも、まず現状を把握する、どこまでできているかを探る、1次情報に当たるなどがより一層実践でき、課題を解決するまでの時間を短くできているのではと思います。

このセッションでは、副業での教える経験を通じて得た学びがどのように業務に活かされているかを具体的にお話しし、参加者の皆さんが自分自身の成長に役立てられるヒントを提供します。

LT(5分)

Laravel Bladeディレクティブ徹底解剖

masakichi_eng まさきち

Laravelでの開発経験者ならおなじみのBladeテンプレート。
あなたは本当に使いこなせていますか?

このセッションは、まず日常的に使う基本的なディレクティブ @if や @foreach といったディレクティブをおさらいし、意外と知られていない隠れたディレクティブのご紹介や、 @csrf などのディレクティブの裏側で行われている処理内容、さらには独自のニーズに応えるカスタムディレクティブの作成方法まで幅広くご紹介します。

「実はこんな使い方ができたのか!」と思わず驚くトピックを盛り込みつつ、テンプレートコードをシンプルかつ可読性を高めるコツをお伝えします。

このセッションを通じてBladeディレクティブを使いこなし、テンプレートを効率的に管理するスキルを身につけ、日々のLaravel開発を一層効率化しましょう!

2
LT(5分)

巨大連想配列$resultsを紐解くコツ

_mkmk884 まきまき

私が携わっている長年稼働しているサービスには、巨大連想配列$resultsが存在します。これは、元々は小さな配列だったものが、改修を重ねる中で次第に肥大化していきました。
巨大連想配列は可読性やメンテナンス性を低下させるため、私は以下のアプローチで改善を進めています。

  1. Xdebugの活用
    配列の構造を可視化し、一目で理解できるようにする。
  2. 新規部分の改善
    新しく作る部分は値オブジェクトを導入して書き換える。
  3. 分離と整理
    大きなキーを別の変数に切り出したり、I/O形式が異なる場合はメソッドを分ける。

お話しする内容

  • 配列の構造を一目で把握するためのXdebug活用術
  • 巨大連想配列を生み出さないコツ
  • 巨大連想配列を分解して整理する方法

巨大配列で頭を悩ませている方の改善のヒントになれば嬉しいです。

1
LT(5分)

Chat-GPTに指示して作ってもらったWebアプリのコードをみんなで批評しよう

saita_shinya 斉田真也

今、めっちゃ流行ってますよね、AI。
抽象的な質問しても、結構いい感じで答えを提示してくれます。

コーディングもさせることが出来て、「◯◯のアプリを作って」みたいな指示で
コードを仕上げてくれます。割といい感じでそのまま使えるものもあれば、
エラーハンドリングがまだまだのものもあります。
たまに、全然意図を履き違えてるものもあります・・・笑

今回は、そんなAIに作ってもらったコードをみなさんで見ながらワイワイしましょう。
ツッコミ大歓迎。プロンプトと出力結果を見比べて、どう改善したら良いかをXで呟くのもアリ。
今回ばかりはマサカリも飛ばしてもらって良いですよ

2
LT(5分)

Laravel Auditing × Query Builder — 逃さないログの拡張術

AkitoTsukahara AkitoTsukahara

Laravelの監査ライブラリ「Laravel Auditing」は、Eloquentモデルでのレコードの作成、変更、削除を詳細に追跡する強力なツールです。しかし、Query Builder経由の操作は監査対象外のため、重要な変更が見落とされるリスクがありました。
私たちのチームでは、この課題を解決するため、Query Builderによるレコードの作成、編集、削除も監査ログに残せるように拡張を行いました。

本LTでは、以下の内容をお届けします。

・Query Builderの操作をログに含める必要性
・Laravel Auditingの仕組みを理解するポイント
・Query Builder操作のログ拡張方法(実装の工夫や設計の考え方)
・拡張後のメリットと運用のポイント
これにより、監査ログが取りこぼされるリスクを大幅に低減させ、システムの透明性と信頼性を向上させる方法をご紹介します。

EloquentとQuery Builderの両方を活用するチームにとって、日々の開発に役立つ内容をお届けします。

対象者
・Laravelを使ってシステム開発を行うエンジニア
・Laravel Auditingを導入している、または導入を検討しているチーム
・EloquentとQuery Builderを併用して開発を進めている開発者

1
LT(5分)

VercelにPHPのアプリケーションをデプロイ

uutan1108 うーたん

このセッションではPHPで作成したアプリケーションをVercelにデプロイする方法を紹介します。

Vercelは「Vercel のフロントエンド クラウドは、開発者にフレームワーク、ワークフロー、インフラストラクチャを提供し、より高速でパーソナライズされた Web を構築します。」(X:@vercelより引用)で、PHPのイメージはありませんが、PHPのアプリケーションをデプロイすることができます。

また、VercelにはVercel PostgresというPostgreSQL(データベース)を提供するサービスもあります。PHPとVercel Postgresを用いてアプリケーションを作成し、Vercelで公開することができます。

このセッションでは、VerceでPHPを用いたアプロケーションを公開する方法とVercel Postgreの紹介をします。

1