レガシー回避のPHP開発術/avoid_php_legacy
by
Ryo Tomidokoro
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
@hanhan1978 レガシー回避のPHP開発術 保守性の高いアプリケーションを作る方法 2023-06-24 PHPカンファレンス福岡
Slide 2
Slide 2 text
@hanhan1978 ● 富所 亮 ● 所属 株式会社カオナビ BackEnd Re-architecturing Team (BERT) ● 職業 バックエンドエンジニア ● ブログ https://blog.hanhans.net ● Yokohama North AM https://anchor.fm/yokohama-north-am 2
Slide 3
Slide 3 text
レガシーとはなにか? 3
Slide 4
Slide 4 text
4 レガシーの定義
Slide 5
Slide 5 text
5 “レガシーコードとは、単にテスト の無いコードです。”
Slide 6
Slide 6 text
6 “毎日実行され、過去の意思決定をもと にのがれようのない影響を及ぼし続ける が、なんの活力もないようなコードがあ る。それを丁寧な言葉で「レガシー」と呼 ぶ。”
Slide 7
Slide 7 text
7 “保守または拡張が困難な既存のプ ロジェクトなら、なんでも「レガシー」 (legacy)と呼ぶことにしている”
Slide 8
Slide 8 text
8 “創業期の資金不足や人材不足によっ て生じたコード上の課題全般を、広義 のレガシーコードと定義”
Slide 9
Slide 9 text
まとめると 9
Slide 10
Slide 10 text
● テストが無い ● 活力が無い ● 保守・拡張が困難 10
Slide 11
Slide 11 text
11 これらの性質が一つでもあればレガシーなのか?
Slide 12
Slide 12 text
12 白黒はつかない All or Nothing ではない。
Slide 13
Slide 13 text
13 ● レガシーではない部分(計画的に設計・実装) ● レガシーな部分(涙を飲んだ部分)FIXME, TODOなど ● レガシーな部分(知らなかった、未認識) 実際にはアプリケーション内に良い箇所・悪 い箇所が混在する
Slide 14
Slide 14 text
14 思考停止は危険 全体をまとめてレガシーと表現してしまうと 「さあ!フルリニューアルだ!」という話にしかならない
Slide 15
Slide 15 text
15 場合によっては フルリニューアルは合理的な判断だが 大抵の場合はコストがかかりすぎる → かつ、その組織で1から作ってレガシーになったのよね?
Slide 16
Slide 16 text
16 場合によっては フルリニューアルは合理的な判断だが 大抵の場合はコストがかかりすぎる → かつ、その組織で1から作ってレガシーになったのよね? 歴史に学べ!!!
Slide 17
Slide 17 text
17 この登壇内でのレガシーの扱い
Slide 18
Slide 18 text
18 ● テストが無い ● 活力が無い ● 保守・拡張が困難 これらを「レガシーな性質」と呼ぶ。
Slide 19
Slide 19 text
19 アプリケーション内にある「レガシーな性 質」の割合に目を向ける 全体を包含して、思考停止しないこと
Slide 20
Slide 20 text
20 レガシーな性質≒技術的負債 ただ、このままだと解像度が低い
Slide 21
Slide 21 text
21 ● 自然には少なくならない ● 時間とともに勝手に増える レガシーな性質の特性
Slide 22
Slide 22 text
22 「改善しないと、改善されないんだよ?」 ねぇ知ってる?
Slide 23
Slide 23 text
23 レガシーな性質を減らす活動をしないとい けない
Slide 24
Slide 24 text
24 レガシーを回避するとは?
Slide 25
Slide 25 text
25 ソフトウェア開発の目的はレガシー回避で はない
Slide 26
Slide 26 text
26 ● テストがあり ● 活力があり ● 保守・拡張が容易 これらは必ずしも必須ではない
Slide 27
Slide 27 text
27 プロダクトアウト+カスタマーサクセスが目 的 -> みんなでアジャイル
Slide 28
Slide 28 text
28 ただし レガシーな性質を放置すると 目的達成の足を引っ張るようになる
Slide 29
Slide 29 text
29 現状、達成されていることにも目を向けましょ うね。 ところで
Slide 30
Slide 30 text
30 ● 希望 ● 利益 ● 人々の生活 ● ビジョン これらを達成できていないものはレガシーにも なれていない
Slide 31
Slide 31 text
31 ● 希望 ● 利益 ● 人々の生活 ● ビジョン これらを達成できていないものはレガシーにも なれていない 良い面にもきちんとフォーカスを 当てましょう
Slide 32
Slide 32 text
32 なるようになって、今がある
Slide 33
Slide 33 text
33 ソフトウェアが達成したい目的はそれぞれ 作られてきたコンテキストも様々
Slide 34
Slide 34 text
34 そのソフトウェアを作ってきた歴史がある 作ってきたチームがある 経済活動をしてきた結果として今がある
Slide 35
Slide 35 text
35 そのアプリケーションに不満があるかもし れない 体制に不満があるかもしれない やり方に不満があるかもしれない
Slide 36
Slide 36 text
36 それはそれで、ある種安定した状態 単純に、レガシーな性質を悪とみなして活 動しても、うまくいかんぞ!
Slide 37
Slide 37 text
37 無計画な開発による意図しない副作用 https://www.coastalwiki.org/wiki/Human_causes_of_coastal_erosion
Slide 38
Slide 38 text
38 テストがないことが普通の場所で、テスト があることを普通にしようとするのは、不 自然な行為 (サバンナをのぞく)
Slide 39
Slide 39 text
39 現状維持しがち ● 今はこれで動いているんだから ● 今までこれでやってきたから ● 変更するのは大変だから 正常性バイアスとの戦い
Slide 40
Slide 40 text
40 ”当たり前”を変える必要がある
Slide 41
Slide 41 text
41 例 ● リファクタリング ● PHPStan対応 ● Accessibility対応 ● フレームワークのバージョンアップ ● プログラミング言語のバージョンアップ ● CIの速度改善
Slide 42
Slide 42 text
42 ここまでのまとめ
Slide 43
Slide 43 text
43 ● レガシーはソフトウェアの性質 ● なるようになったものは変わりづらい
Slide 44
Slide 44 text
44 レガシーな性質を減らすには、そもそもレガ シーを生み出す既存の流れ全体に抗う必要 がある。 局地戦で改善できるほど甘い相手ではない
Slide 45
Slide 45 text
ソフトウェアはどうやって作られるか? 45
Slide 46
Slide 46 text
46 0 -> 1 のフェーズ
Slide 47
Slide 47 text
47 ● リリースが命 ● 動くことが最優先
Slide 48
Slide 48 text
48 色々とない ● 金がない ● 開発者がいない あるのは達成したいこと
Slide 49
Slide 49 text
49 目先の対応が求められる > 個社対応
Slide 50
Slide 50 text
50 ● 人材も環境も不十分 ● ドメインが安定していない 「レガシーコードとの付き合い方」における課題はこ のフェーズで大量に生み出される
Slide 51
Slide 51 text
51 1->10のフェーズ
Slide 52
Slide 52 text
52 ちょっと余裕がでてくる ● 開発者の採用にお金を使える ● 安定したドメインが出来てくる 商売になる黄金パターンが生まれてくる
Slide 53
Slide 53 text
53 ソフトウェアの状態 まだ、ビッグリライトをする余地がある
Slide 54
Slide 54 text
54 技術的負債の要因とその効果 Software Architecture Metrics / Oreilly & Associates Inc, 2022
Slide 55
Slide 55 text
55 技術的負債の要因とその効果 Software Architecture Metrics / Oreilly & Associates Inc, 2022 リプレースで一気に負債を返済
Slide 56
Slide 56 text
56 ● 事業成長が求められる ● 機能がどんどん追加される このフェーズの先には、リプレース作戦を取るの が非現実的になるくらいに、システムの横のサイ ズが増える
Slide 57
Slide 57 text
57 このフェーズで、「リリース優先なので...」 を連発すると、改善の難易度がバク上が りする
Slide 58
Slide 58 text
58 技術的負債の要因とその効果 Software Architecture Metrics / Oreilly & Associates Inc, 2022 リプレースが非現実的になるほど、機 能が増えて、複雑度が増す
Slide 59
Slide 59 text
59 10->100 のフェーズ
Slide 60
Slide 60 text
60 市場をある程度押さえてきた状態 さらに市場を取りに行くために、採用にコストを かけてチームを増やす 組織も大きくなる。
Slide 61
Slide 61 text
61 ● どんどん機能が増える! ● リプレースは、非現実的になる。 ● レガシー解消のコストも大きい ● 結局リリース優先の圧力は強い 単純に、影響が大きすぎる&同時並行で開発してい るものが多すぎて改善活動を諦めだす
Slide 62
Slide 62 text
62 リプレースが出来ないならどうする?
Slide 63
Slide 63 text
63 【一発逆転】銀の弾丸を探す現実逃避 ● サービス分割 ● 一部機能をSaaSに寄せる ● マイクロサービス?? ● モジュラーモノリス ● Rustで書き直す
Slide 64
Slide 64 text
64 いわゆる茹でガエル
Slide 65
Slide 65 text
65 ● なんかCI重いな? ● なんか開発に時間かかるな ● なんか色々面倒くさいな こんなことをひしひしと感じているフェーズ
Slide 66
Slide 66 text
66 積み上がるレガシーを肌で感じる ビジネスとしての成功と、開発効率のバラ ンスを上手にとる必要がある
Slide 67
Slide 67 text
67 ここまでのまとめ
Slide 68
Slide 68 text
68 ソフトウェアは、社会を良くするという動機を持って 誕生して、だれかの役に立つことで、経済活動が なりたつようになって、どんどん開発が進んで行く
Slide 69
Slide 69 text
69 レガシーな性質は、普通に開発しているだけで 積み上がっていく。 そして、改善活動はソフトウェアの開発プロセ ス上は優先度の高くない活動。
Slide 70
Slide 70 text
ソフトウェアの各フェーズで何が積み上がるのか? 70
Slide 71
Slide 71 text
71 0 -> 1 のフェーズ
Slide 72
Slide 72 text
72 知識不足によるインフラ面、ソフトウェア設 計面の負債 とにかく最速で作って動かすことが重視さ れている
Slide 73
Slide 73 text
73 反面、そのときのモダンなスタックで作られてい るので、経年劣化は起きてない。 ソフトウェアの中身や、インフラ構成(カネがな い)で「とにかくリリース優先」の影響を受ける
Slide 74
Slide 74 text
74 総じて、レガシーな性質は少なく、打ち手 は多いが、やる人がいない、指摘する人 がいない
Slide 75
Slide 75 text
75 例 ● フロントエンドの人しかいないので、全部 Firebase ● ベンチャー優遇の、謎SAASを使っている ● ノーコードのツール類を組み合わせたキメラ構成
Slide 76
Slide 76 text
76 1->10のフェーズ
Slide 77
Slide 77 text
77 開発者が増える。このフェーズで、インフラのうま い載せ替えなどをすると、負債は一気に減る。 例 コンテナ化、イミュータブルインフラストラク チャー化など
Slide 78
Slide 78 text
78 技術的負債の要因とその効果(再掲) Software Architecture Metrics / Oreilly & Associates Inc, 2022
Slide 79
Slide 79 text
79 ソフトウェア自体が機能数が少ない状態なの で、大胆な施策も取りやすい。 このタイミングで、機能開発全振りにしてしま うと、大胆な施策が取りにくくなる
Slide 80
Slide 80 text
80 単純にデータ量も少ないので、色々やり やすい 一方で、セカンドシステム症候群にとらわ れる可能性
Slide 81
Slide 81 text
81 負債解消のゴールデンタイムであるため、 アレもコレもと欲が出る
Slide 82
Slide 82 text
82 例 ● 俺たちの考えた最強のインフラ(最強ではない ● 俺たちの考えた最強のアーキテクチャー(最強ではない ● 俺たちの考えた最強の.... (最強ではない ● プログラミング言語変更 (変更できない
Slide 83
Slide 83 text
83 一見して、簡単に倒せそうなサイズ感に見 えてしまうため、きちんとやろうとしすぎる
Slide 84
Slide 84 text
84 結果として、拡張性のないアーキテクチャーが出 来上がったり、一品物のカスタマイズインフラが出 来てしまい、採用に困るような名品が作られる
Slide 85
Slide 85 text
85 10->100 のフェーズ
Slide 86
Slide 86 text
86 基本的には 1->10 のフェーズと同じだが、ビジ ネスドメインの安定がさらに進む 会社の各組織が大きくなり、コミュニケーションコ ストが上がる。
Slide 87
Slide 87 text
87 失敗したときのコストが、内外に対して上がる このあたりまでにレガシーな性質が解消されずに残っ ている場合、追加で時の試練を受け始める
Slide 88
Slide 88 text
88 例) ● ソフトウェアのバージョン問題 ● フレームワークのバージョン問題 ● OSのバージョン問題 ● 問題のあるデータベース設計 ● 取り返しの付かない仕様ハレーション
Slide 89
Slide 89 text
89 時間経過によって、モダンの概念が変わってくる 仮想サーバー -> コンテナ化 分散システム -> マイクロサービス
Slide 90
Slide 90 text
90 今やるなら当然コレという方式がでてきてお り、何もしてなかったからレガシーになりました という状態
Slide 91
Slide 91 text
91 若手優秀層は、隣の芝生は青いな〜っとな る。 つねにデバフを食らっている状態
Slide 92
Slide 92 text
92 このフェーズでは、チーム数や関連する人間 の数も増えている いかなる改善を行うにもコストが大きい
Slide 93
Slide 93 text
93 チーム内合意では不十分で、横断的合意が 必要となる 新規加入するメンバーのオンボーディングが 問題になるのもこの頃
Slide 94
Slide 94 text
94 加入するメンバー数が多いので、教育に携わる メンバーも増やす必要がある EM的なポジションが不在 or EM的な性質を 持ったメンバーがいなくなると、フォローが減る
Slide 95
Slide 95 text
95 とにかく、問題が多いので、ソフトウェアのレガシー な性質に対する関心も低い チーム内で上手くやることが大事になる レガシーな性質もサイロ化
Slide 96
Slide 96 text
なぜ、改善されないのか? 96
Slide 97
Slide 97 text
97 > 改善活動を行わない限り、メンテナンスコストは 上がる 当然ですが、開発にはコストがかかります。コストの 大半は人件費 開発は、つまり開発者を金で雇って、ソフトウェアに 変更を行うこと
Slide 98
Slide 98 text
98 開発コストに、改善活動は含まれるか? スクラム開発では、スプリント内に、チームが 主体的に改善活動を意図的に取り入れている チームもありますが、大半のチームは、そんな 余裕はありません。 受託では......
Slide 99
Slide 99 text
99 質とスピード
Slide 100
Slide 100 text
100 質とスピードは両立する https://speakerdeck.com/twada/quality-and-speed-2022-spring-edition
Slide 101
Slide 101 text
101 質とスピードは両立する https://speakerdeck.com/twada/quality-and-speed-2022-spring-edition それが出来るチームならな!
Slide 102
Slide 102 text
102 大半のチームは、質とスピードの境地に達して いない せいぜい、APoSD における戦術的プログラ マーと同じ状態 複雑性は上がるけど、とりあえず要件は満た す
Slide 103
Slide 103 text
103 ほとんどの会社において、とりあえず要件は満たす という開発チームが必要最低限のレベル すくなくともリリースが出来るなら、経営陣としては問 題なく見える
Slide 104
Slide 104 text
104 ほとんどの会社において、とりあえず要件は満たす という開発チームが必要最低限のレベル すくなくともリリースが出来るなら、経営陣としては問 題なく見える ソフトウェアのやばさは、目に見えにくい
Slide 105
Slide 105 text
105 チームの基本行動
Slide 106
Slide 106 text
106 ディレクション チームリード デザイナー QC プログラマー ● インフラ ● バックエンド ● フロントエンド ● アプリ いわゆる開発チーム チームトポロジーにおけるストリームアラインドチーム
Slide 107
Slide 107 text
107 場合によっては、ここにマネージャーというさらに 高次のマネジメントを行う人がいたり、スクラム やっている場合は、スクラムマスターやPOがいる
Slide 108
Slide 108 text
108 さて、このチームだけで、レガシーを促進せず に開発がやれるか? ほとんどの場合、このチームはメンテナンスコ ストを足す方向に開発します。
Slide 109
Slide 109 text
109 改善は、このチームの第一目的ではない このチームは、顧客に価値を提供するために機能 開発を行う OSのアップデートとか、脆弱性対応は優先度として は一段下がる
Slide 110
Slide 110 text
110 技術的負債の要因とその効果 Software Architecture Metrics / Oreilly & Associates Inc, 2022 負債がたまる方向にしか行動しない
Slide 111
Slide 111 text
111 チームにおこる変化
Slide 112
Slide 112 text
112 上手くいっているチーム
Slide 113
Slide 113 text
113 機能開発は行えるチームが、仮にうまくまわっ ていたとする 収益があがるので、企業はさらに投資を行う。 さらに市場を取りに行く。
Slide 114
Slide 114 text
114 投資をすると、会社は開発者を採用してチームを増 やして、開発を複数並行では実行する。問題はその やり方。
Slide 115
Slide 115 text
115 よくあるパターンは、チーム解体
Slide 116
Slide 116 text
116 バラして増やす
Slide 117
Slide 117 text
117 バラして増やす やったぜ!3倍のアウトカム! (とはならない)
Slide 118
Slide 118 text
118 TeamB, TeamC の2つのチームが新設 当初のチームは解体されている 同じスピードでの開発は期待できない
Slide 119
Slide 119 text
119 増えた2チームは、同じスピード、少なくとも同じ 品質で開発することが、投資した側からは期待さ れる 実際には人間関係の再構築 役割の再定義などが起こるので、当初の効率は下がる
Slide 120
Slide 120 text
120 チームにおこる変化2
Slide 121
Slide 121 text
121 ● メンバー離脱 ● メンバー同士の相性問題 ● 評価への不満 買い手市場であるエンジニアは、自分が適切に評 価されていないと感じると、すぐに転職する
Slide 122
Slide 122 text
122 PHPの主戦場であるインターネット業界で は、平均勤続年数は4年前後 https://web-camp.io/magazine/archives/77694
Slide 123
Slide 123 text
ここまでの話のポイント 123
Slide 124
Slide 124 text
124 みんなの大好きなクリーンアーキテクチャーの話も、イ ミュータブルインフラストラクチャーの話も、アジャイルも スクラムも出てきません。オブジェクト指向とかも知りま せん。
Slide 125
Slide 125 text
125 そんなものに関係なく サービスの成長と共にソフトウェアはレガシーな 性質を貯める方向に成長していく
Slide 126
Slide 126 text
126 ところで レガシーな性質が溜まりすぎるとどうなるか?
Slide 127
Slide 127 text
127 Bobおじさんの著書 Clean Craftsmanship には、倫理 の話がでてくる。 つまり、プログラマーが匠としての意識、高い倫理を保 たず、テストも書かず、現状が悪化するにまかせた場 合、どうなるか?
Slide 128
Slide 128 text
128 例 1. Volkswagen の改ざんソフトウェア 2. HealthCare.gov におけるパフォーマンス問題 3. Knight Capital の誤発注による倒産
Slide 129
Slide 129 text
レガシーを積み上げにくくする 129 メモ、ここから30分かかる
Slide 130
Slide 130 text
130 全てに先立つ意識 顧客中心主義 ソフトウェアだけを見てはいけない。良い価値提供 という北極星を忘れないように。
Slide 131
Slide 131 text
131 それって、精神論? いやいや、誰も技術を軽んじたりしてない。極端 に考えるのはNG
Slide 132
Slide 132 text
132 https://mtx2s.hatenablog.com/entry/2023/04/26/230917
Slide 133
Slide 133 text
133 証明できるのか?
Slide 134
Slide 134 text
134 プロジェクトを改善をした状態、改善をして ない状態で、それぞれ計測しないと、改善 の効果は証明できない? そんなこと不可能では?
Slide 135
Slide 135 text
135 マインドチェンジ 正常性バイアスとの正しい向き合い方
Slide 136
Slide 136 text
136 > 改善を止めようとするなら現状維持のメ リットをださないといけない
Slide 137
Slide 137 text
137 Q レガシーな性質を保持し続けるメリット を教えてください? A 無いなら改善が必要だよね?
Slide 138
Slide 138 text
138 戦略面の打ち手
Slide 139
Slide 139 text
139 チームを大切に Team First
Slide 140
Slide 140 text
140 うまくいっているチームを解散させない 改善を活動内に含むことができるような強い チームがこの世でもっとも大切 -> まじで解散させるのはサイコパス
Slide 141
Slide 141 text
141 教育施策 1. オンボーディングの充実 2. ドメイン知識の共有・促進化策 3. チーム横断のコミュニケーション施策
Slide 142
Slide 142 text
142 組織変更 機能開発を主とせず、横断的にDevOpsを行 うチームの結成なども候補にはあがる
Slide 143
Slide 143 text
143 ただ、職能組織でワークしてないからって、横 断的組織を作ったら即座にワークするわけで はない。人による。 チームトポロジーより > 職能集団はサイロ化する。
Slide 144
Slide 144 text
144 ただ、職能組織でワークしてないからって、横 断的組織を作ったら即座にワークするわけで はない。人による。 チームトポロジーより > 職能集団はサイロ化する。 横断的組織もサイロ化する危険
Slide 145
Slide 145 text
145 採用 平均勤続年数が4年という世界線 採用した人が4年経過する前に、新しい人を採用 できないと開発が回せません。
Slide 146
Slide 146 text
146 まとめ
Slide 147
Slide 147 text
147 1. うまくいっているチームを解体しない 2. プロだって、成果を出すには、時間がかかる 3. 自主的な横断施策を行う人材を、大切にする
Slide 148
Slide 148 text
148 組織変更だけはうまくいかない 結局は人なので、横断的活躍をするラジカル なメンバーが内部に存在してくれる必要があ る。
Slide 149
Slide 149 text
149 戦術面でのうちて
Slide 150
Slide 150 text
150 視野を広くもつこと ● 🙅フロントエンドなのでバックエンドわからん ● 🙅バックエンド専門なのでインフラわからん ● 🙅インフラなのでアプリケーションはわからん
Slide 151
Slide 151 text
151 問題は職能内に閉じないので、個人が自 分の専門領域に閉じこもると解決が難しく なる。
Slide 152
Slide 152 text
152 自分しか対応できるひとがいないという状 況だったら、何が出来るか? -> 「出来ない」で蓋を閉じないで、自分の 領域の横に手をのばすことが大切 精神論ではない。最善を尽くせ!
Slide 153
Slide 153 text
153 レガシーな性質が溜まりにくいアプリケー ションの基本
Slide 154
Slide 154 text
154 12 Factor APP まだまだ当たり前になっていない。 先進的というよりは、それに従うことで、自然と 運用・保守し易いアプリケーション+インフラ環 境になるというイメージ
Slide 155
Slide 155 text
155 https://12factor.net/ja/
Slide 156
Slide 156 text
156 https://12factor.net/ja/
Slide 157
Slide 157 text
157 計算機科学の知識 ● アルゴリズム ● 空間計算量、時間計算量 ● プログラムがどのように実行されているのかの知 識
Slide 158
Slide 158 text
158 バグとは? 積み上がったスタックの経路上で、想定外 の状態が混入した結果
Slide 159
Slide 159 text
159 Why Programs Fail / Morgan Kaufmann 2009
Slide 160
Slide 160 text
160 Why Programs Fail / Morgan Kaufmann 2009 型がついていると状態を確定し やすい 早めの型付けで安心
Slide 161
Slide 161 text
161 Working out loud 問題はまず認識されることが必要なので、 大声で叫べ!
Slide 162
Slide 162 text
162 https://blog.studysapuri.jp/entry/2018/11/14/working-out-loud
Slide 163
Slide 163 text
163 Slackが活発で、小さいやり取りが多い チームはコミュニケーションの問題が少な い(経験談)
Slide 164
Slide 164 text
164 テストは書け テスト書くこと自体というよりは、テストを書きや すいコードに自然になるというのがポイントです。
Slide 165
Slide 165 text
165 テスト書く -> 終わりではない TDDでコードを改善するための、最初の 一歩がテストコード みんなもサバンナで暮らそうな!
Slide 166
Slide 166 text
166 コレ一冊で、とりあえず現場では困らなくなる
Slide 167
Slide 167 text
167 その先はコレ!みんなで付録Cの話をしよう!
Slide 168
Slide 168 text
168 設計視点を持つ 🙅ただコードを書けば良いという意識
Slide 169
Slide 169 text
169 ● 一貫性を保てているか? ● 理解しやすいか? ● 変更しやすいか? ● 場当たり的な対応をしていないか? ● 名前付けは妥当か? 将来のために出来ることはたくさんある!
Slide 170
Slide 170 text
170 クリーンアーキテクチャーや、DDDにつ いての私見 -> 特効薬ではない。トップダウン・アプ ローチとして使うとむしろ毒
Slide 171
Slide 171 text
171 発想法からの指摘
Slide 172
Slide 172 text
172 まず課題がある 次に解決策がある 課題を見ずに解決策を当てはめるのは🙅
Slide 173
Slide 173 text
173 設計力をあげるには? ちょうぜつ本を読め!APoSDを読め! 視野を広く!
Slide 174
Slide 174 text
174 相談する コミュニティを頼って! PHP Slack PHPerRoom に、野生のPHPerがいるぞ!
Slide 175
Slide 175 text
175 サーベイ系 ちょっと真面目な技術選定の話
Slide 176
Slide 176 text
176 この回、超おすすめ
Slide 177
Slide 177 text
177 広く世間に知識を求めて 少し良い技術選定が出来るように
Slide 178
Slide 178 text
カオナビ での取り組みを紹介 178
Slide 179
Slide 179 text
179 チーム横断課題への取り組み
Slide 180
Slide 180 text
180 CTO室
Slide 181
Slide 181 text
181 https://speakerdeck.com/kaonavi/growth-ready-engineering-team
Slide 182
Slide 182 text
182 レビューマスター
Slide 183
Slide 183 text
183
Slide 184
Slide 184 text
184
Slide 185
Slide 185 text
185 設計レビュー
Slide 186
Slide 186 text
186
Slide 187
Slide 187 text
187 BERT設計相談会
Slide 188
Slide 188 text
188
Slide 189
Slide 189 text
189 教育・採用への取り組み
Slide 190
Slide 190 text
190 カタリバ (社内勉強会)
Slide 191
Slide 191 text
191
Slide 192
Slide 192 text
192 kaonavi Tech Talk
Slide 193
Slide 193 text
193
Slide 194
Slide 194 text
194 エンジニア採用
Slide 195
Slide 195 text
195
Slide 196
Slide 196 text
196
Slide 197
Slide 197 text
197 アーキテクチャー施策
Slide 198
Slide 198 text
198 Architecture Decision Record
Slide 199
Slide 199 text
199
Slide 200
Slide 200 text
200 Package by Feature
Slide 201
Slide 201 text
201
Slide 202
Slide 202 text
202
Slide 203
Slide 203 text
203
Slide 204
Slide 204 text
204 Feature Toggle
Slide 205
Slide 205 text
205
Slide 206
Slide 206 text
206 その他、細かい施策
Slide 207
Slide 207 text
- PHPUnit - PHPStan - E2Eテスト - メトリクス取得 - 書籍購入制度(ホンダナ) 207
Slide 208
Slide 208 text
208 今後目指したいこと
Slide 209
Slide 209 text
209 GQM
Slide 210
Slide 210 text
210 https://ieeexplore.ieee.org/document/5010301
Slide 211
Slide 211 text
211 https://blog.hanhans.net/2023/05/29/gqm/
Slide 212
Slide 212 text
目的指向 -> 企業のパーパスなどとすり合わせしやすい -> ただの数字から目的思考のメトリクスへ 212
Slide 213
Slide 213 text
213 まとめ
Slide 214
Slide 214 text
- レガシー化させないことは目的じゃない - 目的はもちろん達成する - かつ、レガシー化させない 214
Slide 215
Slide 215 text
215 https://speakerdeck.com/soudai/learn-from-predecessors
Slide 216
Slide 216 text
216 救いがないと感じたとき、私は石切工が岩石を叩くのを見に行 く。おそらく100回叩いても亀裂さえできないだろう。しかしそれで も100と1回目で真っ二つに割れることもある。私は知っている。 その最後の一打により岩石は割れたのではなく、それ以前に叩 いたすべてによることを。 Pounding the rocks
Slide 217
Slide 217 text
217 レガシーから目をそらすな!
Slide 218
Slide 218 text
@hanhan1978 相談・指摘・その他 下記のTwitterアカウントにどうぞ 218