inflearn logo
知識共有
inflearn logo

NestJS・Next.jsで作るリアルタイムビデオ診療 — 医師・患者・保護者が一つの診療室で出会うフルスタック

PostgreSQLからSocket.IO・WebRTCによるビデオ通話、チャット、共有ホワイトボードまでを、一つの業務フローとして自ら完成させる

1名 が受講中です。

難易度 入門

受講期間 無制限

HTML/CSS
HTML/CSS
JavaScript
JavaScript
React
React
PostgreSQL
PostgreSQL
Socket.io
Socket.io
HTML/CSS
HTML/CSS
JavaScript
JavaScript
React
React
PostgreSQL
PostgreSQL
Socket.io
Socket.io

受講後に得られること

  • NestJSとNext.jsを初めて1つのプロジェクトとして連携する方のためのフルスタック講座です。病院のオンライン診療という1つの業務フローを最後まで構築しながら、一覧取得・ステータス変更などのREST API、役割ごとの画面、リアルタイムのルームとチャット、WebRTCビデオ通話、共有ホワイトボードを1つの診療室に統合します。

  • まず pnpm ワークスペースと PostgreSQL を準備し、患者一覧・ステータス変更・会話保存 API を作成します。その上に医師・看護師・患者の役割別画面と患者待機列、レスポンシブな診察室を構築し、Socket.IO のルームと WebRTC 接続、カメラ・マイク・画面共有、保護者の招待、リアルタイムチャットと共有ホワイトボード、ホワイトボードの操作権限、音声字幕へと進めていきます。最後に、完了記録と再診、Lint・テスト・ビルドで結果を確認します。

  • すべての講義では、実際のソースコードの行を強調しながら説明し、ターミナルの実行と2つ以上のブラウザタブの動作をそのまま示します。画面に表示される患者情報はすべて架空のデータであり、実際の認証・TURNサーバー・個人情報の暗号化・デプロイについては扱わず、運用段階での拡張課題として整理します。

ビデオ通話アプリは、チュートリアルに従えば作れますが、「本物のサービスフロー」につなげようとすると、どこから行き詰まるのでしょうか?🤔

答えは接続の順序にあります。患者の状態がデータベースに保存され、画面がそれを読み取り、

同じ診察室に入ったブラウザ同士で接続情報をやり取りし、映像やチャット、ホワイトボードが

一つの部屋で動く――この道のり全体を実際のソースコードで追っていきます。

この講義では、NestJSとNext.jsを使って教育用のビデオ診療サービスをゼロから最後まで構築します。

ソースの行を一つずつ強調しながら読み、ターミナルで直接実行し、

医師・患者・保護者のブラウザを並べて開き、動作を確認します。

一覧表示の例とビデオ通話の例を別々に追うだけで終わらせず、1つの業務フローとしてつなげてみましょう。

直してみて、壊してみて、もう一度確認することが最も早い道です。

この講義の特徴

📌 すべての説明では実際のソースコードの行を強調して示し、説明した動作は実際に実行して確認します。(例:2人が同時にカメラをオンにすると、なぜ接続できないのか、そしてどのように修正するのか)

📌 サーバーは入力検証と権限を自ら再確認する方式で作ります。画面上で隠したボタンも、サーバーがもう一度阻止する理由をコードで見ていきます。

📌 一行一行まねして入力する代わりに、完成した構成を開いた状態で、機能単位に読み、実行し、修正していく方法です。講義の最後には、実際に取り組める課題を5つと、修正するファイルをお知らせします。

📌 単体テスト、Lint、デプロイ用ビルド、そして症状別の確認手順まで扱い、「動くもの」から「信頼できるもの」へと進みます。

💡 NestJS + Next.js + PostgreSQL + Socket.IO + WebRTC + SVGホワイトボード + pnpmモノレポ

このような方におすすめです

NestJSとNext.jsを1つのプロジェクトとして連携させたことがない方?

モジュール・コントローラー・サービス、サーバーコンポーネントとクライアントコンポーネントの境界がどこにあるのかを、まずコードでお見せします。



Web開発者 / バックエンド開発者

Socket.IOとWebRTCがそれぞれ何を運ぶのか混乱している方へ

接続の取り決め(シグナリング)と映像送信が別の経路であることをコードで確認し、offer・answer・ICE候補がやり取りされる順序を追います。

リアルタイム機能を初めて実装する開発者

掲示板の次の段階となるポートフォリオが必要な方?

役割別の画面、リアルタイムルーム、動画、チャット、共有ホワイトボード、完了記録までつながるサービスを説明し、デモできるようになります。

就職・転職準備中の開発者


💡中級へステップアップする開発者

  • 権限ルールとリアルタイム同期を一連の流れで身につけたい方?

    "ルーム内で最も高い権限を持つ役割だけがホワイトボードを操作する"というルールを共通パッケージに一度だけ記述し、画面とサーバーで共有する方法を見ていきます。


