Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
チームで「きちんと」Laravel を使っていくための取り組み / Efforts to ut...
Search
Shohei Okada
March 14, 2018
Programming
0
41
チームで「きちんと」Laravel を使っていくための取り組み / Efforts to utilize Laravel
2018/03/14 開催の「【 ヒカ☆ラボ 】【Laravel5、CakePHP3など】ベンチャー企業のリアルなPHP事情」の資料です。
https://atnd.org/events/95005
Shohei Okada
March 14, 2018
Tweet
Share
More Decks by Shohei Okada
See All by Shohei Okada
パスワードのハッシュ、ソルトってなに? - What is hash and salt for password?
okashoi
3
87
設計の考え方 - インターフェースと腐敗防止層編 #phpconfuk / Interface and Anti Corruption Layer
okashoi
9
2.6k
"config" ってなんだ? / What is "config"?
okashoi
0
650
ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜 / namespace and autoloading in php
okashoi
3
1k
MySQL のインデックスの種類をおさらいしよう! / overviewing indexes in MySQL
okashoi
0
650
PHP における静的解析(あるいはそもそも静的解析とは) / #phpcondo_yasai static analysis for PHP
okashoi
1
440
【PHPカンファレンス沖縄 2023】素朴で考慮漏れのある PHP コードをテストコードとともに補強していく(ライブコーディング補足資料) / #phpcon_okinawa 2023 livecoding supplementary material
okashoi
3
1.8k
その説明、コードコメントに書く?コミットメッセージに書く? プルリクエストに書く? - #phpconfuk 2023
okashoi
14
4.9k
いろいろなフレームワークの仕組みを index.php から読み解こう / index.php of each framework
okashoi
2
2.6k
Other Decks in Programming
See All in Programming
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
2
1.1k
Generative AI Use Cases JP (略称:GenU)奮闘記
hideg
1
290
subpath importsで始めるモック生活
10tera
0
300
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
230
C++でシェーダを書く
fadis
6
4.1k
弊社の「意識チョット低いアーキテクチャ」10選
texmeijin
5
24k
CSC509 Lecture 09
javiergs
PRO
0
140
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
290
みんなでプロポーザルを書いてみた
yuriko1211
0
260
[Do iOS '24] Ship your app on a Friday...and enjoy your weekend!
polpielladev
0
100
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
110
色々なIaCツールを実際に触って比較してみる
iriikeita
0
330
Featured
See All Featured
Thoughts on Productivity
jonyablonski
67
4.3k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Being A Developer After 40
akosma
86
590k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
The Cult of Friendly URLs
andyhume
78
6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
The Cost Of JavaScript in 2023
addyosmani
45
6.7k
Docker and Python
trallard
40
3.1k
Transcript
チームで「きちんと」 Laravel を使っていくための 取り組み 【ヒカ☆ラボ】ベンチャー企業のリアルな PHP 事情
岡田 正平(おかだ しょうへい)@okashoi • 株式会社ウィルゲート 2015年新卒入社 • 開発室 ソリューションユニット 所属
• PHP, Laravel, Vue.js • 資料は後ほど公開します 2 自己紹介 Slides:
3 株式会社ウィルゲート
4 株式会社ウィルゲート
5 株式会社ウィルゲート
アジェンダ • 背景 • 解決したい課題 • やったこと • 良かったこと •
学んだこと • 今後の展望 6 チームで「きちんと」Laravel を使っていくための取り組み
アジェンダ • 背景 • 解決したい課題 • やったこと • 良かったこと •
学んだこと • 今後の展望 7 チームで「きちんと」Laravel を使っていくための取り組み
• 2017年4月から新規プロダクトの開発がはじまる(Laravel) • web コンサルティングのノウハウをシステム化 • 以降、新しくチームに受け入れた人数 = 5名 •
Laravel 未経験者が多い(新卒、業務委託) • チーム内で Laravel に関する理解がもっとも深いのが私 8 背景 | チームの状況
• Laravel は「設計を自力でできないと道に迷ってしまいがち」 9 背景 | Laravel の特徴 ※スライド「PHP 2大
web フレームワークの徹底比較!」より
アジェンダ • 背景 • 解決したい課題 • やったこと • 良かったこと •
学んだこと • 今後の展望 10 チームで「きちんと」Laravel を使っていくための取り組み
前提: 「きちんと」使う ≠ 全ての機能を使いこなしている • 時として「使う必要がない」「チームでの運用は難しい」 という判断もする • 「使ったほうがいい」と思えば使う 使うからにはチームみんなが理解し、使える状態を目指す
11 解決したい課題 | 前提
12 解決したい課題 使いたい機能 使わない機能 理解していない 理解している
13 解決したい課題 使いたい機能 使わない機能 理解していない 理解している Laravel が提供している 機能全体
14 解決したい課題 使いたい機能 使わない機能 理解していない 理解している Laravel が提供していて 「きちんと」 使えている機能
15 解決したい課題 使いたい機能 使わない機能 理解していない 理解している Laravel が提供しているが 理解不足のために 使えていない機能
16 解決したい課題 使いたい機能 使わない機能 理解していない 理解している Laravel が提供しているが 理解不足のために 使えていない機能
悲しみ のもと • 誤った使い方 • 車輪の再発明 → バグ混入の可能性・メンテコストの増加
17 解決したい課題 使いたい機能 使わない機能 理解していない 理解している Laravel が提供しているが 理解不足のために 使えていない機能
Laravel が提供していて 「きちんと」 使えている機能 時間の経過とともにシステムの開発は進む →「使いたい機能」の領域が広がる
18 解決したい課題 使いたい機能 使わない機能 理解していない 理解している Laravel が提供しているが 理解不足のために 使えていない機能
Laravel が提供していて 「きちんと」 使えている機能 生まれゆく 悲しみ を減らすために 「チームで」理解している範囲を拡大していきたい
アジェンダ • 背景 • 解決したい課題 • やったこと • 良かったこと •
学んだこと • 今後の展望 19 チームで「きちんと」Laravel を使っていくための取り組み
• ドキュメントの整備 • 実装前の方針すり合わせ(設計レビュー) • 「コーディングに関する相談会」の定期実施 20 やったこと
• 「Laravel のお作法」や「コーディング規約」 あるいは「設計のベストプラクティス」のようなものまで • 必要に応じてチームメンバーが参照できる状態にする 21 やったこと | ドキュメントの整備
• 「ガイドライン」と称した具体的なコード例も準備 • 同一のリポジトリ内に作成(開発環境のみで実際に動く) • ガイドライン作成のプルリク自体がドキュメントにもなる 22 やったこと | ドキュメントの整備
• 実装を始める前に所定のフォーマットで実装方針をまとめる • まとめた実装方針をもとに 所定のレビュワーがレビューし方針をすり合わせる • Laravel が提供している機能で実現できないか? • 提供されている機能を正しく使えているか?
23 やったこと | 実装前の方針すり合わせ(設計レビュー)
24 やったこと | 実装前の方針すり合わせ(設計レビュー) ※Notifications を活用する例 半分以上伏せてますが……
• 週に1回30分 チームメンバー全員参加(他のチームの人も参加OK) • コーディングについてなんでも(Laravel に限らず)相談できる • 「ここどうしたらいいですか?」 • 「こんな記事を見つけたんですが、どう思います?」
など • コーディングに関する意識のすりあわせ・ノウハウ共有が目的 • 他人に対する批判はナシ(お互いに注意する) ✕「こんなことも知らないの?」 ✕「その考え方はダメ」 25 やったこと |「コーディングに関する相談会」の定期実施
アジェンダ • 背景 • 解決したい課題 • やったこと • 良かったこと •
学んだこと • 今後の展望 26 チームで「きちんと」Laravel を使っていくための取り組み
• チームで初めて使う Laravel の機能や、新しく始めることの 導入がしやすくなった • テストコードや Laravel Mix 導入など
• 生まれそうな 悲しみ を未然に防げるようになった • チームメンバー間で「良いコード」について会話するようになった • 作業中にも「ここの実装って~」というような 会話が生じるようになった ➢ 「良いコード」を意識するようになれば Laravel が提供する機能に目が向いていくはず(……という期待) 27 良かったこと
• プルリクのレビューの負担が減った • 実装方針のすり合わせができているので フィードバック→修正 のサイクルが減った • 副次効果として「プルリクを細かく分けて出す」風潮を作り出せた • レビューのタイミングですり合わせる
• コーディングに関する相談会に他のチームの人も参加可能にしたこと • 他チームのノウハウ・観点を知ることができる 28 良かったこと
アジェンダ • 背景 • 解決したい課題 • やったこと • 良かったこと •
学んだこと • 今後の展望 29 チームで「きちんと」Laravel を使っていくための取り組み
• 新しく入ったメンバーに全ドキュメントを目を通してもらう必要はない • 現実的にそれができる量ではなくなった • 「最初に最低限目を通してもらうもの」は選出する必要 • 設計レビュワー(1人)の負担が思ったより大きかった • プルリクレビューの負担軽減を相殺して足が出るくらい
• 実装者が方針を修正するタイミングが早まったので チームとしてはプラス • ただし、ここがボトルネックになってしまうこともあった • 「自分のレビューは正しいのか?」という終わらない問い 30 学んだこと
アジェンダ • 背景 • 解決したい課題 • やったこと • 良かったこと •
学んだこと • 今後の展望 31 チームで「きちんと」Laravel を使っていくための取り組み
• すでに生まれてしまった 悲しみ の救済 • 規約・ドキュメントを更新していく仕組みづくり • レビュワーの育成 32 今後の展望
• すでに生まれてしまった 悲しみ の救済 • 規約・ドキュメントを更新していく仕組みづくり • レビュワーの育成 33 今後の展望
34 今後の展望 | すでに生まれてしまった悲しみの救済 使いたい機能 使わない機能 理解していない 理解している Laravel が提供しているが
理解不足のために 使えていない機能 Laravel が提供していて 「きちんと」 使えている機能 (これまで)生まれゆく 悲しみ を減らすために 「チームで」理解している範囲を拡大していく仕組みを作った
35 今後の展望 | すでに生まれてしまった悲しみの救済 使いたい機能 使わない機能 理解していない 理解している Laravel が提供しているが
理解不足のために 使えていない機能 Laravel が提供していて 「きちんと」 使えている機能
例)独自実装になってしまった認可機構 • 実装が開放閉鎖原則に反していてる ← 悲しみ ➢ Laravel が提供している Gate, Policy
に置き換える 36 今後の展望 | すでに生まれてしまった悲しみの救済
• すでに生まれてしまった 悲しみ の救済 • 規約・ドキュメントを更新していく仕組みづくり • レビュワーの育成 37 今後の展望
レビュワーの負担を分散・ボトルネック解消のために やっていること1 • 実装や設計の参考になる記事を読ませて、感想・意見・疑問を聞く • 「良いコード」に関するより深い対話 • SOLID 原則 •
驚き最小の原則 など • それらのために Laravel はどのような機能を提供してるのか? 38 今後の展望 | レビュワーの育成
やっていること2 • レビューの際に自発的に考えさせるコミュニケーションを取る • 「こうした方がいい」ではなく「どうしたらいいだろう?」と問う • 「自己説得」(=自分で理解した状況)は行動の変化が発生しやすい 参考) 39 今後の展望
| レビュワーの育成 Chapter 2 メンタリングの技術
「きちんと」Laravel を 使っていくための 戦いはまだまだ続く (‘ω’ )
一緒に働くメンバーを募集しています!