見出し画像

3日間でWebアプリ実装!?AWSのEBAからみる「アジャイル開発の超効率化」

2023年11月にAWS主催のEBAに参加し、学んだこと、気づいたことを、「アジャイル開発の超効率化」というテーマで執筆していきます。

みなさん、こんにちは。データビジネステクノロジー本部リサーチシステム1部の祁(キ)です。
私は2020年入社で、入社以来パネルデータ提供システムの運用、開発をしています。
パネルデータとは?気になった方はこちらのマガジンもチェックしてみてください。

最近一番の楽しみは、『The First Slam Dunk』のDVDの発売日です(この記事が公開された時点で、私はきっとこれを何回も観ているはずです!)


EBAについてざっくり紹介

EBAとは?

EBAは「Experience-Based Acceleration」の略語で、AWS社が主催する体験型ワークショップです。
通常のワークショップではデモ用アプリを作成して終了ですが、EBAでは参加者が開発・維持管理するアプリを対象としてモダナイゼーション(※)に向けた技術支援をAWS社から全面的に受けられるアジャイル開発型ワークショップとなっています。

モダナイゼーションとは?
最新のインフラ、アーキテクチャ、組織パターンを組み合わせて 現行システムをリファクタリングすることで、 ビジネスの俊敏性を最大化すること。

アプリケーションのモダナイゼーションを加速するEBA | Amazon Web Services ブログ
出典:https://aws.amazon.com/jp/blogs/news/practicing-modernization-with-eba-202311_1/

私を含め、今回のメンバーたちがEBAに参加した理由は、現行システムのモダナイゼーションに備え、AWSのコンテナ技術を利用した手法での実現に向けた試行錯誤を行うためです。

実際のスケジュール

ここで、今回私たちが参加したEBAの体制とスケジュールを簡単に紹介します。
開発メンバーはみな同じグループの所属ですが、このワークショップでは2チームに分かれ、それぞれ異なる機能のアプリを開発することになりました。ちなみにチーム名について紹介すると、猫好きのメンバーが多く、私が所属しているチームは「シャムチーム」とネーミングし、隣のチームは「ソマリチーム」としました。
また、開発チームとは別に、相談役とリーダー役を務める「コマンドセンター」が設けられています。

