Muhammad Arslan
ご相談・ご依頼
プロジェクト一覧に戻る

ZED (My Islamic Reminders)

各ユーザー固有のスケジュールに合わせて、自動生成された音声ナレーションと詳細な配信アナリティクス付きで多言語のイスラム配信を届けるモバイルアプリおよびWeb管理コンソール。

担当役割: Contributing developer (team project, led by another engineer)開発期間: 2025-2026種別: Cross-platform app + admin

Expo (React Native)

Next.js

Convex

OpenAI TTS

TanStack Table

Recharts

サンプルのユーザー成長、エンゲージメント、言語別のチャートを含むZED管理ダッシュボード

概要

ZEDは、単一のバックエンドを共有する3つの要素で構成されたモノレポ形式の宗教配信プラットフォームです。エンドユーザー向けのExpoモバイルアプリ、運営者向けのNext.js管理ダッシュボード、そしてデータを保持しスケジューリング、通知、アナリティクス、音声生成を担うConvexバックエンドで構築されています。ユーザーが希望する現地時間に合わせて選択した言語で短いイスラム配信を届け、再生時には自動生成されたナレーション音声と単語単位のハイライト表示を提供します。

課題

この製品の難しさは、コンテンツの表示そのものではなく、そのオーケストレーションにあります。ユーザーは、右横書き(RTL)言語を含む複数の言語から選択し、自身のタイムゾーンの指定時刻に配信されることを求めています。各配信はテキスト、音声、あるいは共有可能な形式で利用できる必要があります。管理者は、何が配信され、閲覧され、再生されたか、また音声生成が滞りなく行われているかなど、実際の稼働状況を把握する必要があります。そしてユーザーがコンテンツを見逃した際には、システムが自動でフォローアップを行わなければなりません。真の課題は、スケジュール配信、言語選択、音声生成、プッシュ通知、アナリティクスを一つの首尾一貫したシステムへとまとめ上げることでした。

役割とアプローチ

本件は別のエンジニアが主導したチームプロジェクトであり、私は開発者の一人として参画しました。モバイルアプリと管理ダッシュボードの双方が共有する信頼できる唯一の情報源(Single Source of Truth)としてConvexを中心に構築されたアーキテクチャの中で、焦点を絞った開発を担当しました。コードベース全体の設計原則として、スケジューリング、リトライ、音声生成ジョブ、アナリティクスなどのオーケストレーションはバックエンドが担い、2つのフロントエンドは薄い設計を維持して自動生成された同一のAPIからデータを取得する構成となっています。

技術スタック

モバイルExpo and React Native with Expo Router, Jotai, expo-audio, expo-notifications
管理Next.js with React, TanStack Table, Recharts, Sonner, and a shadcn-style UI
バックエンドConvex for data, queries, mutations, storage, cron jobs, and a background work pool
メディアOpenAI text-to-speech for narrated audio generation
通知push delivery with a retry policy

主な機能

パーソナライズされたスケジュール配信各ユーザーのタイムゾーンに合わせ、希望する現地時間に配信が届きます。
多言語コンテンツ右横書き(RTL)言語の完全サポートを含む複数言語での配信に対応し、ユーザー設定から最適なバリアントを選択。
自動生成ナレーションevery broadcast is turned into audio through text-to-speech, with word timings so the text highlights in sync as it plays.
ガイド付き配信体験モバイル画面で読み上げ音声を再生し、音声に合わせてハイライト表示し、テキストを共有できます。
管理者向け運用コンソールユーザー、配信状況、閲覧数、再生数、音声生成の進捗に関するダッシュボードに加え、成長率および言語別パフォーマンスのレポート。
配信およびコンテンツ管理配信の作成・編集、停止した音声ジョブの再生成や再試行、ローカライズされたアプリアップデート文章やストアリンクの管理。
ユーザー管理と設定ロールおよびアクティブ状態の管理、単一/複数リマインダー動作の選択、テスト通知の送信。

ギャラリー

合成レコードのユーザー、コンテンツ、配信統計を含むZED管理者概要
サンプルの配信アクティビティを含むZEDのエンゲージメントおよび言語チャート

課題と解決策

通知配信はこの製品において技術的に極めて要求水準の高い中核部分です。配信はユーザーごと、タイムゾーンごとにスケジュールに沿って行われるため、バックエンドではアドホックなトリガーではなくConvex cronジョブとバックグラウンドワークプールを介して処理を実行し、ユーザーのアクティビティに応じたリトライマーカーを追跡することで、見逃されたコンテンツも自動的にフォローアップされます。

音声生成もまた、高い信頼性が求められる重要な可動部分です。テキストを読み上げ音声に変換する処理は時間を要し、失敗する可能性もあるため、ローカライズされたコンテンツごとに生成ステータスとリトライ回数を追跡し、管理者がダッシュボードから進捗状況を確認して滞留したジョブを再実行できるようにしました。タイムスタンプ付きの配信・閲覧・再生イベントを記録するエンゲージメント追跡はデータモデルに直接組み込まれており、別のアナリティクスパイプラインを用意することなく同じデータストアから直接レポートを生成できます。

成果

ZEDは、単一のConvexバックエンドがエンドユーザー向けモバイルアプリと運用ダッシュボードの双方を駆動する、完全なクロスプラットフォームシステムです。パーソナライズされ、多言語に対応した自動音声付き配信をスケジュールし、配信の全行程をレポートします。アプリ側の処理をシンプルに保つためにバックエンドが高度なスケジューリングとメディア処理を担う、オーケストレーション重視のプロダクトエンジニアリングの好例です。

同様のプロダクト課題をお持ちですか?

現在のプロダクト状況、達成したい成果、直面している制約についてお聞かせください。それらをもとに適切な第1マイルストーンを策定します。

フルスタック開発者の採用
プロジェクト概要を送る
すべてのプロジェクト次のプロジェクトSchooliee
ZED (My Islamic Reminders):クロスプラットフォーム配信プラットフォーム | Muhammad Arslan