SHOEISHA iD

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

連載記事

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

翔泳社では、「独習」「徹底入門」「スラスラわかる」「絵で見てわかる」「一年生」などの人気シリーズをはじめ、言語や開発手法、最新技術を解説した書籍を多数手がけています。プロジェクトマネジメントやチームビルティングといった管理職向けの書籍も豊富です。

ITエンジニアとしてのスキルアップ・リスキリングに、ぜひお役立てください。

書籍に関する記事を見る

'); 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('
'); }
Webアプリケーション開発技術の新潮流スタディーズ

いま最も注目のライブラリ「React.js」でシングルページアプリケーションを作ってみよう! 【前編】

Webアプリ開発技術の新潮流スタディーズ 第1回


 近年のフロントエンド開発の大規模化・複雑化に伴って、JavaScriptフレームワークの需要がますます拡大しています。既にBackbone.jsやAngularJSなど、MV*フレームワークは数多く登場していますが、本記事では最近注目を浴びているFacebook製のライブラリReact.jsについて解説します。フレームワーク・ライブラリの選定に悩んでいる方から、本格的にJavaScriptを触るのが初めてという方まで、サンプルを通じて大体の雰囲気を掴んでいただければと思います。

「後編」はこちら

 

 なお、執筆時点でのReact.jsのバージョンは0.12.2です。サンプルとして、次の3つを、本記事のタイトル下にある[ダウンロード]から入手できます

ダウンロード表示 ファイル名
本記事終了時点 sample-1.zip
完成版 sample-2.zip
完成版(Bootstrapによるスタイリングあり) sample-2b.zip

 

対象読者

  • JavaScriptフレームワーク・ライブラリの選定に悩んでいる方
  • 本格的にJavaScriptを触るのが初めてという方
  • jQueryでの大規模なフロントエンド開発に限界を感じている方

必要な環境

 Node.jsがインストールされていることが推奨です。

React.jsとは何か

 React.jsは最近注目を浴びているFacebook製のライブラリで、MVCアーキテクチャでいうViewにあたる機能を提供します。

 前提として、JavaScriptの世界でMVCのVといえば、紛れもなくDOM(Document Object Model)のことを指します。特に何も意識しないで作った場合、都合の良いDOMからデータを引っ張り出しては別のDOMを書き換えるといった、行き当たりばったりな作りになりがちです。そこで、MVCの考え方を導入することにより、データを画面とは独立した構造体として切り出し、データを更新⇒画面(DOM)に反映の一定の流れを作ることができます。

 React.jsも、まさにこの目的のために生み出されました。正確にはフレームワークという扱いではありませんが、アプリケーションの設計に大きく寄与することには間違いありません。

 公式サイトには、特徴として以下の3つが挙げられています。

「JUST THE UI」

 MVCのVであり、既存のアーキテクチャと容易に結合することができます。

「VIRTUAL DOM」

 DOMを模した中間オブジェクトをあらかじめ生成し、更新差分のみを本物のDOMに反映することにより、ハイパフォーマンスを実現します(詳しくは後述)。

「DATA FLOW」

 データフローを一方向に保ち、データと画面(DOM)の対応をを宣言的に記述することによって、可読性を向上させます。

 多くのフレームワーク違い、React.jsが提供するのはコンポーネントを作成する仕組みだけです。他の複雑な概念を理解する必要が一切ないため、学習コストは非常に安く済みます。シンプルに上から下までコンポーネントを作ることだけ考えていきましょう。するとデータフローは自然とデータから画面(DOM)へ、コンポーネントツリーの上から下へと一方向に統一されるはずです。

 それでは、概念だけでは理解が進まないと思いますので、早速コードを見ていきましょう。

