# プロジェクト概要
- STEAM教育分野の通信教育サービスである、ワンダーボックスの開発。
- 毎月届く教材を通じて子どもの知的成長を刺激する教育プログラム。
- デジタルとアナログを組み合わせた、プログラミング、アート、パズルなど、多彩なコンテンツを毎月配信および配送。
- 子供がプレイするUnityアプリ、毎月届ける本やキット、管理画面、Web会員ページ、プロモーション用システム、Unityアプリ用のAPIなどを開発。
# 使用技術
- Ruby on Rails
- Web会員ページ、管理画面開発、外部API組み込みなどの機能開発で、MVCフレームワークとして使用
- 各種バッチ処理で使用
- Unity用のAPI開発で使用
- JavaScript (jQuery)
- 会員ページや管理画面の開発でRoRに組み込んで使用
- MySQL
- RoRアプリケーションのDBとして使用
- redashからSQLを書いてデータ分析の際に使用
- AWS
- 画像保存のために、RoRとS3の連携構築
- API作成のために、API Gateway、Lambdaの構築
- トラブルシューティングの際に、CloudWatch上にあるログの検索
- メール送信用アドレスの信頼性向上のためのドメイン設定の際に、Route53でDKIMレコードの登録
# 業務内容
- ビジネスサイドやオペレーションチーム、デザインチームと連携して、プロジェクトのヒアリングからリリースまでの一連の流れを継続的に行い、他の開発者とコードレビューを実施。
- メール認証のタイミングを変更して、サービスの申し込みフローを見直し、ユーザー体験を向上。
- 管理画面からさまざまなカスタマイズが可能なフォームを作成・公開できるアプリケーションを開発。
- SendGrid APIを使ったナーチャリングメールシステムを構築、コンバージョンを促進。
- 記事管理システムを作成し、各記事にカテゴリやOGP、公開設定、コード埋め込み機能などを開発。
- 定期的な作業をバッチ処理で自動化し、手作業の負担を軽減。
- 管理画面を開発。異なるサーバー環境間での移植性を確保。
- Unityでのプレイデータを会員ページに表示するために、毎月継続的に実装。データが大量にあり、非同期で月次データ読み込みをするように修正。
- redashを使ってSQLデータ分析を行い、ビジネスチームの意思決定をサポート。
- SendGridやLINEなどのAPIを統合し、手作業を軽減し、コミュニケーションチャンネルを拡大。
- 管理画面でSQLを使って抽出条件を設定し、外部メッセージ送信サービスにユーザーデータをアップロードする機能を開発。容量制限に合わせて自動削除し、アップロード数を監視し、Slackにアラートを送る機能を追加。
- AWS LambdaとAPI Gatewayを利用して、Webフロントエンド用のAPIを開発。
- Unityアプリ用のAPIを開発し、月ごとのコンテンツ、テキスト、画像、進捗状況、ゲーム設定、プレイ履歴などのデータを提供。
- トラブルシューティングを行い、AWS上に保存されたログを参照して原因を特定し、修正して報告。
# 業務内容の深掘り
## メール遅延問題の解決及びサービス申し込みフローの改善
### 課題
申し込みフォームでユーザーがメールアドレスを送信した後、サーバーは認証メールを送信してメールアドレスを確認します。ユーザーはメール認証後、次の申し込みステップに遷移できます。ユーザーからの報告により、認証メールが遅延していることが判明しました。この問題はコンバージョンに関連していたため、できるだけ早く解決する必要がありました。
### 工夫
できるだけ早く問題を解決するために、自分自身で問題を調査しつつ、SendGrid及びGooleのカスタマーサポートに問い合わせました。ヒントを提供していただき、SPF / DKIM / DMARCの状態を確認し、ドメインに対して必要なレコードを登録して、この問題を解決することができました。
さらに、申し込みフローを改善すべきと考え、メール認証ステップを申し込みフローの最後に移動することを提案しました。コンバージョン促進のため、申し込み完了後かつアプリ使用前の部分に、メール認証のステップを配置しました。要件、遷移方法、その他の要因について議論し、新しい申し込みフローを実装、テスト、リリースしました。
### 成果
- メールの遅延問題を解決しました。
- 申し込みフローを改善し、UXを向上、メール認証フローにおける申し込みからの離脱を無くしました。
- 申し込みプロセスの途中である既存のユーザーに対しては、スムーズな移行を確保しました。