見出し画像

「アジャイル開発」分かりやすく説明します!

皆さん、こんにちは!
ドミトリーです。

アジャイル開発って聞いたことがありますか。
今多くの開発プロジェクトにおいてアジャイルという方法が採用されています。日本では、よくご存じない方もいらっしゃるかもしれません。

今日は、皆さんに、このアジャイル開発について、弊社CHI Softwareの実際の経験もいろいろ紹介しながら、お話したいと思います。

画像1


アジャイル開発って、簡単に言うと何?

アジャイル開発については、既にいろいろな説明がされています。私にとってそれは、「柔軟に、そして効果的に開発すること」です。
アジャイル ― それは一般的なことばなのですが、簡単に次のようにも表現できると思います。「開発チームが、より効率よく考え、決断し、働けるようにするための方法論」であると。

どのようにアジャイル開発を始めることができる?

結構シンプルです。実際には次のようなステップを踏みます。
お客様がビジネスのアイデアや、それに似たものを私たちに示します。
私たちはお客様のご要望を分析し、また市場や、研究フェーズなどを調査します。
お客様と相談しつつ、分析結果を文書化し、デザイン化します。
そして、それを製品化します。
以前あったことですが、あるお客様がひとつの画面のデザイン案を送ってこられました。そして仰るのには、「既存のものと一見似ているが、他の製品とは差別化されるような、特徴的な魅力あるものにしたい」と。
私たちは製品のコンセプトを体現するいくつかの案を作成し、出資者様のご希望によってそれに何度か変更を加え、結果的に、開発を実現しリリースすることができました。
私たちは、お客様の技術的課題に対し、それを評価し、お客様とよく相談し、アイデアを具現化していくのです。
これは、事前に決めた書類内容にきちんと沿う形で開発できた、理想的なケースであったと思います。全体の開発作業がいくつかの細かいイテレーションに区分されるのですが、スプリントを2回繰り返した頃には既に、お客様は完成アプリを部分的に見ることができました。その後アプリはロジックやナビゲーションが足されていき、設計通りとなりました。結果的に、遅延なく予算通りに製品を納品することができました。
また、例えば、お客様が既に完成されたアプリをお持ちだけれども、そこに不具合があったり、機能を追加したい、等といったご要望があるケースもあります。そのような場合、私たちはソースコードを分析し、リファクトリングに掛かる時間を概算し、それをお客様にご相談し、その上で開発に取り掛かります。こうした場合は、技術的な文書は必須ではありません。作業過程で機能が適応されたり変更されていくことになるのです。

また、あるプロジェクトでは、私たちは既存の製品を使って、お客様のチームに入って作業を行いました。コードを精査し、プロジェクトを練り、既存製品のロジックを研究するのに2日間を費やしました。
その後で、課題解決に掛かる時間を正しく計算し、開発に取り掛かり、無事、製品を更新し改善させることに貢献できました。

こうした開発過程において、アジャイルは、柔軟に、どんな変化があっても支障なく対応することを可能にしてくれるのです。

画像2


アジャイルの利点や特徴は何?

柔軟性と適応性です!アジャイル開発において、お客様は目標と課題を提示します。我々開発チームはそれをいかに解決し達成するかを考えます。
チームはゴールに到達するための道を変えることもあります。一番効果的な方法を常に探りつつ、お客様の計画を実現するために努力するのです。その過程で、お客様が常にプロセスを把握できるようにしています。
アジャイルにおいては、お客様のビジネス目標が最も大切であり、それは時に、当初の条件や文書などに優先することもあるのです。
アジャイルの一つの特徴はプロセスの順序です。それは、分析段階から開発段階へ移行していく秩序ある流れではありません。アジャイルは、あるサイクルをもって繰り返されるスプリントで構成されています。つまり、常に、何かが具現化され何かが改善されていくのです。イテレーションがある度に、お客様はそれを確認し、そこにどんな変更が必要か、何を追加しなければならないか等、フィードバックを下さいます。当初の文書とは違っていたり、文書で全く触れられていない、ということもあり得ます。アジャイルはそれでも問題ありません。
私たちはお客様のご希望に寄り添うことを第一義とするのです。その姿勢は、開発の最終段階にあっても変わるものではありません。
当初は明確な方法論無く始まってしまったプロジェクトにアジャイルを導入した、という経験もあります。これはとてもカオスなプロジェクトでした(笑)。様々な課題が互いに関連していなかったのです。言い換えると、お客様は、プロジェクトを進展させる明確なビジョンをお持ちではありませんでした。Scrum(アジャイル手法の1つ)を導入することによって、私たちは喫緊のスプリントにおいてどの課題が優先されるべきものかを明らかにしましまた。これらの課題は、いくつかのユースケースに関連していたのです。私たちの努力の結果、お客様は製品の既に完結している機能を見出すことができ、開発をうまく進めることができるようになりました。

