投稿日
入社2年目SEの挑戦:要件定義から保守まで行ったシステム開発の奮闘記
もくじ
- はじめに
- プロジェクト概要と自分の役割
- 想定読者
- 役割と開発体制
- 全工程を担当して見えた景色
- 各工程での課題と乗り越えた工夫
- 要件定義
- 課題1: 全くまとまらない要件
- 課題2: ゴールが見えない成果物作成
- 設計・製造
- 課題1: 「察して」は通じない。設計書の曖昧さが品質低下を招く
- テスト
- 課題1: 原因不明のエラーでテストが全停止
- 運用・保守
- 課題1: 仲間は旅立ち、これからは1人でタスク管理
- 若手チームメンバーへのインタビュー
- 配属当初の期待とギャップ
- 開発現場での苦労とギャップ
- 有識者が居ない中どのように実装を進めたのか
- 製造フェーズでも続いた要件変更。どうすれば防げたか?
- エンジニアとしての成長実感
- 未来のエンジニアへのメッセージ
- おわりに
はじめに
プロジェクト概要と自分の役割
想定読者
- キャリアを歩み始めた若手のエンジニア
- IT業界を志望する学生・就活生
役割と開発体制
- 役割:開発担当者として、主に要件定義から設計、開発、テスト、リリース、さらに運用・保守まで、幅広い工程を担当。
- 開発体制:開発チームは変動もあったが、主にリーダー1人、私を含む入社2年目の若手が3人、協力会社さん1人のメンバーでの体制。
全工程を担当して見えた景色
各工程での課題と乗り越えた工夫
要件定義
課題1: 全くまとまらない要件
解決策:要件をまとめる上で行ったこと
課題2: ゴールが見えない成果物作成
解決策:成果物の目的や意味を知り、チームに還元する
設計・製造
課題1: 「察して」は通じない。設計書の曖昧さが品質低下を招く
解決策:読み手の前提知識を考慮し、曖昧さを避ける
改善前
- 毎日設計書に関する質問が来ており、細かい部分の説明の対応が必要となる。
- 処理で考慮が漏れていることがあり、意図しない動作でエラーとなることがたびたび発生してしまっていた。
改善後
- 誰にでも分かる設計書を書くことで質問対応などが減り、処理の認識齟齬によるエラーが削減された。
テスト
課題1: 原因不明のエラーでテストが全停止
解決策:どうしようもない時は人を頼る
運用・保守
課題1: 仲間は旅立ち、これからは1人でタスク管理
リリース後、システム開発は運用・保守フェーズに入り、それまでの工程ほどの人手は不要となったため他の若手メンバーが異動し、実務は主に私が担当する2名体制となりました。リーダーはサポートが中心のため、エンハンス対応や不具合・障害対応、引継ぎなどを限られた工数で効率よく進める必要があります。工数整理やスケジュール管理などを自分で進めるのは初めてで戸惑うことも多く、納期や障害対応との両立に苦労しました。
解決策:培った経験が力になる
1人で多様な業務を抱えることに最初は大きな不安がありましたが、これまでの開発プロセス全体を通じて培った技術知識やタスク管理、業務効率化の経験がここで大いに役立ちました。例えば、タスクごとに優先度を明確にし、対応期限をリスト化することで、業務全体を俯瞰できるようになりました。また、外部連携における障害対応については、以前は自分ひとりだと迷うことばかりでしたが、これまでの経験を積み重ねる中で、関係するチームに対し積極的に情報共有し、障害の原因を自分で切り分け、必要な対応策を考えることにより実際に1人で解決できるケースが増えてきました。
これまでの開発全体の経験を通じて、限られたリソースの中でも安定した運用・保守を実現できる力が身についたと感じています。
若手チームメンバーへのインタビュー
- 秋山さん: 大学時代は情報系を専攻。研修ではJavaの基礎を学び、前のプロジェクト配属後にReactを用いたフロントエンド開発をしていた。
- 平林さん: 大学時代は文系でITに関しては完全未経験。基礎研修および前のプロジェクト配属後にJavaでバックエンド開発をしていた。
配属当初の期待とギャップ
菅: 今回システム開発に参画するとなって、当初の気持ちと参画後でギャップがあれば教えてください。
平林: 配属当初は全てが初めてだったので、学べる機会が多そうですごく楽しみでした。1年実際に開発してみて、自分が学びたいこと、やりたいことをやらせていただきました。しかし、初めての工程で知識も全くない状況でしたので、自分が思っていたよりもできないことが多く、特に要件定義では他のメンバーに頼ってばかりで落ち込むことが多々ありました。
秋山: 私は設計工程から参画したのですが、業務がかなり立て込んでいることを聞いていたので、多少の不安がありました。実際に参加してみると、想像通り多忙な日々が続きましたが、設計自体はそこまで困難ではありませんでした。ただし、要件の変更が度重なり、手戻りによる作業の増加が続いたため、その点で苦労することが多かったです。
開発現場での苦労とギャップ
有識者が居ない中どのように実装を進めたのか
菅: お2人は私とは別の機能をメインで担当していましたが、開発ではどんな苦労や課題がありましたか?
秋山: 画面実装の際に私たちが適切に※省力化コンポーネントを使用できておらず、今後の保守性を考慮しこれまで作っていた実装コードを全て見直す必要が出てきました。そもそも実装メンバーはほとんど経験がない2年目2人とフロントエンドの経験はあるが省力化コンポーネントについては全く知らない協力会社さん1人で、有識者が少なかったです。
※省力化コンポーネント: React開発の実装量を大幅に削減するコンポーネント
菅: お2人が担当した機能の画面は2か月で30画面以上も実装する必要がありましたよね。すごく大変な状況だったと思うのですが、省力化コンポーネントについて知見が無い中どのように実装を乗り越えたのですか?
平林: よく出社している先輩上司とコミュニケーションを取る機会が多く、先輩にフロントエンドの実装で悩んでいると相談したところ、省力化コンポーネントを正しく使えていないことに気付けました。省力化コンポーネントの開発者の方に相談をし、省力化コンポーネントの適切な使い方を教えていただき、上手く実装に組み込めない時に助けてもらうことでなんとか乗り越えることができました。
秋山: 平林さんが主体的に動いてくれたのに加え、チームの協力会社の方もフロントエンドの有識者だったので、行き詰まったときは皆で頼りながら解決していきました。
菅: どうしようもない時は周りに助けてもらうことが大事だと、私も今回のプロジェクトを通して学ぶことができました。実際に省力化コンポーネントを適用してみてどうでしたか?
秋山: Reactの知識だけでは不十分なので学習のコストはあると思いますが、コードの量がかなり削減されてその後の保守性も向上しました。
製造フェーズでも続いた要件変更。どうすれば防げたか?
平林: PL、PM、SOを交えて集中的にシステム要件を整理し確定したのにも関わらず、外部システムの都合に伴う要件や設計の変更が製造工程に入っても相次いで起きて手戻りが多かったのも大変でした。
菅: なぜそのようなことが起きてしまったのですか?
平林: 私たちはフロントエンドを開発し、グループ会社の他チーム(以降、単に他チームと表記)にバックエンドや外部システムを開発してもらっていました。そのため、画面イメージなどを他チームの方々とも会議を通じて何度も擦り合わせていました。しかし、その会議には外部システムの1つを担当している方が参加しておらず、その画面イメージが相手に上手く伝わっていなかったことが原因で設計変更が度々必要になりました。
秋山: 私たちとしても業務知識や他チームの方々の詳細な体制、外部システムについての仕様などをしっかり理解できる労力があれば良かったなとは思います。
菅: 忙しい時期ではありましたが、せめて他チームの体制を正確に理解し、最初から関係者全員を巻き込んで会議ができていれば今回のようなことは起こらなかったかもしれませんね。
平林: 本当にそう思います。
エンジニアとしての成長実感
菅: 成長したことや、得られた学びについて教えてください。
平林: 1つ目は様々な関係者とコミュニケーションを取る機会が多く、相手に伝える能力をかなり磨けたと思います。最初はチーム内でのコミュニケーションにも苦戦していましたが、多くの方々との会議や情報共有を通して大きな学びを得ることができました。2つ目はフロントエンドの開発について力を付けることができたことですね。次のプロジェクトでも自走して開発を進められそうです。
菅: コミュニケーションに関して、PM、SOといった上位者の方々との会議に関しても平林さんが主体となって資料を作り、会議を進めていたところを見てものすごく成長しているなというのを私も近くで感じていました。
秋山: 技術的な話で言うと、TISが発信している「省力化コンポーネント」という技術について触れて学んだほか、ウォーターフォール開発や初めて経験する工程にも携わり、多くのことを学べました。私がプロジェクトの上位者になった際の視点に立って課題等も多く見つけることができたので良かったです。ビジネススキル面では、今回のプロジェクトは多種多様な関係者に自分から情報を発信していく必要があったので、相手の前提知識を考慮しどのように伝えるかを考える機会が多く勉強になりました。
未来のエンジニアへのメッセージ
平林: 私はITに関して完全未経験で入社し、初めは右も左も分からず大変でした。その中でも、知らないことに興味を持って挑戦していくことでその分野について知ることができ、自分の大きな成長に繋がったので、どんどん新しいことに挑戦していってください。
秋山: 私は学生の頃からITに関する知識を学んでいたのですが、そのせいか自分でやり遂げたいという思想が強く人にあまり頼らないことが多かったです。自分で抱えすぎてメンタルが参ってしまいそうなこともあったので、困ったら無理せず人に頼ってください。
