セッション(30分)

チーム開発でデプロイ頻度を上げるためのスマートな設計とタスク分割

kotomin_m ことみん

開発生産性の指標の1つに「デプロイ頻度」があります。
開発に2,3ヶ月程度かかる大きめの機能開発で、機能をまるっと作ってからリリースしようとしたら、このデプロイ頻度が落ちてしまいました。
また、プルリクエストが肥大化して、レビューが複雑になることもあり、不具合や障害が発生しやすくなっていました。

このトークではそんな大きめの機能開発でも、設計とタスク分割を工夫することで、テストコードも実装しながらデプロイ頻度を上げたチーム開発の事例を紹介します!!

話すこと

  • 細かくデプロイするための設計・タスク分割の工夫
  • タスク分割するには、インタフェースだけ先に実装してデプロイしよう
  • テストコードが先に書いてあると安心して実装できる
  • チームでデプロイ頻度を上げるために取り組んだ施策

どさんこ: どさんこワイドの奥さんお絵かきですよを現地に見に行ったことはありません

4
LT(5分)

Laravelを使ったことが無いので1週間本気で学んでみる

ryo23526217 高谷 遼

現在Laravelを愛用しているPHPer、企業は非常に多いと思います。
状況や何を作るかにもよると思いますがPHPで何か作ろうと思ったらLaravelが第一候補になる事が多いのではないでしょうか。
自分はPHPが主戦場になってから今までCakePHPを使用していてLaravelを使ったことが無いので1週間という時間を仕事もしないで、家に篭ってただLaravelと向き合って学んだ事、作った物を発表します。

7
LT(5分)

リモート時代の必須スキル!テキストコミュニケーションの極意

kotomin_m ことみん

リモートワークが日常となった現代、テキストコミュニケーションの重要性に気づいている人はどれほどいるでしょうか?
リモートネイティブとして、新卒から3年間の社会人経験を通じて、私が学んだテキストコミュニケーションの重要性をLTでお伝えします!

「先輩にどう質問する?」「ビジネス側のやり取りはどう進める?」などシーンに応じて、伝わりにくい文章の例をどう改善するか解説します!
そして、絵文字「👍」や感嘆符「!」など細かな表現まで、日々のテキストコミュニケーションで意識しているポイントを余すことなくお話しします!

このLTが参考になる人

  • 社会人経験が浅い新卒エンジニア
  • 長文を送って「何言いたいか分からない」「もう少し短くして」と言われたことがある人
  • 日々のコミュニケーションで周りの人にもっと意識して欲しいんだよな〜と思っている人

どさんこ: I LOVE 北海道🫶

3
LT(5分)

ISUCONってなんだか難しそう……!!でも、初めてのISUCONにPHPで挑戦してきました!

kotomin_m ことみん

ISUCON(イスコン)?Iikanjini Speed Up Contest(いい感じにスピードアップ コンテスト)?なんだか難しそう……!!私はよく分からないし、分かるようになったら出ようかな?
そんなことを考えていましたが、ISUCON夏祭りというイベントに参加した勢いで、2023年11月開催のISUCON13に初参加することを決めました。

ISUCONの練習って何やるの?どうやるの?当日はどうだった?てか、PHPでもできるの?という、ISUCONについてよく知らなかった1年前のワタシに向けた、ISUCON初心者への解説LTです!
もしかして、ISUCON次回は参加してみたいかも……!!という勇気の後押しが出来たら嬉しいです!

どさんこ: 物心ついたときからジンギスカンを食べて育ちました

5
セッション(15分)

Laravelの罠!?Eloquentとクエリビルダの共存に学ぶ実践的失敗談

kotomin_m ことみん

このトークでは、LaravelのORMシステムであるEloquentのアクセサ・ミューテタが何か、またクエリビルダとの違いは何かについて、PHP初心者に向けてわかりやすく解説します!!
その後、Eloquentとクエリビルダを組み合わせて使用する際の注意点について、実際に起こった失敗談を紹介します。
そして、この失敗から得た教訓をもとに、同様の問題を避けるためにはどうしたら良いのかについても掘り下げます。

