パーソルキャリア株式会社 テクノロジー本部 エンジニアリング統括部 サービス開発部 ※本資料は2023年3月時点の情報であり、当該部門における2023年新卒の研修教材です。
スクラム研修パーソルキャリア株式会社 テクノロジー本部 エンジニアリング統括部 サービス開発部※本資料は2023年3月時点の情報であり、2023年新卒の研修教材です。
View Slide
目次◉ 研修の目的とゴール◉ スクラムを知る前に◉ 主な開発手法について◉ アジャイル開発手法について◉ スクラム開発について◉ まとめ
研修の目的とゴール0
研修の目的とゴール皆さんが今後配属されるプロジェクトでは、基本的にスクラム開発の手法を採用して開発を行っています。(※)本研修を通して、スクラム開発の手法ならびにそれ以外の開発手法に関して学び、様々な開発手法を理解した状態を目指しましょう。※ プロジェクトによって、導入時期や実施形態に違いがあります
スクラムを知る前に1
チーム開発の難しさ個人開発であれば、仕様や設計などは自分が全て理解しているのでひたすら手を動かせます。ですが、チーム開発では複数人での開発になるためこんなケースが生じます。● Aさんにタスクをアサインしたのに実装された内容が要件と異なる● BさんとCさんの目的意識がずれていて議論がまとまらない● AさんのコードをBさんとCさんがレビューしたが、実装ルールが定まっていないため、レビューの観点が異なる● どのタスクの優先順位が高いかを把握しておらず、緊急性かつ重要度が高いタスクが後回しになってしまった
チーム開発する上で最も重要なことコミュニケーションを大事にしましょう!先程の例は、コミュニケーションをとっていれば大体防げていたはずです。● タスクが締め切りまでに間に合わなさそうだからリーダーに相談する● 今日は○○のタスクを着手します。と報告する。● 仕様に不明点があった場合は誰かに聞いて不明部分を解消する● 自分の認識が合っているか不安だったら先輩に認識合わせをお願いするコミュニケーションで解決できることはたくさんあります。報連相を怠ってしまうと様々な問題が発生するリスクが高くなるため、必要に応じてコミュニケーションを取るように心がけてください。
主な開発手法について2
主な開発手法◉ ウォーターフォール型開発◉ プロトタイプ型開発◉ アジャイル型開発
ウォーターフォール型開発一つ一つの工程を順番に進めていくことをウォーターフォール型開発と言います。V字モデルを用いて説明されることが多く、昔からある開発手法の一つです。開発の前に厳密な仕様設計を行い、段階ごとに工程を進めていくので後戻りができないことが特徴です。ITトレンド.「ウォーターフォールモデルとは?メリット、アジャイルとの違いを解説」.https://it-trend.jp/process_management/article/464-0012,(参照2023-04-10)
デメリット● 柔軟性に欠ける● ドキュメントが多い● ドキュメントの整備の時間が多い● ユーザーの意見を取り入れにくいメリット● 大規模な開発に向いている● PJ全体の計画が立てやすい● 進捗管理がしやすいウォーターフォール型開発
プロトタイプ型開発開発に入る前・開発の早い段階で試作品を作成し、依頼者・発注者がレビューをして認識齟齬がないかを確認します。その上でシステムの仕様を決めていくという開発手法になります。メリット● 早い段階で完成品のイメージ共有ができる● 認識のズレが回避できる● 不具合やバグの早期発見ができる● 品質が高いプロダクトにつながるデメリット● プロトタイプの開発のための工数が増える● 大規模な開発には向かない
アジャイル型開発アジャイル型開発は小さなサイクル(スプリント or イテレーション)で計画・開発・テストを繰り返して開発を進めていく手法になります。ウォーターフォール型開発とは違い、最初に厳密な仕様設計を行わずおおよその仕様や要求を取りまとめて開発を進めていきます。つまり、「あらかじめ厳密な仕様設計を行ったうえで全行程の計画を立て、実行していく」のではなく「開発の方向性・方針は定めた上で開発中に発生するあらゆる状況に対応できるよう柔軟に開発を進め、仕様変更に強くリスクを最小化していく」手法になります。
デメリット● PJ全体のスケジュールが読みづらくなる● しっかりコントロールしないと開発の方向性を見失いがちメリット● ユーザーとコミュニケーションを取りながら開発が可能なので、ユーザーの要求に最大限応えられる● 仕様変更や追加に柔軟に対応可能(※)● 開発者のモチベーションが高まる※あくまで仕様変更など柔軟に対応できるという事で、ゴールそのものを変えるという事ではありませんアジャイル型開発
アジャイル型開発アジャイルソフトウェア開発宣言(2001年に当時ソフトウェア開発手法分野で活躍していた17名の専門家によってまとめられた文書)◉ 顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供します。◉ 要求の変更はたとえ開発の後期であっても歓迎します。変化を味方につけることによって、お客様の競争力を引き上げます。◉ 動くソフトウェアを、2-3週間から2-3ヶ月というできるだけ短い時間間隔でリリースします。◉ ビジネス側の人と開発者は、プロジェクトを通して日々一緒に働かなければなりません。◉ 意欲に満ちた人々を集めてプロジェクトを構成します。環境と支援を与え仕事が無事終わるまで彼らを信頼します。◉ 情報を伝えるもっとも効率的で効果的な方法はフェイス・トゥ・フェイスで話をすることです。
アジャイル型開発アジャイルソフトウェア開発宣言 .「アジャイルソフトウェア開発宣言」 . https://agilemanifesto.org/iso/ja/manifesto.html,(参照2023-04-10)◉ 動くソフトウェアこそが進捗の最も重要な尺度です。◉ アジャイル・プロセスは持続可能な開発を促進します。一定のペースを継続的に維持できるようにしなければなりません。◉ 技術的卓越性と優れた設計に対する不断の注意が機敏さを高めます。◉ シンプルさ(ムダなく作れる量を最大限にすること)が本質です。◉ 最良のアーキテクチャ・要求・設計は、自己組織的なチームから生み出されます。◉ チームがもっと効率を高めることができるかを定期的に振り返り、それに基づいて自分たちのやり方を最適に調整します。
まとめ開発手法を 3つ挙げましたが、今後皆さんが携わるほとんどのプロジェクトでは、アジャイル開発であるスクラム開発を採用しています。次の章ではスクラム開発を含めた 3つのアジャイル開発の手法を説明します。
アジャイル開発手法について3
“アジャイル型開発では多くの手法がありますが、ここでは 3種類の手法を簡単に紹介します。
アジャイル型開発手法スクラム昨今で一番流行っている手法かと思われます。プロジェクトの管理に重きを置いた開発手法。チームワークを重視する特徴があります。詳しい説明は後述。エクストリーミング・プログラミング(XP)プログラマーに重きを置いた開発手法。ペアプログラミングやテスト駆動開発(TDD)、リファクタリングなどを必ず用いる手法になります。リーンソフトウェア開発(LSD)トヨタ生産方式をソフトウェア開発に適用したものになります。とにかくムダを省くということに焦点を絞っています。前者の2つと違い、固有のプロセスやプラクティスはありません。
スクラム開発について4
“なぜスクラム開発?
なぜスクラム開発?サービス開発部の行動指針ユーザーと最速で対話し続ける
なぜスクラム開発?エンジニアに重きを置いたXPやLSDではなく、チームに重きを置いたスクラム開発を採用することで強固なチームができ、ユーザーと最速で対話しつづけるための● 高速かつイテレーティブな開発● より良いサービス作りが実現可能となるため、スクラム開発を採用しています。
なぜスクラム開発?新規サービスの開発というのはエンジニアのみでは成り立ちません。● Business(営業や企画)● Technology(エンジニア)● Creative(デザイナー、リサーチャー)のBTCの3職種がチームとなり力を合わせて新規サービスを開発していくことで、より良いサービスを作ることができます。
“具体的な手法
具体的な手法Odd-e Japan.「アニメ版 スクラム概要図」 . https://www.odd-e.jp/scrum_primer/,(参照2023-04-10)
スプリント4週間以内で定められた繰り返しの期間のことをスプリントといいます。スクラム開発のメインとも言える概念です。期間内に、● 開発● スプリントプランニング● レトロスペクティブなど様々なイベントを行います。スプリントの期間: 1〜2週間が多い印象
“各役割に関して
各役割に関してプロダクトオーナー(サービスオーナーとも)● プロダクトの責任者(1プロジェクトに1人)● 開発の方向性を定め、プロダクトの価値を最大化することに責任を持つ● 要件をまとめ、プロダクトバックログを管理する○ 何を、優先順位は、いつまでにの観点を持つ● スプリント毎のフィードバックを行う● 開発チームに”相談”はできるが”指示”はできない○ オーナーが開発者にタスクを割り振るのではなく、相談や交渉によって定められます
スクラムマスター● スクラムの理論をチーム全員に理解、実践してもらうことに責任を持つ● スタンドアップミーティング(デイリースクラム)の実施を行う● スプリント計画ミーティングに参加し、次のスプリントで取り組むものを決定する● チーム内外の問題解消● スプリントレビューミーティング○ スプリントの振り返りを行い修正点や改善点の洗い出しを行う● プロダクトバックログのサポート各役割に関して
ステークホルダー● プロダクトの利用者やスポンサーなど、プロダクトに対して利害関係を持つスクラムチーム以外の人● スクラム開発ではプロダクトオーナーに対してのみ要件の変更などを伝えることができる○ 開発者に直接の指示は出せない● スプリントレビューに参加してフィードバックをすることもある各役割に関して
開発者● 開発プロジェクトで実際に開発を行う人たち● エンジニアのみならず、デザイナー、ライターなど様々な種類の人で構成される● チーム内での上下関係はなく、フラットな関係が望ましい● 特定のタスクだけというような事はなく、横断的なスキルが求められる○ 設計〜コーディング〜テスト〜運用・保守など各役割に関して
“スクラム開発の流れ
スクラム開発の流れOdd-e Japan.「アニメ版 スクラム概要図」 . https://www.odd-e.jp/scrum_primer/,(参照2023-04-10)
プロダクトバックログ要件に沿った機能開発や改善要素などの作業を記述したもの。関係者全員が参照し、現在のプロダクトの状況を把握することができます。優先順位が明確で何から着手するべきか一目でわかるようになっています。サービス開発部ではBacklogを使ったり、Zenhubを使ったりすることが多いです。
スプリントプランニング出席者:PO、SM、DEVPart 1スプリントでどのアイテムに着手するのか検討を行います。開発チームが選択し、POと認識を合わせて本スプリントで行うという合意をとります。Part 2選ばれたアイテムをどのように実装するのかという観点から分解し、透明化を図ります。≒ 工数などを見積もったりします。分析・透明化を図ったアイテムをスプリントバックログ として積み上げていきます。
スプリントバックログスプリントプランニングで選ばれたアイテム一覧。スプリントの対象です。この一覧をもとにスプリントがはじまり、開発チームが作業を行います。スプリントが始まったら新しくアイテムが追加されたり、変更される事はありません。
デイリースクラム毎日決まった時間に行われる15〜30分程度のミーティング。チーム全体の状況や問題点の報告、各人のタスクの進捗状況などに関してを確認する場。プロジェクトによって時間は異なりますが、午前中に行うことが多いです。
プロダクトバックログリファインメントプロダクトバックログのアイテムに対し、詳細の追加・見積もり・並び替えを行うこと。プロダクトオーナーと開発チームが協力して行います。実施するタイミングは決まっておらず、スプリント内のどこかで相談して行います。大体スプリントの5~10%の時間を割くと推奨されています。
スプリントレビューチーム全体で行われるスプリント終わりに必ず行うレビュー会。スプリントで作成したリリース可能な機能のデモを行いFBをもらいます。スプリントレビューの結果によってプロダクトバックログの修正なども行われます。
スプリントレトロスペクティブスプリントの最後に行われる振り返り会。機能やバックログではなく、チームやコミュニケーションの改善のために行われます。サービス開発部ではKPT法を用いてレトロスペクティブを行っているプロジェクトが多いです。KPT法でないといけないという事はなく、効率が良ければどんな方法でも問題ありません。
おわりに5
おわりにサービス開発部が関わっているほとんどのプロジェクトでスクラム開発の手法を採用しています。是非、ご自身でもスクラム開発に関して調べてみてください。また、スクラム開発が絶対一番!ではないです。組織やプロダクトによって最適な開発手法は異なります。本研修ではスクラム開発を重点的に説明しましたが、他の手法に関して調べてみると勉強になるかもしれないです。
“お疲れ様でした!