シャムとソマリ(https://www.canva.com/より生成)

最初の2週間は、
AWS Skill BuilderというAWSの学習サイトを利用して、サーバーレスとコンテナ開発の事前学習を実施します。

次に3週目から、
現行システムの仕様を確認し、EBAでの開発スコープの検討、要件・制約の整理を実施します。
スコープは、必ず完了させる「現実的な目標」と、余力があれば完了させる「ストレッチ目標」で定められています。
要件が固まったら、設計と事前確認、動作検証等を行います。私のシャムチームは、フロントエンドとバックエンドで役割分担し、設計を進めました。

最後の6週目で、
EBAのクライマックスである、アプリケーションを仕上げる3日間の「パーティー」が実施されます!
このパーティーでは、AWS社を含むすべてのEBA参加者が一堂に会し、タスク完了や課題解決の際に周りの人が手をたたいてベルを鳴らし、盛大に祝うという重要なルールがあります(祝う…?この効果については後述します)。

結果的に、アジャイル開発の手法を用いて、約6週間で2つのチームがプロトタイプのアプリを作成しました。

EBAのパーティーが一体どんなものか気になってきましたか…?

期待と不安だらけのパーティー準備

まず最初に、私たちはEBAについての説明会に出席し、これから開発が始まるプロジェクトのために、まず1つのアプリを作ってみましょう、と上記で紹介させていただいたような説明を受けました。
その際には、正直なところ、EBAへの参加に対してさまざまな感情が湧き上がりました。面白そう!という期待と、大変そう…きちんと取り組まなければならない、という不安がありました。

準備段階でコンテナサービスのハンズオンも参加しましたが、私自身の勉強不足を自覚しつつも、正直しっくりこない部分がありました。
私が担当したフロントエンド側の設計はすぐ終わり、Next.jsで画面だけを先に作っていました。
そして、気づいたらあっという間に、パーティー前夜が訪れていました。

ただ、前夜だというのに…
私はまだコンテナへのデプロイができない、という状態で苦闘していました。
所属したチームのリーダー・伊藤さんへ助けを求め、ビデオ会議をつなげて一緒に見てもらいましたが、デプロイの最後の一歩がいつまでも終わらず…。
「きっとどこかのステップで失敗しているはずなので、明日のパーティーでAWSさんのサポートでなんとかしましょう」と伊藤さんと話しました。
こうやって、たくさんの課題と不安を抱えたまま、パーティーの初日を迎えたのでした。

EBAパーティー当日を迎える

パーティーは秋葉原オフィスの大きな会議室で開催されました。
AWSの支援スタッフさんは、営業と技術サポーターを含め、7、8名参加いただきました。
簡単なキックオフの後、1回目のDaily StandUpが始まりました。
2チームがそれぞれ進捗状況を説明し、課題等を全体で共有する会です。
私もその場で前夜に起きていた「コンテナへのデプロイが完了できない」ことを泣きつきました。
全体への共有が終わったら、チーム内の共有と確認の時間になります。私のデプロイ問題について、AWSのスタッフさんはしっかりと状況を聞いていただきました。
その後は各チームの手を動かす時間です。

パーティーの現場

さきほどのDaily StandUpで私が泣きついたからか、すぐにAWSのスタッフさんが駆け寄ってくれ、私のデプロイ手順を見直してくださいました。Dockerファイルでの記載に誤りがあることをすぐに指摘してくれました。その後も一緒にデプロイを試していましたが、すぐにはうまくいかず…。
 夕方になり、みなさんがぞろぞろと帰宅されている頃もまだ解決できず、落ち込んでいたところに救いの手を差し伸べてくれたのは、ソマリチームでした。ELB(AWSが提供しているロードバランシングサービスの総称)の設定を見直して、再度デプロイしてみたら、やっと成功したのです。ステータスの状態も、神聖な緑色になりました。
2日目のDailyScrumで、解決できた旨を伝え、祝いのベルが鳴りました!

チーム内確認の様子

2日目も、山ほどの問題に遭遇し、AWS社のみなさん、当社のコマンドセンターのメンバー、ソマリチームに何回も質問しました。悩む間もなく、目の前のタスクを進める事以外は考えられないほど忙しくなりました。

そして3日目、私の担当した画面で利用する一部のAPI機能の実装が順調でなく、このままではほかの機能との接続ができず、最後のデモ発表ができない状況を危惧していました。
午後、チームリーダーの伊藤さんに、「最悪の場合、APIでの疎通部分が実装できなかったら、デモ発表時にどうしますか?」と確認した際に、
伊藤さんから、「最悪の場合、臨機応変にプレゼンします!」と回答をもらえました。このことが私の安心感につながりこの後冷静にタスクを進められました。ただ、その心配もつかの間で、成果発表時の直前に試してみた結果、先ほどまで苦戦していたAPI疎通が確認でき、連携は成功しました!

反省点などいろいろあるものの、パーティー後の振り返りの時間でたくさん考え、共有しました。
EBAの振り返りは、Keep、Try、Problem、Next Actionを中心に付箋で書き、巨大なホワイトボードに貼ります。もちろん、感謝の言葉もたくさん書いて、貼りました。

振り返り:ペタペタ

AWS EBA参加から学んだ「アジャイル開発の超効率化」のポイント

3日間で、AWSコンテナでアプリケーションを実装するのは、普段の開発業務では稀なことだと思います。
なぜ、EBAではできたんでしょうか?以下は、私の考えた4つのポイントです。

  1. AWSさんの緻密なサポート

  2. アジャイルな組織体制

  3. 参加者の時間と空間の共有

  4. 達成感の最大化

1,2に関して、
言うまでもなくAWSさんの助力は巨大です。準備段階においては、質疑応答に対応していただき、コンテナ開発のハンズオンを主催していただきました。パーティーでは、どのような質問でも受けてくださり、とても心強かったです。7、8人のAWSサポーターが常に周りにいる贅沢感!
それだけでなく、ソマリチームからの助言にも助けられました。それはEBA参加メンバーのアジャイルな組織体制が決め手だったと考えています。
よくあるアジャイル開発チームでは、PMとPLの下に各機能の開発メンバーがいるイメージですが、EBAでは、PM、PLの立場に近いコマンドセンターが1つの独立したチームとして存在し、その下に2つの独立した開発チームがあります。そのような体制のメリットとしては、実装段階におけるほとんどの意思決定が開発チーム内でできます。パーティーの最終日、「もしこの機能の実装が間に合わなかったら?」という質問をチームリーダーへ投げた際に、即時に意思決定ができました。また、ソマリチームがELB設定について教示していただいたように、1チームが立てた道標は、もう1つのチームを導けます。

出典:https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_What-is-Modernization_0430_v1.pdf

3,4に関して、
このようにチーム内外のコミュニケーションが迅速・正確にできたのは、同じ空間で行われたためと思います。
入社してからほとんどリモートワークだった私は、はじめて本格的に「現場」を体験できました。
同じ空間で作業することの空気、参加者の声と表情、パーティー初日にはとても「重く」感じていました。が、作業に没頭していくうちに、チームメンバーが隣にいる安心感と、進捗のある度に鳴ったベルと拍手は、初日に感じた重さを払拭しました。
ベルと拍手は、開発現場を白熱させて、お祭りのようにテンションを向上させる効果がありました。承認欲求と達成感を最大化させることで、モチベーションが上がり、タスク消化のサイクルもまわりやすくなりました。1個のタスクの完了は、次のタスクの完了へ転がっていきます。
以上4点は、私がAWS EBAから学んだアジャイル開発をより一層効率化させた方法です。AWSが主催したEBAをきっかけに社内で、なんなら私たちで、EBAで学んだ開発のノウハウを実施することも可能なのではないでしょうか?

最後に、コロナ入社世代の脱リモート化に向けて

本題から逸れてしまいますが、私は入社以降、リモートワークに馴染み深い社員の一人です。
去年から週1回のリズムで出社していますが、今回のEBAをきっかけに、同じ空間でチームメンバーと顔を合わせ、会話しながら一緒に作業することは、こんなにも楽しいことだと感じました。
出社にはまだ不慣れな部分がありますが、重いダンベルを軽々あげられるようになる、つまり「重さ」を「強さ」へ段々と転換していく筋トレのように、少しずつ出社に慣れることで、こういった対面で仕事をするメリットを最大化していきたいです。

この記事が参加している募集