このトークを聞くことで、Laravelを利用しているけれどもEloquentとクエリビルダの違いが分かっていない方も、明日からその2つの違いを理解し、安全なデータベース操作ができるようになるでしょう!乞うご期待!

どさんこ: 生まれ育った北海道が大好きです。

3
セッション(30分)

Gitを「ただ使う」から「理解して使う」へ~チーム開発でGitを使いこなす方法~

kotomin_m ことみん

多くのPHPerは日常的にGitを使用していると思いますが、理解して使いこなせているでしょうか?
このトークは、新卒入社したばかりのPHPerやGit初級者に向けて、チーム開発におけるGitの“使いこなし方“に焦点を当て、実践的なノウハウをお届けします!

commit&pushしているだけの「ただ使う」レベルから、わかりやすいPRを作るために適切なコマンド/オプションを選択できる「理解して使う」レベルへとステップアップし、今よりもっとチーム開発を楽しみましょう!

具体的なトーク内容

  • 具体的な実装を用いて、この修正に対してどうコミットすると良いかを解説!
  • レビューしてもらいやすいプルリクエストの書き方のポイント!
  • チーム開発でブランチはどう切ると良いか?
  • 便利なGitコマンド/オプションとその使い所!

どさんこ: 生まれも育ちも自然豊かなでっかいどうで育ちました

2
採択
2024/04/13 12:25〜
ぼこ
セッション(15分)

GitHub Actionsで泣かないためにやっておきたい設定

pinkumohikan pinkumohikan

GitHubが提供するCI/CDサービス 「GitHub Actions」。
ドキュメントが充実していて簡単に使い始められる反面、ジョブが終わらなくてキャパを食い尽くしてしまったり、GitHub Actionsが障害中でCI/CDが出来ない、などのトラブルも耳にします。

本トークでは数多のプロジェクトでGitHub Actionsと戯れときに事故に向き合ってきた体験をもとに、GitHub Actionsを使うときにやっておくと良い設定をご紹介します。

お話しすること

  • GitHub Actionsのおさらい
  • タイムアウトの設定は必ず
  • バージョンは明確に
  • CIで出来ることはローカルでも出来る状態が理想
  • 3rd-party Actionsは定期的にバージョンアップしましょう
  • Environment VariablesとSecretsは正しく使い分けよう
セッション(15分)

やはりお前達のLaravelの使い方は間違っている。

pinkumohikan pinkumohikan

Laravelは良くも悪くも雰囲気で書けてしまう反面、実は予期せぬ振る舞いをしていたり、パフォーマンスの悪いコードを書いてしまう恐れがあります。
本トークではLaravelでやりがちな間違いを取り上げて「これは」「こうすると良い」という話をします。

想定観客

  • 雰囲気でLaravelを書いている方
  • 不具合が起きにくいコードを書きたい方
  • 「えっ...うちのプロダクト、遅すぎ・・・?」と感じられている方 (パフォーマンスの良いコードを書きたい方)

お話しすること

  • Eloquent Modelの create() update() get() find() first() の返り値、ちゃんと分かってます?
  • そのクエリ、1,000回呼ばれてるけど大丈夫ですか?
  • とりあえずnewやjoinを使っているならLaravel Wayに乗れてないかも
2
セッション(15分)

SQLでも可読性意識していますか!?MySQL8の新機能WITH句とWindow関数を使って可読性の高いSQLを書こう!

for__3 ZOE

普段、可読性を意識したPHPのコードを書いてるPHPerのみなさん!!SQLでも同様に可読性を意識したコード書いていますか?

本セッションでは、普段SQLを書く際には可読性をあまり意識せずにただほしいデータが取得できるSQLを書いている人向けに、SQLにおいても可読性が重要であるということについて説明した上で、SQLで可読性を上げるためのテクニックとしてMySQL8で新しく追加されたWITH句とWindow関数の使った方法をお伝えします。

2
LT(5分)

