SHOEISHA iD

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

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

次世代Webアプリケーションフレームワーク「Angular」の活用

最新トレンドを取り込んで進化する次世代AngularJS「Angular 2」最初の一歩

次世代Webアプリケーションフレームワーク「Angular」の活用 第1回


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

サンプルコードでAngular 2を初体験

 それでは以下で実際にAngular 2のサンプルコードを動かしてみます。最初に環境構築を行ってサンプルコードをそのまま動作させます。次にサンプルコードを修正して動作の変化を確認していきます。

環境構築はクイックスタートから

 Angular 2を利用するためには、依存するライブラリやTypeScriptコンパイラなどのセットアップが必要となります。Angular 2の公式Webサイトにはシンプルな動作環境を作る手順が「5 MIN QUICKSTART」として公開されています。この手順に従ってAngular 2開発のベースとなるファイル一式を作成できます。

図5 5 MIN QUICKSTARTから開始(公式Webページより)
図5 5 MIN QUICKSTARTから開始(公式Webページより)

 Angular 2はまだ開発途中なので、その時の状況により公式Webサイトの記述内容が変更される場合があることに注意が必要です。記事執筆(2016年6月)時点の手順を以下で説明します。

 まずangular2-quickstartフォルダを作成し、クイックスタートのWebページに記載されている内容で表1のファイルを作成します(配布サンプルに格納されているものをコピーしても構いません)。今回はそのまま利用しますが、今後ライブラリや型定義ファイルなどが追加で必要になる場合は、設定ファイルを調整することになります。

表1 クイックスタートの設定ファイル
ファイル名 役割
package.json プロジェクト情報やAngular 2/依存ライブラリの記述
tsconfig.json TypeScriptコンパイラの設定
typings.json このプロジェクトで利用するTypeScriptの型定義設定
systemjs.config.js モジュールをロードするライブラリSystemJSの設定

 表1のpackage.jsonにはクイックスタートを動作させるために必要なライブラリが定義済みです。「npm install」コマンドを実行して、ライブラリ一式をダウンロードしておきます。

 次にangular2-quickstartフォルダにappサブフォルダを作成して、クイックスタートのWebページに記載されている内容で表2のファイルを作成します。これらがAngular 2で作成するWebサイトのファイルになります。

表2 クイックスタートのappフォルダに配置するファイル
ファイル名 役割
index.html Webページファイル
style.css Webページに適用するスタイルシート
app/app.component.ts Angular 2のコンポーネント
app/main.ts コンポーネントを参照して起動する処理

 クイックスタートではlite-serverと呼ばれる動作確認用のWebサーバーが利用できるよう、package.jsonに設定されています。「npm start」コマンドを実行すると、TypeScriptがコンパイルされた後にlite-serverが起動して、図6のようにWebページが表示されます。この状態でソースコードを書き換えると、自動的にページがリロードされて変更が反映されます。

図6 クイックスタートの実行結果(angular2-quickstart)
図6 クイックスタートの実行結果(angular2-quickstart)

 なお、start以外に表3のコマンドがpackage.jsonに定義されています。postinstallはnpm installの終了後、自動的に実行されるコマンドです。

表3 package.jsonに定義されているコマンド
コマンド 機能
lite lite-serverを起動
tsc TypeScriptコンパイラを実行
tsc:w -wオプション(変更監視機能)つきでTypeScriptコンパイラを実行
typings typings(TypeScriptの型定義ファイルを処理するツール)を実行
postinstall typingsコマンドでtypings.jsonに定義した型定義ファイルをインストール

 表3のコマンドを組み合わせて、startコマンドはリスト1のように定義されています。tscコマンドでTypeScriptコンパイラを実行後、処理の並列処理を行うconcurrentlyコマンドで、「npm run tsc:w」(=ファイルの変更監視)と、「npm run lite」(=Webサーバーの起動)を並列して行います。