受講後には

  • pnpmワークスペースでWeb・API・共用パッケージを構成できます。

  • PostgreSQLのテーブルと入力検証を備えたREST APIを作成できるようになります。

  • Socket.IOのルームとWebRTC接続、カメラ・マイク・画面共有を実装できます。

  • チャット履歴の復元、座標ベースの共有ホワイトボード、役割による主導権を実装できます。

  • Lint・テスト・ビルドで結果を確認し、症状ごとに問題の原因を絞り込めるようになります。

このような内容を学びます。

セクション 0. コース紹介

-.0.1 完成プロジェクトのデモンストレーション

-.0.2 全体構成と学習の順序

セクション 1. 開発環境とモノレポ

-.1.1 pnpm workspaceを作成する

-.1.2 Next.jsとUIコンポーネントの準備

-.1.3 NestJS APIの準備

セクション2. PostgreSQLとNestJS API

-.2.1 Docker PostgreSQL接続

-.2.2 教育用テーブル設計

-.2.3 患者一覧とステータス変更API

-.2.4 会話保存API

セクション 3. 役割別 Next.js 画面

-.3.1 デモ役割で入室

-.3.2 医療スタッフ向け患者待機列

-.3.3 診療状態の切り替え

-.3.4 レスポンシブ診療室レイアウト

セクション4。Socket.IOとWebRTC診療室

-.4.1 診療室のルームと参加者

-.4.2 WebRTC接続構造

-.4.3 カメラとマイクの接続

-.4.4 相手映像と再生制限の処理

-.4.5 保護者の招待と画面共有

セクション 5. チャット・共有ホワイトボード・字幕

-.5.1 リアルタイムチャットとDB記録

-.5.2 共有ホワイトボード座標の同期

-.5.3 板書と字幕の主導権

-.5.4 黒板テーマと画像保存

-.5.5 音声字幕の範囲と限界

セクション 6. 完了記録と仕上げ

-.6.1 完了した患者記録と再診療

-.6.2 エラーの確認とビルド

-.6.3 次のステップ

受講前の参考事項

実習環境

  • Windows 11の画面を基準に進めます。ブラウザはChromeを使用します。

  • Node.js 22.22以上、pnpm 10.18、Docker Desktop(PostgreSQLコンテナ)が必要です。Next.js 16、React 19、NestJS 12、PostgreSQL 16を使用します。

学習教材

  • 講義で使用するソース一式を圧縮ファイル(c2i_seeu_full.zip、1.1講の授業資料)で提供します。新しいフォルダを作成し、その中に解凍してから始めてください。READMEに実行手順があります。


前提知識および注意事項

  • TypeScriptの文法とReactコンポーネントの基礎が必要です。NestJS・WebRTCの経験は必要ありません。

  • カメラ・マイクの映像は自動化環境の仮想映像で表示します。実際にお試しいただく際は、実際のカメラとマイクの権限を許可する必要があり、カメラはlocalhostまたはHTTPSアドレスでのみ起動します。

  • 画面上のすべての患者・病室・診療メモは仮想データであり、実際の医療サービスには使用できません。実際の認証、TURNサーバー、個人情報の暗号化、デプロイについては扱わず、運用拡張の課題として整理します。

  • 講義の音声は講師が自ら録音しました。

  • 講義およびソースの著作権は講師に帰属します。受講生本人のプロジェクト(業務・製品)でソースを使用・改変することは可能です。ただし、ソース自体の販売・再配布、公開リポジトリ(Git Public)への掲載、講義・教材など教育目的での使用は許可していません。

  • ご質問は授業の質問掲示板に投稿していただければ、3日以内に回答いたします。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • NestJSとNext.jsを1つのプロジェクトとして構成してみたい開発者

  • Socket.IOとWebRTCの役割の違いを実際のコードで理解したい開発者

  • 掲示板の次の段階となるポートフォリオ(リアルタイム共同作業サービス)を作りたい開発者

  • 状態管理、権限ルール、リアルタイム同期を一連の流れで学びたい方

前提知識、
必要でしょうか?

  • TypeScriptの構文とReactコンポーネントの基礎

  • Node.js 22.22以上、pnpm 10、Docker Desktop(PostgreSQLコンテナ用)、カメラ・マイク付きのPC、ChromeまたはEdge

  • NestJSやWebRTCを知らなくても大丈夫です。必要な概念は、コードが出てきた時点で説明します。

こんにちは
GregHanです。

キャリア認証

長い間、技術の変化に対応しながら過ごしてきた経験が多くありますので、今では私が持つ技術と経験を初級・中級者の方々に微力ながら提供し、皆さんが迅速に成長できるよう共に歩んでいきたいと考えています。

技術スタック

-. モノレポ(Turbo: "^2.3.4")、FCM(Firebase Cloud Message)、WebHook、Redis、MQTT

-. MUI-X、Material-UIなどNext & ReactエコシステムのUI

-.OCR(Naver)、RIMS、Popbill、SNSログイン(Google、Naver、Kakao)

-.Js、Vue/Nuxt(VueX、Pinia)、AngularJS、React/Next(Redux、Zustand、Recoil)、Svelt、

D3、Three(WebGL)、C2i:青瓦台納品BIチャート、echarts、Vuetify、Quasar、Telerick(Progress)

IndexedDB & SqlLite, css, scss, sass, Tailwind, Bootstrap...

-.Leaflet.js、Cesium.js、Daum & Naverマップ

-.WebRTC & WebSocket、MQTT、Silverlight(C#) & ASP.Net

-.Node、Nest、Spring Boot、Docker、Git、pm2

-.AWS, Azure, nCloud(Naver)

-.Oracle, PostgreSQL, MySQL, MariaDB, MS-SQL, MongoDB(mongoose), InfluxDB, Supabase

-.Python、Numpy/Scipy、Jupyter、Django(DRF: Django Rest Framework)/Flask、

-.TensorFlow, Keras, ScikitRun, LangChain

ソリューション

  • IAM-Guardian – SGC + ML + AI + Graphプラットフォーム

  • IAM-MES – 個別・バッチ・連続製造を業種別に統合したフルスタックプラットフォーム

  • IAM-ERP – AI会計ERP · 証憑自動仕訳 · ロック台帳

  • IAM-FREE-BI – ショッピングモール・中小企業向け無料ブラウザBI

  • IAM-SPC – メタデータベースの汎用SPC · Edge+中央 · IATF 16949

  • IAM-VeloMap – AIベースのLidar後処理自動化ソリューション(+Guardian統合)

-.シティ・ワウ(City-Wow): 国土・国防・公共分野および病院・製造企業などの3Dシミュレーションおよび

リアルタイムモニタリングサービス ('23.10 ~ 現在; Three, Vanila.js)

-.씨유(SeeU): 業種別ビデオチャットサービス(病院、製造業など)(Google Meet + クロマキー、STT & TTSチャット)

('23.02〜23.10; WebRTC、WebSocket、Vue3 & Pinia、Quasar、Node、MySQL)
-.サーベイ・ワウ(Survey-Wow): Googleフォーム、MSフォーム、Naverフォームのアンケート結果を簡単に分析し

データ分析を共有するWebサービス ('22.03 ~ 23.01; Vue2 & VueX, Quasar, Node, MySQL)

-.データ・ワウ(Data-Wow): xls, json,csv , API連携などによる公共データの自動分析・可視化

('22.01 ~ 22.12; Vue2 & VueX, Vuetify, Node, MongoDB) - 行政安全部公共データ表彰
-.DDMV(Data-Dam Multi-Dimensional Vis-): データダム多次元探索的可視化分析サービス

('20.01 ~ 20.08; Vue2 & VueX, Vuetify, Node, MongoDB) - 仁川市公共データ表彰
-.シーツーアイ(C2i: Chart Inteiiligence Insights)チャートコンポーネント: チャートギャラリーメニュー

BIベースのチャート(with D3.js): '15.04 ~ 現在;D3.js(v3.3 ~ v7.9)を基盤としたBIパターンのチャートソリューション

(文在寅政権の雇用ダッシュボードを青瓦台に納品、モンゴル財政管理国家プロジェクトに納品。多言語対応)

 

データマート&ウェアハウス、ROLAP、BI、可視化、クラウドインフラなど、さまざまな技術スタックと

業務分析、Oracle(v6.3 ~ )のモデリングおよびチューニング分野に関する専門知識と経験を有する。

 

-.(株)カジュアル・インサイト(Casual-Insights) CTO

-.元KISTI研究員

-.元LG-CNS Oracle Modeler、DBA &主任研究員

-.元極東(現代)石油情報処理室社員

**. データダム多次元可視化-.総合紹介(必須):https://youtu.be/noZ9H7wftsI

-.消費商圏-I(必須:百貨店店舗POSデータ-一般製造流通業者):https://youtu.be/ArL-Pv3U-40 -.消費/商圏-II(韓国KDX、食神データ提供):https://youtu.be/Wcpu29gI53Y

-.保健医療(韓国KDX、オンヌリH&Cデータ提供): https://youtu.be/I8WBqAFp9L4-

.公共データ(韓国・華城市庁の公共データ提供):https://youtu.be/2QCw_6aeRVE

*.D3 & ThreeJS チャートギャラリー:https://gregory-han.github.io/chart/

*・受賞歴

1999.08 ハンギョレ新聞 & UTC ベンチャー21 本賞受賞(賞金5,000万ウォン)
2000.10 ㈱ソフトダイム 大統領賞受賞(PowerSi OLAP)
2002.11 韓国e-ビジネス大賞 産業資源部長官賞受賞
2020.08 仁川市公共データ表彰
2022.12 行政安全部公共データ表彰
もっと見る

カリキュラム

全体

26件 ∙ (2時間 37分)

講座資料:

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価が集まっていない講座です。
ぜひ最初のレビューをお寄せください。

GregHanの他の講座

知識共有者の他の講座はこちら

似ている講座

同じ分野の他の講座を見てみましょう!

期間限定セール

¥8,421

49%

¥16,662