# Meteorを準備する

## Meteorとは

まずは今回の開発にフレームワークとして利用するMeteorについて説明していきます。

[Meteor](https://www.meteor.com/)はオープンソースのWebアプリケーション・フレームワークであり、2012年に最初のリリースが行われて以降、精力的に機能強化が行われています。現在ではWebブラウザ上での動作はもちろん、iOSアプリやAndoroidアプリとして動作するアプリケーション開発も可能になっています。アプリケーション開発における生産性を高める機能が数多く備わっており、リリース以来多くの注目を集めています。Meteorには大きく以下の３つの特徴があります。

* **UNIVERSAL JAVASCRIPT**： Meteorではクライアント側とサーバ側のコードの両方をJavascript言語で記述することを可能にしています。またクライアント側もWebブラウザ/iOSアプリ/Androidアプリに関わらずJavascript言語でのアプリケーション動作の記述を可能にすることで、完全に統一されたコードの管理が可能になり、コードの共用など開発及び保守のコストが軽減されます。
* **Realtime & Reactive**： Webアプリケーションの使用者の中の誰かがサーバ側のデータを更新すると、その変更がリアルタイムにアプリケーションを利用している全てのユーザーに伝搬し「再読み込み」のようなユーザーの操作もなく画面に自動的に反映される、といったリアルタイム、かつリアクティブなWebアプリケーションの開発を非常に容易にする仕組みが用意されています。
* **Develop to Deploy**： Meteorは開発だけでなくアプリケーションの公開までも非常に容易にします。開発者が独自にサーバを用意しアプリケーションのデプロイと公開を行うこともできますが、MeteorはMeteorを使って開発したアプリケーションの公開用プラットフォームを用意しており、コマンド一つで自分のアプリケーションをWeb上に公開することが可能にしています。

Meteorのこのような特長に加え、既にEthereumのノードとAPI連携するためのライブラリ群（Meteorではパッケージと呼びます）が開発されており、これらを組み込むことでP2PのEthereumネットワーク上で動作するDappの開発が可能になります。実際にEthereumの公式walletである[Mist](https://github.com/ethereum/mist)もMeteorを利用して開発されています。

分散型アプリケーションの開発を進めていく準備として、先ずはMeteorインストールしてみましょう。以下特に言及しない場合はubuntu 14.04の環境を前提とします。他のOSの場合には適宜読み替えてください。（Linux OSやMac OSの場合はほぼ同じ操作で進められるでしょう。）

## Meteor事始め

### Meteorのインストール

Meteorのインストールは極めて簡単です。ターミナルを開き

```bash
$ curl https://install.meteor.com | sh
```

の１行のコマンドを実行するのみです。実行の途中でsudoのパスワードを聞かれるので適宜入力してください。実行後

```bash
$ meteor --version
```

と入力してバージョン情報が表示されればインストールが出来ています。

### 最初のアプリケーションを作成する

Meteorのインストールしたので、実際にMeteorで簡単なアプリケーションを作ってみます。そのために、任意のディレクトリ上で

```bash
$ meteor create myfirstapp
```

のコマンドを実行します。ここで`myfirstapp`は今回作るアプリケーション名です。このコマンドを実行すると、

```
myfirstapp.css
myfirstapp.html
myfirstapp.js
```

の３つのファイルと`.meteor`ディレクトリが含まれる`myfirstapp`のディレクトリが作成されます。これはmeteorが自動的に作成するアプリケーションのひな形（boilerplate）です。このディレクトリのファイルを編集したり、必要に応じて追加していくことでMeteorのWebアプリケーションの開発を進めていくことになります。この作成されたひな形は（至極単純なものですが）実際にWebアプリケーションとして動作するので、動かしてみましょう。

を`myfirstapp`ディレクトリに移動して

```bash
$ meteor
```

コマンドを実行します。実行するとしばらくしてコンソールに`=> App running at: http://localhost:3000/`と表示されるのでWebブラウザでアドレスに「<http://localhost:3000/> 」と入力しアクセスします。すると下図のような（単純な）Webアプリケーションが表示されます。

![](/files/-M41_ICoLLhH-6q_wAUd)

以上、Meteorのインストールからひな型の作成とその実行までを見てきました。次節以降でこのMeteorを用いたEthereumネットワーク上で動作する分散型アプリケーションの開発の方法をチュートリアル形式で見ていきます。&#x20;

#### ■TIPS

Meteorの特徴として、「Meteorで開発したWebアプリケーションをコマンド一つで世界に公開できる」というものがあります。公開は作成したアプリケーションのディレクトリで例えば

```bash
$ meteor deploy hogehoge
```

のコマンドを実行するだけです。開発したアプリケーションが自動で公開サーバにアップロード・デプロイされWeb上で公開されます。ここで`hogehoge`の部分で公開する際のURLのサブドメインを指定しています。この場合URL「<http://hogehoege.meteor.com> 」で開発したアプリケーションにアクセスできるようになります。

## Meteorをさらに知るために

次節以降で、Meteorを用いた「Ethereumネットワーク上で動作するDappの開発」に主眼を置いて解説していきます。そのためMeteor持つ強力な機能の全てを本書内で解説するこはできません。Meteor自体のより詳細で良質な解説を下記に挙げておきます。

* [**Meteor公式チュートリアル**](https://www.meteor.com/tutorials/blaze/creating-an-app)： 簡単なTODO管理アプリケーションの開発をチュートリアル形式で解説しています。
* [**Discover Meteor**](https://www.discovermeteor.com/)： リアルタイムのソーシャル・ニュース・アプリを題材にチュートリアル形式でMeteorとそれを用いた開発を解説した電子書籍です。上記の公式チュートリアルよりもより網羅的です。有料（$29-）でGumroadにより販売されています。また有志による[日本語翻訳版も公開されており](http://ja.discovermeteor.com/)、こちらは無料で閲覧が可能です。
* [**Meteor Docs**](http://docs.meteor.com/#/full/)： 公式のAPIリファレンスです。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.ethereum-jp.net/meteor_dapp/about_meteor.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
