新製品・アップデートのご紹介MongoDB は、Voyage AI の買収を通じて、Atlas における生成 AI アプリケーションの精度と信頼性を強化します。詳しく見る
新着情報今すぐチェック!:AI 対応開発向け MongoDB MCP Server(パブリックプレビュー)ブログを読む
新着情報MongoDB 8.0:圧倒的な速度と性能を提供。詳しく見る
新着情報MongoDB Atlas と Google Cloud Vertex AI の連携で、強力な生成 AI アプリを迅速に構築。詳細はこちら

MERN スタックの概要

MERN は、MEAN スタック(MongoDB、Express、Angular、Node)のバリエーションの 1 つであり、従来の Angular.js フロントエンドフレームワークを React.js に置き換えたものです。他のバリエーションには、MEVN(MongoDB、Express、Vue、Node)などがあり、実際にはあらゆるフロントエンドの JavaScript フレームワークで構成することが可能です。

MongoDB Atlas のアカウントを無料で作成し、MERN スタックのチュートリアルを実行して、フルスタックの MERN アプリケーションの構築をすぐに開フレームワーク

無料で始める

技術スタック

MERN スタックに触れる前に、技術スタックとは何かを理解する必要があります。技術スタックとは、Webアプリケーション、モバイルアプリケーション、または同様のアプリケーションを構築するために選択し、使用する一連の技術のことです。優れた技術スタックは、シームレスなユーザーエクスペリエンスを提供するだけでなく、スケーラブルでコスト効率に優れていなければなりません。典型的な技術スタックには、フロントエンド、バックエンド、データベースが含まれ、フル技術スタックとして知られています。

通常、基本的なフロントエンドまたはユーザーインターフェイスの技術は変わらず、HTML、CSS、JavaScript です。プロジェクトの要件に応じて、React や Angular など、これらの UI 技術を基盤としたライブラリやフレームワークを使用できます。(注:React はウェブ上でライブラリとフレームワークの両方として呼ばれることがあります。)技術的にはライブラリですが、それを取り巻く広大なエコシステムのため、フレームワークのように感じられます。議論は Twitter/X に任せます。)

バックエンドは、アプリケーションロジックが存在するサーバーで構成されます。JavaScript、Java、Python のようなプログラミング言語でアプリケーションロジックを書くことも、Django、Spring、Express.js のようなフレームワークを使用することもできます。プログラムを実行するには、Node.js や JRE(Java Runtime Environment)のようなランタイムが必要です。

データベースは、アプリケーションに関連する全てのデータが保存されるストレージハブです。表構造(リレーショナルデータベースシステムを使用)でデータを保存するか、ドキュメント構造、グラフ構造などの非リレーショナル(NoSQL とも呼ばれる)を使用するかを選択でき、それに応じてデータベースを選択します。データベースの例としては、MongoDB、Oracle、MySQL などがあります。

MERN スタックとは?

技術スタックには、開発者がプロジェクトの要件に応じてテクノロジーを選択できるカスタムスタックと、あらかじめテクノロジーが決定されている事前構築されたスタックがあります。

MERN は、JavaScript 技術に基づいた、事前構築済みの技術スタックです。MERN は MongoDB、 Express、 React、 Nodeの 頭文字を取った略語で、スタックを構成する 4 つの主要テクノロジーにちなんでいます。

  • MongoDB:ドキュメントデータベース
  • Express(.js):Node.js Webフレームワーク
  • React(.js):クライアントサイド JavaScript フレームワーク
  • Node(.js):最先端の JavaScript Webサーバー(ランタイム)

Express と Node がミドル(アプリケーション)ティアを構成しています。Express.js はサーバーサイドの Web フレームワークで、Node.js は人気のある強力な JavaScript サーバープラットフォームです。どちらを選択しても、ME(RVA)N は JavaScript と JSON を扱うのに理想的なアプローチです。

MERN スタックはどのように機能しますか?

MERN アーキテクチャでは、JavaScript と JSON を使用して、3層アーキテクチャ(フロントエンド、バックエンド、データベース)を容易に構築できます。

React.jsフロントエンド

MERN スタックの最上位層は React.js で、HTML で動的なクライアントサイドアプリケーションを作成するための宣言型 JavaScript フレームワークです。React を使用することで、シンプルなコンポーネントで複雑なインターフェースを構築し、バックエンドサーバーのデータに接続し、HTML としてレンダリングできます。

