Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
現場のいちメンバーの視点からの技術的負債への向き合い方 / My approach to t...
Search
コドモン開発チーム
PRO
May 09, 2025
1.3k
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
コドモン開発チーム
PRO
May 09, 2025
More Decks by コドモン開発チーム
See All by コドモン開発チーム
夫婦で子育てするための育児標準化
codmoninc
PRO
0
180
関数型プログラミングに出会って考え方の幅が広がった話 / server_side_kotlin_meetup_20_functional_fujimura
codmoninc
PRO
0
7
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
690
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
400
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
630
「正解の仕様」を求めて、決断する
codmoninc
PRO
0
98
AI時代のPHP開発にASTクエリツール で コードベースの地図を作る / ast-query-tool-php-codebase-map
codmoninc
PRO
0
470
コネクションをピン留めさせずに SELECTクエリのタイムアウトを設定した話
codmoninc
PRO
0
470
コドモンに入社してAI活用により、 設計がより重要だと感じた背景
codmoninc
PRO
0
150
Featured
See All Featured
Discover your Explorer Soul
emna__ayadi
2
1.3k
Exploring anti-patterns in Rails
aemeredith
4
530
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
930
Utilizing Notion as your number one productivity tool
mfonobong
4
620
Tell your own story through comics
letsgokoyo
1
1.1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
300
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Writing Fast Ruby
sferik
630
63k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
New Earth Scene 8
popppiees
4
2.7k
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