中級カリキュラム:5つのコンテンツ
ステップ1:API基盤の構築
内容:API Gateway、AWS Lambda、サーバーレスアーキテクチャの基礎
例え:モバイルアプリとサーバーをつなぐ「電話交換手」のような仕組みを作ります。API Gatewayは電話交換手、Lambdaは電話を受けた担当者のような存在で、モバイルアプリからのリクエストを適切に処理してレスポンスを返します。
詳細説明:
- API Gatewayの基本設定:モバイルアプリからのリクエストを受け付けるREST APIを作成し、CORS設定やセキュリティ設定を行います
- Lambda関数の作成とデプロイ:PythonまたはNode.jsでビジネスロジックを実装し、サーバーレスな環境での関数実行を理解します
- API GatewayとLambdaの連携:HTTPメソッド(GET、POST、PUT、DELETE)ごとのLambda関数とのマッピングを設定します
- エラーハンドリングとログ出力:適切なエラーレスポンスの返却や、CloudWatch Logsを使ったデバッグ環境を構築します
ステップ2:ユーザー認証システムの構築
内容:Amazon Cognito、JWTトークン、ユーザー管理、セキュリティ
例え:アプリを使うための「会員証」や「入場パス」のような仕組みを作ります。Cognitoは受付で本人確認を行い、JWTトークンは会員証のような存在で、アプリ内のさまざまな機能を安全に使えるようにします。
詳細説明:
- Cognito User Poolの作成と設定:ユーザー登録・ログイン機能を提供するユーザープールを作成し、パスワードポリシーやメール認証などを設定します
- モバイルアプリとの連携:Amazon Cognito SDKを使用してユーザー登録・ログインフローを実装し、ユーザー体験を最適化します
- JWTトークンの理解と活用:アクセストークン、IDトークン、リフレッシュトークンの違いを理解し、APIアクセス時の認証ヘッダー設定を実装します
- セキュリティベストプラクティス:トークンの適切な保存方法や有効期限管理、不正アクセスの検知と対策を学びます
ステップ3:位置情報機能とデータ管理
内容:Amazon DynamoDB、NoSQLデータベース、位置情報処理、ジオクエリ
例え:ユーザーの位置情報や投稿情報を保存する「デジタル住所録」のような仕組みを作ります。DynamoDBは特殊なファイリングシステムのようなもので、従来のデータベースとは異なる柔軟なデータ保存や高速検索が可能です。
詳細説明:
- DynamoDBテーブルの設計と作成:ユーザー情報、位置情報、投稿情報を効率的に保存するためのテーブル構造を設計し、パーティションキーとソートキーを適切に設定します
- 位置情報の保存と検索:緯度・経度情報を使った近隣ユーザー検索機能や、特定エリア内のコンテンツ取得機能を実装します
- Global Secondary Index(GSI)の活用:異なる検索条件(時間順、人気順、カテゴリ別など)での高速データ取得を実現するためのGSI設定を学びます
- NoSQL設計パターン:リレーショナルデータベースとの違いを理解し、アクセスパターンに基づいたデータモデリング手法を習得します
ステップ4:リアルタイム通信とプッシュ通知
内容:WebSocket API、Amazon SNS、リアルタイムメッセージング、プッシュ通知
例え:ユーザー同士がリアルタイムでやり取りできる「デジタルトランシーバー」のような仕組みを作ります。WebSocketは常時接続された電話回線のようなもので、SNSは全員に一斜に連絡できる放送システムのような存在です。
詳細説明:
- WebSocket APIの構築:API GatewayでWebSocket APIを作成し、モバイルアプリとサーバー間での双方向リアルタイム通信を実現します
- メッセージングシステムの実装:ユーザー間のチャット機能や位置情報のリアルタイム共有機能を実装し、DynamoDBでのコネクション管理を学びます
- Amazon SNSでのプッシュ通知:特定のイベント(友達が近くに来た、新しい投稿があったなど)に対して、関連ユーザーに自動でプッシュ通知を送信する機能を実装します
- イベント駆動アーキテクチャ:DynamoDB StreamsやEventBridgeを活用して、データの更新をトリガーとした自動処理を実装します
- スケーラビリティとパフォーマンス最適化:同時接続数が増加した際のコネクション管理や、メッセージの効率的な配信手法を学びます
ステップ5:サンプルモバイルアプリでの動作確認
内容:React Native、バックエンド統合、エンドツーエンドテスト、デバッグ手法
例え:レストランで作った料理を実際にお客様に提供して、味や見た目を確認するのと同じプロセスです。これまで構築したバックエンドシステムが実際のモバイルアプリで「生きたサービス」として機能することを体感します。
詳細説明:
- React Native開発環境のセットアップ:Node.js、Xcode(iOS)、Android Studioの環境構築を行い、モバイルアプリ開発の基本環境を整えます
- バックエンド接続設定:CognitoユーザープールID、API Gateway URLなどをアプリに設定し、AWSバックエンドとの連携を確立します
- 認証フローの動作確認:ユーザー登録、メール認証、ログイン機能をモバイルアプリで実際にテストし、Cognitoとの連携を確認します
- 位置情報機能のテスト:チェックイン作成、履歴取得、地図表示などの位置情報機能を実機またはエミュレータでテストします
- エラーハンドリングとデバッグ:React Native Debugger、CloudWatch Logsを使った実践的なデバッグ手法を学びます
- パフォーマンス計測:APIレスポンス時間、コスト最適化、複数ユーザーでのテストなど、実運用を想定した評価を行います
学習完了後の次のステップ
この学習カリキュラムを完了し、最終アセスメント(テスト)に合格すると以下のステップに進むことができます。
- 上級カリキュラムへの進学:より大規模で複雑なシステム構築(マイクロサービス、コンテナ技術、高可用性設計など)を学習するカリキュラム
- フリーランス案件への応募:このカリキュラムで学んだスキルを活かして、モバイルアプリ関連の実案件にチャレンジする
- 独自プロダクトの開発:学習内容をベースに、ご自身のオリジナルアプリケーションを設計・開発し、ポートフォリオとして活用する
中級カリキュラムの勉強の仕方
学ぶ前に以下にアクセスできるかを確認しましょう。
- AWSコンソール(基礎カリキュラムで作成したIAMユーザーでログイン可能)
- APIテストツール(curlコマンドやAWS CLI)
- 学ぶ
- それぞれのステップに記載してある手順に従いAWSコンソール上でサービスを構築します。
- 用語やサービス名がわからない場合には学習カリキュラム内の「用語集、参考資料」を見てみましょう。
- 記載の内容や概念が理解できない場合には専用Slackにて質問をしてください。より初級レベルの知識を学びたい方は以下がおすすめの参考書籍となります。
- AWS公式ドキュメント:AWS Lambda Developer Guide 、Amazon API Gateway Developer Guide
- 参考書籍:『AWSサーバーレスアーキテクチャ』(翔泳社)、『サーバーレスシングルページアプリケーション』(インプレス)
- 学んだことの確認
- それぞれのステップには以下3つの確認項目が用意されていますのでそれぞれに回答を専用Slack上で提出してください。
- 実践チェック:画面キャプチャで証明しよう
- 提出方法:それぞれの項目に関してAWSコンソールの該当箇所をキャプチャーし、提出
- 構成図による理解度チェック
- 提出方法:構成図を作成し、提出
- 理解度チェック:なぜ?を考えてみよう
- 提出方法:質問の回答を提出
- アセスメント
- ステップ5までの学習が完了すると、最終アセスメントへ進みます。
- 最終アセスメントはオンラインで講師を相手にホワイトボーディングを行います。
- ホワイトボーディングとは相手がやりたいたいことをヒアリングし、それを実現するためのサービス構成をその場で図示しながら作り上げていくロープレ形式のセッションです。
- 最終アセスメントを実施するかどうかは皆さんにお選びいただけます。実施希望の方は専用チャネルでManagerまでご連絡ください。