SlideShare a Scribd company logo
1 of 34
Download to read offline
Ma_gician
世界中のフロントエンダーの残業時間を減らす、
新しい JavaScript フロントエンドフレームワーク
<詳細版>
読み方
Ma_gician 「マジシャン」
どういうもの?
新しいアーキテクチャで作られた
JavaScipt フロントエンド フレームワーク
特徴は?
極端に少ないコード量で動作可能。
どこで見られるの?
ソースコードと正式名称は未公開です。
(2019/10/10時点)
マイルストーン
令和元年内にオープンソース化
コードが減る様子を見てみましょう
Vue.js の
リアクティブ
<script src="assets/js/vue"></script>
<div id="controller">
<input v-model="message">
<p>Message = {{ message }}</p>
</div>
<script>
new Vue({
el: '#controller,
data: { message: '' }
})
</script>
Vue.js の実装を Ma_gician で書き替え
1. new Vue が書かれている <script> を削除
2. ライブラリの読み込みを vue から ma_gician に変更
3. <div id="component"> の > の直前に :: を追加
* Lightning Talk では、ここでライブコーディングします
Vue.js の
リアクティブ
<script src="assets/js/vue"></script>
<div id="controller">
<input v-model="message">
<p>Message = {{ message }}</p>
</div>
<script>
new Vue({
el: '#controller,
data: { message: '' }
})
</script>
Ma_gician の
リアクティブ
<script src="assets/js/ma_gician"></script>
<div ::>
<input v-model="message">
<p>Message = {{ message }}</p>
</div>
結論
* Ma_gician で実装すると、コード量が減る
* コード量が減れば、バグの可能性も減る
* バグが減れば、作業時間も減る
* 作業時間が減れば、残業時間も減る
Q.E.D.
更に機能紹介
アジェンダ
1. 状態管理
2. Nested Computed
3. HTML Imports
状態管理
Ma_gician の状態管理
● タグに :: を要素追加するとコントローラ化されます。
● コントローラは自分の子要素をスコープとした状態管理をします。
普通の HTML
<main>
<section>
<div>A1 = {{ aaa }}</div>
<div>B1 = {{ bbb }}</div>
</section>
<section>
<div>A2 = {{ aaa }}</div>
<div>B2 = {{ bbb }}</div>
</section>
</main>
Ma_gician の
コントローラ
<main>
<section x-state="{ aaa: 1, bbb: 2 }" ::>
<div>A1 = {{ aaa }}</div>
<div>B1 = {{ bbb }}</div>
</section>
<section x-state="{ aaa: 11, bbb: 22 }" ::>
<div>A2 = {{ aaa }}</div>
<div>B2 = {{ bbb }}</div>
</section>
</main>
Ma_gician の
コントローラの
ネスト
<main x-state="{
aaa: 111
}" ::>
<section>
<div>A1 = {{ aaa }}</div>
</section>
<section x-state="{ aaa: 1000 }" ::>
<div>A2 = {{ aaa }}</div>
</section>
</main>
子コントローラは
カプセル化される。
Ma_gician の
コントローラの
ネスト
<main x-state="{
aaa: 111,
xxx: { aaa: 1000 }
}" ::>
<section>
<div>A1 = {{ aaa }}</div>
</section>
<section x-namespace="xxx" ::>
<div>A2 = {{ aaa }}</div>
</section>
</main>
親子コントローラは
状態を名前空間で
連結できる。
Nested Computed
Vue.js の computed
● Vue インスタンスに computed 定義を登録する。
● Vue インスタンス以外では computed を定義できない。
Ma_gician の computed
● コントローラ要素に computed を一括定義できる。
● 子要素にも computed を定義できる。
● 子要素の computed は、その要素の子要素だけに適用される。
Vue.js の
computed
<div id="controller">
<p>{{ a }} + {{ b }} = {{ add }}</p>
<p>{{ a }} - {{ b }} = {{ sub }}</p>
</div>
<script>
new Vue({
el: '#controller,
data: { a: 1, b: 2 },
computed: {
add: function () { return this.a + this.b },
sub: function () { return this.a - this.b }
}
})
</script>
Vue インスタンスで
computed を一括定義
Ma_gician の
computed
<div x-state="{ a: 1, b: 2 }"
x-computed="{
get add () { return this.a + this.b },
get sub () { return this.a - this.b }
}"
::>
<p>{{ a }} + {{ b }} = {{ add }}</p>
<p>{{ a }} - {{ b }} = {{ sub }}</p>
</div>
:: を付与した要素に
computed を一括定義
Ma_gician の
Nested computed
<div x-state="{ a: 1, b: 2 }" ::>
<div x-computed="{
get add () { return this.a + this.b }
}">
<div x-computed="{
get sub () { return this.a - this.b }
}">
<p>{{ a }} + {{ b }} = {{ add }}</p>
<p>{{ a }} - {{ b }} = {{ sub }}</p>
</div>
</div>
</div>
子要素にも computed を
定義できる
HTML Imports
(Single File Component)
ワイヤーフレーム
<main>
<section>
<h1>
ここにタイトル
</h1>
<div>
ここにユーザ情報
</div>
</section>
</main>
HTML Imports の
適用後
<main>
<section _>
<h1 x-import=”title.html”>
ここにタイトル
</h1>
<div x-import=”user-info.html”>
ここにユーザ情報
</div>
</section>
</main>
Ma_gician の HTML Imports
(・ω・)<ライブコーディング見ないとわからんでござる
自己紹介
● Ma_gician を作った人
名前:Stew Eucen(悉生 游漩)
読み方: しちゅう ゆうせん
国籍:日本
● SNS
Twitter: @StewEucen
Facebook: stew.eucen
OSS 活動に向けて
スポンサー募集中です!
他のデモを見たい方は、
懇親会でお声がけください!
ご静聴ありがとうございました!

