24
Meteor Kitchen で でででででででででで YAMADA Junji

Meteor kitchen で楽々ウェブアプリ開発

Embed Size (px)

Citation preview

Page 1: Meteor kitchen で楽々ウェブアプリ開発

Meteor Kitchen で楽々ウェブアプリ開発YAMADA Junji

Page 2: Meteor kitchen で楽々ウェブアプリ開発

Meteor Kitchen

Page 3: Meteor kitchen で楽々ウェブアプリ開発

Meteor Kitchen とは?Meteor のソースコードを自動生成JSON で設定ファイルを書くコマンド一発でアプリが完成URL: http://www.meteorkitchen.com/紹介ビデオ :

https://www.youtube.com/watch?v=9k5YRxjP58Y

Page 4: Meteor kitchen で楽々ウェブアプリ開発

コマンドはこんな感じ$ meteor-kitchen [ 設定ファイル ] [ 出力フォルダ名 ]$ meteor-kitchen myapp.json myapp

myapp/ フォルダにアプリが生成される$ cd myapp$ meteor

Page 5: Meteor kitchen で楽々ウェブアプリ開発

メリット時間とお金を節約

数時間の代わりに数分でコードをビルド1 行もコードを書かずに完成することもある

プロトタイピングに最適高品質なコード

コンポーネントと呼ばれる部品を使ってアプリを生成コードは読みやすく、安定して、バグがない

一度書けば何度でも使える

Page 6: Meteor kitchen で楽々ウェブアプリ開発

インストール$ curl http://www.meteorkitchen.com/install | /bin/sh

Page 7: Meteor kitchen で楽々ウェブアプリ開発

設定ファイルはこんな感じ{ "application": { "free_zone": { "pages": [ { "name": "home", "title": "Home page" }, { "name": "about", "title": "About" } ],

"components": [ { "name": "main_menu", "type": "menu", "items": [ { "title": "Home page", "route": "home" }, { "title": "About", "route": "about" } ] } ] } }}

Page 8: Meteor kitchen で楽々ウェブアプリ開発

設定ファイルのパターン 1page オブジェクトのプロパティ => name, title

“home” という名前のページから次のファイルを生成 home.html, home.js, home_controller.js

ファイル名とルート名はスネークケースで書くmy_app_name

テンプレート名はキャメルケースで書くMyAppName

Page 9: Meteor kitchen で楽々ウェブアプリ開発

設定ファイルのパターン 2menu オブジェクトのプロパティ => name,

class, itemsclass プロパティは <ul> 要素にマッピング

menu の各 item のプロパティ => title, route

Page 10: Meteor kitchen で楽々ウェブアプリ開発

サブページ{ "name": "home", "title": "Home page", "pages": [ { "name": "subpage_1", "title": "Home - Subpage 1", "pages": [ { "name": "subsub_1", "title": "Home - Subpage 1 - Sub-Sub page 1", "pages": [

] } ] } ]}

Page 11: Meteor kitchen で楽々ウェブアプリ開発

フロントエンドフレームワークbootstrapsemantic-ui ※ 未完成materialize ※ 未完成

Page 12: Meteor kitchen で楽々ウェブアプリ開発

ビジュアルテーマbootswatch の各テーマデフォルトは bootswatch-amelia

Page 13: Meteor kitchen で楽々ウェブアプリ開発

コンポーネントコンポーネント 役割menu navbars, navs, side-menus and tab-menusform データの追加、更新data_view コレクションのデータを表形式で表示 ( 検索、並べ替

え )tree_view 階層データをツリー形式で表示jumbotron 大きな文字のクールなテキスト ( 表紙用 )markdown Markdown 形式のテキストdiv <div> 要素section <section> 要素

Page 14: Meteor kitchen で楽々ウェブアプリ開発

コレクションapplication オブジェクトに collections 配列を追加{ "application": { "title": "Example application", "collections": [ { "name": "customers" "fields": [ { "name": "name", "title": "Name", "required": true }, { "name": "phone", "title": "Phone", "default": "-" }, { "name": "email", "title": "E-mail", "type": "email" } ] } ], }}

Page 15: Meteor kitchen で楽々ウェブアプリ開発

データベース関連機能Queries クエリJoins ジョイン

Page 16: Meteor kitchen で楽々ウェブアプリ開発

DataView コンポーネント

Page 17: Meteor kitchen で楽々ウェブアプリ開発

Form コンポーネント read_only

Page 18: Meteor kitchen で楽々ウェブアプリ開発

Form コンポーネント insert

Page 19: Meteor kitchen で楽々ウェブアプリ開発

Form コンポーネント update

Page 20: Meteor kitchen で楽々ウェブアプリ開発

OAuth "login_with_password": true,

"login_with_google": true, "login_with_github": true, "login_with_linkedin": true, "login_with_facebook": true, "login_with_twitter": true, "login_with_meteor": true

Page 21: Meteor kitchen で楽々ウェブアプリ開発

ユーザーロールrole 配列にロールを追加

"roles": ["admin", "manager", "user"],"default_role": "user",

ページへのアクセスを制限"pages": [ { "name": "home_private", "title": "Private home page" }, { "name": "admin_panel", "title": "Admin panel", "roles": ["admin"] }, { "name": "logout", "template": "logout" }],

Page 22: Meteor kitchen で楽々ウェブアプリ開発

ロールでコレクションを制限"collections": [ { "name": "customers", "roles_allowed_to_read": [], "roles_allowed_to_insert": ["admin", "manager"], "roles_allowed_to_update": ["admin", "manager"], "roles_allowed_to_delete": ["nobody"], }],

Page 23: Meteor kitchen で楽々ウェブアプリ開発

ドキュメントオーナー{ "name": "customers",

"owner_field": "ownerId", "roles_allowed_to_read": ["admin", "owner"], "roles_allowed_to_insert": ["admin", "user"], "roles_allowed_to_update": ["owner"], "roles_allowed_to_delete": ["nobody"],}

Page 24: Meteor kitchen で楽々ウェブアプリ開発

まとめ設定ファイルだけでアプリが書けるウェブアプリに必要なコンポーネントがそろっているOAuth が使えるユーザーロールによるアクセス制限ができるとはいえ、覚えることはそれなりに多い (^^;)