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