Meteorではじめる
 Meteorではじめる
最速ウェブアプリ開発

 #SFLT17 Hironao Sekine
Meteorとは
               Meteorとは
●   WEBアプリフレームワーク
    WEBアプリフレームワーク
    +パッケージマネージャ
    +データベース
    +サーバー
    +環境
●   基本言語はjavascript
    基本言語はjavascript
●   データベースはMongoDB
    データベースはMongoDB
    (minimongoライブラリを使用)
    (minimongoライブラリを使用)
●   データベースへの変更はリアルタイムで
    全クライアントに伝播する
2分で開発が始められる
●   Meteorのインストール
    Meteorのインストール
    $ curl https://install.meteor.com | /bin/sh
●   Meteorでプロジェクト作成
    Meteorでプロジェクト作成
    $ meteor create myapp
●   アプリケーションの起動
    $ meteor
    Running on: http://localhost:3000/
●   アプリケーションの公開
    $ meteor deploy myapp.meteor.com
ファイル構成
●   生成直後のアプリケーションディレクトリの中身
    myapp/.meteor
         /myapp.js   アプリケーションロジック
         /myapp.html ビューテンプレート
         /myapp.css まんまcss
                     まんまcss
●   この状態ではクライアント、サーバーの差がない
●   全てのファイルがクライアント(ブラウザ)に送信さ
    全てのファイルがクライアント(ブラウザ)
    れ、サーバーでもクライアントでも実行される
こういう感じに変える
●   myapp/.meteor/
    myapp/.meteor/       Meteor関係(DBとかもこの中に入ってる)
                         Meteor関係(DBとかもこの中に入ってる)
         /public/
         /public/        静的ファイル置き場
         /server/        この中身はクライアントには送信されない
                /server.js     サーバー側で実行されるjsコード
                               サーバー側で実行されるjsコード
         /client/        この中身はクライアントに全て送信される
                /client.js     クライアントで実行されるjsコード
                               クライアントで実行されるjsコード
                /myapp.html
                /myapp.css
         /model.js       クライアントでもサーバーでも実行される
●   この他、myapp/lib/, myapp/test/, main.* とかいう規約もあるみ
    この他、myapp/lib/,
    たいだけど、とりあえずは上記の構成で十分
Smart packages
●   現在有効なパッケージの一覧
    http://docs.meteor.com/#packages
●   パッケージの有効化
    $ meteor add <package_name>
●   パッケージの無効化
    $ meteor remove <package_name>
●   今回は
    accounts-ui, bootstrap, d3, jquery をadd
    autopublish, insecure をremove
    autopublish,
●   この2つはデフォルトで入っているもの
    この2
    Autopublishを消さないと…
    Autopublishを消さないと…
    全てのDBコレクションが公開状態になる
    全てのDBコレクションが公開状態になる
    Insecureを消さないと…
    Insecureを消さないと…
    データベース操作の全てがクライアントから自由に可能
アレを作りなおしてみました
●   Demo
結論
●   究極的にラピッドな開発をしやすい環境
●   「リアルタイム」に囚われる必要なし
    Meteorだから「リアルタイムに見続けて面白いものを作ろう」
    Meteorだから「リアルタイムに見続けて面白いものを作ろう」
    と、考えるとチャットとかゲームとかしか浮かばなくなる…
●   ウェブアプリ開発ツールの機能として、たまたま
    リアルタイムでDBとシンクしてくれたり…
    リアルタイムでDBとシンクしてくれたり…
    コード変更して保存したら勝手に反映されたり…
    javascriptライブラリをパッケージとして管理してくれたり…
    javascriptライブラリをパッケージとして管理してくれたり…
    公開用のクラウドプラットフォームもついてきたり…

    するだけだから、とりあえずMeteor万歳
    するだけだから、とりあえずMeteor万歳

Sflt17 meteorではじめる最速ウェブアプリ開発

  • 1.
  • 2.
    Meteorとは Meteorとは ● WEBアプリフレームワーク WEBアプリフレームワーク +パッケージマネージャ +データベース +サーバー +環境 ● 基本言語はjavascript 基本言語はjavascript ● データベースはMongoDB データベースはMongoDB (minimongoライブラリを使用) (minimongoライブラリを使用) ● データベースへの変更はリアルタイムで 全クライアントに伝播する
  • 3.
    2分で開発が始められる ● Meteorのインストール Meteorのインストール $ curl https://install.meteor.com | /bin/sh ● Meteorでプロジェクト作成 Meteorでプロジェクト作成 $ meteor create myapp ● アプリケーションの起動 $ meteor Running on: http://localhost:3000/ ● アプリケーションの公開 $ meteor deploy myapp.meteor.com
  • 4.
    ファイル構成 ● 生成直後のアプリケーションディレクトリの中身 myapp/.meteor /myapp.js アプリケーションロジック /myapp.html ビューテンプレート /myapp.css まんまcss まんまcss ● この状態ではクライアント、サーバーの差がない ● 全てのファイルがクライアント(ブラウザ)に送信さ 全てのファイルがクライアント(ブラウザ) れ、サーバーでもクライアントでも実行される
  • 5.
    こういう感じに変える ● myapp/.meteor/ myapp/.meteor/ Meteor関係(DBとかもこの中に入ってる) Meteor関係(DBとかもこの中に入ってる) /public/ /public/ 静的ファイル置き場 /server/ この中身はクライアントには送信されない /server.js サーバー側で実行されるjsコード サーバー側で実行されるjsコード /client/ この中身はクライアントに全て送信される /client.js クライアントで実行されるjsコード クライアントで実行されるjsコード /myapp.html /myapp.css /model.js クライアントでもサーバーでも実行される ● この他、myapp/lib/, myapp/test/, main.* とかいう規約もあるみ この他、myapp/lib/, たいだけど、とりあえずは上記の構成で十分
  • 6.
    Smart packages ● 現在有効なパッケージの一覧 http://docs.meteor.com/#packages ● パッケージの有効化 $ meteor add <package_name> ● パッケージの無効化 $ meteor remove <package_name> ● 今回は accounts-ui, bootstrap, d3, jquery をadd autopublish, insecure をremove autopublish, ● この2つはデフォルトで入っているもの この2 Autopublishを消さないと… Autopublishを消さないと… 全てのDBコレクションが公開状態になる 全てのDBコレクションが公開状態になる Insecureを消さないと… Insecureを消さないと… データベース操作の全てがクライアントから自由に可能
  • 7.
  • 8.
    結論 ● 究極的にラピッドな開発をしやすい環境 ● 「リアルタイム」に囚われる必要なし Meteorだから「リアルタイムに見続けて面白いものを作ろう」 Meteorだから「リアルタイムに見続けて面白いものを作ろう」 と、考えるとチャットとかゲームとかしか浮かばなくなる… ● ウェブアプリ開発ツールの機能として、たまたま リアルタイムでDBとシンクしてくれたり… リアルタイムでDBとシンクしてくれたり… コード変更して保存したら勝手に反映されたり… javascriptライブラリをパッケージとして管理してくれたり… javascriptライブラリをパッケージとして管理してくれたり… 公開用のクラウドプラットフォームもついてきたり… するだけだから、とりあえずMeteor万歳 するだけだから、とりあえずMeteor万歳