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
現場のいちメンバーの視点からの技術的負債への向き合い方 / My approach to t...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
コドモン開発チーム
May 09, 2025
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
現場のいちメンバーの視点からの技術的負債への向き合い方 / My approach to technical debt as an individual team member
コドモン開発チーム
May 09, 2025
More Decks by コドモン開発チーム
See All by コドモン開発チーム
アラート疲れからの脱却 - リソースタグで仕分けるSlack通知戦略 / Breaking Free from Alert Fatigue – A Slack Notification Strategy Using Resource Tags for Routing
codmoninc
0
16
SREに優しいTerraform構成 modulesとstateの組み方 / terraform-modules-state-for-sre
codmoninc
0
280
モノリスなプロダクトの「ほどよい」リプレイス戦略 / A "Just Right" Replacement Strategy for Monolithic Products
codmoninc
0
85
Don't Just Patch — MOTTAINAI! Learn Security from Laravel CVE Diffs
codmoninc
0
210
ソースコードで比較する React / Vue / Svelte の セキュリティ設計思想 / security design philosophy react vue svelte
codmoninc
5
630
少人数SREチームが、長寿なシステムを構築・運用するための取り組み / Efforts by a Small SRE Team to Build and Operate Long-Lived Systems
codmoninc
0
270
フルリモートのその先へ〜パパね、いつも家にいるけどちゃんとこうして働いてるよ〜 / Beyond Full Remote
codmoninc
0
620
多様な働き方を支えるチーム開発カルチャーと 今後の展望 / Team Development Culture Supporting Diverse Workstyles and Future Outlook
codmoninc
0
530
ペアプロ未経験・未知のスキル領域・フルリモートからでも挑戦できる? 40代転職者の実態 / pair-programming-remote-career-change
codmoninc
0
530
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
160
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
350
Producing Creativity
orderedlist
PRO
348
40k
The SEO Collaboration Effect
kristinabergwall1
1
490
Information Architects: The Missing Link in Design Systems
soysaucechin
0
970
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
200
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Test your architecture with Archunit
thirion
1
2.3k
Transcript
2025年5月8日 株式会社コドモン 福井 将之 現場のいちメンバーの視点からの 技術的負債への向き合い方
2 経歴 請求関連チームに所属、請求計算や打刻周りの機能を担当 PHPが (自分にとってはほど良く & 生い立ちを含めて) 好き 自己紹介 福井
将之 ふくい まさゆき 2023.12 コドモンにソフトウェアエンジニアとして入社 日々プロダクト開発に勤しんでいます
3 Mission
4 すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、保育・教育施設向けWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。
5
技術的負債への向き合い
7
8 今日話すこと • 日々取り組んでいる対応の一例 • 現場で向き合うための手持ちの道具 • 向き合うモチベーションはどこに?
9 • 会社組織としての取り組み • 組織・チーム体制、採用 • リアーキテクチャ 今日話さないこと
日々取り組んでいる対応の一例
11 日々取り組んでいる対応の一例(1/3) • ルールに合わないディレクトリ・ファイル構成を見直す • 修正前に linter, formatter を適用する •
require_once の見直し、依存するファイルを減らす • 可能ならクラスに final を付ける、readonly にする • PHP, PHPUnit の古い記法を書き換える • スーパーグローバル、グローバル変数への依存を減らす • デッドコードを消す
12 PHPUnit の古い記法を書き換えたい例
13 スーパーグローバルへの依存を減らしたい例
14 日々取り組んでいる対応の一例(2/3) • 自動テストを書く/追加する/消す/移動する • Web、アプリ、バッチのテスト • APIのテスト • ユニットテスト
• 名前空間の定義のないファイルを名前空間で区切る • クラスが使われていない構成をクラスに切り出す • クラスを分割する、メソッドに切り出す
15 日々取り組んでいる対応の一例(3/3) • PHP や依存するライブラリ群をアップグレードする • 引数、返却値に型を付け、厳密な型付けを有効化する • PDO の利用をクエリービルダーに徐々に切り替える
• 不必要な可変変数を除去して置き換える • 複雑な連想配列をクラスに置き換える • API をまるっと保守しやすい構成に漸近的に置き換える など..
16 除去したい可変変数の利用例
現場で向き合うための手持ちの道具
18 現場で向き合うための手持ちの道具 • 素振り(常に備える) • 自分のプロダクトとして振る舞う • 現物主義 • (ある種の)ずうずうしさ
19 現場で向き合うための手持ちの道具 • 素振り(常に備える) • 自分のプロダクトとして振る舞う • 現物主義 • (ある種の)ずうずうしさ
20 自分のプロダクトとして振る舞う • 学びを得られる感謝と驚き • 自分のものにするために見る • 障害対応を発生から完了までを経験する • 問い合わせ対応を率先して対応する
21 自分のプロダクトとして振る舞う • 学びを得られる感謝と驚き • 自分のものにするために見る • 障害対応を発生から完了までを経験する • 問い合わせ対応を率先して対応する
22 学びを得られる感謝と驚き • 動くことで価値を生み続けている ◦ まずは価値あるプロダクトを作り出した先人に感謝と尊敬を ◦ 後から来た人は何もしないなら ただ乗り しているだけ
• こんなに複雑なコードなのに、 ◦ ちゃんと動作しているだけで本当にすごい! • 知らないことや先人の生きた知恵を学べる ◦ 生きている悪いコードはリファクタリングの最良のサンプル
23 (再掲)除去したい可変変数の利用例
24 自分のプロダクトとして振る舞う • 学びを得られる感謝と驚き • 自分のものにするために見る • 障害対応を発生から完了までを経験する • 問い合わせ対応を率先して対応する
25 • 批判的に見る • ラフに見る • 丁寧に見る • ひたすら見て頭の中のものを外に出す(図にまとめるなど) •
自分ならどう書くか? を考える • 頭の中にモデルを作る、引き出しを作る 自分のものにするために見る
26
27 自分のプロダクトとして振る舞う • 学びを得られる感謝と驚き • 自分のものにするために見る • 障害対応を発生から完了までを経験する • 問い合わせ対応を率先して対応する
28 障害対応を発生から完了までを経験する • 普段からアンテナを張っておく ◦ 最初は担当範囲じゃなくてもアラートは全部見る勢いで • 自分から手を挙げる ◦ 理解のための特等席
◦ 割り込みのない集中できる 非常モード になれる • ポストモーテムをまとめる • 議論する・意見をもらう
29 自分のプロダクトとして振る舞う • 学びを得られる感謝と驚き • 自分のものにするために見る • 障害対応を発生から完了までを経験する • 問い合わせ対応を率先して対応する
30 問い合わせ対応を率先して対応する • 障害対応と似ている ◦ 人は 切羽詰まらないと 本気になれない (少なくとも私は.. ◦
より利用者に近い肌感覚で業務やシステムを理解できる ◦ 場合によっては内外の方からの感謝が得られる ◦ ただし感謝という報酬は 諸刃の剣 になりうるので注意
向き合うモチベーションはどこに?
33 向き合うモチベーションはどこに? • 「人や過去の自分が残した技術的負債に囚われるのは 貴重な人生の時間の浪費では?」 との声も.. ◦ まあそうかも (できれば言葉はもうちょっと選んで欲しいけれど) 特につらくなったら環境を変えるのも一つの選択
◦ でも私にとってはむしろこういうのがやりたいこと 取り組んでいて楽しいので!
34 私の場合は.. • 仕事の対価をいただいているので できているかはわからないが、少なくとも給与分の仕事はしたい.. あわよくば仕事にともなう達成感も手軽に得たい • どこかに連れていってくれる感覚が楽しい ◦ リファクタリングをしていてふと気がつくと整っている
◦ 例えば TDD 本を写経している時の、いつの間にか天地が 入れ替わる様な不思議な感覚
35 まわりのみんなに聞いてみた! • ユーザーのため ◦ まずユーザーのためになることは何?.. 自分にできることは?..これだ! ◦ 利用いただいているお客様のユーザー体験の改善が 自身の喜び
36 まわりのみんなに聞いてみた! • お金、価値、事業、プロダクトのため ◦ 売り上げになりお金を生んでいる、 世の中により価値を出していきたい ◦ 事業とミッション・ビジョンに対する共感 からの成長の後押し
◦ プロダクトに貢献したい!少しでも前に進めたい!
37 まわりのみんなに聞いてみた! • 自分のため、人のため ◦ 自己顕示欲 ◦ 達成感 ◦ ゴールがわかりやすい
◦ 後から来た人が極力困らないようにしたい 負担を軽減したい
38 みなさんのモチベーションも ぜひ教えてください!
39 • 技術的負債の現場での取り組みの一例をお話ししました • 現場でいちメンバーとして向き合う際の手持ちの道具に ついてご紹介しました • なぜ技術的負債の解消に取り組み続けているのか? 根底 にあるモチベーションについて考えてみました
まとめ 少しでもみなさまのご参考になれば幸いです!
40 ちなみに
41 コドモン採用ページ コドモンでは一緒に働きたい仲間を募集しています! 開発チームX
42 ご清聴ありがとうございました!
None