SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

連載記事

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZine BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
高速・軽量なJavaScriptフレームワーク「Svelte」の世界

高速で開発者体験も抜群!JavaScriptフレームワークの新星「Svelte」とは何か?

高速・軽量なJavaScriptフレームワーク「Svelte」の世界 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本連載では、「State of JS 2020」でも注目されているJavaScriptフレームワークのひとつ「Svelte」について、その概要や魅力、Svelteを使用したアプリケーションの開発方法について紹介します。今回は、同じJavaScriptフレームワークであるReactとVueと比較しながら、Svelteの特徴と、2022年にSvelteを使うべき理由について紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 本記事では、ユーザーインターフェイスを構築するためのJavaScriptフレームワークのひとつ「Svelte(スベルト)」についてご紹介します。

 Webフロントエンドの領域は年々大きくなっており、読者の皆さまの中でもReactやVueといったフレームワークを使ったことがある方が多いものと思います。もしかしたら、Svelteの名前もどこかでご覧になり、気になっている方もいるかもしれません。

 Svelteは、そのアプローチの新しさから注目されはじめています。 JavaScript のライブラリに関する大規模調査「State of JS 2020」で「最も愛されているWebフレームワーク」「もっとも開発者の満足度の高いフレームワーク」に選ばれたことでも話題となりました。

 そこで本記事では、ReactやVueに少しでも触れたことがある方を想定して、それらと比較する形で、Svelteの特徴をわかりやすく説明していこうと思います。

 また、続く第2回・第3回では、実際にSvelteを使用してアプリケーションを開発する手順を説明します。続けてお読みいただくことで、Svelteによるアプリケーション開発の流れを一通り理解・体験していただける構成となります。

Svelteの特徴

普通のHTML+JavaScript に近い書き方ができる

 Svelteの特徴の一つは、ユーザインターフェイスに必須の状態管理を伴うコードを、特別な記法や関数を使うことなく実装できることです。例えば、ボタンを押して数値をカウントアップ・カウントダウンするコードを、Svelte、React、Vueで見比べてみましょう。

// Svelte
<script lang="ts">
  let count = 0;
</script>

<div>
  <p>クリックした回数: {count}</p>
  <button on:click={() => count += 1}>クリックしてください</button>
</div>

// React
function App() {
  const [count, setCount] = useState(0);
  return (
    <div>
      <p>クリックした回数: {count}</p>
      <button onClick={() => setCount(count + 1)}>
        クリックしてください
      </button>
    </div>
  );
}

// Vue
<script setup>
import { ref } from 'vue'

const count = ref(0)
</script>

<template>
  <div>
    <p>クリックした回数: {{ count }}</p>
		<button v-on:click="count++">クリックしてください</button>
  </div>
</template>

 いずれも、「クリックしてください」と書かれたボタンを押すと、「クリックした回数」の右側に表示されている数値がカウントアップしていきます。実際に動作しているところは、Svelteは公式のREPLから、ReactではCodePenから確認することができます。以下では主にReactとの対比で解説しますが、Vueの例も公式のREPLから確認できます。

 Reactに比べてSvelteのコードの行数が少ないことも優れた点ですが、それ以上に、従来のWeb開発で慣れ親しんできた「普通のHTMLと普通のJavaScript」の見た目にかなり近いことにも注目です。

 Reactでは、コンポーネントはクラスや関数として定義され、JSXというHTMLに似たマークアップ言語を記述することで、コンポーネントのHTML上での文書構造(DOM構造)を定義します。このJSXはマークアップ言語の宣言性と動的言語の表現力を融合させた優れたテクノロジーではあるのですが、それが故に伝統的なHTMLとJavaScriptでのWeb開発とはかなり異なった世界観を理解することが必要となります。

 一方のSvelteでは、コンポーネントの文書構造は、ほとんど普通のHTMLで書くことができます。異なるのは、{foobar}で示される構文変数や制御構造を使うことができることと、Svelte上でのイベントハンドラを表す特別な属性(上記の例ではon:click)が使えることくらいです。これらは使わなくても良いので、単なるHTMLの断片をコピペしてSvelteコンポーネントとして使いまわすこともできます。

 特に注目すべきは、コンポーネント内の状態(ステート)を使う方法です。Reactでは、これをuseState(関数コンポーネントの場合)やsetState(クラスコンポーネントの場合)といった特別な関数を使って実現するところ、Svelteでは、通常のJavaScriptの変数を定義し、新しい値を代入するだけで使用することができます。これによって、画面の表示内容の変化を伴う動的な処理でも、普通のJavaScriptを書くのと同じ感覚で開発することができます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
Svelteの特徴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
高速・軽量なJavaScriptフレームワーク「Svelte」の世界連載記事一覧
この記事の著者

濱口 恭平(ハマグチ キョウヘイ)

 1990年・三重県生まれ。ドイツに拠点を置く Web3 / Privacy Tech スタートアップ でCTO/VPoEを務める傍ら、サイドプロジェクトとして「誰でも使えるビデオ通話SDK 」"kommu" を開発している。 多くの人に快適な開発者体験を提供できるフロントエンド技術を探求する中で Svelte に出会い、開発者コミュニティでの交流をきっかけに2021年には公式イベントSvelte Summit での登壇を経験。 2022年からは国内...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15394 2021/12/28 11:00
" ); }

おすすめ

