1. 初めに
簡単な自己紹介及び本記事の背景
現在、エンジニア実務未経験の地方消防士
として、約1年間プログラミングの学習を続けています。
消防の現場でも、作業の流れには必ず
「状況判断 → 情報収集 → 危険評価 → 対応策決定 → 実施」を繰り返すサイクルがあり、
エンジニアリング業務においても、タスク処理手順の明文化は非常に重要だと感じています。
本記事では、自身の経験をもとに整理した「タスク処理の8ステップ」と、その具体例(LaravelでのEnum化タスク)を紹介します。
2. タスクの処理(8step)
タスクを円滑に進めるために、以下の8ステップを意識して進めています。
① 仕様確認
・Issueを読み、背景・目的・仕様を把握。
・ゴールはどこか?どの仕様を満たせば完了かを明確に。
・不明点は早めにPM等に確認し、認識ズレを防ぐ。
② 変更箇所確認
・該当機能のコードを確認し、修正や追加が必要な箇所を洗い出す。
③ 影響調査
・修正に伴い影響が出る機能を調査(デグレ防止)。
・他機能への影響を最小限に抑えるため、入口〜出口まで丁寧に追う。
④ 実装処理内容確認
・実装の全体像を把握。
・必要な修正箇所を大まかにリストアップし、実装の流れを頭の中で組み立てる。
⑤ 作業見積もり
・実装時間・PR作成・レビュー期間を含めて概算。
・イレギュラー対応も考慮し、見積もり × 1.5〜1.8倍が目安。
・PRレビューは2~3日間ほど?
⑥ 実装開始
・自分が後で見てもわかるように、コメントやメモを残しながら実装。
・1週間後の自分に説明できるコードを目指す。
⑦ テスト
・機能が正常に動作するか確認。
・成功ケースだけでなく、エラー時の挙動もしっかりテスト。
⑧ 反省、課題
・今後のために、反省点と改善策をメモ。
・反省、課題なしに成長は無い。
・技術選定は適格だったか検討。
・技術選定・保守性・再利用性・チーム工数削減の視点で振り返る。
・次に同様のタスクがあったらどのようにこなすか。 等
3.実装例:LaravelのRuleクラスをEnumクラスへ修正
Ruleクラスを、Laravel9(PHP8.1以降)で利用可能なEnumクラスへ置き換えるという保守性向上のタスク。
① 仕様確認
・Laravel9からEnumが正式サポートされたことを踏まえ、旧RuleクラスをEnumへ置き換え。
・目的:保守性・再利用性の向上。作業工数削減にも繋がる。
・ゴール:既存のRuleクラスの機能をEnumクラスへ移行し、影響範囲を含めて正常動作の確認。
② 変更箇所確認
・Ruleクラス → 削除対象。
・Enumクラス → artisanコマンドで新規作成。
・Requestクラス → バリデーションでRuleを使用している箇所を修正。
・Model → $castsの記述と、Rule依存部分をEnumに対応。
・Migration → enum型を利用するように修正。
③ 影響調査
・②で洗い出した各ファイルについて、処理の入口・出口を確認。
・他の機能との関連性をチェックして、影響がないかを確認。
④ 処理内容確認
・Ruleクラス:書き換えの後、削除(使用しないファイルは削除しないと以後のエラーにつながる)。
・Enumクラス作成:php artisan コマンドから作成、Ruleクラスのロジックを移行。
・Requestクラス:バリデーションで使用していたRuleをEnumへ修正。
・Model:$castsを記載、Ruleで使用していた削除箇所有。
・Migration:emum仕様へ修正。
⑤ 作業見積もり
・実装:2日(本来1日で終わるが、イレギュラー対応を考慮)。
・PRレビュー:2日。
・PRレビュー:2日。
・合計:6日(他業務と並行して対応する場合を想定)。
⑥ 実装開始
・④で確認した内容の通り
・前もって確認することで全体像が掴めるので作業効率アップ、抜け防止になる
⑦ テスト
・本プロジェクトはpostmanを使用しテストを実施。
・正常・異常時のレスポンスを確認。
⑧ 反省、課題
・【反省】PRレビュー修正のまとめ(指摘受けたことは以後しないようにまとめる)
・【課題】Enumクラスについて、再利用性が高く、今後バリデーションを伴う実装時に採用しチームの工数削減を提案する
・【課題】今後、同様のタスクをしょりするメンバーのためにも修正箇所、影響箇所をドキュメント化しチームの作業工数を削減する。
4. まとめ
今回は、タスク処理を「8つのステップ」に分解し、実例としてLaravelの修正タスクを紹介しました。
自分はNotionで下記のようなテンプレートを用いて、タスク終了後に必ずその日の作業を振り返る時間を取るようにしています。
この記事が、タスク管理や実装方針で悩んでいる誰かの参考になれば幸いです!