リスト1 startコマンドの定義(angular2-quickstart/package.json)
"start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite\" ",

クイックスタートを構成するファイル群

 Angular 2のWebサイトを構成するファイル内容を説明します。まずapp.component.tsがAngular 2のコンポーネント定義で、リスト2のようになっています。

リスト2 Angular 2のコンポーネント(angular2-quickstart/app/app.component.ts)
// Angular 2のコンポーネントを参照 ...(1)
import { Component } from '@angular/core';

// AppComponentコンポーネントのパラメータ指定 ...(2)
@Component({
  selector: 'my-app',
  template: '<h1>My First Angular 2 App</h1>'
})
// AppComponentコンポーネントの実装 ...(3)
export class AppComponent { }

 (1)のimport記述でAngular 2が提供するComponentメソッドを参照しています。(2)の「@Component」はDecoratorと呼ばれる記法で、参照したComponentクラスにメタデータとしてパラメータを指定します。ここではtemplateパラメータで指定したHTMLを、selectorパラメータで指定したWebページのタグ部分に挿入するよう指定しています。(3)はコンポーネントのクラスAppComponentをexport記述により外部に公開しています。コンポーネントのロジックなどはここに記述されますが、この段階ではまだ空です。

 なおimport、exportの記述はES2015 modulesで定義され、TypeScriptで先取り実装された記述方法です。現状のブラウザではまだサポートされていませんが、TypeScriptコンパイラが現状のブラウザで実行できるよう変換してくれます。

 app/main.tsはリスト3のようになっており、app.component.tsからAppComponentコンポーネントを参照して起動する処理が実装されます。

リスト3 Angular 2の起動処理(angular2-quickstart/app/main.ts)
// 起動のためのbootstrapメソッドを参照 ...(1)
import { bootstrap }    from '@angular/platform-browser-dynamic';

// AppComponentを参照 ...(2)
import { AppComponent } from './app.component';

// 起動処理 ...(3)
bootstrap(AppComponent);

 (1)で起動処理を行うbootstrapメソッドを参照しています。platform-browser-dynamicはWebブラウザ用の起動処理を表します。(2)でAppComponentコンポーネントを参照し、(3)でbootstrapメソッドの引数に与えて起動します。

 一方、Webページのindex.htmlには、コンポーネントが挿入される<my-app>タグが存在します。

リスト4 コンポーネントが挿入されるHTMLタグ(angular2-quickstart/index.html)
<body>
  <!-- ここにコンポーネントが挿入される -->
  <my-app>Loading...</my-app>
</body>

 またheadタグ内には、モジュールをロードするライブラリSystemJSで起動処理が記述されています。

リスト5 Angular 2の起動処理を実行する記述(angular2-quickstart/index.html)
<script src="systemjs.config.js"></script> <!-- SystemJSの設定 ...(1)-->
<script>
  // System.importでappフォルダをインポート ...(2)
  System.import('app').catch(function(err){ console.error(err); });
</script>

 (1)でsystemjs.config.jsを参照してSystemJSの設定を行った後、(2)のSystem.importメソッドで、appフォルダをインポートしています。このとき(1)のsystemjs.config.js内で、appフォルダに「main: main.js」とメインファイルが定義されている(リスト6参照)ため、結果としてリスト3のapp/main.tsがJavaScriptに変換されたファイルapp/main.jsが実行されます。

リスト6 SystemJSによるappフォルダの定義(angular2-quickstart/systemjs.config.js)
'app': { main: 'main.js',  defaultExtension: 'js' },

 Webページが表示されてapp/main.jsが実行されると、index.htmlの<my-app>タグ部分にリスト2のtemplateで指定したHTMLが挿入され、図6のように表示されます。

次のページ
サンプルコードを書き換えてデータバインディングを試す

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
次世代Webアプリケーションフレームワーク「Angular」の活用連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

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

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9544 2017/04/24 11:01

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング