新卒2年目がANGELDojoに参加して学んだことをお話します

#目次
[1.概要](#1-概要)
[2.はじめに](#2-はじめに)
[3.コンテンツ](#3-コンテンツ)
[4.作成したサービス](#4-作成したサービス)
[5.学んだこと](#5-学んだこと)
[6.おわりに](#6-おわりに)

#1-概要
AWS主催の内製化支援に向けたトレーニング「ANGEL Dojo」に弊社ARIが参加しましたので、
そちらの内容や学んだことを共有させて頂きます。

#2-はじめに
###ANGEL Dojoとは？
>ANGEL Dojoでは次世代を担うAPNの若手のエンジニアの方々に、擬似プロジェクトを通じてアジャイル、DevOps、モダンなアプリケーション開発などのクラウドネイティブな手法と、様々なInnovationを作ってきたAmazonの文化と考え方を体験いただくことで、お客様にクラウドの価値を100%届けるための基礎的なスキルを実践を通して身につけていただきます。参加者の皆様はここで培ったスキルと、各パートナーの皆様がお持ちのそれぞれの強みを活かすことでお客様のビジネスを成功に導き、日本のITや経済をさらに成長させる主役、すなわち「APN Next Generation Engineer Leader」になっていただきます。
（「日本を元気にする」APN Next Generation Engineer Leaders(ANGEL) Dojo のご紹介
https://aws.amazon.com/jp/blogs/psa/apn-next-generation-engineer-leadersangel-dojo ）より　

普段エンドユーザーを顧客とされている**ユーザー企業**と弊社のようなユーザー企業を顧客とさせていただいている**パートナー企業**合わせて13社がそれぞれメンターを合わせた6人のチームを組み、3か月間を通してAWS社員の皆様による研修を受けながら、
最終的には実際にサービスの企画、設計、開発を行うのが今回のANGELDojoになります。

#3-コンテンツ
今回のAngelDojoではAmazon流の考え方や文化、実際のAWSサービスの説明、開発の手法などの基礎を学ぶ講習が数多く用意されていました。
その中から私が個人的に印象に残ったコンテンツを簡単に振り返りたいと思います。

###1.　エンドユーザーとSIerの関わり方
今回のAngelDojoのテーマは**内製化**でした。昨今の時代の急激な変化に伴い、従来のビジネスモデルが通用しなくなるなど、提供するサービスにもスピードが求められるようになりました。
今まで、多くのユーザー企業はシステム開発をする際、開発のほとんどをSIに委託するシステムを採用していましたが、このようなスタイルでは、企業間の距離や、SIのビジネスとの距離が遠い、などシステム開発までの時間がかかります。そこで注目されたのが「内製化」です。

ユーザー企業は内製化を実現するには何を意識すべきなのか、パートナー企業はユーザー企業の内製化の支援をするにはどんなところをポイントに置くべきなのかを学ぶことのできる内容でした。
こちらは弊社参加メンバーが記事として投稿しておりますので是非ご覧下さい。

[エンド企業とSlerの関わり方：システム開発の内製化のポイント@ANGEL Dojo]
(https://qiita.com/yu_to_15/items/d6055b8382c789f140ec)

###2.　Working Backwards###
地球上で最もお客様を大切にする企業になることをミッションとする[Amazonが大切にしている信条や、カルチャー](https://aws.amazon.com/jp/careers/culture/)を学び、Amazonがサービスを企画する際に使用する手法**Working Backwards**を実際に使ってサービスを考えるという内容です。
Working Backwardsとは簡単に説明すると
**「サービスを企画する際、まずプレスリリースとFAQから作成をすること」**を指します！

サービスを考えるうえでこの5つの質問に答えられることが重要なんだそうです。
1. お客様は誰ですか ?
2. お客様が抱える課題や改善点は明確ですか ?
3. お客様が受けるメリットは明確ですか ?
4. お客様のニーズやウォンツをどのように知りましたか ?
5. お客様の体験が描けていますか ?

普段直接エンドユーザー像を考え、ニーズからサービスを考えるということに慣れていない私はとても勉強になりました！
このワークショップの内容も別記事にしておりますのでご覧ください。

[Amazon流のモノづくり：Working Backwardsとは@ANGEL Dojo](https://qiita.com/YutoTada/items/f167f1384238577dc1fe)

###3．アジャイル・スクラム開発ワークショップ###
**アジャイル開発**とは作成するサービスを最小現に抑え、
リリース、修正、機能の追加を短期間で繰り返すことフレームワークのことです。

アジャイル開発の手法の一つとしてスクラムがあります。
スクラムとは簡単に言うと動くソフトウェアを一定期間ごとに提供するために、その期間内での優先順位を決め、評価をしながら進めていく**チームで仕事を進めるための手法**のことです。

近年の世の中の動きからよく使われている手法を学ぶことのできるワークショップでした。

従来のウォーターフォール形式のメリットデメリットと比較してどちらを採用すべきかなどこちらも非常に勉強になりました。

[アジャイル開発、スクラムの基本を説明します@ANGEL Dojo](https://qiita.com/YutoTada/items/b58f0f0547d15457f6d9)

この他にもセキュリティ関連のAWSサービスを紹介する初心者向けの講義から、SDKを使ったハンズオンの講義など、幅広くサービスを開発するうえで必要となる知識を学ぶことができたのは非常にいい経験でした。
これらの講習を受けながらサービスの企画、設計、開発を行いました。

#4-作成したサービス

###Walking_U###
今回、弊社が作成したサービスについて説明します。

それは、**「運動不足とコミュニケーション不足を同時に解消する」**がテーマの**Walking_U**というサービスです。

コロナ禍の中で世の中の人にはこんな悩みがあると考えました。（弊社メンバーも感じていました。）
・外出の機会が減り、運動するモチベーションが上がらない
・人と会う機会が減って、なんだかさみしい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1595785/18aefda6-5b1b-0cff-70b3-481ebc2f2b8e.png)

実際にこのような悩みを抱えている方も多いというアンケート結果もありました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1595785/267ed075-96c8-f2f8-6648-c780c6c01ba3.png)

**散歩をしながら誰かと通話ができる**というサービスを作成することで、これらを解決できるのではと考えました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1595785/1a5bc3c3-994b-f8d4-2aa7-394bf10a81d5.png)


簡単に仕組みを説明すると、散歩を始めたら通話開始ボタンを押すことで同じタイミングで散歩している日本中の誰かと通話が始まり、あたかも一緒に散歩しているかのような体験を提供できるといったものです。
ただし通話ができるのは"散歩中"だけで位置情報から一定期間の移動が検知されなければ通話が終了してしまうようにしました。一見マイナスに見える機能ですが、逆にとれば通話している相手も同じように一緒に散歩しているということなので、ユーザーの散歩へのモチベーションにつなげようという狙いがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1595785/da3adef3-6cbd-25ee-4f5d-0ad7d30f0b58.png)

###構成###
簡単な構成はこちらです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1595785/71ab62b1-8533-8152-9eaa-fd7e339af652.png)

以下が構成のポイントです。
**CloudFormationでコード化し管理**
開発プラットフォームにはAmplifyを採用し、セキュリティサービス以外はCloudFormationを用いて管理しました。Amplifyを使えばCognitoによるログイン認証の機能などのリソースもコマンドで作成し簡単に管理することが出来るのでこれがとても便利でした、、

**サーバレスの構成にすることでより管理を簡単に**
画面出力はCloudFrontとS3の静的Webサイトホスティングを使い、静的なページの枠を出力し、APIから情報を持ってくるモダンな作りで画面出力を行いました。サーバーの管理が必要ない点も短い時間で開発するのにはとても良かったと感じています。
APIGatewayとLambdaで通話処理機能と、ユーザー情報のCRUDを行っています。

**通話処理にはAmazonChimeを採用**
通話にはAmazonChimeを使用しました。LambdaからChimeAPIを叩き会議を作成し、フロント側へ通話に必要な情報を渡し、その情報をもって通話を開始する処理です。今までChimeを使った経験が無く、こちらが特に難しいと感じました。
通話中は5分に1回Geolocation(ジオロケーション) APIをたたき、位置情報を取得し通話している人が移動しているかを判定し、移動をしていなければ、5分後に通話が切れるようにしました。 

**開発はCloud9を使って全員で同時に作業**
基本的な開発はCloud9で行い、全員で同時に作業を進めました。これによりGitの構成管理などは特に気にせず、進めることが出来ました。これも大きく作業の効率化に影響したかと思います。少ない人数で開発をする際にはとても効果的だと感じました。

#5-学んだこと
###サービスとしての難しさ###
今回の作成したWalking_Uですが、良いものが出来れば今後サービスとして実際に運用していくことも視野に入れていましたが、AngelDojo終了後は追加の開発は行わず、終了することにしました。
サービスとして続けていくには大きな壁がありました。

**採算の取れるビジネスモデルが描き切れなかった**

今回「Walking_U」リリースにあたり、ビジネスモデルの面からどの程度の収益があれば運用が可能かを検証しました。

今後予想される、ユーザの数とそこから得られる広告の収益、または、運用にかかるコストなどを複数パターンで検討しましたが、最終的に採算性の取れるビジネスモデルを描き切ることができませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1595785/0792499d-148c-2f70-d60a-700fc38f9cbc.png)

改めてプロダクトの開発とは、「システム」と「ビジネスモデル」の両輪が合わさって初めて実現するものだと学ぶことができました。
そして、ユーザーにサービスを提供する企業はこの「ビジネスモデル」を回すことが目的でありエンジニアとしてその目線をもつきっかけにもなりました。

**健康とコミュニケーション**という課題は、これからの新しい働き方においては、1つのテーマでもあると思っています。是非また機会があったらこのテーマにしっかり向き合い、更にワクワクするようなサービスを作り、多くの人の役に立つことが出来れば嬉しいです。

#6-おわりに
今回のANGELDojoに参加して普段あまり行わないフロント側の開発などの技術的な知識はもちろん、ユーザー視点で物事を考える**WorkingBackwards**の考え方やビジネスに必要なことなど様々な角度から多くを学ぶことが出来ました。

AWSの皆様、弊社のチームメンバー、他社のチームの皆様に助けられ何とか3か月間頑張ることが出来ました。皆様本当にありがとうございました。

今後仕事するうえでこのAngelDojoで得たものをしっかり役立ていきたいと思います。