タグ: jamStack開発

  • 【エンジニアリング×モダン開発】JAMstackのサイトジェネレーターについて

    【エンジニアリング×モダン開発】JAMstackのサイトジェネレーターについて

    近年、Web開発で広がりつつある「JAMstack」と「静的サイトジェネレーター」ですが、国内ではマイナーなこともあり、使いどころ、メリットがいまいち理解されていないのが現実です。
    本記事では、JAMstack を実現する際に利用される要素技術、「静的サイトジェネレーター」の仕組みについて解説していきます。
    「そもそもJAMStackって何?」という方は、先に以下の記事をお読みになっていただければと思います。
    【モダン開発とは?ヘッドレスCMSとは?】

    ※文中で多用するので、より短く以下より「静的サイトジェネレーター」を「SSG(static site generation)」と記載している個所があります。

    SSG(Static Site Generator)とは

    まず簡単に「静的サイトジェネレーター」(SSG)とは一体何なのか、解説いたします。

    エンジニアリング_図版1.jpg

    SSGとは「Static Site Generator」の略で、日本語に訳すと 「静的サイト生成 」です。 これはビルド(※1)時に事前にHTMLを生成しておいて、リクエストがあったら単純にそれを返す、といった仕組みです。
    通常のWebサイトでは、ユーザーからリクエストが投げられる(HTTPリクエスト)度にサーバがHTMLを生成し、ページをレスポンスとして返します。
    この方法だと、一度読み込んだ部分もリクエストが投げられる度に再度、生成する必要があるので処理速度が遅くなり、負荷もかかってしまいます。

    ですが、SSGはビルドのタイミングで事前にHTMLを生成しているため、リクエストが投げられたときも生成は終わっており、それをレスポンスとして返すだけになり、結果的に速度が非常に速くなります。

    これでSSGについては理解できたかと思います。

    次章ではメリット・デメリットについて解説していきます。

    ※1 ビルドとは、記述したソースコードに問題(バグ)がないか解析を行い、問題がなければ実行できる形のファイルに変換し、組み立てることです。

    「JAMstack」を支えるSSGの4つのメリット

    ここでは高速なウェブサイトを実現する「JAMstack」を支えるSSGの4つのメリットとデメリットをご紹介いたします。

    SSGのメリット

    エンジニアリング_図版2.jpg
    ▼サイト表示の高速化

    前章でも説明いたしましたが、SSGで作られたサイトはビルド時にすべてのページを生成し、サーバでHTMLを動的に生成しません。
    したがって、「プログラムが動いてページを生成する」という過程が無い分 CMS(※2) よりもページ読み込みのスピードが早くなります。

    ※2 CMSとは、Contents Management System(コンテンツ・マネジメント・システム)の頭文字をとった略称です。web制作に必要な専門的な知識が無くても、webサイトやコンテンツを構築・管理・更新できるシステムのことを言います。

    ▼パフォーマンス向上

    事前にHTMLが生成されるという仕組みは、ページ読み込みスピードもそうですが、大量のアクセスへの対応といったパフォーマンス面でもメリットがあります。パフォーマンス上のデメリットを補うために CMS の場合はさまざまな手法を駆使する必要がありますが、SSGは CMS であらゆる対策を施した後の状態が最初から実現できるようなものです。

    ▼バックアップ不要

    CMSでサイトのバックアップを行うには「CMS のコード」「アップロードファイル」「データベース」の3つを保存する必要があります。これらはタイミングを変えて保存すると不整合が起こることもあるので、極力同じタイミングで保存する必要があります。バックアップの中身を確認したり特定のバックアップの状態に戻したりするのには一般に手間とコストがかかります。
    ただ、SSGだとソースコードをGit で管理しているので、そこがすなわちバックアップデータになります。リポジトリにすべてのデータが格納され、さらにはローカルにも同じデータがあるのでバックアップは不要となります。

    ▼セキュリティリスクの低減

    SSGで作られたサイトはビルド時にすべてのページを生成するため、ブラウザからのアクセス時には動的な処理は行いません。そのため、サイト上での各種インジェクションや不正ログインの被害を受けるリスクが低くなります。

    SSGのデメリット

    エンジニアリング_図版3.jpg
    ▼ビルドの時間がかかる

    CMS の場合は管理者がコンテンツを編集したらすぐにサイトに反映されることが一般的ですが、SSGの場合はビルド処理が必要な関係で、コンテンツの編集からサイトへの反映までにタイムラグが生じます。なので、ページ数が多くなるにつれて、ビルドに時間がかかってしまいます。

    ▼動的ページを原則配置できない

    基本的にはサーバ上での動的出力を行なわず、静的サイトを生成するものなので、「コンタクトフォーム」「コメント機能」などの動的な機能の表示は難しくなってきます。
    サイトに動的な機能を付けたい場合は、クラウドサービスを利用したり、別サイトでその機能を用意したり等といった対応が必要になります。

    ここで、メリット・デメリットをまとめてみましたが、使い所としては、LPや小~中規模のブログ系コンテンツ、ページの表示速度で高いパフォーマンスが求められるサイトなどに使用するのが向いているということになります。

    代表的な静的ジェネレーター

    DigitooではNuxt.jsという、Vue.jsをベースに開発された、SSGを採用しております。
    なぜ、DigitooがNuxt.jsを採用したのか、他のサイトジェネレーターの種類と特徴と一緒に解説していきたいと思います。

    ▼Next.js

    Next.jsReact.jsベースの静的サイトジェネレーターです。プリレンダリング方式としてSSG(静的サイト生成)とSSR(サーバサイドレンダリング)の2つをサポートしている点が大きな特徴です。元々はSSRがメインだったようですが、 2020年に登場したバージョン9.3からは動的ルーティングができるようになり、SSG の機能が強化されました。

    ▼Gatsby

    Gatsby はNext.jsと同じReact.jsベースのSSGです。 Next.jsとは異なりSSRはサポートしていない純粋なSSGです。すべてのコンテンツをGraphQL(GraphQLとは、クエリ言語とスキーマ言語で構成されたWeb APIの規格)を経由して取得します。プラグインシステムやテーマシステムを備えており、どこかWordPressにイメージが似ています。利用数が昨年あたりから急速に伸びており、Next.jsとGatsbyの2つが今世界的に最も注目を集めているSSGです。

    ▼Nuxt.js

    Nuxt.jsVue.js ベースのSSGです。名前の似たNext.jsがReactベースなのに対しこちらはVue.jsベースです。シンプルさ・わかりやすさをウリにしています。日本国内ではVue.jsの人気が高いこともあってNuxt.jsの人気が非常に高いようです。世界的にはReact ベースのNext.jsやGatsbyの方が断然多く使われていますが、国内ではNuxt.jsの方が利用者数がまだまだ多そうです。

    ▼Hugo

    静的サイトジェネレーターはフロントエンド寄りのテクノロジーなので、言語にはJavaScriptを使うものが多いですが、このHugoにはGo言語が使われています。JavaScript以外のSSGで最も人気のものと言ってよいでしょう。 HugoがJavaScriptベースのSSGに大きく勝る点として、「ビルド時間の短さ」と「環境構築の手軽さ」があります。こちらの調査でもビルド時間はHugoが最短になっています。
    今回ご紹介するSSGはHugo以外はすべてスクリプト言語ベースのものなので、ビルドのパフォーマンス重視で選ぶならHugo一択になるかと思います。

    ▼Jekyll

    JekyllRubyベースのSSG です。最古の静的サイトジェネレーターといわれており、近年のJAMstackトレンドが来るずっと前から広く使われており、今でも新しいバージョンがリリースされていますが、GatsbyやNext.jsといった高機能な静的サイトジェネレーターの登場で、近年は個人のブログや小規模サイトでの利用が主になっています。

    上記以外にも、まだまだ静的サイトジェネレーターは存在しますが、本プロジェクトDigitooでは、「PWAモジュールが用意されている」、管理がしやすい「単一ファイルコンポーネント」が使用できるという点からNuxt.jsを採用しております。

    DigitooでのSSGの仕組み

    前章でNuxt.jsを採用した理由を記載いたしましたが、ここではJAMstack構成で開発された、「Digitoo」でのSSGの仕組みについて簡単に解説していきたいと思います。

    SSGの仕組み

    ここまでSSGについて解説してきましたが、Digitooではどのようにしてファイルを保存し、公開しているのでしょうか?
    それは以下の二つのAWSコンテンツを使用しております。

    エンジニアリング_図版4.jpg
    ① Amazon S3

    こちらは、Amazonが提供するオリジンサーバになります。
    ここにファイルを配置しており、初回アクセス時やキャッシュ失効時には、このオリジンサーバからコンテンツを取得するようにしております。

    ② Amazon CloudFront

    こちらは、Amazonが提供するCDNになります。
    CDNとは一体何なのでしょう?

    CDNとは「Content Delivery Network(コンテンツデリバリーネットワーク)」の略で、ウェブコンテンツを効率的かつスピーディーに配信できるように工夫されたネットワークのことで、アクセスが集中したりコンテンツが大容量化したりしても、キャッシュサーバに負荷を分散させることでオリジンサーバの負担を減らすことができます。

    エンジニアリング_図版5.png

    Amazon S3だけでも事足りるのでは?と思われがちですが、Amazon CloudFrontを使用することで、世界各地に設置してあるキャッシュサーバからコンテンツの配信を行うことができます。これにより、自動でユーザーから一番近いキャッシュサーバにアクセスしてファイルのダウンロードを行うことができ、結果的にユーザーへのレスポンスを早め、ダウンロードを速くすることができます。

    他にもGitからpushした後の処理や、ヘッドレスCMSの設定のため、数種類のAWSコンテンツを使用しておりますが、そちらについては今回は割愛させていただきます。
    Nuxt.jsでビルドした後、上記のAWSコンテンツに静的ファイルを保存することで、サイトを公開しております。

    JAMstackな環境

    「JAMstackって何?」という方は、以下の記事をご参考にしてください。
    【モダン開発とは?ヘッドレスCMSとは?】

    ヘッドレスCMSと合わせて、詳しい構成図が知りたい方は以下のサーバ構成図をダウンロードください。

    最後に

    Digitooはマーケターに向けた情報集約メディアなので、SNSのような「多人数が同時に接続してデータを更新するような」サイトではありません。
    つまり、ブログのように小〜中規模のサイトで会員機能がなければ、SSGのメリットを最大限活かすことができるということになります。

    今回は代表的な静的サイトジェネレーターを紹介いたしましたが、その他の静的サイトジェネレーターもたくさんあるので、開発に応じたサイトジェネレーターを使用いただければと思います。

    ▼参考
    https://jamstack.org/generators/

  • モダン開発とは?ヘッドレスCMSとは?非エンジニアのWeb担当者が、困らないように、わかりやすく解説致します。

    モダン開発とは?ヘッドレスCMSとは?非エンジニアのWeb担当者が、困らないように、わかりやすく解説致します。

    多機能・高機能でシステムを選ぶ時代は終わりました。

    CMS(コンテンツ・マネージメント・システム)も、選定する上で重要なのは、必須条件がクリアでき、拡張性の高いベースがしっかりしたシンプルなものを選ぶべきです。

    シンプルにすることで、システムもスピードが出て、リーズナブルに運用できます。

    本記事では、ITツールの選定に関わる非エンジニアの方や、Webマーケターが知るべき、エンジニア情報を、わかりやすく解説していきます。

    第一回目は、CMS選定をされる立場の方が多いため、モダン開発と紐付けて、選択肢の一つになっているであろう、ヘッドレスCMSの概要をご説明します。

    Web担当者がモダン開発を理解する必要性について

    3〜5年に一回は、CMS選定やサーバ選定をされてことが多いと思います。
    企業担当者は、経営陣から中長期の予算をかけるプロジェクトとして、Web課題を解決できる新しいシステムアーキテクチャを求められるはずです。

    その際に、下記の3つが必ず話題になるのではないでしょうか?

    • セキュリティの堅牢性を保ちたい
    • サイトの表示速度を早くしたい
    • 新しいアーキテクチャにして、ランニング費用を下げたい

    ※今回は、従来のCMSとモダン開発のCMSとの比較のため、CMSが持っているコンテンツ運用チームの負担改善についての言及は、要件から省きます。運用の要件により優劣が変わる、もしくは、優劣がつかないためです。同様に、MA機能を含めたCMS比較も、MAの要件により優劣が変わる、もしくは、優劣がつかないため省きます。

    blog-jam-img01.png

    モダン開発は、そういった課題をシンプルに解決しますが、アーキテクチャの根本に関わるため、サーバ選定=モダン開発ができるかどうかの重要な要になります。
    そのため、しっかりサーバを含めたアーキテクチャの概要を理解していきましょう。

    blog-jam-img02.png

    そこで、相談先として横断的に進められるベンダーの存在に期待したいのですが、実態は、インフラベンダーは開発手法に関与せず、システムベンダーは現環境を見てLAMP環境(後述で簡単に解説します)で開発手法を進めます。運用ベンダーは全体工数ではなく運用メンバーを過剰に心配し、運用フローの変更が少ない現環境と変わらない運用を求めます。

    blog-jam-img03.png

    結果的に、レガシー環境のため根本解決ができなくなり、未来になればなるほど、運用工数は増加し、セキュリティ保守費用が高額になります。
    せっかく新しいシステムを入れようとしているにもかかわらず、予定よりも早くシステムの再検討することも多いようです。

    そういった状況から、アーキテクチャは、社内で概要を理解して、最適なものを取捨選択する指針を打ち出し、社内で推進していく人が必要です。

    当社では、横断的な視点で、CMS選定のお手伝いをしておりますので、お気軽にご相談ください。
    お問い合わせ

    では、アーキテクチャの概要を理解することは、そんなに難しいことなのでしょうか?

    ヘッドレスCMSとは

    ここ数年で聞かれることも多くなりました、ヘッドレスCMSですが、従来のCMSとの違いは、20秒で理解できます。

    blog-jam-img08.png
    図1:ヘッドレスCMSと従来のCMSの違い

    上記(図1)は、いろいろ省いた簡略図にはなりますが、

    ▼従来のCMS
    閲覧者が閲覧するたびに、サーバが閲覧するファイルをいちいち生成され出力します。

    ▼モダン開発のヘッドレスCMS
    閲覧者が閲覧すると、そのまま出力されます。

    ヘッドレスCMSとは、つまり、いちいち生成しない(=ヘッドレス)ということだけなのです。
    簡単に理解できたと思いますが、いかがでしょうか。

    ※「モダン開発のヘッドレスCMSの図が静的ファイルと変わらない」「CMSを更新する管理者側の構造がどうなっているかわからない」については、後述に簡単に記載しています。
    ※静的ファイルのみの説明だと、例えば、SSGであるMovable TypeもヘッドレスCMSになってしまうという、ビューやAPIの話は一旦、省かせていただきます。

    ヘッドレスCMSの表示スピードが早い理由

    こちらも非エンジニアでも簡単に理解できます。

    blog-jam-img04.png
    図2:ヘッドレスCMSと従来のCMSとの表示スピードの違い

    上記(図2)を料理に例えると、下記(図3)のようになります。

    blog-jam-img05.png
    図3:ヘッドレスCMSの表示スピードが早い理由

    ▼従来のCMS
    コックが料理を作り(生成出力)、それが出来上がってからウェイターがお客様に運びます

    ▼モダン開発のヘッドレスCMS
    料理されているものをそのまま出力ウェイターがお客様に運びます

    また、このことから、コックという人件費に当たるものが、実際にサーバ処理しないため、その処理をしない分、サーバ費用も安くなることがわかります。

    スピードが早くて、サーバ費用も安い、ヘッドレスCMSは、そんな素敵なCMSです。

    コックがいないと、スペシャルな料理が食べられないのでは?とお考えになられた方もおられるでしょう。
    ITでもその点は否めない点もありますが、料理もコックだけではなく、食材やレシピ、メニューの豊富さなど、いろいろな要素があって、料理全体が評価されるはずです。
    また、ジュースを飲むのに、レストランに行かずに、コンビニや自動販売機で買うことが多いと思いますが、それは、コンビニや自動販売機を皆さんは知っているから、選択肢として選べます。
    そのため、企業の皆様は、知らないのではなく、選択肢を持つことが、重要になるかと思います。

    ヘッドレスCMSがセキュリティに強い理由

    こちらも非エンジニアでも簡単に理解できます。

    blog-jam-img06.png
    図4:ヘッドレスCMSがセキュリティに強い理由

    ▼従来のCMS
    動的に出力するため、攻撃者が攻撃する対象が多いです。

    ▼モダン開発のヘッドレスCMS
    誰でも閲覧できるものしか置いていないため、攻撃者が攻撃する対象が少ないです。

    ※上記は、大枠の比較説明ですが、ヘッドレスCMSも攻撃する対象がないようにするためのインフラ作業など、セキュリティ対策は取る必要があります。

    前段落でも、余計な処理をしない分、サーバ費用が安いとお伝えしましたが、セキュリティの部分でも必要最低限で済むため、ランニング費用も安くなることがほとんどです。

    セキュリティが担保しやすく、サーバ費用も安い、ヘッドレスCMSは、そんな素敵なCMSです。

    その他、静的ページを吐き出しているのみのため、従来のCMSより、部分的にCMS(たとえば、ニュースページのみCMS)にし、それ以外はCMS管理外にすることができます。そのため、より簡単に導入できます。

    貴社サイトがヘッドレスCMSの導入に適しているかは、下記をダウンロードしていただき、ご確認ください。

    ここまでで、必ず最初の話題に上る、セキュリティの堅牢性を保ちたい、サイトの表示速度を早くしたい、新しいアーキテクチャにして、ランニング費用を下げたい、という3つの課題をモダン開発はクリアしてくれましたが、デメリットはあるのでしょうか。

    モダン開発のデメリットについて

    サイト閲覧者側の視点では、ご紹介しているモダン開発は、デメリットがありません。

    サイト運営側の視点では、向いていないプロジェクトがあることは確かです。しかし現在、欧米の有名なITサービスは、APIファーストなモダン開発をしているサービスが主導権を得ています。

    そのためCMSも、ご紹介しているモダン開発が主流になっていくでしょう。

    ただし、日本においては、下記3点がネックになるかと思います。

    • 従来のサーバ環境から大きく変更できない
    • モダン開発をするに当たってエンジニアが不足している
    • システムベンダーがモダン開発を理解していない

    1については、次の段落にてご説明します。

    2と3に関しては、Web業界の話のため、飛ばしていただいて構いませんが、簡単に記載しておきます。

    ※わからない単語が出てきても、今は飛ばしていただいて構いません。

    大きな理由は、Webエンジニアリングの分野としては日本が後進国になっており、モダン開発の土壌が会社として作れていないことが多いためです。
    現場エンジニアが遅れてしまっていて、なおかつ、その上のマネージャーはさらに情報が遅れておることが、大きな原因です。

    その理由としてエンジニアの情報の多くが、英語で書かれており、英語が不得意な日本人エンジニアは英語圏の外国人エンジニアに比べて情報が遅いことは否めません。

    それに拍車をかけて、Webのモダン開発では、APIファーストになっており、フロントエンドエンジニアがバックエンド領域を理解し、インフラ領域も理解しないといけない状況で、フロントエンドエンジニアの業務範囲が拡大し、忙しさが倍増し、需要と供給のバランスが崩れて、人員単価も高額になっています。

    また、システムベンダーは、バックエンド領域から広げずに、従来システムを提供することが多いようです。
    海外では、バックエンドエンジニアが、フロントエンドエンジニアにコンバートすることが多くなっていますが、日本ではまだまだ少なく感じています。

    バックエンドエンジニアの進化は、マーケティングでのデータを扱う分野としては、さらなる発展がありますし、AI進化にともない仕事は増えるでしょう。それにAPIファーストでBFFを作るのがフロントエンドエンジニアの仕事になったとはいえ、それでもその先はバックエンドエンジニアに活躍してもらわないといけない領域がたくさんあります。

    なお、アメリカのシリコンバレーのWeb開発の多くは、システムアーキテクチャは本国のアメリカ人が作ることがあっても、その先のエンジニアリングは、アジア圏を含めた海外の人間であることが多く、よりグローバルな作り方をしています。

    本サイトも、モダン開発をしております。システムアーキテクチャは、編集長の配下であり、最近、日本の市民権を取得しましたが英語圏の外国人エンジニアが担当しております。
    また、コロナの影響で、途中から、3名の外国人エンジニアが外国から開発に関わってもらい、11月には、日本からもう1名の編集長の配下の外国人エンジニアが参加しております。

    そういった時代の流れを鑑みて、外国人エンジニアについて理解していただくために、別途、彼らへのインタビューの企画しておりますので、その時にさらに、本件については掘り下げていきたいと考えております。

    モダン開発に必要なインフラ環境について

    ここからは、少し難しくなってきますが、それでも3章と4章が理解できていれば、すんなりと理解できると思います。また、この章では、非エンジニアの方は、サーバの構成をなんとなく、理解できれば大丈夫です。

    今までの図では、CMS管理画面から、閲覧者に情報が届くまでのフローを省いてきましたので、そちらからご紹介します。

    blog-jam-img07.png
    図5:モダン開発に必要なインフラ環境について

    ご覧になって、従来のCMSと、モダン開発のヘッドレスCMSでは、サーバ構成が違うのがなんとなく、ご理解いただけるのではないでしょうか。

    本サイトのサーバ構成図は、別の記事にてご紹介させていただきますが、簡単に違いをお伝えすると、下記の通りです。

    ▼従来のCMS
    LAMP環境が主流です。

    今後は覚える必要がない時代になってきておりますが、L(Linux)=OS、A(Apache)=WEBサーバ、M(MySQL)=DBサーバ、P(PHP or Perl)=プログラミング言語で、構成された環境で、多くのWEBは未だにこの環境が多いはずで、編集長もこちらの時代の方が長いです。

    日本でも2015年頃から、多くのWebべンダーも、AWSなどのクラウドベースにシフトしていきましたが、それでも、LAMP環境をクラウドにしているだけという印象が否めませんでした。

    ▼モダン開発でのヘッドレスCMS
    本サイトもそうですが、モダン開発のヘッドレスCMSでは、JavaScriptを利用したAPIファーストで作成されております。また、Node.jsがインストールしてあり、静的サイトジェネレーターが自動で実行できるサーバレス環境が望ましいです。
    それが簡単にできるのが、AWSやGCPなどのクラウドベースです。AWSではサーバレス環境として代表的なLambda(次の段落で説明します)があり、本サイトでも利用しています。

    AWSのLambdaに対抗して、GCPもCloud Functionsがあります。AWSのシェアもサービス拡充も圧倒的ですが、編集長の個人的な意見では各Googleサービスとのデータ連携を考えると、GCPの方がマーケティングの観点でもAWSより良い点もあり、まだまだAWSの1択ではないため、頑張って欲しいです。

    上記の通り、AWSなどのクラウド環境に変えないと、モダン開発は難しいです。しかし先日、ご要望はモダン開発のヘッドレスCMSにマッチしていましたが、クラウド外のLAMP環境でサーバ構築しているため、踏み切ることができないお客様がいらっしゃいました。

    そのため、サーバ環境をご検討の際には、クラウド環境を選択肢に入れて、今後のシステム環境も視野に入れてからプロジェクトを進めることをお勧めします。

    当社では、サーバ環境構築まで支援しております。
    モダン開発のヘッドレスCMSである、本システムのサーバ概要図をダウンロードできるようにいたしました。
    中間CV導線「モダン開発のヘッドレスCMSのサーバ構成図」は下記からダウンロードしていただき、ご確認ください。

    サーバレス環境について

    サーバレスとは何か、「サーバがないのに、Webが閲覧できるわけがない」と思われるでしょうが、その通りで、サーバはあります。

    サーバレスとは、「一部のサーバが一時的に稼働していないのに、サービスが問題なく提供できているサーバ環境」です。これだけでは難しいですが、これもすごく簡単に理解できます。

    blog-jam-img08.png
    図6:サーバレス環境とは

    サーバレス環境では、基本的には、サーバが分離されており、閲覧者とサイト運営者のサーバの行き来は、ネットワークから分離した一方通行です。

    前の章にてLambdaというサーバレス環境をお伝えしましたが、モダン開発では、静的サイトジェネレーターというのがあります。こちらがLambdaサーバの役割です。

    ※CodeBuildなどのサーバの詳細構成の話は、別の記事のサーバ環境にて詳しくお伝え致します。

    3章では、コックを必要としていないのが、ヘッドレスCMSだとお伝えしましたが、コンビニエンスストアのお弁当も、コックが現場にいないだけで、工場で大量に作って出荷しているからお弁当が売れるだけです。この例に当てはめると、Lambdaサーバの一部のマシンは、工場に当たります。
    つまり、静的サイトジェネレーターがあることで、事前に静的ファイルが作れるため、従来のCMSのように、アクセスがあるたびに閲覧データを生成する必要がありません。そのため、コックが必要ないのです。

    では、サーバレスを図で表します。
    下記(図7)の隠れているサーバは、サイト運営者が作業していない時は、必要としないサーバです。

    簡単にいうと、それがサーバレスと言われるゆえんです。隠れているサーバがいなくても、サイト閲覧者はサイトが見られて、サービスが止まらないわけです。

    blog-jam-img09.png
    図7:サーバレス環境にて、サーバレスなサーバとは

    また、通常クラウドサーバでも、人を雇っていて、月給を支払うのと同じで、毎月固定の費用を請求されますが、LambdaサーバやCodeBuildなどは、実行した時だけしか請求されないため、本当の意味でのサーバレス(実行している以外、待機もしていなく存在もしないサーバ)です。またそのため、従来のCMSよりサーバ構成が複雑になっているにもかかわらず、費用がリーズナブルになります。

    ※本サイトは2020年10月にリリースしましたが、同月のAWS請求額は、Lambdaは0ドル、CodeBuildは1ドル未満です。実行している数がどれも少ない訳ではなく、開発環境と本番環境もこみでGitも連携しているため、ビルドもリリース作業のため数えきれないほどしております。

    最後に、JAMstackについて

    blog-jam-img10.png

    冒頭から「モダン開発のヘッドレスCMS」という、あいまいな伝え方でしたが、今回ご紹介した開発手法は「JAMstack」というものです。

    JAMstackは、「JavaScript」「APIs」「Markup」の3つの技術を組み合わせた、WEBアーキテクチャです。APIなど省きましたが、大枠は、本記事に書かれている内容です。

    ヘッドレスCMSでも、歴史があり、色々と試行錯誤を繰り返して、今回、ご紹介したJAMstackが生まれました。
    単にSPA(シングル・ページ・アクション)で作るとSEO問題が発生しました。
    そのためSSR(サーバ・サイド・レンダリング)で作り、SEO問題は解決できましたが、別サーバが必要になり複雑な構成になってしまいました。
    それであれば、SSG(スタティック=静的・サイト・ジェネレーター)で開発することが最適となり、インフラ構成も考えていき、今に至ります。

    7章の図の赤枠に記載ある、静的サイトジェネレーターとありますが、それがそのままSSGのことを指しますので、SSGも簡単には、ご理解いただけたと思います。

    なお、SSGとJAMstackの違いに関しては、JAMstackはサーバ構成やSSGが自動実行できる環境を含めたアーキテクチャです。JAMstackはSSGですが、SSGがJAMstackとは限りません。

    JAMstack開発には、SSGを自動実行できるためのサーバ構成やCDNでの負荷分散を含めたインフラ環境の考えも根付いているため、それを忠実に本サイトでは実行しています。

    サーバ構成も、もう少し触れたかったのですが、次回の記事にてご紹介します。

    今回、全く触れませんでしたが、JAMstackを対象としたヘッドレスCMSは80製品ほどあります。

    ▼参考
    https://jamstack.org/headless-cms/

    本サイトでは、世界シェア率と拡張性を考えてStrapiというCMSを選定しました。
    Strapi に選定した理由に関しては、ヘッドレスCMSの比較表も含めて、別記事にてご紹介させてください。

    日本製のmicroCMSも別プロジェクトで利用しておりますが、日本語対応で導入のハードルが高くなく、要件によっては、とてもお薦めです。

    横文字が多くて、非エンジニアの方は、理解が大変だったと思いますが、思ったより難しくなかったのではないでしょうか?

    当社では、モダン開発である、JAMstackのヘッドレスCMSの制作・開発を推奨しております。

    ぜひ、CMS環境でお悩みがあれば、ご相談ください。