NTTドコモR&Dの技術ブログです。

入社から1年間で「アジャイル開発」について学んでみた

はじめに

NTTドコモ サービスデザイン部の伊山と申します。私は、ahamo契約者向けのアプリであるahamoアプリの開発業務に従事しております。
本記事では私が1年目社員だった22年度から23年度前半にかけて取り組んでいたアジャイル開発についての学びの体験談をご紹介いたします。
これからアジャイルを学ぶ人へ少しでも参考になれば嬉しく思います。

学びのきっかけ

現在、私の所属するサービスデザイン部では様々なサービスにおける開発手法の一つとしてアジャイル開発の手法を取り入れており、ahamoアプリでも開発手法としてアジャイル開発を取り入れています。ahamoではその中でも主流の開発手法である「スクラム」の手法を取り入れています。
私の参画時はチーム立ち上げからすでに数年たち比較的チームが成熟してきている状況でチームとしてはスムーズに開発を進められている状況でした。一方で、私自身は入社して初めてアジャイル開発に触れたため、アジャイル開発における各ミーティングの位置づけも担当者それぞれの役割も少し説明いただいた内容をぼんやりとしか理解しないまま業務がスタートしました。
「このままでは上手くチームのスピードについていくことができない」と思った私は、先ずはアジャイル開発の基礎から学ぼうと決意し、学習に取り組み始めました。

「アジャイル開発」とは何か?

アジャイルとは?

アジャイル(agile)とは、「素早い」「機敏な」という意味です。アジャイル開発は、システムやソフトウェア開発におけるプロジェクト開発手法のひとつで、システムを大きな単位で区切るのではなく、小さな単位で実装や試験を繰り返して開発を進めていきます。
従来のウォーターフォール開発が一つ一つの開発工程を完了させて進めていく方法であるのに対し、アジャイル開発は「反復」と呼ばれる短いサイクルを、開発工程の「計画」「設計」「実装」「テスト」で繰り返し素早くローンチし、継続的にアップデートを続け開発を進めていく方法です。そのためアジャイル開発は従来の開発手法に比べ開発工程を一通りクリアする期間が短いことから、アジャイル(素早い)と呼ばれています。

「アジャイルソフトウェア開発宣言」とは

アジャイルソフトウェア開発宣言は2001年に著名な17名のソフトウェア開発者による議論を通し生み出された、アジャイル開発をするにあたって原点となる考え方がまとめられたものです。アジャイルの本質となる考え方がすべてここに書かれているため、アジャイル開発を採用するチームに参画する際、ぜひ初めに頭に入れていただきたい内容です。

