# 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アプリケーションが表示されます。

![](https://764223830-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M41_FJFzF21tNW-i7Em%2F-M41_Gy7jSdIKOcFBzjs%2F-M41_ICoLLhH-6q_wAUd%2Fmyfirstapp.png?generation=1585960012312676\&alt=media)

以上、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リファレンスです。
