masayuki5160's diary

滋賀県大津市に住むソフトウェアエンジニアの日常

"なんとなく"動いてるコード、放置して大丈夫? ━ ソフトウェア工学チャンネル

はじめに

"なんとなく"動いてるコード、放置して大丈夫?、と題してお話しさせていただきました。リエンジニアリングや技術負債などそういった話題を扱っています。

なお、本記事は以下Youtubeチャンネルの内容をもとに、Geminiに動画の内容をまとめてもらったことを記載しています。

www.youtube.com

現場でよくあること

  • チームが変わったり、詳しい人が退職してしまったりすることで、コードの細かい部分が把握しきれていない状況はよくあります。 [01:32]
  • 「なぜか動いているけど、詳しいことはわからない」というコードがある。 [02:38]
  • ビジネスロジックのコアな部分だけでも把握しておきたい。 [02:55]
  • 仕様書やテストケースなどのドキュメントがあればまだ良いが、ない場合は不安が残る。 [03:17]

問題点

  • 初期リリースから長く運用しているソフトウェアほど、当時のことを知る人がいなくなってしまう。 [04:02]
  • これは技術的負債と言える。 [04:34]
  • チームや担当者が変わることで、誰も仕様がわからなくなったり、ドキュメントが整備されていなかったりする。 [04:51]
  • 最悪の場合、原因不明の障害が発生したり、復旧に時間がかかったりする。 [05:53]
  • 改修が必要になった際、コードの解読に時間がかかり、スケジュールに影響が出る可能性がある。 [06:41]

どうすればいいのか

  1. 優先順位をつけながら、コードを読み解き、ドキュメントを作成する。 [07:52]

    • UMLなどでモデリングするのも有効。 [08:02]
    • まずは少しずつ詳細を把握していく。 [08:32]
  2. 調査のための時間を確保する。 [08:38]

    • 現状を説明し、必要なリソースを確保する。 [08:53]
  3. 状況に応じて、リストラクチャリングやリエンジニアリングを検討する。 [09:07]

    • 技術的負債の度合いや、今後の事業計画とのバランスを考慮する。 [09:16]

参考

  • リバースエンジニアリング:実装から設計、設計から要求を把握するプロセス。 [10:36]
  • フォワードエンジニアリング:要求に基づいて実装を行うプロセス。 [10:56]

まとめ

「なんとなく動いているコード」を放置するのは危険です。 [12:37] 優先順位をつけながらコードを解析し、ドキュメントを作成していくしかありません。 [12:53] 必要に応じて、リストラクチャリングやリエンジニアリングも検討しましょう。 [13:07] これは根気のいる作業ですが、サービスの長期的な提供には不可欠な取り組みです。

 

masaytan.com