
ぷらずも
みなさんこんにちは!
ぷらずもです。

エレキベア
こんにちクマ〜〜

ぷらずも
今日は久しぶりにフロントエンド関連の技術を触ってみます。
取り上げるのは、前々から気になっていた Astro です!

エレキベア
Astroクマか
なんか聞いたことあるクマ

ぷらずも
State of JavaScriptでも年々使用率が上がっていて、話題になることも多かったからね。
静的サイト生成に特化したフレームワーク で、ブログやポートフォリオ作成などに適しています。
- 公式サイト

- State of JavaScript

▲年々使用率が上がってきている

エレキベア
確かにこの伸び率は何かありそうクマね
どんなものか気になるクマ〜〜〜
Astroとは

ぷらずも
それでは改めてAstroについてですが、静的サイト生成に特化したフレームワークです。
Next.js等のWebアプリフレームワークと比べるとシンプルで、アーランドアーキテクチャ という設計思想により様々なメリットがあります。
✔ Astroとは
- コンテンツ駆動のウェブサイトを制作するためのフレームワーク
- アイランドアーキテクチャにより様々なメリットがある
- ブログ、 ポートフォリオなどの静的サイトを作るのに向いている
- Markdownコンテンツの使用がデフォルトで考慮されている

エレキベア
アイランドアーキテクチャ・・・
気になるクマ

ぷらずも
アイランドアーキテクチャは、それぞれの要素をアイランド(島)の単位として独立して考えるアーキテクチャを表しているようです。
これによりJavaScriptが必要な箇所のみ読み込むようにしたり、React、VueといったUIフレームワークも任意に組み合わせることができます。
✔ アイランドアーキテクチャのメリット
- 必要最低限の箇所のみJavaScriptを読み込む(デフォルトでゼロJS)
- 複数のUIフレームワークを組み合わせることができる
- 主要なインテグレーション機能が用意されていて組み合わせることができる

▲それぞれの要素を独立したアイランドとしてkジャンガエル

エレキベア
React、Vueも混在できるのクマか・・・
依存関係も整理出来そうで、設計としても綺麗クマね

ぷらずも
その他のメリットとして、様々なテーマ(テンプレート)が用意されているのも大きな魅力だと思います。
こちらのテンプレートに手を加えて作る、なども気軽に出来そうですね。

▲様々なテーマが用意されている

エレキベア
Astroの基本的な使い方

ぷらずも
次にAstroの使い方について記載しようと思いますが、正直公式チュートリアルがかなり分かりやすかったのでそちらを一通り行うのがおすすめです。
Build a blog tutorial | Docs
▲公式チュートリアル

▲チュートリアルを通してシンプルなブログの作り方を学ぶ

▲Markdownによる記事管理まで解説している

エレキベア
まさにAstroに興味あるユーザが求めているチュートリアルクマね

ぷらずも
今回はこのチュートリアルの中からいくつか主要な部分を抜粋して記載します。
プロジェクト作成
-
npm create コマンドのみでプロジェクトを作成する (質問内容は用途にあわせて選択する)
-
npm run dev コマンドで起動する
-
デフォルトページが表示される

基本構成
-
astroファイル
- astro拡張子の中にHTMLを書くとそれが表示される
- ---で囲んだ部分にはスクリプトを記載でき、HTML内で参照できる
-
ルーティング
- src/pages配下に置いたファイル名がそのままパスになる
- 例
- /about/
- /blog/
- /posts/post-1/
-
Markdown
- デフォルトでMarkdownをサポートしていて、メタ情報も埋め込める
- ※メタ情報の参照については後述
コンポーネント
-
astro拡張子で作成したファイルはコンポーネントとしても扱うことができる
- コンポーネントの引数は Astro.props で取得する
- 例えばSNS情報を記載したコンポーネントをFooterコンポーネント内で使うなどが行える
ページレイアウト
-
ページレイアウトとしても使用することができる
- 囲んだHTML要素は slotタグ を使用して設定できる
-
Markdownにもlayoutメタ情報にパスを指定することで適用できる
- Markdownのメタ情報は Astro.props内の frontmatter として渡される
動的ルーティング
-
動的ルーティング
- []で囲むことで動的ルーティングを定義できる
- getStaticPaths関数内で返却した配列がパスとして設定される
- この時、propsも設定して渡すことができる
- 例
- /tags/astro/
- /tags/tutorial
- /tags/
インタラクティブJS
-
---で囲んだ部分のスクリプトや、UIフレームワークを用いたコンポーネントのスクリプトはデフォルトでビルド時しか実行されない
-
そのため、インタラクティブにスクリプトを実行したい場合には、以下のいずれかの対応を行う
- UIフレームワークを用いたコンポーネントにclientタグ(client::loadなど)を指定する
- scriptタグで囲んでスクリプトを記述する

ぷらずも
主な使い方としてはこんな感じです!

エレキベア
シンプルで分かりやすいクマね
propsや動的ルーティングもNext.js使っていれば馴染むクマ
複数UIフレームワークを組み合わせる

ぷらずも
簡単な使い方が分かったところで、次はAstroの大きな魅力である 複数UIフレームワークを混在させるサンプル を実装してみようと思います。
今回は React、Vue、Svelte を用いてそれぞれのカウントコンポーネントを表示してみました。

▲複数UIフレームワークを用いたサンプル
GitHub - astro-multi-framework-sample
▲GitHubリポジトリ

エレキベア
うーむ、ほんとに混在できるのクマね・・・

ぷらずも
環境セットアップも簡単で、npx astro add コマンドで必要なパッケージを入れるのみ です。
あとはデフォルトで通常のコンポーネントとして使用できて、デフォルトでTypeScriptも使えます。
環境セットアップ
▲各パッケージの追加
メインとなるスクリプト
▲複数のUIフレームワークを同じ画面に表示できる
▲React版コンポーネント
▲Vue版コンポーネント
▲Svelte版コンポーネント

エレキベア
それぞれの書き方の違いも分かって勉強にもなるクマね

ぷらずも
他にもSolid.jsなども使えたりするので、好きなUIフレームワークを使って実装を試してみましょう!
おわりに

ぷらずも
というわけで今回は Astro の紹介でした!
どうだったかな?

エレキベア
Next.jsよりも断然シンプルで使いやすそうに思ったクマ
設計思想も綺麗でいいクマね

ぷらずも
機能モリモリなNext.jsに対してシンプル・軽量さが際立つAstro!
ぜひブログやポートフォリオ制作に活用してみてはいかがでしょうか

ぷらずも
それでは今日はこの辺で!
アデューー!

エレキベア
クマ〜〜〜〜