DBのスロークエリをGrafanaで可視化して効率的にパフォーマンス改善!

for__3 ZOE

日頃パフォーマンスを考えて開発はしていても、実際のデータや経年でのデータ増加によって気づけば増えてるスロークエリ。

いざ、改善しようとしてもこんな経験ありませんか?

  • 増えすぎてしまいどのスロークエリから改善すればいいのかわからない
  • 改善すべきスロークエリはわかってるけどどこで使われてるかわからない

これに対して監視ツールとして最近よく使われるGrafanaを使いスロークエリを可視化し、大量にあるスロークエリから特に改善が必要なクエリを特定して実際にスロークエリ改善をしていった際のテクニックについてお話します。

1
セッション(30分)

設計の考え方 - インターフェースと腐敗防止層について

okashoi おかしょい/岡田 正平

PHP を含む、クラスベースのオブジェクト指向プログラミング機能を持つ言語(あるいはそれ以外の言語でも)インターフェースを利用できます。
アプリケーションの実装上の設計を考えたことがある人は、インターフェースが使えると何が嬉しいのか?どんな場面で使えばよいのか?と思ったことがあるのではないでしょうか。

本トークでは、また設計の文脈で聞いたことがあるかもしれない「腐敗防止層」というワードとともにインターフェースの使い方、ひいては設計全般に通用する考え方をお話します。

想定聴講者

以下を満たす方が聴講することを想定します。

  • PHP のコードは一通り書ける(フレームワーク上でも可)
  • 機能追加等によって、実装上の設計を考える必要がある(考えたことがある)
  • クラスベースのオブジェクト指向プログラミングにおける「継承」等の意味はわかる
3
LT(5分)

MySQL のインデックスの種類をおさらいしよう!

okashoi おかしょい/岡田 正平

アプリケーションのパフォーマンス改善目的で、データベースのカラムにインデックスを作成することはよくあるでしょう。
でも、インデックスにはいくつかの種類があることをご存知でしたか?

本トークでは MySQL の公式リファレンスをベースに、インデックスの種類とその使い方をおさらいしていきます。

知っているインデックスの種類が増えると、データベースのパフォーマンスをより引き出せるようになる、かもしれません。

4
セッション(15分)

パスワードのハッシュ、ソルトってなに?

okashoi おかしょい/岡田 正平

少し前にパスワードにまつわる「ハッシュ」と「ソルト」という言葉が話題になりました。
また「平文で保存していたパスワードが流出する」といった事件もたびたび耳にします。

パスワードの扱いについては、Web アプリケーションフレームワークを使っていればあまり意識することは無いかもしれません。
実際、意識しなくてもフレームワークがよしなにしてくれます。

でも、いったい「ハッシュ」や「ソルト」とは何なのか?
上述のような事件を起こさないよう、アプリケーション開発者としてしっかり押さえておくべきポイントをお話します。

セッション(30分)

PDO / Eloquent / Doctrine ORM それぞれでの生 SQL の扱い方

okashoi おかしょい/岡田 正平

フレームワークに備わっているようなクエリビルダや ORM、便利ですね。

一方で「この SQL 文はクエリビルダの機能では表現できないな」「長年使われてきた秘伝の SQL 文があってな......」といったケースで生の SQL 文を使わざるを得ない、というケースがあるかもしれません。

そこで今回は以下の 3 つの手段で生 SQL を扱う方法を説明します。

  • PHP に組み込まれている PDO
  • Laravel で使われている Eloquent
  • Symfony で使われている Doctrine ORM

本トークで扱うもの

  • 各手段で生の SQL を実行し結果をオブジェクトにマッピングする方法
  • 具体的なコードやセットアップ
  • それぞれのメリット・デメリット

本トークで扱わないもの

  • 各 ORM の「王道」の使い方
  • 実アプリケーションにおける応用
1
採択
2024/04/13 17:40〜
かま
LT(5分)

"config" ってなんだ?

okashoi おかしょい/岡田 正平