簡単なTODOアプリの作成

 MVCフレームワークのサンプルとしてお馴染みの、簡単なTODO管理アプリを作ります。

 要件は次のとおりです。

  • トップページで新規TODOを登録する
  • ï¼»Done]ボタンをクリックするとTODOが完了状態になる
  • 未完了のTODOはトップページ(#active)に、完了のTODOは2ページ目(#completed)に表示する
TODOアプリのイメージ
TODOアプリのイメージ

 

NOTE
  • 画面はTwitter Bootstrapでスタイリングしていますが、今回はサンプルコードをシンプルにするため、CSSを付属していません。
  • より多くの要件を盛り込んだサンプルはTodoMVC(React.js)が参考になるでしょう。

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

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

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます
  • ・翔泳社の本が買える!
    500円分のポイントをプレゼント

メールバックナンバー

次のページ
最初の一歩

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

Webアプリケーション開発技術の新潮流スタディーズ連載記事一覧

もっと読む

この記事の著者

鳥居 陽介(株式会社ワークスアプリケーションズ)(トリイ ヨウスケ)

株式会社ワークスアプリケーションズ所属。イケてるアプリケーションを死ぬほど楽に作るために研究を続ける日々。社内での立ち位置は「フロントエンドのナウい人」。最近エバンジェリストという肩書きが付いた。趣味は作曲とスノーボード。 Blog: http://jinjor-labo.hatenablog.com/ ...

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/8491 2015/04/24 16:51
" ); }

おすすめ

アクセスランキング

  1. 1
    Pythonデータ解析ライブラリ「Pandas 3.0」リリース NEW
  2. 2
    GeminiでNotebookLMのノートブックをソースとして追加することが可能に
  3. 3
    Cursor、大規模コードベースのインデックス化を高速化する新手法を発表
  4. 4
    Google Chrome、同ブラウザ内における「Gemini」の大規模アップデートを発表 NEW
  5. 5
    「東京発のモデルを日本全国、そして世界へ広げる」ために──GovTech東京理事長・宮坂学氏が語る激動の2年間 NEW
  1. 6
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  2. 7
    AWSが1月19日週に発表した主要なリリースを紹介
  3. 8
    新卒エンジニア育成の課題は「ソフトスキル不足」が9割。「新卒エンジニア育成」に関する調査結果
  4. 9
    Google Forms、すべてのフォームで回答者指定の詳細な共有管理が可能に NEW
  5. 10
    Oracle、「Oracle AI Database 26ai」を正式リリース NEW

アクセスランキング

  1. 1
    Pythonデータ解析ライブラリ「Pandas 3.0」リリース NEW
  2. 2
    GeminiでNotebookLMのノートブックをソースとして追加することが可能に
  3. 3
    Cursor、大規模コードベースのインデックス化を高速化する新手法を発表
  4. 4
    Google Chrome、同ブラウザ内における「Gemini」の大規模アップデートを発表 NEW
  5. 5
    「東京発のモデルを日本全国、そして世界へ広げる」ために──GovTech東京理事長・宮坂学氏が語る激動の2年間 NEW
  6. 6
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  7. 7
    AWSが1月19日週に発表した主要なリリースを紹介
  8. 8
    新卒エンジニア育成の課題は「ソフトスキル不足」が9割。「新卒エンジニア育成」に関する調査結果
  9. 9
    Google Forms、すべてのフォームで回答者指定の詳細な共有管理が可能に NEW
  10. 10
    Oracle、「Oracle AI Database 26ai」を正式リリース NEW
  1. 1
    Google Antigravity、エージェント拡張機能「Skills」の搭載を発表
  2. 2
    開発工数の8割減を実現させた「バイブコーディング」実装論、ジュニアエンジニアが上流工程をこなす新しい開発フローとは?
  3. 3
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  4. 4
    ベスト10が選出! ITエンジニア本大賞 2026、最終プレゼン大会に進む技術書とビジネス書は!?
  5. 5
    1/10まで全文無料公開『暗号技術のすべて』 誰もが密かに憧れている「暗号」の仕組みを解説
  6. 6
    Copilot Studio拡張機能がVisual Studio Codeで一般提供開始
  7. 7
    新卒エンジニア育成の課題は「ソフトスキル不足」が9割。「新卒エンジニア育成」に関する調査結果
  8. 8
    XAML Studioがオープンソース化、WinUI開発ツールの最新版も公開
  9. 9
    「AIにコードを書かせる」だけじゃない!「AIネイティブ開発」へ移行するためのマインドセットと2つの実践手法
  10. 10
    GeminiでNotebookLMのノートブックをソースとして追加することが可能に

イベント

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

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

メールバックナンバー

アクセスランキング

  1. 1
    Pythonデータ解析ライブラリ「Pandas 3.0」リリース NEW
  2. 2
    GeminiでNotebookLMのノートブックをソースとして追加することが可能に
  3. 3
    Cursor、大規模コードベースのインデックス化を高速化する新手法を発表
  4. 4
    Google Chrome、同ブラウザ内における「Gemini」の大規模アップデートを発表 NEW
  5. 5
    「東京発のモデルを日本全国、そして世界へ広げる」ために──GovTech東京理事長・宮坂学氏が語る激動の2年間 NEW
  1. 6
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  2. 7
    AWSが1月19日週に発表した主要なリリースを紹介
  3. 8
    新卒エンジニア育成の課題は「ソフトスキル不足」が9割。「新卒エンジニア育成」に関する調査結果
  4. 9
    Google Forms、すべてのフォームで回答者指定の詳細な共有管理が可能に NEW
  5. 10
    Oracle、「Oracle AI Database 26ai」を正式リリース NEW

アクセスランキング

  1. 1
    Pythonデータ解析ライブラリ「Pandas 3.0」リリース NEW
  2. 2
    GeminiでNotebookLMのノートブックをソースとして追加することが可能に
  3. 3
    Cursor、大規模コードベースのインデックス化を高速化する新手法を発表
  4. 4
    Google Chrome、同ブラウザ内における「Gemini」の大規模アップデートを発表 NEW
  5. 5
    「東京発のモデルを日本全国、そして世界へ広げる」ために──GovTech東京理事長・宮坂学氏が語る激動の2年間 NEW
  6. 6
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  7. 7
    AWSが1月19日週に発表した主要なリリースを紹介
  8. 8
    新卒エンジニア育成の課題は「ソフトスキル不足」が9割。「新卒エンジニア育成」に関する調査結果
  9. 9
    Google Forms、すべてのフォームで回答者指定の詳細な共有管理が可能に NEW
  10. 10
    Oracle、「Oracle AI Database 26ai」を正式リリース NEW
  1. 1
    Google Antigravity、エージェント拡張機能「Skills」の搭載を発表
  2. 2
    開発工数の8割減を実現させた「バイブコーディング」実装論、ジュニアエンジニアが上流工程をこなす新しい開発フローとは?
  3. 3
    Claude Skillsとは? AIエージェント開発における新たなベストプラクティスをやさしく解説
  4. 4
    ベスト10が選出! ITエンジニア本大賞 2026、最終プレゼン大会に進む技術書とビジネス書は!?
  5. 5
    1/10まで全文無料公開『暗号技術のすべて』 誰もが密かに憧れている「暗号」の仕組みを解説
  6. 6
    Copilot Studio拡張機能がVisual Studio Codeで一般提供開始
  7. 7
    新卒エンジニア育成の課題は「ソフトスキル不足」が9割。「新卒エンジニア育成」に関する調査結果
  8. 8
    XAML Studioがオープンソース化、WinUI開発ツールの最新版も公開
  9. 9
    「AIにコードを書かせる」だけじゃない!「AIネイティブ開発」へ移行するためのマインドセットと2つの実践手法
  10. 10
    GeminiでNotebookLMのノートブックをソースとして追加することが可能に