画像3


開発のスタイルを選ぶ際、覚えておいたほうがいいことは?

アジャイルでは、開発プロセスの全体を、複数の短期的な作業に分割します。分割された作業を仕上げた後は毎回、小規模ではあるけど作動するその一部分をお客様にご覧頂き、その反応を確認します。
何かしらの変更を加えなければならない場合でも、この段階であれば、簡単に、素早く対応することができるのです。
しかし、アジャイルではなく、以下のような手法を採ると大変です。例えば、新しい製品をゼロから開発するため、たくさんのリソースを投入し、完成させ、それをお客様に受領して頂き、しかし、それがお客様のお気に召さなかったら!こんなケースがあり得るのです。これでは、費やされた全ての努力、時間、そしてお金が無駄なものになってしまいます。
私たちが製品を開発したあるスタートアップのプロジェクトで、お客様が出資者を2度変えられた、というケースもありました。それぞれの出資者が製品について異なるご意見をお持ちでした。しかし、私たちの構築したアーキテクチャは、当初から変更が発生してもそれに耐え得るように設計されていましたので、難なく対応することができました。ただ、私たちのデザイナーはとても苦労していましたが(笑)。

画像4



アジャイル開発が効果的に機能しているかどうか、どのようにチェックする?

使える製品になっているかどうか。それこそ生産性と向上性を示す大切なバロメーターです。プロジェクト全体を通じて、開発者とビジネス担当者は、毎日一緒に作業する必要があると思います。さらに、お客様と開発者とユーザーが、一定のリズムでコミュニケーションをし、開発過程を支えていく必要があるのではないでしょうか。
直接コミュニケーションを行うことこそが、お客様とであれ、開発チーム内であれ、最も実務的で効果的な情報交換の方法であると思います。
私たちは平素より、以下のように作業するようにしています。お客様とSlackを使ってリアルタイムで交流し、また、ZoomやGoogleMeetで定例のオンラインミーティングを行います。また、全ての電子文書がチーム内で共有されるようにします。また、私たちが使うバグ・タスク追跡システムに、お客様もアクセスして頂けるようにして、チェックして頂いています。

画像5


忘れてはいけないことはある?

こんな冗談があります。「プロジェクトの最初の90%はさほど恐ろしくない、残りの90%ほどは。」
面白くもあり、悲しくもあるよくある事実です。しかしこれは予定をたてる際にいつも言えることです。製品の要件についての変更がある場合、開発プランにも変更が余儀なくされるもの。要求の変更が、開発期間や予算、その他の重要な項目にどう影響するのか、開発に関わる全ての参加者が、よく理解している必要があると思います。

画像6



アジャイルのチームとはどんなチーム?

プロジェクト実現には、モチベーションの高いプロフェッショナルのチームが必要です。仕事を完成させるために、私たちは、開発者全員に全幅の信頼を寄せながら、考え得る全ての必須条件を提示し、全面的に彼らサポートをします。
コードやアーキテクチャの質に常に注意を払うことでプロジェクトの柔軟性を高めることができます。最高のアイデアや開発要件、また最高のアーキテクチャや技術的ソリューションが生まれるのに、一番大切なのは、やはりチームが団結していることではないでしょうか。
私たちは常に効率性を向上させる方法を探り、必要に応じて、作業方法を見直したりしています。
そしてチーム内に、必ずプロジェクトの技術リーダーを据えて、開発者たちの作業が高いレベルで行われるように心掛けています。

画像7


今回のブログでは、アジャイルにご興味をお持ちの皆さまに、アジャイルとは何か、どうやったら始められるのかなどをお伝えしたくて、実際の経験を交えながら書かせて頂きました。
いかがでしたでしょうか。もし、少しでも有益な情報がありましたら、大変うれしく思います!

この記事が気に入ったらサポートをしてみませんか?