Redisを使って献血者と患者をつなぐアプリを構築する方法
献血は、簡単かつ安全に命を救える素晴らしい方法です。しかし、ドナー(献血者)と患者を適切な血液型でマッチングする場面では、依然として多くの課題が残されています。血液は時間との勝負であり、ドナーと必要としている患者をいかに迅速につなげられるかが極めて重要です。
このプロセスが効率化されるほど、救える命は増えていきます。この課題に挑戦したのがBhanu Korthiwada氏です。同氏が開発したアプリケーション「Zindagi」は、献血者と理想の患者をマッチングさせることで、献血プロセス全体を大幅に高速化します。
このアプリケーションの核となったのは、データを最大限の効率で伝送し、ユーザーにリアルタイムの更新情報を届けるという根本的なニーズでした。遅延やタイムラグがあるとユーザーエクスペリエンスが損なわれ、分秒を争う献血の需要に追いつけなくなります。
こうした要件に応えるため、Redisがアプリケーションのメインデータベースとして採用され、パフォーマンスに劇的な効果をもたらしました。データは最大効率で伝送され、ユーザーはリアルタイムの更新を受け取れるようになり、献血の流れはシームレスなものになりました。
それでは、Bhanu氏がどのようにこのアプリケーションを作り上げたのかを見ていきましょう。その前に、Redis Launchpadには他にも魅力的なアプリが数多く公開されていることをお伝えしておきます。本記事を読み終えたら、ぜひそちらもチェックしてみてください。
献血者と患者をつなぐアプリの構築方法
- 何を作るのか?
- 必要なものは?
- アーキテクチャ
- はじめに(環境構築)
- アプリケーションの使い方
- 仕組みの解説
1. 何を作るのか?
今回構築するのは、同じ血液型を持つ献血者と患者をマッチングさせるアプリケーションです。これにより、よりシームレスで効率的な献血プロセスが実現し、時間を節約して多くの命を救うことにつながります。
以下では、このアプリケーションを実現するために必要な要素を最初から最後まで解説し、必要なコンポーネントについてもご紹介します。すべてを小さなステップに分解して説明するので、誰でも簡単に構築を進められます。
準備はいいですか?それでは、早速始めましょう。
2. 必要なものは?
RedisJSON
JSONデータ交換標準(ECMA-404)をネイティブデータ型として実装します。
RediSearch
Redisに対して高度なクエリ処理、セカンダリインデックス、全文検索機能を提供します。
Redis Pub/Sub
イベントメッセージングに使用され、チャンネル上の任意の数のサブスクライバーへメッセージを配信できます。
Telerik
Web、モバイル、デスクトップアプリケーション開発などに対応した多彩なソフトウェアツール群を提供します。
Blazor
C#とHTMLを使ってWebアプリを構築できる、無料のオープンソースWebフレームワークとして使用します。
.NET Core Runtime
インターネット接続アプリ向けの基本的なサービスを提供します。
3. アーキテクチャ
4. はじめに(環境構築)
前提条件
- .NET Core – v5.0.x(最新パッチバージョン)
- Visual Studio 2019 16.9 または Visual Studio Code 1.55
- Docker – v19.03.13(任意)
- Auth0:
- ドメイン
- クライアントID
- クライアントシークレット
- SMTP(任意):オプション機能です。SMTPプロバイダーは複数あるため、ニーズや料金に応じて選択できます。主なサービスは以下の通りです。
- SendGrid(Twilio)
- Amazon SES
- Mail Jet
- Mailgun
- SMS:SMS機能のコードは未実装ですが、今後実装予定です。人気のプロバイダーは以下の通りです。
- Msg91
- Twilio
Dockerを使ったローカル環境のセットアップ
前提条件
- Docker
- Docker Compose
ステップ1. リポジトリのクローン
git clone https://github.com/redis-developer/rediszindagi
.envファイルに、Auth0およびSMTPの設定情報を追記してください。
ステップ2. Docker Composeファイルの確認
上記のComposeファイルでは、次の2つの基本サービスが定義されています。
- Redismod
- rediszindagi
Redismodには、このプロジェクトで使用するRedisJSONやRediSearchなどのモジュールが組み込まれています。Auth0の環境変数をいくつか渡す必要がありますが、SMTPの設定は任意です。永続化のためDockerボリュームマウントが追加されており、アプリはポート80で公開されます。
ターミナルまたはコマンドプロンプトから docker-compose up -d を実行します。
アプリケーションにはlocalhost経由でアクセスできます。
5. データの保存方法
- リクエストデータは、さまざまなキーとデータ型に格納されます。
- 各リクエストについて:
- ID:
Guid(文字列) - 血液型、ドネーションタイプ、優先度、ステータス:
C# ENUM
- ID:
- 各リクエストについて:
- Redis JSON
- ユーザープロフィールキー:プレフィックス
USER_PROFILE+ ポストフィックス:Auth0の名前識別子 - リクエストキー:プレフィックス
BLOOD_REQUEST+ ポストフィックス:Guid文字列
- ユーザープロフィールキー:プレフィックス
- Redis Publish
- リクエスト:新しい血液リクエストが発生すると、リクエストIDがメッセージとしてトピック
URN:BLOODREQUESTS:NEWにパブリッシュされます
- リクエスト:新しい血液リクエストが発生すると、リクエストIDがメッセージとしてトピック
データへのアクセス方法
- C#のRepositoryパターンを採用しており、すべての呼び出し時にConnectionMultiplexerを使用してインスタンスが生成されます。
6. アプリケーションの使い方
アカウント作成またはログイン
アプリケーションを最大限に活用するには、献血者がアカウントを作成する必要があります。メインダッシュボードの「Register Now(今すぐ登録)」をクリックすれば登録できます。
献血の登録
ナビゲーションバー上部の献血ボタンをクリックします。続いて表示される複数の入力欄に、自身の血液型や献血希望量などの情報を入力してデータベースに登録します。
献血リクエストの受信
アカウントを作成すると、あなたの血液型に適合する患者に対してあなたの提供可能な状態が通知されます。患者側はそこから、あなたへの献血リクエストを送信できるようになります。受信したリクエストの一覧を確認するには、ナビゲーションバー上部の「Requests(リクエスト)」タブをクリックしてください。患者から送られたすべてのリクエストを一画面で把握できます。
まとめ:Redisで患者と献血者をつなぎ、命を救う
多くの患者にとって、必要な血液に素早くアクセスできるかどうかは、生死を分ける重大な問題です。ドナーと適切な患者のマッチングは往々にして時間のかかる作業であり、一秒一秒が患者の命に関わります。Bhanu氏のアプリケーションは、Redisの持つコンポーネント間での超高速データ送信能力によって、この障壁を取り除きます。
これほど効率的にデータが伝送されることで、Zindagiは与えられた条件に基づいて、献血者と適切な患者を素早くマッチングできます。その結果、献血プロセス全体が加速し、ドナーと患者がリアルタイムでやり取りしながら献血の調整を行えるようになります。
このアプリケーションの核心にあるのは、関係者全員を一つにまとめ、最適な方向へ前進させる力です。それはつまり、より多くの献血、無駄な時間の削減、そして参加者全員にとって完全にシームレスな体験の実現を意味します。
このアプリケーションの動作をより視覚的に知りたい方は、YouTube動画をご覧ください。この記事を楽しんでいただけたなら、Redis Launchpadもぜひチェックしてみてください。日常生活にインパクトを与える革新的なアプリケーションが多数紹介されています。
地図上でバスをリアルタイムに追跡するアプリケーションや、途上国の病院における物資不足を防ぐアプリケーションなど、発見すべきコンテンツがまだまだたくさんあります。
ぜひ一度覗いてみてください。
開発者について
Bhanu Korthiwada
Bhanu氏は経験豊富なソフトウェアエンジニアで、現在はADPにてシニアコンサルタントとして勤務しています。最新のプロジェクトに関する情報を受け取りたい方は、GitHubでのフォローをおすすめします。
-
React Native と Native Base を使用して Android ニュース アプリを作成する方法
私たちは物事が絶えず変化する世界に住んでいます。したがって、何が起こっているかを最新の状態に保ちたい場合は、優れたニュースアプリが必要になります. クールな技術を学び、最新の状態を保つために、このブログ投稿では、React Native を使用して Android 用のニュース アプリケーションを作成します。さまざまなニュース チャンネルから見出しを取得し、カテゴリ別に表示します。 完了すると、アプリは次のようになります。それでは早速見ていきましょう。 Expo のインストール方法 では、万博とは? Expo は、React Native アプリをすばやく簡単に構築してデプロイするの
-
糖尿病管理におすすめのモニタリングアプリ7選|Android・iPhone対応
糖尿病管理アプリの必要性 1型糖尿病であれ2型糖尿病であれ、この生活習慣病は現代社会に広く浸透しています。だからこそ日々のケアが欠かせませんが、その負担を軽減してくれるのが糖尿病管理アプリです。 服薬管理や専用の食事療法など、糖尿病のために生活習慣を維持するのが難しいと感じることもあるでしょう。しかし、以下で紹介するアプリはそれぞれ独自の機能を備えており、あらゆる場面でのセルフマネジメントをサポートしてくれます。 1. Diabetes:M 測定単位を登録すると、このアプリは賢く動作します。内蔵された多彩なツールで測定した血糖値の推移をグラフ化し、傾向をひと目で把握できるようになります。 イ