開発生産性の指標の1つに「デプロイ頻度」があります。
開発に2,3ヶ月程度かかる大きめの機能開発で、機能をまるっと作ってからリリースしようとしたら、このデプロイ頻度が落ちてしまいました。
また、プルリクエストが肥大化して、レビューが複雑になることもあり、不具合や障害が発生しやすくなっていました。
このトークではそんな大きめの機能開発でも、設計とタスク分割を工夫することで、テストコードも実装しながらデプロイ頻度を上げたチーム開発の事例を紹介します!!
どさんこ: どさんこワイドの奥さんお絵かきですよを現地に見に行ったことはありません
現在Laravelを愛用しているPHPer、企業は非常に多いと思います。
状況や何を作るかにもよると思いますがPHPで何か作ろうと思ったらLaravelが第一候補になる事が多いのではないでしょうか。
自分はPHPが主戦場になってから今までCakePHPを使用していてLaravelを使ったことが無いので1週間という時間を仕事もしないで、家に篭ってただLaravelと向き合って学んだ事、作った物を発表します。
リモートワークが日常となった現代、テキストコミュニケーションの重要性に気づいている人はどれほどいるでしょうか?
リモートネイティブとして、新卒から3年間の社会人経験を通じて、私が学んだテキストコミュニケーションの重要性をLTでお伝えします!
「先輩にどう質問する?」「ビジネス側のやり取りはどう進める?」などシーンに応じて、伝わりにくい文章の例をどう改善するか解説します!
そして、絵文字「👍」や感嘆符「!」など細かな表現まで、日々のテキストコミュニケーションで意識しているポイントを余すことなくお話しします!
どさんこ: I LOVE 北海道🫶
ISUCON(イスコン)?Iikanjini Speed Up Contest(いい感じにスピードアップ コンテスト)?なんだか難しそう……!!私はよく分からないし、分かるようになったら出ようかな?
そんなことを考えていましたが、ISUCON夏祭りというイベントに参加した勢いで、2023年11月開催のISUCON13に初参加することを決めました。
ISUCONの練習って何やるの?どうやるの?当日はどうだった?てか、PHPでもできるの?という、ISUCONについてよく知らなかった1年前のワタシに向けた、ISUCON初心者への解説LTです!
もしかして、ISUCON次回は参加してみたいかも……!!という勇気の後押しが出来たら嬉しいです!
どさんこ: 物心ついたときからジンギスカンを食べて育ちました
このトークでは、LaravelのORMシステムであるEloquentのアクセサ・ミューテタが何か、またクエリビルダとの違いは何かについて、PHP初心者に向けてわかりやすく解説します!!
その後、Eloquentとクエリビルダを組み合わせて使用する際の注意点について、実際に起こった失敗談を紹介します。
そして、この失敗から得た教訓をもとに、同様の問題を避けるためにはどうしたら良いのかについても掘り下げます。
このトークを聞くことで、Laravelを利用しているけれどもEloquentとクエリビルダの違いが分かっていない方も、明日からその2つの違いを理解し、安全なデータベース操作ができるようになるでしょう!乞うご期待!
どさんこ: 生まれ育った北海道が大好きです。
多くのPHPerは日常的にGitを使用していると思いますが、理解して使いこなせているでしょうか?
このトークは、新卒入社したばかりのPHPerやGit初級者に向けて、チーム開発におけるGitの“使いこなし方“に焦点を当て、実践的なノウハウをお届けします!
commit&pushしているだけの「ただ使う」レベルから、わかりやすいPRを作るために適切なコマンド/オプションを選択できる「理解して使う」レベルへとステップアップし、今よりもっとチーム開発を楽しみましょう!
どさんこ: 生まれも育ちも自然豊かなでっかいどうで育ちました
GitHubが提供するCI/CDサービス 「GitHub Actions」。
ドキュメントが充実していて簡単に使い始められる反面、ジョブが終わらなくてキャパを食い尽くしてしまったり、GitHub Actionsが障害中でCI/CDが出来ない、などのトラブルも耳にします。
本トークでは数多のプロジェクトでGitHub Actionsと戯れときに事故に向き合ってきた体験をもとに、GitHub Actionsを使うときにやっておくと良い設定をご紹介します。
Laravelは良くも悪くも雰囲気で書けてしまう反面、実は予期せぬ振る舞いをしていたり、パフォーマンスの悪いコードを書いてしまう恐れがあります。
本トークではLaravelでやりがちな間違いを取り上げて「これは」「こうすると良い」という話をします。
普段、可読性を意識したPHPのコードを書いてるPHPerのみなさん!!SQLでも同様に可読性を意識したコード書いていますか?
本セッションでは、普段SQLを書く際には可読性をあまり意識せずにただほしいデータが取得できるSQLを書いている人向けに、SQLにおいても可読性が重要であるということについて説明した上で、SQLで可読性を上げるためのテクニックとしてMySQL8で新しく追加されたWITH句とWindow関数の使った方法をお伝えします。
日頃パフォーマンスを考えて開発はしていても、実際のデータや経年でのデータ増加によって気づけば増えてるスロークエリ。
いざ、改善しようとしてもこんな経験ありませんか?
これに対して監視ツールとして最近よく使われるGrafanaを使いスロークエリを可視化し、大量にあるスロークエリから特に改善が必要なクエリを特定して実際にスロークエリ改善をしていった際のテクニックについてお話します。
PHP を含む、クラスベースのオブジェクト指向プログラミング機能を持つ言語(あるいはそれ以外の言語でも)インターフェースを利用できます。
アプリケーションの実装上の設計を考えたことがある人は、インターフェースが使えると何が嬉しいのか?どんな場面で使えばよいのか?と思ったことがあるのではないでしょうか。
本トークでは、また設計の文脈で聞いたことがあるかもしれない「腐敗防止層」というワードとともにインターフェースの使い方、ひいては設計全般に通用する考え方をお話します。
以下を満たす方が聴講することを想定します。
アプリケーションのパフォーマンス改善目的で、データベースのカラムにインデックスを作成することはよくあるでしょう。
でも、インデックスにはいくつかの種類があることをご存知でしたか?
本トークでは MySQL の公式リファレンスをベースに、インデックスの種類とその使い方をおさらいしていきます。
知っているインデックスの種類が増えると、データベースのパフォーマンスをより引き出せるようになる、かもしれません。
少し前にパスワードにまつわる「ハッシュ」と「ソルト」という言葉が話題になりました。
また「平文で保存していたパスワードが流出する」といった事件もたびたび耳にします。
パスワードの扱いについては、Web アプリケーションフレームワークを使っていればあまり意識することは無いかもしれません。
実際、意識しなくてもフレームワークがよしなにしてくれます。
でも、いったい「ハッシュ」や「ソルト」とは何なのか?
上述のような事件を起こさないよう、アプリケーション開発者としてしっかり押さえておくべきポイントをお話します。
フレームワークに備わっているようなクエリビルダや ORM、便利ですね。
一方で「この SQL 文はクエリビルダの機能では表現できないな」「長年使われてきた秘伝の SQL 文があってな......」といったケースで生の SQL 文を使わざるを得ない、というケースがあるかもしれません。
そこで今回は以下の 3 つの手段で生 SQL を扱う方法を説明します。
Web アプリケーションフレームワークを使ったプロジェクトを新規作成し、自動生成されるファイル郡の中にある config というファイルまたはディレクトリ。
いったいこいつは何なのか?
どうやら項目を自分でも追加できるようだが、一体何を追加してよくて、何を追加すべきでないのか。
本トークはそんな疑問にお答えします。
不具合が確認され、丸一日かけて調査したら原因はうっかりミスによる構文エラーだった.......そんな経験ありませんか?
「そんなうっかりミスを実行する前に気づけたらいいな」そう思ったあなたにお勧めするのが静的解析です!
本トークでは PHP 静的解析ツールの一例として PHPStan を取り上げて、それが使えるとどんなことがいいのかをお話します。
フレームワークのドキュメントに従って、あるいはプロジェクトの既存のコードに従ってファイル上部に書いた「namespace」「use」といったキーワード。
この意味、正しく理解していますか?
「ディレクトリ名と対応させて書くやつ」「他の言語でいう import みたいなやつでしょ?」みたいな認識をしていませんか?
実は PHP の機能としては namespace(名前空間)とディレクトリ名、ファイル名には一切の関係はありません!
「じゃあ、なんで require とかを書かずに他のファイルに定義したクラスを使えているの?」と思ったあなたに、その仕組みと、それらを支えている存在をお教えします。
2人月くらいの工数がかかる機能開発を1人で担当することになりました。
必死にコードを書いた結果、気づけば1回で80ファイル分の変更がある地獄のような巨大プルリクが出来上がっていました。
レビューをすり抜けたバグが障害を発生させてしまい、どげんかせんといかん!となった時に改善しなければならないと決意しました。
その結果、リリースを細かくできたり、障害の発生が抑えられたりと良いことづくめで開発品質を上げることができるようになりました。
このLTでは、PRを分割した方法や分割することの得られた効果についてお話します。
PRを小さくしてみんなで幸せな開発ライフを送りましょう。
みなさんはローカル環境で開発を行って本番環境へデプロイするまでどのように実施していますか?
実はここでお話する取り組みは今も絶賛進行中だったりするものもあります。
出来らあっ!!という気持ちからコンテナ化を進めることになり、ローカル環境整備やデプロイフローの改善といったものへ繋がっていきました。
このトークでは、
といったことを話していこうと思います。
GraphQL はクエリ言語を用いて、クライアントが必要とするデータを API に 過不足なく伝達できる という、 従来の REST API では実現が難しい機能 が利用できます。
GraphQL はさまざまなプログラミング言語でサポートするためのライブラリが用意されており、 PHP 用のライブラリも用意されています。
本トークでは、 GraphQL の基礎を説明したあと、 Laravel で GraphQL サーバーを実装する方法を紹介します。
Laravel の GraphQL サーバーライブラリとして、 Lighthouse を利用します。
GraphQL の基礎を学び、 API サーバーを実装してメリットを体感してみませんか?