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
0
100
現場のいちメンバーの視点からの技術的負債への向き合い方 / My approach to technical debt as an individual team member
コドモン開発チーム
May 09, 2025
Tweet
Share
More Decks by コドモン開発チーム
See All by コドモン開発チーム
コドモンPdM紹介資料.pdf
codmoninc
0
22
「石の上にも三年」 の石の上での三ヶ月(話題のペアプログラミングを4社が徹底的に語る!) / Three months on a rock.
codmoninc
3
130
みんなで自動テストに取り組む ために必要だったこと / Essentials for Team-Based Automated Testing
codmoninc
0
990
コドモンのQAの今までとこれから / Codmon's QA Journey
codmoninc
1
870
スケールするプロダクトと膨らむ組織 SREの挑戦と解決策 / SRE Challenges and Solutions at Codmon
codmoninc
0
41
XPってどんな感じ?コドモンでの導入経緯と現在地 / What is XP like? Background of introduction and current status in Codomon
codmoninc
2
770
GAS・関数地獄を脱出! TROCCO・dbt・BigQueryで ストレスフリーなデータ管理 / Stress-Free Data Management with TROCCO, dbt, and BigQuery
codmoninc
0
760
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築 / From EC2 to ECS: Migrating to Containers and Rebuilding a Massive Legacy PHP Application
codmoninc
0
760
コドモンの決済基盤のテストの紹介 / Introduction to the Payment Infrastructure Testing of Codmon
codmoninc
0
380
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
KATA
mclloyd
29
14k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
It's Worth the Effort
3n
184
28k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Documentation Writing (for coders)
carmenintech
71
4.7k
Done Done
chrislema
184
16k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Into the Great Unknown - MozCon
thekraken
38
1.7k
GraphQLとの向き合い方2022年版
quramy
46
14k
Adopting Sorbet at Scale
ufuk
76
9.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.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