React の長所は、最小限のコードと手間でステートフルなデータ駆動型のインターフェースを処理することです。また、フォーム、エラー処理、イベント、リストなどの優れたサポートなど、最新の Webフレームワークに期待される機能を全て備えています。

Express.js と Node.js のサーバー層

次のレベルは、Node.js サーバー上で動作するサーバーサイドフレームワークである Express.js です。Express.js は「Node.jsのための、高速で、独裁的で、ミニマリストな Webフレームワーク」と宣伝されており、まさにそのとおりのフレームワークです。Express.js は、URL ルーティング(受信した URL をサーバーの機能にマッチさせる)や、HTTP リクエストおよびレスポンスの処理において強力なモデルを提供します。

React.js のフロントエンドから XML HTTP リクエスト(XHR)、GET、POST を行うことで、アプリケーションを動かす Express.js 関数に接続できます。これらの関数は、MongoDB の Node.js ドライバを使用して、MongoDB データベースのデータにアクセスして更新します。

MongoDB データベース層

アプリケーションが何らかのデータ(ユーザープロファイル、コンテンツ、コメント、アップロード、イベントなど)を保存する場合、React、Express、Node.js と同じくらい簡単に操作できるデータベースが必要になります。

そこで MongoDB が役に立ちます。React.js フロントエンドで作成された JSON ドキュメントは、Express.js サーバーに送信され、そこで処理されます(有効なデータであると仮定した場合)。その後、MongoDB に直接保存され、後で取得できるようになります。クラウド環境で構築する場合は、MongoDB Atlas を検討することをお勧めします。MERN スタックをセルフサービスでセットアップしたいとお考えなら、是非続きをお読みください!

MERN スタックを使用した簡単なリクエスト/レスポンスの例

一般的な HTTP リクエスト(クライアントからの)は、データベース操作である Create、Read、Update、Delete(CRUD)に対応する 4 つの操作、POST、GET、PUT、DELETE のいずれかを実行します。これらのリクエストに対応するために、Express.js はリクエストオブジェクトとレスポンスオブジェクトを提供します。リクエストオブジェクトにはエンドユーザーから提供されたデータが格納され、レスポンスオブジェクトにはデータベースから取得されたデータが格納されます。

MongoDB Node.js ドライバを使用することで、簡単なステップで MongoDB デプロイメントをアプリケーションに接続できます。

MERN スタックの最も重要な特徴の 1 つは、全ての技術が同じフォーマットでデータを保存することです。

フロントエンド層の React は JavaScript オブジェクトとしてデータを保存し、バックエンド(アプリケーション)層は JavaScript コードを使用し、データ層の MongoDB は BSON(Binary JavaScript ON)形式でデータを保存します。Express は、.json() メソッドを使用して JS と JSON の間でデータを変換します。

Node.js では、バックエンド(サーバーサイド)のアプリケーションロジックを JavaScript で記述することができます。Node.js はコアとなる http モジュールを提供します。同じものを Express で記述することで、よりクリーンなコード体験を提供します。Express は、必要なデータを正しいエンドポイントから取得するための強力なルーティング機能も提供します。これにより、開発者はルーティング用の明示的なコードを記述する必要がありません。

さらに、コードがエンドツーエンドで同じ言語(JavaScript)で書かれているため、各レイヤー間の変換にかかる時間を大幅に節約できます。

例えば、顧客(クライアント)がオンラインポータルを通じて自分の携帯番号を更新したいとします。この場合、React.js を使って構築されたフロントエンドには、ユーザーが携帯番号を入力できるフォームが用意されています。React は "useState "フックを使って、顧客が入力した携帯番号をリクエストパラメータに設定します。

Express.js のコードは、HTTP PUT リクエストから携帯番号を受け取り、それをアプリケーションのデータモデルスキーマにマッピングします。例えば、findByIdAndUpdate() のような対応するメソッドを適用して更新操作を実行します。その後、成功または失敗のメッセージを含むレスポンスが HTTP レスポンスオブジェクトを通じて送信されます。

完全な例は MERN スタックのチュートリアルのページでご覧いただけます。

MERN スタック開発とフルスタック開発の比較