More Related Content

What's hot

エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
 

What's hot (20)

React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
Chart.jsで簡単にグラフを描画する
Chart.jsで簡単にグラフを描画するChart.jsで簡単にグラフを描画する
Chart.jsで簡単にグラフを描画する
 
AngularJSを浅めに紹介します
AngularJSを浅めに紹介しますAngularJSを浅めに紹介します
AngularJSを浅めに紹介します
 
株式会社インタースペース 清水様 登壇資料
株式会社インタースペース 清水様 登壇資料株式会社インタースペース 清水様 登壇資料
株式会社インタースペース 清水様 登壇資料
 
3分でわかるangular js
3分でわかるangular js3分でわかるangular js
3分でわかるangular js
 
ASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみたASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみた
 
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティスコンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
 
Ma gician <wide version> @meguro.es 2019/10/10
Ma gician <wide version> @meguro.es 2019/10/10Ma gician <wide version> @meguro.es 2019/10/10
Ma gician <wide version> @meguro.es 2019/10/10
 
React を導入した フロントエンド開発
React を導入したフロントエンド開発React を導入したフロントエンド開発
React を導入した フロントエンド開発
 
はじめてのVue.js
はじめてのVue.jsはじめてのVue.js
はじめてのVue.js
 
チュートリアルではじめるVue.js
チュートリアルではじめるVue.jsチュートリアルではじめるVue.js
チュートリアルではじめるVue.js
 
Gws 20141024 gradle_intro
Gws 20141024 gradle_introGws 20141024 gradle_intro
Gws 20141024 gradle_intro
 
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
 
20140329 modern logging and data analysis pattern on .NET
20140329 modern logging and data analysis pattern on .NET20140329 modern logging and data analysis pattern on .NET
20140329 modern logging and data analysis pattern on .NET
 
スマホにおけるWebGL入門
スマホにおけるWebGL入門スマホにおけるWebGL入門
スマホにおけるWebGL入門
 
Async Enhancement
Async EnhancementAsync Enhancement
Async Enhancement
 
React.jsでサービスを作ってみた話
React.jsでサービスを作ってみた話React.jsでサービスを作ってみた話
React.jsでサービスを作ってみた話
 
One night Vue.js
One night Vue.jsOne night Vue.js
One night Vue.js
 
WebXR TechTokyo #3 in Cluster発表資料
WebXR TechTokyo #3 in Cluster発表資料WebXR TechTokyo #3 in Cluster発表資料
WebXR TechTokyo #3 in Cluster発表資料
 

Similar to Ma_gician (世界中のフロントエンダーの残業時間を減らす、新しいフロントエンドフレームワーク)<詳細版>

Lighting componentワークブック(経費精算アプリ)
Lighting componentワークブック(経費精算アプリ)Lighting componentワークブック(経費精算アプリ)
Lighting componentワークブック(経費精算アプリ)
Akihiro Iwaya
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
土岐 孝平
 

Similar to Ma_gician (世界中のフロントエンダーの残業時間を減らす、新しいフロントエンドフレームワーク)<詳細版> (20)

Lighting componentワークブック(経費精算アプリ)
Lighting componentワークブック(経費精算アプリ)Lighting componentワークブック(経費精算アプリ)
Lighting componentワークブック(経費精算アプリ)
 
TypeScriptで書くLambdaをCDKでいい感じに管理する.pptx
TypeScriptで書くLambdaをCDKでいい感じに管理する.pptxTypeScriptで書くLambdaをCDKでいい感じに管理する.pptx
TypeScriptで書くLambdaをCDKでいい感じに管理する.pptx
 
20200304 vuejs
20200304 vuejs20200304 vuejs
20200304 vuejs
 
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
 
Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0Progressive Framework Vue.js 2.0
Progressive Framework Vue.js 2.0
 
Vue.js で XSS
Vue.js で XSSVue.js で XSS
Vue.js で XSS
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
 
20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料
20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料
20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料
 
Vue.js 基礎 + Vue CLI の使い方
Vue.js 基礎 + Vue CLI の使い方Vue.js 基礎 + Vue CLI の使い方
Vue.js 基礎 + Vue CLI の使い方
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
Vue入門
Vue入門Vue入門
Vue入門
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発  - Game Development Starting with Next2DNext2Dで始めるゲーム開発  - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
 
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
 
New Features in C# 10/11
New Features in C# 10/11New Features in C# 10/11
New Features in C# 10/11
 
WordPress widget api
WordPress widget apiWordPress widget api
WordPress widget api
 
LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideLabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training Slide
 
初めてのvue.js(2.x系)
初めてのvue.js(2.x系)初めてのvue.js(2.x系)
初めてのvue.js(2.x系)
 
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作る
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作るEWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作る
EWD 3トレーニングコース#31 ewd-xpressでWebおよびRESTサービスを作る
 

Ma_gician (世界中のフロントエンダーの残業時間を減らす、新しいフロントエンドフレームワーク)<詳細版>