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
コドモン開発チーム
May 09, 2025
1.1k
0
Share
現場のいちメンバーの視点からの技術的負債への向き合い方 / My approach to technical debt as an individual team member
コドモン開発チーム
May 09, 2025
More Decks by コドモン開発チーム
See All by コドモン開発チーム
ソースコードで比較する React / Vue / Svelte の セキュリティ設計思想 / security design philosophy react vue svelte
codmoninc
5
580
少人数SREチームが、長寿なシステムを構築・運用するための取り組み / Efforts by a Small SRE Team to Build and Operate Long-Lived Systems
codmoninc
0
18
フルリモートのその先へ〜パパね、いつも家にいるけどちゃんとこうして働いてるよ〜 / Beyond Full Remote
codmoninc
0
550
多様な働き方を支えるチーム開発カルチャーと 今後の展望 / Team Development Culture Supporting Diverse Workstyles and Future Outlook
codmoninc
0
440
ペアプロ未経験・未知のスキル領域・フルリモートからでも挑戦できる? 40代転職者の実態 / pair-programming-remote-career-change
codmoninc
0
460
EMが「推し本」を語る会〜アジャイルレトロスペクティブズ第2版〜 / recommended-book_agile-retrospectives
codmoninc
0
78
段階的なリプレイスを2年続けていたら、 ユーザーのことで悩めるようになっていた話 / Two Years of Incremental Replacement: How We Finally Started Thinking About Our Users
codmoninc
1
230
自動テストが巻き起こした開発プロセス・チームの変化 / Impact of Automated Testing on Development Cycles and Team Dynamics
codmoninc
3
1.7k
データエンジニアの副業メンバーを受け入れてよかったこと / good points of hiring side job data engineers
codmoninc
0
81
Featured
See All Featured
How to Talk to Developers About Accessibility
jct
2
190
The Invisible Side of Design
smashingmag
302
52k
Done Done
chrislema
186
16k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.6k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
280
Navigating Weather and Climate Data
rabernat
0
190
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Site-Speed That Sticks
csswizardry
13
1.2k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
54k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1k
Designing for humans not robots
tammielis
254
26k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
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