コンピューティング において、ソリューションスタック( ソフトウェアスタック やテックスタック とも呼ばれる)は、アプリケーションをサポートするために追加のソフトウェアを必要としない完全なプラットフォームを作成するために必要な ソフトウェア サブシステムまたはコンポーネントのセットです。[ 1 ] アプリケーションは、結果として得られるプラットフォームの「上で実行される」または「その上で実行される」と言われます。
例えば、Webアプリケーション を開発する場合、アーキテクトはスタックを、対象となるオペレーティングシステム 、Webサーバー 、データベース 、プログラミング言語 として定義します。ソフトウェアスタックの別のバージョンは、オペレーティングシステム、ミドルウェア 、データベース、アプリケーションです。[ 2 ] 通常、ソフトウェアスタックのコンポーネントは、異なる開発者によって互いに独立して開発されます。
全体システムを構成するいくつかのコンポーネント/サブシステムは、多くの場合、まとめて選択されるため、その特定のセットは、部分の名前ではなく、全体を表す名前で参照されます。通常、この名前は個々のコンポーネントを表す頭字語です。 [ 3 ]
「ソリューションスタック」という用語には、歴史的に、最終製品の一部としてハードウェアコンポーネントが含まれることがあり、ハードウェアとソフトウェアの両方がサポート層に混在していました。[ 4 ] [ 5 ]
フルスタック開発者は、アプリケーションのすべてのレイヤー( フロントエンドとバックエンド )で作業できることが期待されます。フルスタック開発者とは、ウェブサイト、ウェブアプリケーション、またはデスクトップアプリケーションのフロントエンドとバックエンドの両方の開発に携わる開発者 またはエンジニアと定義できます。[ 6 ] つまり、データベースやユーザー向けウェブサイトを含むプラットフォーム構築を主導したり、プロジェクトの計画段階でクライアントと連携したりできるということです。
JavaScriptスタック JavaScriptスタックとは、ソフトウェア開発プロセス全体を通してJavaScriptを主要なプログラミング言語として使用する技術の集合体であり、通常はフロントエンドツールとバックエンドツールを組み合わせて本格的なウェブアプリケーションを構築します。Node.jsの登場により、JavaScriptはサーバーサイドで実行できるようになり、開発者はクライアント開発とサーバー開発の両方で単一の言語を使用できるようになりました。この統合により、開発ワークフローが簡素化され、コードの再利用性が向上し、アプリケーション全体で一貫したロジックとツールが実現されるため、生産性が向上します。JavaScriptスタックは、そのスピード、スケーラビリティ、そしてnpmなどのプラットフォームを通じて利用できるライブラリやフレームワークの広大なエコシステムへのアクセス性から、しばしば支持されています。これらのスタックの人気の高まりは、現代のウェブエンジニアリングにおいてフルスタックJavaScript開発への広範な移行を反映しています。[ 7 ] [ 8 ] [ 9 ] [ 10 ]
OSレベルのスタック MLVN [ 11 ] MongoDB (データベース)Linux (オペレーティング システム)Varnish(ソフトウェア) (フロントエンドキャッシュ)Node.js (JavaScript ランタイム)ウィサヴ/ウィパヴ Windows Server (オペレーティング システム)インターネット インフォメーション サービス (Web サーバー)Microsoft SQL Server / PostgreSQL (データベース)ASP.NET (バックエンド Web フレームワーク)Vue.js (フロントエンドWebフレームワーク)
OSに依存しないウェブスタック グランドスタック[ 12 ] GraphQL (データクエリおよび操作言語)React (Webアプリケーションのプレゼンテーション)Apollo (データグラフプラットフォーム)Neo4j (データベース管理システム )ジャムスタック [ 13 ] JavaScript (プログラミング言語)API (アプリケーションプログラミングインターフェース)マークアップ (コンテンツ)平均 [ 14 ] MongoDB (データベース)Express.js (アプリケーションコントローラー層)AngularJS / Angular (Webアプリケーションのプレゼンテーション)Node.js (JavaScript ランタイム)メルン [ 15 ] MongoDB (データベース)Express.js (アプリケーションコントローラー層)React.js (Webアプリケーションのプレゼンテーション)Node.js (JavaScript ランタイム)メヴン[ 16 ] MongoDB (データベース)Express.js (アプリケーションコントローラー層)Vue.js (Web アプリケーションのプレゼンテーション)Node.js (JavaScript ランタイム)ペルン[ 17 ] PostgreSQL (データベース)Express.js (アプリケーションコントローラー層)React(JavaScript ライブラリ) (Web アプリケーションのプレゼンテーション)Node.js (JavaScript ランタイム)T-REx [ 18 ] TerminusDB (スケーラブルなグラフデータベース )React (JavaScript ウェブフレームワーク)Express .js ( Node.js 用フレームワーク)
特定のフレームワークスタック
Java-Springスタック Java- Spring スタックは、Javaプログラミング言語とSpringエコシステムを中心に構築された、堅牢でエンタープライズグレードのテクノロジースタックです。その中核を成すのはSpring Frameworkであり、これは最新のJavaアプリケーション向けの包括的なプログラミングおよび構成モデルを提供します。このスタックには、多くの場合、Spring Bootが含まれます。Spring Bootは、設定よりも規約を重視したSpringアプリケーションのセットアップを簡素化するプロジェクトで、組み込みサーバーと本番環境対応のデフォルト設定を備えています。Spring MVC、Spring Data、Spring Securityなどの追加コンポーネントは、Webアプリケーションの構築、データベースへのアクセス、認証と認可の実装に広く使用されています。Java-Springスタックは、MySQLやPostgreSQLなどのリレーショナルデータベースと組み合わせられることが多く、通常はApache Tomcatなどのサーブレットコンテナ、またはマイクロサービスアーキテクチャ向けのSpring Cloudなどのプラットフォームを使用してデプロイされます。スケーラビリティ、モジュール性、長期的な安定性で知られるJava-Springスタックは、特に金融、通信、大規模SaaSプラットフォームなどのエンタープライズ環境で広く採用されています。[ 19 ] [ 20 ] [ 21 ]
Python-Djangoスタック Python- Django スタックは、Pythonを主要プログラミング言語として、DjangoをWebフレームワークとして利用します。Djangoは、クリーンで実用的な設計を促進するように設計されており、DRY (Don't Repeat Yourself)原則に従っています。ユーザー認証、管理インターフェース、フォーム処理、強力なORMなど、幅広い組み込み機能を備えています。これらの組み込みツールにより、Djangoはコンテンツ駆動型またはデータベースを多用するWebアプリケーションに特に効果的です。このスタックは、データベースとしてPostgreSQLまたはSQLiteと組み合わせることが多く、Nginxの背後にあるGunicornなどのWebサーバー上で実行されます。Pythonの可読性とDjangoの包括的なドキュメントにより、このスタックは教育プラットフォーム、科学アプリケーション、コンテンツ管理システムで広く使用されています。[ 22 ] [ 23 ]
Ruby on Railsスタック Ruby on Rails スタックは、Rubyプログラミング言語とRailsウェブフレームワークを中心に構築されています。設定よりも規約を 重視する原則を重視しており、開発者は定型コードや手動設定の必要性を減らすことで、アプリケーションを迅速に構築できます。Ruby on Railsには、オブジェクトリレーショナルマッピング(ORM)システム、コード生成のためのスキャフォールディング、構造化されたディレクトリレイアウトなどの統合ツールセットが付属しており、迅速なアプリケーション開発に適しています。シンプルさと開発者の利便性を重視しているため、スタートアップ企業や小規模チームの間で人気があります。このスタックには通常、PostgreSQLまたはMySQLデータベース、PumaやNginxなどのウェブサーバー、CapistranoやHerokuなどのデプロイメントツールが含まれています。[ 24 ] [ 25 ]
その他のスタック
OSレベルのスタック BCHS [ 26 ] OpenBSD (オペレーティングシステム)C (プログラミング言語)httpd (ウェブサーバー)SQLite (データベース)ガネティ[ 27 ] Xen またはKVM (ハイパーバイザー )LVM (大容量記憶装置管理)を搭載したLinux 分散複製ブロックデバイス (ストレージレプリケーション )Ganeti (仮想マシン クラスタ管理 ツール)Ganeti Web マネージャー (Web インターフェース)ガラス[ 28 ] GemStone (データベースおよびアプリケーション サーバー)Linux (オペレーティング システム)Apache (ウェブサーバー)Smalltalk (プログラミング言語)Seaside (ウェブフレームワーク)ランプ [ 14 ] Linux (オペレーティング システム)Apache (ウェブサーバー)MySQL またはMariaDB (データベース管理システム )Perl 、PHP 、またはPython (スクリプト言語 )リープ[ 29 ] Linux (オペレーティング システム)Eucalyptus ( Amazon Elastic Compute Cloud の無料のオープンソース代替)AppScale (クラウド コンピューティングフレームワーク、 Google App Engine の無料のオープンソース代替)Python (プログラミング言語)LEMP/LNMP [ 30 ] Linux (オペレーティング システム)Nginx (ウェブサーバー)MySQL またはMariaDB (データベース管理システム)Perl 、PHP 、またはPython (スクリプト言語)LLMP [ 31 ] Linux (オペレーティング システム)Lighttpd (ウェブサーバー)MySQL またはMariaDB (データベース管理システム)Perl 、PHP 、またはPython (スクリプト言語)ライム病 とライセ [ 32 ] Linux (オペレーティング システム)Yaws ( Erlang で書かれた Web サーバー)Mnesia またはCouchDB ( Erlang で書かれたデータベース)Erlang (関数型プログラミング言語)マンプ [ 33 ] Mac OS X (オペレーティング システム)Apache (ウェブサーバー)MySQL またはMariaDB (データベース)PHP 、Perl 、Python (プログラミング言語)ラップ[ 34 ] Linux (オペレーティング システム)Apache (ウェブサーバー)PostgreSQL (データベース管理システム)Perl 、PHP 、またはPython (スクリプト言語)ワンプ [ 35 ] Windows (オペレーティング システム)Apache (ウェブサーバー)MySQL またはMariaDB (データベース)PHP 、Perl 、またはPython (プログラミング言語)弱虫 [ 36 ] Windows (オペレーティング システム)インターネット インフォメーション サービス (Web サーバー)MySQL またはMariaDB (データベース)PHP 、Perl 、またはPython (プログラミング言語)勝利[ 37 ] Windows Server (オペレーティング システム)インターネット インフォメーション サービス (Web サーバー).NET (ソフトウェアフレームワーク )SQL Server (データベース)ウィサ[ 38 ] Windows Server (オペレーティング システム)インターネット インフォメーション サービス (Web サーバー)SQL Server (データベース)ASP.NET (ウェブフレームワーク)
OSに依存しないウェブスタック エルク[ 39 ] Elasticsearch (検索エンジン )Logstash (イベントおよびログ管理 ツール)Kibana (データ可視化 )マークス[ 14 ] Apache Mesos (ノードの起動/シャットダウン)Akka (ツールキット) (アクター実装)Riak (データストア)Apache Kafka (メッセージング)Apache Spark (ビッグデータとMapReduce)NMP [ 40 ] Nginx (ウェブサーバー)MySQL またはMariaDB (データベース)PHP (プログラミング言語)オープンACS [ 41 ] NaviServer (ウェブサーバー)OpenACS (ウェブアプリケーションフレームワーク )PostgreSQL またはOracle データベース (データベース)Tcl (スクリプト言語)プローン Prometheus (メトリクスと時系列)Linkerd (サービスメッシュ)OpenFaaS(コンピューティングの管理と自動スケーリング) NATS (非同期メッセージバス/キュー)Kubernetes (宣言型、拡張可能、スケールアウト型、自己修復型クラスタリング)スマック[ 14 ] Apache Spark (ビッグデータとMapReduce)Apache Mesos (ノードの 起動/シャットダウン)Akka(ツールキット) (アクター 実装)Apache Cassandra (データベース)Apache Kafka (メッセージング )ザムップ [ 42 ] クロスプラットフォーム (オペレーティングシステム)Apache (ウェブサーバー)MariaDB またはMySQL (データベース)PHP (プログラミング言語)Perl (プログラミング言語)XRX [ 43 ] XMLデータベース( BaseX 、eXist 、MarkLogic Server などのデータベース)XQuery (クエリ言語)REST (クライアント インターフェース)XForms (クライアント)
参照
参考文献 ^ 「ソリューションスタック」 。コンピュータデスクトップ百科事典 。The Computer Language Company。2015年。 2018年 7月5日 閲覧 。^ Mimoso, Michael S. (2003年2月24日). 「Red Hat: Linux served at vertical data center dinner tables」 . SearchEnterpriseLinux.com . 2009年8月9日 閲覧。 ^ Beal, V. (2007年9月7日). 「Web Stacksの頭字語ガイド」 . Webopedia . Quinstreet, Inc. 2018年 7月5日 閲覧 。 ^ Ferguson, R. (2002). Microsoft SharePoint Portal Server の使用 . Que Publishing. p. 616. ISBN 9780789725707 。^ アンダーソン、GW (2003). SAP計画:導入におけるベストプラクティス . サムズ. p. 13. ISBN 9780789728753 。^ Amir, Masroor. 「フルスタック開発者 - 完全ロードマップ | 2023年のテクノロジー」 . The Geeks Bot | オタクのためのコンピューターサイエンスサイト. 2023年4月27日 閲覧 。 ^ Tilkov, Stefan, Steve Vinoski. 「Node.js: JavaScriptを用いた高性能ネットワークプログラムの構築」 IEEE Internet Computing , vol. 14, no. 6, 2010, pp. 80–83. DOI: 10.1109/MIC.2010.145 ^ Pimentel, Jon.フルスタックReactプロジェクト . Packt Publishing, 2018. ^ 「Node.js — Node.js®について」 . nodejs.org . 2025年6月18日 閲覧 。 ^ bin Uzayr, Sufyan (2023-08-09)、 「JavaScript for Mobile Usage」 、 Conquering JavaScript 、ボカラトン:CRC Press、pp. 371– 402、 doi : 10.1201/9781003356578-7 、 ISBN 978-1-003-35657-8 、 2025年6月18日 取得{{citation }}: CS1 maint: ISBNによる作業パラメータ(リンク )^ Sharma, A. (2018). 「第2章 MEVNの紹介」 . Vue.jsとNode.jsによるフルスタックWeb開発. Packt Publishing Ltd. pp. 6– 30. ISBN 9781788830775 。^ 「GRANDStack」 . 2019年 12月24日 閲覧 。 ^ "JAMstack" . 2018年 7月5日 閲覧 。 ^ a b c d Frampton, M. (2018). オープンソース・ビッグデータ・スタック完全ガイド . Apress. p. 7. ISBN 9781484221495 。^ Wilson, E. (2018). 「第1章 MERNスタックの紹介」 . MERNクイックスタートガイド . Packt Publishing Ltd. pp. 7– 13. ISBN 9781787280045 。^ Sharma, A. (2018). 「第1章 MEVNの紹介」 . Vue.jsとNode.jsによるフルスタックWeb開発. Packt Publishing Ltd. pp. 6– 30. ISBN 9781788830775 。^ 「Webアプリを構築してPERNスタックを学ぶ - フルビデオコース」 . freeCodeCamp.org . 2020年3月20日. 2021年6月19日 閲覧 。 ^ 「TerminusDB on Twitter」 . Twitter . 2020年10月14日 閲覧 。 ^ ウォールズ、クレイグ『春の行動 』マニング出版、2022年。 ^ Deinum, Marten; Cosmina, Iuliana (2021)、 「Spring Framework Fundamentals」 、 Pro Spring MVC with WebFlux 、カリフォルニア州バークレー:Apress、pp. 21– 54、 doi : 10.1007/978-1-4842-5666-4_2 、 ISBN 978-1-4842-5665-7 、 2025年6月18日 取得{{citation }}: CS1 maint: ISBNによる作業パラメータ(リンク )^ Gutierrez, Felipe (2016)、 「Spring with Spring Boot」 、 Pro Spring Boot 、カリフォルニア州バークレー:Apress、pp. 89– 105、 doi : 10.1007/978-1-4842-1431-2_5 、 ISBN 978-1-4842-1432-9 、 2025年6月18日 取得{{citation }}: CS1 maint: ISBNによる作業パラメータ(リンク )^ Holovaty, Adrian, Jacob Kaplan-Moss. The Django Book . バージョン2.0. ^ "Django" . Djangoプロジェクト . 2025年6月18日 閲覧。 ^ Hinze, Annika (2008年7月). 「RailsSpace: Ruby on Railsによるソーシャルネットワーキングウェブサイトの構築 (Addison-Wesley Professional Ruby Series)、Michael Hartl、Aurelius Prochazka著」のレビュー、Addison-Wesley Professional、2007年、44.99ドル、ISBN 0321480791. ACM Queue . 6 (4): 53. doi : 10.1145/1413254.1413266 . ISSN 1542-7730 . ^ 「Ruby on Railsガイド」 . Ruby on Railsガイド. 2025年6月18日 閲覧 。 ^ Dzonsons, K. 「BCHS Stack」 。 2018年 7月5日 閲覧 。 ^ 「Ganeti インストールチュートリアル」 . Ganeti ドキュメント . Google, Inc. 2018年 7月5日 閲覧 。 ^ Glynn, A. (2015年6月3日). 「GLASSのインストールと設定に関する初心者向けガイド:Gemstone 64/S Smalltalk / Seaside / アプリケーションサーバー / オブジェクトデータベースサーバー環境」 Horizo ns of Identity . 2018年 7月5日 閲覧。 ^ Kaisler, SH; Amour, F.; Espinosa, A.; Money, WH (2015). サービス提供におけるビッグデータからの価値の獲得 . Business Expert Press. p. PT69. ISBN 9781631572234 。^ 「LEMP Stack Info」 . LEMP.io. 2018年 7月6日 閲覧 。 ^ Johnston, C. (2009年2月18日). 「Ubuntu 8.10でLLMPスタック(Linux、Lighttpd、MySQL、PHP5)を設定する」 ChrisJohnston.org . 2019 年2月5日時点の オリジナルよりアーカイブ。 2018年 7月6日 閲覧 。 ^ 「ソリューションスタック」 . Idiosyncratic Knowledge . 2016年7月9日. 2016年 7月9日 閲覧 。 ^ Coucouvanis, N. (2007). 「Get Your Wiki On」 . Mac Life (5): 83–86 . 2018年 7月6日 閲覧 。 ^ Rittinghouse, JW; Ransome, JF (2017). クラウドコンピューティング:実装、管理、セキュリティ . CRC Press. p. PT184. ISBN 9781351615365 。^ "WAMP" . Softaculous Ltd. 2018年 7月6日 閲覧 。 ^ 「チュートリアル: Windows Server を実行している Amazon EC2 インスタンスへの WIMP サーバーのインストール」 。AWS ドキュメント 。Amazon Web Services, Inc. 2018年 7月6日 閲覧 。 ^ Evgen (2018年1月28日). 「Web開発のためのテクノロジースタックの選び方」 . GBKSOFTブログ . GBKSOFT Dev LLC . 2018年 7月6日 閲覧 。 ^ Sachdeva, B. (2009年5月27日). 「自分に最適なWebアプリケーションスタックはどれか?」 . developer.com . QuinStreet, Inc. 2018年 7月6日 閲覧 。 ^ Chhajed, S. (2015). 「第1章 ELKスタック入門」 . Learning ELK Stack . Packt Publishing Ltd. pp. 1– 22. ISBN 9781785886706 。^ ルナ、F. (2017). Programador Web フルスタック: Desarrollo フロントエンドとバックエンド 。レッドユーザー。 17~ 18ページ 。 ^ 「OpenACS:その概要と使用理由」 OpenACS.orgOpenACS コミュニティ 2018 年 7月6日 閲覧 。 ^ 「XAMPP Apache + MariaDB + PHP + Perl」 Apache Friends 2018年 7月6日 閲覧 。 ^ McCreary, D. 「XRX」 danmccreary.com . 2018年 7月6日 閲覧 。