Jamstack
Jamstack
Jamstackアーキテクチャの包括的ガイド:JavaScript、API、マークアップを活用した高速で安全、かつスケーラブルなモダンWebアプリケーションの構築方法。
Jamstackとは何か?
Jamstackは、ウェブサイトやウェブアプリケーションの構築、デプロイ、配信方法を根本的に再考する現代的なウェブ開発アーキテクチャを表します。この頭字語は元々JavaScript、API、Markupを意味していましたが、これらの特定技術を超えて、より広範なウェブ開発の哲学を包含するように進化しました。このアーキテクチャは、マークアップとアセットの事前ビルド、コンテンツ配信ネットワーク(CDN)からの配信、そしてJavaScriptとサーバーレス関数による動的な機能強化を重視しています。リクエストごとにウェブサーバー、データベース、サーバーサイド処理に大きく依存する従来のウェブアーキテクチャとは異なり、Jamstackアプリケーションは高度に最適化された静的アセットに事前ビルドされ、世界中のエッジロケーションから即座に配信できます。
Jamstackの中核原則は、フロントエンドのプレゼンテーション層をバックエンドサービスやデータソースから分離することにあります。この分離により、開発者はモノリシックなフレームワークや密結合システムに制約されることなく、各特定機能に最適なツールを選択できます。フロントエンドは通常、Gatsby、Next.js、Nuxt.js、Hugoなどの静的サイトジェネレーターを使用して構築され、ビルドプロセス中にソースコード、コンテンツ、データを静的なHTML、CSS、JavaScriptファイルにコンパイルします。これらの事前ビルドされたファイルには必要なマークアップとアセットがすべて含まれており、リクエストごとのサーバーサイドレンダリングが不要になります。その後、クライアントサイドJavaScriptとサードパーティAPIを通じて動的機能が追加され、パフォーマンスやセキュリティを犠牲にすることなく、リッチでインタラクティブな体験を実現します。
Jamstackアプローチは、従来のウェブアーキテクチャの多くの制限、特にパフォーマンス、セキュリティ、スケーラビリティ、開発者体験に関する問題に対処します。CDNから事前ビルドされた静的ファイルを配信することで、Jamstackサイトは優れた読み込み速度を実現し、複雑なサーバーインフラストラクチャなしで大規模なトラフィックスパイクに対応できます。データベースやサーバーが侵害される可能性がないため、攻撃対象領域が縮小され、セキュリティが大幅に強化されます。開発者は、簡素化されたデプロイワークフロー、優れたバージョン管理、最新の開発ツールとフレームワークを使用できるメリットを享受します。このアーキテクチャは、小規模ビジネスからエンタープライズ企業まで幅広い組織で大きな採用を獲得しており、マーケティングウェブサイトやeコマースプラットフォームから複雑なウェブアプリケーションやドキュメントサイトまで、あらゆるものを支えています。
Jamstackの主要コンポーネント
静的サイトジェネレーター(SSG)は、ほとんどのJamstackアプリケーションの基盤として機能し、ビルドプロセス中にソースコード、コンテンツ、データを最適化された静的ファイルに変換します。Gatsby、Next.js、Hugo、Eleventyなどのこれらのツールは、コードコンパイル、アセット最適化、コンテンツ処理などのタスクを処理し、本番環境対応のウェブサイトを作成します。開発者は最新のフレームワークとツールを使用しながら、CDNから効率的に配信できる静的ファイルを出力できます。
コンテンツ配信ネットワーク(CDN)は、Jamstackデプロイメントのバックボーンを形成し、事前ビルドされた静的アセットをグローバルなエッジロケーション全体に配信して最適なパフォーマンスを実現します。Netlify、Vercel、AWS CloudFront、Cloudflareなどのサービスは、即座のグローバル配信、自動SSL証明書、エッジコンピューティング機能を提供します。CDNは、ユーザーが最も近い地理的ロケーションからコンテンツを受信できるようにし、レイテンシを最小化し、読み込み速度を最大化します。
ヘッドレスコンテンツ管理システムは、コンテンツ作成をプレゼンテーションから分離し、従来のテンプレートシステムではなくAPIを通じてコンテンツを提供します。Contentful、Strapi、Sanity、Forestryなどのソリューションにより、コンテンツ作成者はユーザーフレンドリーなインターフェースを通じてコンテンツを管理でき、開発者はビルドプロセス中または実行時にAPIを介してそのコンテンツを利用できます。この分離により、複数のチャネルでコンテンツがどのように提示され消費されるかについて、より大きな柔軟性が得られます。
サーバーレス関数は、従来のサーバーインフラストラクチャを必要とせずに、動的機能とサーバーサイド処理を処理します。Netlify Functions、Vercel Functions、AWS Lambdaなどのプラットフォームにより、開発者はAPIエンドポイントの作成、フォーム送信の処理、認証の処理、サードパーティサービスとの統合が可能になります。これらの関数は自動的にスケールし、必要なときにのみ実行されるため、コスト効率の高い動的機能を提供します。
ビルドツールとCI/CDパイプラインは、ソースコードをデプロイ可能な静的アセットに変換するプロセスを自動化します。最新のビルドシステムは、GitHub、GitLab、Bitbucketなどのバージョン管理プラットフォームと統合され、コード変更がプッシュされたときに自動ビルドとデプロイメントをトリガーします。これらのパイプラインは、依存関係のインストール、コードコンパイル、テスト、CDNエンドポイントへのデプロイメントなどのタスクを処理します。
APIファーストサービスは、明確に定義されたインターフェースを通じて専門的な機能を提供し、Jamstackアプリケーションがカスタムバックエンド開発なしで強力な機能を統合できるようにします。これらのサービスは、eコマース(Shopify、Snipcart)、認証(Auth0、Firebase Auth)、検索(Algolia、Elasticsearch)、分析(Google Analytics、Mixpanel)などの分野をカバーします。APIファーストアプローチにより、開発者はベストオブブリードのサービスからアプリケーションを構成できます。
最新のJavaScriptフレームワークは、Jamstackアプリケーションのインタラクティブなフロントエンド体験を支え、リアクティブなユーザーインターフェースとクライアントサイド機能を提供します。React、Vue.js、Angular、Svelteなどのフレームワークにより、開発者は静的生成のメリットを維持しながら、洗練されたユーザー体験を作成できます。これらのフレームワークは、静的サイトジェネレーターやビルドツールとシームレスに統合されることが多いです。
Jamstackの仕組み
Jamstackワークフローはソースコード準備から始まり、開発者は最新のフレームワークを使用してアプリケーションコードを記述し、マークダウンまたはヘッドレスCMSインターフェースを通じてコンテンツを作成し、ビルド設定を構成します。ソースコードには通常、最終サイトがどのように生成されるべきかを定義するテンプレート、コンポーネント、スタイリング、構成ファイルが含まれます。
コンテンツ集約はビルドプロセス中に発生し、静的サイトジェネレーターがマークダウンファイル、ヘッドレスCMS API、外部データベース、サードパーティサービスなど、さまざまなソースからコンテンツを取得します。このコンテンツは処理、変換され、アプリケーションテンプレートやコンポーネントとの統合に向けて準備されます。
ビルドプロセス実行は、コンパイル、バンドル、最適化ステップを通じて、ソースコードとコンテンツを最適化された静的アセットに変換します。静的サイトジェネレーターはテンプレートを処理し、スタイリングを適用し、画像を最適化し、コードを縮小し、アプリケーション内の各ページまたはルートのHTMLファイルを生成します。
アセット最適化は、コード分割、画像圧縮、CSSとJavaScriptの縮小、重要なリソースの優先順位付けなどの技術を通じて、最大のパフォーマンスを保証します。ビルドツールは、ファイルサイズを削減し、読み込みパフォーマンスを向上させるために、これらの最適化を自動的に適用します。
CDNへのデプロイメントは、生成された静的アセットをコンテンツ配信ネットワークにアップロードし、グローバルなエッジロケーション全体に配信することを含みます。NetlifyやVercelなどの最新のデプロイメントプラットフォームは、アトミックデプロイメントを提供し、すべてのファイルが同時に更新されることを保証して、不整合な状態を防ぎます。
ランタイム強化は、ユーザーのブラウザで実行されるクライアントサイドJavaScriptを通じて動的機能を追加します。このJavaScriptは、APIからデータを取得し、ユーザーインタラクションを処理し、アプリケーション状態を管理し、静的配信のパフォーマンスメリットを維持しながら、リッチなインタラクティブ体験を提供できます。
API統合は、実行時にサーバーレス関数やサードパーティサービスに接続することで動的機能を実現します。これらの統合は、フォーム処理、ユーザー認証、決済処理、リアルタイムデータ更新などのタスクを、従来のサーバーインフラストラクチャを必要とせずに処理します。
継続的デプロイメントは、コンテンツまたはコード変更が検出されたときに、サイトを自動的に再ビルドおよび再デプロイします。このワークフローにより、バージョン管理とロールバック機能を維持しながら、更新が迅速にライブサイトに伝播されることが保証されます。
ワークフローの例:ヘッドレスCMSでブログ投稿が作成され、新しいビルドを開始するWebhookがトリガーされます。静的サイトジェネレーターは新しいコンテンツを取得し、影響を受けるページを再生成し、アセットを最適化し、更新されたサイトをCDNにデプロイして、数分以内に新しい投稿をグローバルに利用可能にします。
主要なメリット
優れたパフォーマンスは、CDNエッジロケーションから事前ビルドされた静的ファイルを配信することで実現され、各リクエストのサーバー処理時間とデータベースクエリが不要になります。静的アセットは即座に読み込まれ、最新の最適化技術により最小限の帯域幅使用と高速なレンダリング時間が保証されます。
強化されたセキュリティは、静的サイトの攻撃対象領域の縮小から生まれ、侵害されるデータベースがなく、悪用されるサーバーサイドコードがなく、公開インターネットに露出する管理システムがありません。分離されたアーキテクチャにより、潜在的な脆弱性がシステム全体ではなく特定のサービスに隔離されます。
無限のスケーラビリティは、CDN配信を通じて実現され、静的ファイルはパフォーマンス低下やインフラストラクチャスケーリングの懸念なしに大規模なトラフィックスパイクを処理できます。動的コンポーネントのサーバーレスな性質により、需要に基づいて自動的にスケールします。
改善された開発者体験は、最新のツール、簡素化されたデプロイワークフロー、好みのフレームワークと技術を使用できる能力から生まれます。開発者は、自動化されたビルドプロセスと即座のプレビューデプロイメントのメリットを享受しながら、使い慣れたツールで作業できます。
コスト効率は、インフラストラクチャ要件の削減から生まれ、静的ホスティングは従来のサーバーホスティングよりも大幅に安価です。サーバーレス関数とAPIサービスは従量課金モデルに従い、アイドルリソースのコストを排除します。
優れた信頼性は、CDNホスティングの分散性と単一障害点の排除から生まれます。静的サイトは、バックエンドサービスに問題が発生しても利用可能であり続け、簡素化されたアーキテクチャにより潜在的な障害モードが削減されます。
バージョン管理統合により、サイト全体をコードとして扱うことができ、完全なバージョン履歴、ブランチ機能、協調開発ワークフローが可能になります。変更は標準的な開発プラクティスを使用してレビュー、テスト、ロールバックできます。
グローバル配信は、CDNエッジロケーションを通じて世界中で一貫したパフォーマンスを保証し、ユーザーの場所に関係なく高速な読み込み時間を提供します。コンテンツは自動的にキャッシュされ、最も近い地理的ポイントから配信されます。
SEOの利点は、高速な読み込み時間、クリーンなHTMLマークアップ、検索エンジンが好むCore Web Vitalsの優れたスコアから生まれます。事前レンダリングされたコンテンツは、JavaScript実行を必要とせずに検索エンジンクローラーが即座に利用できます。
将来性のあるアーキテクチャにより、Jamstackアプリケーションの分離された性質により、技術の更新やサービスの置き換えが容易になります。個々のコンポーネントは、システム全体に影響を与えることなくアップグレードまたは置き換えることができます。
一般的なユースケース
マーケティングウェブサイトは、JamstackのパフォーマンスとSEOの利点から恩恵を受け、訪問者を効果的にコンバージョンする高速読み込みページを提供します。マーケティングツールや分析サービスとの統合能力により、リード生成とブランドプレゼンスに理想的です。
eコマースプラットフォームは、ヘッドレスコマースAPIと静的生成を組み合わせて、高速な製品カタログと最適化されたチェックアウト体験を実現します。Shopify Plusやcommercetoolsなどのソリューションは、フロントエンドの柔軟性を維持しながら堅牢なバックエンド機能を提供します。
ドキュメントサイトは、マークダウンファイルまたはヘッドレスCMSシステムを通じて維持できる高速で検索可能なドキュメントに静的生成を活用します。バージョン管理統合により、協調編集と自動公開ワークフローが可能になります。
ブログとコンテンツサイトは、ヘッドレスCMS統合と静的生成を活用して、優れたSEOパフォーマンスを持つ高速読み込み記事を実現します。コンテンツ作成者は使い慣れた編集インターフェースを使用でき、開発者はプレゼンテーションを完全に制御できます。
ポートフォリオウェブサイトは、高速読み込みギャラリーとインタラクティブなプレゼンテーションを通じてクリエイティブな作品を紹介します。パフォーマンスのメリットにより、プロフェッショナルなプレゼンテーション基準を維持しながら、ビジュアルコンテンツが迅速に読み込まれることが保証されます。
企業ウェブサイトは、簡単なコンテンツ管理機能を備えた、信頼性が高く安全なビジネスプレゼンスプラットフォームを提供します。スケーラビリティにより、マーケティングキャンペーンやニュース報道によるトラフィックスパイク時でも一貫したパフォーマンスが保証されます。
ランディングページは、高速な読み込み時間とマーケティングツールや分析プラットフォームとのシームレスな統合を通じてコンバージョンを最適化します。A/Bテストとパーソナライゼーションは、クライアントサイドJavaScriptとAPI統合を通じて実装できます。
ウェブアプリケーションは、静的生成と動的機能を組み合わせて、複雑なユーザーインターフェースとワークフローを実現します。プログレッシブウェブアプリ機能を追加して、ウェブアクセシビリティを維持しながらネイティブのような体験を提供できます。
多言語サイトは、共有コンポーネントと機能を維持しながら、異なる言語バージョンの静的生成から恩恵を受けます。コンテンツ管理システムは翻訳ワークフローを処理でき、ビルドプロセスは各ロケールの最適化されたバージョンを生成します。
イベントウェブサイトは、API統合を通じてリアルタイム更新を提供しながら、トラフィックスパイクを効果的に処理します。登録システム、スケジュール、アナウンスは、静的パフォーマンスのメリットを維持しながら動的に管理できます。
Jamstack vs 従来のアーキテクチャ比較
| 側面 | Jamstack | 従来のサーバーサイド |
|---|---|---|
| パフォーマンス | CDNエッジロケーションからの即座の読み込み | 各リクエストのサーバー処理時間 |
| スケーラビリティ | CDNを通じた自動無限スケーリング | サーバースケーリングとロードバランシングが必要 |
| セキュリティ | 最小限の攻撃対象領域、露出したデータベースなし | サーバーとデータベースを含む複数のセキュリティベクトル |
| ホスティングコスト | 低コストの静的ホスティングと従量課金関数 | 継続的なサーバーとデータベースホスティングコスト |
| 開発ワークフロー | 自動ビルドを伴うGitベースのデプロイメント | 複雑なデプロイメントプロセスとサーバー管理 |
| 信頼性 | 高可用性を持つ分散CDNホスティング | サーバーインフラストラクチャの単一障害点 |
課題と考慮事項
ビルド時間の複雑さは、数千ページを持つ大規模サイトでは重要になる可能性があります。静的サイトジェネレーターは各ビルド中にすべてのコンテンツを処理する必要があるためです。インクリメンタルビルドと選択的再生成戦略はこの問題を軽減するのに役立ちますが、慎重なアーキテクチャ計画が必要です。
動的コンテンツの制限は、コメント、ユーザー生成コンテンツ、パーソナライゼーションなどのリアルタイム機能に対して創造的なソリューションを必要とします。サーバーレス関数とクライアントサイドJavaScriptはこれらのニーズに対処できますが、従来のサーバーサイドソリューションと比較して複雑さが増します。
学習曲線には、従来のウェブ開発とは大きく異なる新しいツール、ワークフロー、アーキテクチャパターンの理解が含まれます。開発者は、静的サイトジェネレーター、ヘッドレスCMSシステム、サーバーレスデプロイメントパターンに精通する必要があります。
サードパーティサービスへの依存は、外部APIやサービスに大きく依存する場合、潜在的なベンダーロックインと信頼性の懸念を生み出します。サービスの停止や価格変更は、アプリケーション機能とコストに大きな影響を与える可能性があります。
SEOの考慮事項は、クライアントサイドレンダリングされたコンテンツに対して、検索エンジンが適切にクロールしてインデックスできるようにするための慎重な実装を必要とします。重要なSEOページには、サーバーサイドレンダリングまたは静的生成戦略を実装する必要があります。
コンテンツプレビューの課題により、ビルドの完了に時間がかかる可能性があるため、コンテンツ作成者が変更を即座に確認することが困難になります。プレビュー環境とより高速なビルドプロセスはこの制限に対処するのに役立ちますが、追加のインフラストラクチャが必要です。
複雑な状態管理は、分散アーキテクチャ全体でユーザー認証、ショッピングカート、その他のステートフルなインタラクションを処理する際に困難になります。クライアントサイドの状態管理とAPI統合パターンは慎重に設計する必要があります。
チーム調整には、異なるツールとワークフローで作業している可能性のある開発者、コンテンツ作成者、マーケターの間の調整が必要です。チームの協力を成功させるには、明確なプロセスとトレーニングが不可欠です。
移行の複雑さは、既存の従来のアーキテクチャからの移行が重要になる可能性があり、Jamstackパターンに移行しながら機能を維持するための慎重な計画が必要です。レガシーシステムの統合とデータ移行は慎重に管理する必要があります。
パフォーマンス監視には、分散サービスとCDNエンドポイント全体でパフォーマンスを追跡および最適化するための新しいアプローチが必要です。従来のサーバー監視ツールでは、Jamstackアプリケーションのパフォーマンスに対する適切な可視性が提供されない場合があります。
実装のベストプラクティス
適切な静的サイトジェネレーターを選択する際は、チームの専門知識、プロジェクト要件、エコシステムの互換性に基づいて選択します。技術決定を行う際は、ビルドパフォーマンス、プラグインの可用性、コミュニティサポートなどの要因を考慮してください。
インクリメンタルビルドを実装して、変更されたコンテンツと影響を受けるページのみを再生成することで、大規模サイトのビルド時間を削減します。このアプローチにより、コンテンツ更新の開発ワークフローとデプロイメント速度が大幅に向上します。
アセット配信を最適化するには、画像圧縮、コード分割、遅延読み込み、重要なリソースの優先順位付けを行います。最新のビルドツールは多くの最適化を自動化できますが、最適なパフォーマンスには手動調整が必要な場合があります。
APIファーストアーキテクチャを設計する際は、実装前にデータ要件とAPIコントラクトを明確に定義します。このアプローチにより、フロントエンドとバックエンドの懸念事項の明確な分離が保証され、将来の柔軟性が可能になります。
コンテンツワークフローを確立して、技術者と非技術者の両方のチームメンバーに対応し、コンテンツ作成、レビュー、公開のための適切なツールとプロセスを提供します。明確なガバナンスは、コンテンツの品質と一貫性を維持するのに役立ちます。
適切なキャッシング戦略を実装して、静的アセットとAPIレスポンスの両方に対してパフォーマンスを最大化しながら、コンテンツの鮮度を保証します。CDN構成とキャッシュ無効化戦略は慎重に計画する必要があります。
スケーラビリティを計画する際は、コンテンツ量とトラフィックの増加に対応できるビルドプロセスとAPI統合を設計します。開発プロセスの早い段階でアーキテクチャ決定のパフォーマンスへの影響を考慮してください。
セキュリティのベストプラクティスを確保するには、適切な認証、APIセキュリティ、コンテンツ検証を実装します。定期的なセキュリティ監査と更新は、新たな脅威に対する保護を維持するのに役立ちます。
パフォーマンスを継続的に監視するには、読み込み時間、Core Web Vitals、ユーザー体験メトリクスへの可視性を提供するツールを使用します。パフォーマンスバジェットと自動監視は、最適なユーザー体験を維持するのに役立ちます。
アーキテクチャの決定を文書化し、チームメンバーと将来の開発者のために明確なドキュメントを維持します。Jamstackアプリケーションの分散性により、包括的なドキュメントはメンテナンスと更新に不可欠です。
高度な技術
エッジコンピューティング統合は、CDNエッジロケーションをサーバーレス関数実行に活用し、動的処理をユーザーに近づけてパフォーマンスを向上させます。エッジ関数は、完全なサーバーラウンドトリップなしで、パーソナライゼーション、A/Bテスト、リアルタイム変更を処理できます。
インクリメンタル静的再生成は、静的生成のメリットと動的コンテンツ更新を組み合わせ、オンデマンドまたはスケジュールされた間隔で特定のページを再生成します。この技術により、大規模サイトはコンテンツを新鮮に保ちながら静的パフォーマンスを維持できます。
マイクロフロントエンドアーキテクチャは、Jamstack原則を複雑なアプリケーションに適用し、独立してデプロイ可能なフロントエンドモジュールに分割します。各マイクロフロントエンドは、一貫したユーザー体験を維持しながら、異なる技術とデプロイメントサイクルを使用できます。
高度なキャッシング戦略は、コンテンツ配信とユーザー体験を最適化するために、洗練されたキャッシュ無効化とウォーミング技術を実装します。スマートキャッシングは、ユーザーのニーズを予測し、改善された知覚パフォーマンスのためにコンテンツを事前読み込みできます。
サーバーレスデータベース統合は、JamstackアプリケーションをFaunaDB、PlanetScale、Supabaseなどの最新のデータベースソリューションに接続し、APIファーストアクセスと自動スケーリングを提供します。これらの統合により、サーバーレスアーキテクチャのメリットを維持しながら、複雑なデータ操作が可能になります。
プログレッシブエンハンスメントパターンは、JavaScriptの読み込みまたは実行に失敗した場合でもアプリケーションが機能し続けることを保証し、堅牢なフォールバック体験を提供します。このアプローチにより、多様なユーザー環境とネットワーク条件全体でアクセシビリティと信頼性が向上します。
今後の方向性
強化されたビルドパフォーマンスは、改善された静的サイトジェネレーター、並列処理、インテリジェントキャッシングを通じて、大規模サイトのビルド時間を削減します。新しいツールと技術により、Jamstackはさらに大規模で複雑なアプリケーションにも実行可能になります。
改善された開発者体験は、より優れたツール、デバッグ機能、統合開発環境を通じて、Jamstack開発への参入障壁を下げます。ビジュアル編集インターフェースとリアルタイムプレビュー機能により、技術者と非技術者のチームメンバー間のギャップが埋まります。
高度なエッジコンピューティングは、CDNエッジロケーションにより洗練された処理機能をもたらし、パフォーマンスを犠牲にすることなく複雑なパーソナライゼーションとリアルタイム機能を可能にします。エッジデータベースとAI処理により、動的機能の可能性が拡大します。
より良い統合エコシステムは、Jamstackツール、サービス、プラットフォーム間のよりシームレスな接続を提供します。標準化されたAPIと改善された相互運用性により、複雑さとベンダーロックインの懸念が軽減されます。
AI駆動の最適化は、インテリジェントな分析とコード生成を通じて、パフォーマンス、アクセシビリティ、SEOを自動的に最適化します。機械学習は、最適化の機会を特定し、改善を自動的に実装するのに役立ちます。
強化されたセキュリティ機能は、自動化されたセキュリティスキャン、脆弱性検出、コンプライアンス監視を通じて、新たな脅威に対するより良い保護を提供します。ゼロトラストセキュリティモデルは、Jamstackアプリケーションの標準になります。
参考文献
- Netlify. (2024). “The Jamstack Architecture.” Netlify Documentation. https://www.netlify.com/jamstack/
- Vercel. (2024). “Modern Web Development with Jamstack.” Vercel Platform Documentation. https://vercel.com/docs
- Gatsby. (2024). “Static Site Generation and the Jamstack.” Gatsby Documentation. https://www.gatsbyjs.com/docs/
- Smashing Magazine. (2024). “A Complete Guide to the Jamstack.” Web Development Articles. https://www.smashingmagazine.com/
- JAMstack.org. (2024). “Best Practices for Modern Web Development.” Community Resources. https://jamstack.org/
- Contentful. (2024). “Headless CMS and Jamstack Integration.” Developer Documentation. https://www.contentful.com/developers/
- AWS. (2024). “Serverless Architecture Patterns.” Amazon Web Services Documentation. https://aws.amazon.com/serverless/
- MDN Web Docs. (2024). “Modern Web Development Architectures.” Mozilla Developer Network. https://developer.mozilla.org/
関連用語
Git ベース CMS
ウェブサイトのコンテンツをファイルとして保存し、Git バージョン管理を使用するコンテンツ管理システム。開発者がコードを管理するように、チームがコンテンツの管理、変更の追跡、公開を行うことができます。...