Web アプリケーションフレームワークを使ったプロジェクトを新規作成し、自動生成されるファイル郡の中にある config というファイルまたはディレクトリ。

いったいこいつは何なのか?
どうやら項目を自分でも追加できるようだが、一体何を追加してよくて、何を追加すべきでないのか。

本トークはそんな疑問にお答えします。

セッション(15分)

静的解析ツール PHPStan を活用して実装上のうっかりミスを早期発見しよう!

okashoi おかしょい/岡田 正平

不具合が確認され、丸一日かけて調査したら原因はうっかりミスによる構文エラーだった.......そんな経験ありませんか?
「そんなうっかりミスを実行する前に気づけたらいいな」そう思ったあなたにお勧めするのが静的解析です!

本トークでは PHP 静的解析ツールの一例として PHPStan を取り上げて、それが使えるとどんなことがいいのかをお話します。

本トークで話すこと

  • 静的解析と PHPStan についての概要
  • こんなうっかりミスを検出できます

本トークで話さないこと

  • PHPStan の詳細な使い方、設定
  • 型にまつわるお話
1
セッション(15分)

ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜

okashoi おかしょい/岡田 正平

フレームワークのドキュメントに従って、あるいはプロジェクトの既存のコードに従ってファイル上部に書いた「namespace」「use」といったキーワード。

この意味、正しく理解していますか?
「ディレクトリ名と対応させて書くやつ」「他の言語でいう import みたいなやつでしょ?」みたいな認識をしていませんか?

実は PHP の機能としては namespace(名前空間)とディレクトリ名、ファイル名には一切の関係はありません!

「じゃあ、なんで require とかを書かずに他のファイルに定義したクラスを使えているの?」と思ったあなたに、その仕組みと、それらを支えている存在をお教えします。

1
LT(5分)

プルリクエストを小さくしてみんなで幸せな開発ライフを送ろう〜巨大PRからの脱却〜

takaaki_w しみたか

2人月くらいの工数がかかる機能開発を1人で担当することになりました。
必死にコードを書いた結果、気づけば1回で80ファイル分の変更がある地獄のような巨大プルリクが出来上がっていました。

レビューをすり抜けたバグが障害を発生させてしまい、どげんかせんといかん!となった時に改善しなければならないと決意しました。
その結果、リリースを細かくできたり、障害の発生が抑えられたりと良いことづくめで開発品質を上げることができるようになりました。

このLTでは、PRを分割した方法や分割することの得られた効果についてお話します。

PRを小さくしてみんなで幸せな開発ライフを送りましょう。

採択
2024/04/13 14:00〜
ぼこ
セッション(30分)

出来らあっ!!(という気持ち)から始めたコンテナ化と開発者体験の向上施策

st_1t Shota Ito

みなさんはローカル環境で開発を行って本番環境へデプロイするまでどのように実施していますか?
実はここでお話する取り組みは今も絶賛進行中だったりするものもあります。

出来らあっ!!という気持ちからコンテナ化を進めることになり、ローカル環境整備やデプロイフローの改善といったものへ繋がっていきました。

このトークでは、

  • レガシーな開発環境やデプロイフローを改善していった軌跡
  • ローカル環境の整備
  • コンテナ化
  • デプロイフローの改善
  • 全体を巻き込んで行動する時に心がけているマインドと振る舞い

といったことを話していこうと思います。

セッション(30分)

Laravel で GraphQL サーバーを実装してみよう

GraphQL はクエリ言語を用いて、クライアントが必要とするデータを API に 過不足なく伝達できる という、 従来の REST API では実現が難しい機能 が利用できます。

GraphQL はさまざまなプログラミング言語でサポートするためのライブラリが用意されており、 PHP 用のライブラリも用意されています。

本トークでは、 GraphQL の基礎を説明したあと、 Laravel で GraphQL サーバーを実装する方法を紹介します。
Laravel の GraphQL サーバーライブラリとして、 Lighthouse を利用します。

GraphQL の基礎を学び、 API サーバーを実装してメリットを体感してみませんか?

1