アクセスランキング

  1. 1
    管理職の24.1%、今後管理職を「続けたくない」と回答。理由は「責任やストレス」が最多に NEW
  2. 2
    フロントエンドの定番ライブラリ「React 19」の新機能を紹介──アクションによる非同期処理の進化
  3. 3
    「代替されない強み」を身に着ける覚悟はあるか──Java Champion 寺田佳央氏が経験してきた挫折とは NEW
  4. 4
    IPA、DXの先進事例を素早く効率的に検索できるWebサイト「デジタル事例データベース」を公開
  5. 5
    ランサーズ、「2024年必要とされたスキルランキング」を公開。「Lancers」上のデータを集計
  1. 6
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 7
    Apple、2024 App Store Awardsの受賞者発表 NEW
  3. 8
    楽天、日本語に最適化したAIモデル「Rakuten AI 2.0」と「Rakuten AI 2.0 mini」を発表 NEW
  4. 9
    GitHub Copilotの無料プラン「GitHub Copilot Free」リリース、GitHubへの登録開発者数は1億5000万人突破 NEW
  5. 10
    「CUDA」 ~マンガでプログラミング用語解説

アクセスランキング

  1. 1
    管理職の24.1%、今後管理職を「続けたくない」と回答。理由は「責任やストレス」が最多に NEW
  2. 2
    フロントエンドの定番ライブラリ「React 19」の新機能を紹介──アクションによる非同期処理の進化
  3. 3
    「代替されない強み」を身に着ける覚悟はあるか──Java Champion 寺田佳央氏が経験してきた挫折とは NEW
  4. 4
    IPA、DXの先進事例を素早く効率的に検索できるWebサイト「デジタル事例データベース」を公開
  5. 5
    ランサーズ、「2024年必要とされたスキルランキング」を公開。「Lancers」上のデータを集計
  6. 6
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  7. 7
    Apple、2024 App Store Awardsの受賞者発表 NEW
  8. 8
    楽天、日本語に最適化したAIモデル「Rakuten AI 2.0」と「Rakuten AI 2.0 mini」を発表 NEW
  9. 9
    GitHub Copilotの無料プラン「GitHub Copilot Free」リリース、GitHubへの登録開発者数は1億5000万人突破 NEW
  10. 10
    「CUDA」 ~マンガでプログラミング用語解説
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    今後生成AIとどう向き合うべきなのか? 現場のエンジニアと研究者が最新研究事例から語り合う
  6. 6
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  7. 7
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  8. 8
    Vue.js3.4~3.5の新機能をまとめて紹介! 新しいAPIやSSRの改善
  9. 9
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  10. 10
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

メールバックナンバー

アクセスランキング

  1. 1
    管理職の24.1%、今後管理職を「続けたくない」と回答。理由は「責任やストレス」が最多に NEW
  2. 2
    フロントエンドの定番ライブラリ「React 19」の新機能を紹介──アクションによる非同期処理の進化
  3. 3
    「代替されない強み」を身に着ける覚悟はあるか──Java Champion 寺田佳央氏が経験してきた挫折とは NEW
  4. 4
    IPA、DXの先進事例を素早く効率的に検索できるWebサイト「デジタル事例データベース」を公開
  5. 5
    ランサーズ、「2024年必要とされたスキルランキング」を公開。「Lancers」上のデータを集計
  1. 6
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 7
    Apple、2024 App Store Awardsの受賞者発表 NEW
  3. 8
    楽天、日本語に最適化したAIモデル「Rakuten AI 2.0」と「Rakuten AI 2.0 mini」を発表 NEW
  4. 9
    GitHub Copilotの無料プラン「GitHub Copilot Free」リリース、GitHubへの登録開発者数は1億5000万人突破 NEW
  5. 10
    「CUDA」 ~マンガでプログラミング用語解説

アクセスランキング

  1. 1
    管理職の24.1%、今後管理職を「続けたくない」と回答。理由は「責任やストレス」が最多に NEW
  2. 2
    フロントエンドの定番ライブラリ「React 19」の新機能を紹介──アクションによる非同期処理の進化
  3. 3
    「代替されない強み」を身に着ける覚悟はあるか──Java Champion 寺田佳央氏が経験してきた挫折とは NEW
  4. 4
    IPA、DXの先進事例を素早く効率的に検索できるWebサイト「デジタル事例データベース」を公開
  5. 5
    ランサーズ、「2024年必要とされたスキルランキング」を公開。「Lancers」上のデータを集計
  6. 6
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  7. 7
    Apple、2024 App Store Awardsの受賞者発表 NEW
  8. 8
    楽天、日本語に最適化したAIモデル「Rakuten AI 2.0」と「Rakuten AI 2.0 mini」を発表 NEW
  9. 9
    GitHub Copilotの無料プラン「GitHub Copilot Free」リリース、GitHubへの登録開発者数は1億5000万人突破 NEW
  10. 10
    「CUDA」 ~マンガでプログラミング用語解説
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    今後生成AIとどう向き合うべきなのか? 現場のエンジニアと研究者が最新研究事例から語り合う
  6. 6
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  7. 7
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  8. 8
    Vue.js3.4~3.5の新機能をまとめて紹介! 新しいAPIやSSRの改善
  9. 9
    VSCodeをドキュメント作成に活用――テキストエディタ、Markdownエディタの設定と拡張機能を解説
  10. 10
    2024年の提示年収が高いプログラミング言語は? paiza調査によるランキングが発表