アジャイルソフトウェア開発宣言 (出典https://agilemanifesto.org/iso/ja/manifesto.html

「スクラム」とは

アジャイル開発の代表的な手法として、「スクラム」があります。
スクラムとは、開発工程を繰り返して進めるアプローチで、「スクラムチーム」と呼ばれるチームを組み、「スプリント」と呼ばれる1~4週間の短い期間の工程を繰り返し、開発を進めます。チーム間のコミュニケーションを重視している点が特徴で、ラグビーで肩を組んでチーム一丸となってぶつかり合うフォーメーションである「スクラム」が由来です。
スクラムはアジャイル開発における手法の一つであるため、根本的な考え方はアジャイル開発と等しいですが、アジャイルでは「イテレーション」と呼ばれる言葉が、スクラムでは「スプリント」と呼ばれるなど、言葉遣い等に少し差異があったりします。

勉強方法と資格取得

ここからは「勉強方法」や「資格取得」についてご説明していきます。具体的に取り組んだ内容としてはUdemyや書籍を通した学習と資格取得を通した学習です。
学習順序としてはまずは「Udemyの講座や書籍などを通した全体概要の理解」、次に「資格取得を通した知識の定着」を意識しながら学習を進めていきました。
完全な初学者の方は上記順序がおすすめではありますが、個人の習熟度や目的に応じて、優先度をつけて学習を進めていただければと思います。
学生時代とは異なり、なかなかまとまった時間を取って勉強するのが難しかったため、隙間時間で少しずつ進められるよう心掛けました。Udemyでは、2.0倍速まで自由に速度を変えられるので、自分の聞きとれる速度に応じて早めることで、わずかな時間でも学習しやすかったです。
また、人間の記憶は繰り返し学習により定着するものなので、動画視聴や参考書などを何度か繰り返して学習しました。繰り返して学習することにより、長期的に頭に定着させることができたと感じています。

Udemy

まず、Udemyの講座を通した全体概要の理解に取り組みました。
私が受講したコースとしては、下記二つです。
現役シリコンバレーエンジニアが教えるアジャイル開発
【アジャイル開発】スクラム基礎講座
どちらも、初学者向けの講座となっており、アジャイルの基礎から説明があるため、まずはこれらの講座を通して基礎的な知識の習得や概要の理解に取り組みました。

書籍

Udemyの学習と並行して、アジャイル開発(特にスクラム)に関する基礎的な知識を身に着けることを目的に書籍での学習を行いました。
ここでは私が読んだ本2冊について簡単にご紹介するので書籍選びの参考にしていただければと思います。

① アジャイル開発とスクラム~顧客・技術・経営をつなぐ協調的ソフトウェア開発マネジメント(読了目安時間:150分)
ソフトウェア開発手法「アジャイル」と、その手法の1つである「スクラム」の体系的な解説書です。「スクラム」について体系的に学べる本なので、スクラム開発に関して基礎からこの本を通して学びました。

② プロダクトマネジメント―ビルドトラップを避け顧客に価値を届ける(読了目安時間:120分)
こちらは顧客に価値を届けるプロダクトを作り出すプロダクトマネジメントについて学ぶ本です。POの目線として重要である、企業がビジネス目標を達成しながら顧客の課題を解決する方法をこの本を通して学びました。

アジャイルソフトウエア開発技術者検定試験Lv.1

続いて資格取得を通した知識の定着に取り組みました。
初めに受ける資格としてアジャイルソフトウエア開発技術者検定試験Lv.1を選択しました。
受験費用が10,000円(税別)と他の資格と比較して安いこと、初心者がアジャイルチームに参加するための基礎的な知識を身に着けられるようなレベル感であることなどから、何か手始めに取得するには適した資格かと思います。
学習としては、公式テキストである『アジャイル検定公式テキスト アジャイルソフトウエア開発技術者検定試験 レベル1対応(アジャイルソフトウェア, 2017, リックテレコム)』の読み込みとQiita記事の「アジャイル用語集」を読み込み、全体的な概要の理解と用語に対する正確な理解ができるよう勉強を進め、資格を取得しました。
この資格を取得するだけでもかなり知識の理解と定着が進むのではないかと思うのでおすすめです。

認定スクラムマスター(Certified ScrumMaster®、CSM®)

私はAGILE BUSINESS INSTITUTE社のコースを受講しました。
2日間の研修を通して講義と実戦形式の演習をこなしていき、講師より受験資格が与えられると認定試験が受験でき、50問中37問正解で合格となります。
研修はグループによる演習の時間が多くを占めており、チーム活動におけるコミュニケーション能力が求められる印象でした。(チームでのコミュニケーションが重視されるスクラムらしいなと思いました。)
認定試験については、研修の講義の中で重要とされるポイントを教えてもらえる機会や、模擬テストの時間があるので、そこでのポイントを整理した上で試験に臨むとよいかと思います。

認定プロダクトオーナー(Certified Scrum Product Owner®、CSPO®)

認定スクラムマスター同様にAGILE BUSINESS INSTITUTE社のコースを受講しました。
講師の先生曰く、認定スクラムマスターの上位資格という位置づけらしいので、もし認定スクラムマスターも取得する予定がある場合は認定スクラムマスター⇒認定プロダクトオーナーの順で受講するのがおすすめです。
認定スクラムマスターと同様にグループワークが中心の研修で、スクラムにおけるプロダクトオーナーの役割についてフレームワーク等を活用して実践的に学ぶことができました。
こちらの資格は、認定試験は無く、研修を完遂し講師からの認定を受けることにより認定資格を取得することができます。

実践に活かす

ここまで様々な学習について紹介してきましたが、アジャイルはあくまで開発における行動様式なので、学んだことを実際の業務に活かして初めて意味を成すものです。
チームで実践していく上で特に大切な心掛けは以下二点だと思っています。

① 自分たちのチームに応じたプロセスを試行錯誤しながら設定していく
アジャイル開発には「スクラム」や「カンバン」など様々な手法がありますが、これらは手本の一例に過ぎず、チームにとって100%正解である手法は無いと考えています。そのため、チームの状況や変化に応じて、自分たちのニーズに合った手法を取り入れていくのが良いと思います。 また、プロセスを設定していく過程でチームでの会話の時間を十分に取っていくことも大切です。

② コミュニケーションを重視し、チーム力を高めていく アジャイルではチームでのコミュニケーションを特に重視している手法であるため、スクラムマスターを中心にメンバー同士でのコミュニケーションをしっかりできるように意識して体制を整えていく必要があります。また、個々の優秀性や生産性ももちろん大事ですが、チームでの成長や生産性を高めていくにはどうすべきかを意識しながらチームとしての力を高めていくことが重要です。

上記2点を意識し、チームでの実践にぜひ取り組んでいただければと思います。 参考情報として私のチームで意識していることとしては、「毎スプリント後の振り返りの時間を通してチームでのKPTで出てきた改善アイデアをどんどん取り入れながら日々改善に取り組むこと」や、オンライン中心のチームでのコミュニケーションを円滑に進めていけるよう「常に会議ツールをつなぎ続けチームでの会話がしやすくなる工夫」や「スクラムイベントの際などに時々対面でミーティングを行うことでチームの仲を深める工夫」などを意識して開発に取り組んでいます。

最後に

この記事を通し、初学者向けにアジャイルの概要や学習法をご紹介してきました。
一連の学習を通して、私はスクラムチームの中でスムーズに業務に入っていけるレベルの基礎知識が身についたと感じているので、同じような悩みを抱えている方にはぜひとも学習に取り組んでいただきたいと思っています。
勉強法に関しては、人によって合うやり方合わないやり方があるかと思いますが、初学者向けの経験談として少しでも参考にしていただければ嬉しいです。
最後まで読んでいただき、ありがとうございました。