現場のいちメンバーの視点からの技術的負債への向き合い方 / My approach to technical debt as an individual team member
by
コドモン開発チーム
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
2025年5月8日 株式会社コドモン 福井 将之 現場のいちメンバーの視点からの 技術的負債への向き合い方
Slide 2
Slide 2 text
2 経歴 請求関連チームに所属、請求計算や打刻周りの機能を担当 PHPが (自分にとってはほど良く & 生い立ちを含めて) 好き 自己紹介 福井 将之 ふくい まさゆき 2023.12 コドモンにソフトウェアエンジニアとして入社 日々プロダクト開発に勤しんでいます
Slide 3
Slide 3 text
3 Mission
Slide 4
Slide 4 text
4 すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、保育・教育施設向けWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。
Slide 5
Slide 5 text
5
Slide 6
Slide 6 text
技術的負債への向き合い
Slide 7
Slide 7 text
7
Slide 8
Slide 8 text
8 今日話すこと ● 日々取り組んでいる対応の一例 ● 現場で向き合うための手持ちの道具 ● 向き合うモチベーションはどこに?
Slide 9
Slide 9 text
9 ● 会社組織としての取り組み ● 組織・チーム体制、採用 ● リアーキテクチャ 今日話さないこと
Slide 10
Slide 10 text
日々取り組んでいる対応の一例
Slide 11
Slide 11 text
11 日々取り組んでいる対応の一例(1/3) ● ルールに合わないディレクトリ・ファイル構成を見直す ● 修正前に linter, formatter を適用する ● require_once の見直し、依存するファイルを減らす ● 可能ならクラスに final を付ける、readonly にする ● PHP, PHPUnit の古い記法を書き換える ● スーパーグローバル、グローバル変数への依存を減らす ● デッドコードを消す
Slide 12
Slide 12 text
12 PHPUnit の古い記法を書き換えたい例
Slide 13
Slide 13 text
13 スーパーグローバルへの依存を減らしたい例
Slide 14
Slide 14 text
14 日々取り組んでいる対応の一例(2/3) ● 自動テストを書く/追加する/消す/移動する ● Web、アプリ、バッチのテスト ● APIのテスト ● ユニットテスト ● 名前空間の定義のないファイルを名前空間で区切る ● クラスが使われていない構成をクラスに切り出す ● クラスを分割する、メソッドに切り出す
Slide 15
Slide 15 text
15 日々取り組んでいる対応の一例(3/3) ● PHP や依存するライブラリ群をアップグレードする ● 引数、返却値に型を付け、厳密な型付けを有効化する ● PDO の利用をクエリービルダーに徐々に切り替える ● 不必要な可変変数を除去して置き換える ● 複雑な連想配列をクラスに置き換える ● API をまるっと保守しやすい構成に漸近的に置き換える など..
Slide 16
Slide 16 text
16 除去したい可変変数の利用例
Slide 17
Slide 17 text
現場で向き合うための手持ちの道具
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
向き合うモチベーションはどこに?
Slide 32
Slide 32 text
33 向き合うモチベーションはどこに? ● 「人や過去の自分が残した技術的負債に囚われるのは 貴重な人生の時間の浪費では?」 との声も.. ○ まあそうかも (できれば言葉はもうちょっと選んで欲しいけれど) 特につらくなったら環境を変えるのも一つの選択 ○ でも私にとってはむしろこういうのがやりたいこと 取り組んでいて楽しいので!
Slide 33
Slide 33 text
34 私の場合は.. ● 仕事の対価をいただいているので できているかはわからないが、少なくとも給与分の仕事はしたい.. あわよくば仕事にともなう達成感も手軽に得たい ● どこかに連れていってくれる感覚が楽しい ○ リファクタリングをしていてふと気がつくと整っている ○ 例えば TDD 本を写経している時の、いつの間にか天地が 入れ替わる様な不思議な感覚
Slide 34
Slide 34 text
35 まわりのみんなに聞いてみた! ● ユーザーのため ○ まずユーザーのためになることは何?.. 自分にできることは?..これだ! ○ 利用いただいているお客様のユーザー体験の改善が 自身の喜び
Slide 35
Slide 35 text
36 まわりのみんなに聞いてみた! ● お金、価値、事業、プロダクトのため ○ 売り上げになりお金を生んでいる、 世の中により価値を出していきたい ○ 事業とミッション・ビジョンに対する共感 からの成長の後押し ○ プロダクトに貢献したい!少しでも前に進めたい!
Slide 36
Slide 36 text
37 まわりのみんなに聞いてみた! ● 自分のため、人のため ○ 自己顕示欲 ○ 達成感 ○ ゴールがわかりやすい ○ 後から来た人が極力困らないようにしたい 負担を軽減したい
Slide 37
Slide 37 text
38 みなさんのモチベーションも ぜひ教えてください!
Slide 38
Slide 38 text
39 ● 技術的負債の現場での取り組みの一例をお話ししました ● 現場でいちメンバーとして向き合う際の手持ちの道具に ついてご紹介しました ● なぜ技術的負債の解消に取り組み続けているのか? 根底 にあるモチベーションについて考えてみました まとめ 少しでもみなさまのご参考になれば幸いです!
Slide 39
Slide 39 text
40 ちなみに
Slide 40
Slide 40 text
41 コドモン採用ページ コドモンでは一緒に働きたい仲間を募集しています! 開発チームX
Slide 41
Slide 41 text
42 ご清聴ありがとうございました!
Slide 42
Slide 42 text
No content