MERN スタックはフルスタックの一種で、テクノロジーレイヤーがあらかじめ定義されています。フルスタック開発者は複数の技術に精通する必要があるため、学習曲線が高いのに対し、MERN スタック開発者は対応する技術のみを習得すれば十分です。以下の主な違いのリストは、プロジェクトの要件に応じて、カスタムフルスタックと MERN スタックのどちらを選択するかに役立ちます。

MERN スタック

  • 相性の良い技術があらかじめ定義されたスタック
  • JavaScript および JavaScript ベースの技術やフレームワークに焦点
  • 合理的で統一された開発アプローチ
  • 単一言語コンポーネントを使用することでコードの再利用性を促進

フルスタック

  • デザイナーはプロジェクトの要件に基づいて異なる技術を選択
  • プロジェクトに応じて習得すべき幅広いスキルが必要
  • 開発に使用するツールやフレームワークの選択における柔軟性が高い
  • 開発者がアプリケーションのさまざまな側面を処理できるため、柔軟性と汎用性が促進される

MERN スタックを選ぶべきタイミング

プロジェクトのタイムラインが厳しく、要件が明確に定義されている場合、MERN スタックは理想的な選択です。単一の技術に集中して学べばよいため、時間とコストを節約でき、開発者の早期参画が可能になります。また、構造化され、確立されたアプローチと広範なドキュメントにより、MERN スタックを使えばプロジェクトの長期的なメンテナンスが容易になります。

MERN スタックは、全てのコンポーネント(MERN)が強力な機能と特徴量を提供するため、どのようなユースケースやプロジェクト要件にも対応できます。MERN スタックを選択できない唯一のケースは、JavaScript 以外の技術を使用したい場合です。

MERN スタックを選ぶ理由

まずは、MERN スタックの基盤となるドキュメントデータベースである MongoDB から始めましょう。MongoDB は JSON データをネイティブに保存するよう設計されています。(厳密には、JSON のバイナリ形式である BSON を使用しています。)コマンドラインインターフェースからクエリ言語に至るまで、全てが JSON と JavaScript を基盤としています。

MongoDB は Node.js と非常に相性がよく、アプリケーションの各層で JSON データの保存、操作、表現が驚くほど簡単になります。クラウドネイティブなアプリケーションの場合、MongoDB Atlas を使えば、ボタンを数回クリックするだけで、任意のクラウドプロバイダ上に自動スケーリング可能な MongoDB クラスタができるので、さらに簡単になります。

Express.js(Node.js 上で動作)と React.js は、JavaScript/JSON アプリケーションを MERN フルスタックとして完成させます。Express.js は、HTTP リクエストとレスポンスをラップし、URL をサーバーサイドの関数に簡単にマッピングできるようにするサーバーサイドアプリケーションフレームワークです。React.js は、HTML でインタラクティブなユーザーインターフェースを構築し、リモートサーバーと通信するためのフロントエンド JavaScript フレームワークです。

この組み合わせは、JSON データが前面から背面へと自然に流れることを意味し、ビルドが容易になり、デバッグが合理的に簡単になります。さらに、1 つのプログラミング言語と JSON ドキュメント構造を知っているだけで、システム全体を理解することができるのは大きなメリットです。

MERN は、特に React.js の経験者にとって、迅速な移行を求める今日のウェブ開発者に選ばれているスタックです。

MERN ユースケース

他の Webスタックと同様に、MERN では何でも構築可能ですが、特に JSON を多用するケース、クラウドネイティブなアプリケーション、そして動的な Webインターフェースに最適です。例えば、ワークフロー管理、ニュース集約、To-Doアプリやカレンダー、インタラクティブなフォーラムやソーシャルプロダクトなど、さまざまなアイデアを形にできます。

まとめ

MERN スタックは、使用する技術をあらかじめ決めることで、技術スタック全体を簡素化することをめざしています。開発者やデザイナーは、どのビジネスケースにどの技術を使うべきか悩む必要がありません。また、複数の技術を習得したり、それぞれに精通する人材を雇ったりする必要もなく、特定の人に負担をかけることもありません。MERN スタックを利用すれば、少数の技術を学ぶだけで、シンプルなものから複雑なものまで、さまざまなアプリケーションを構築できます。これにより、生産が迅速化し、スケーラビリティ、パフォーマンス、セキュリティを損なうことなく、全体的なコストを削減できます。

よくある質問

MongoDB Atlas を無料で開始する

MongoDB Atlas を利用すると、MongoDB をクラウドで無料で実行できます。無料でサービスを開始できます。
無料で始める!