SlideShare a Scribd company logo
1 of 24
Download to read offline
2012/07/11 第31回 HTML5とか勉強会
  Acroquest Technology Co.,Ltd.
Kenichiro Murata(@muraken720)
目次	

 1.  はじめに
 2.  Spineに興味を持った経緯
 3.  Spineとは?
 4.  Spineの3つの特徴
 5.  何はともあれ、Todos App!
 6.  Spineの7つのお気に入りなポイント
 7.  まとめ	


                                                                           2
         Copyright © Acroquest Technology Co., Ltd. All rights reserved.
1. はじめに	
 自己紹介 =
  氏名: ‘村田 賢一郎’
  twitter: ‘@muraken720’
  所属: ‘Acroquest Technology Co.,Ltd.’
  仕事:
      ‘ライフライン系ネットワーク集中監視システム開発’
      ‘フレームワーク開発’
  言語: ‘Java’ #JavaScriptはWebアプリケーション開発で少々
  興味:
      ‘node.js’
      ‘CoffeeScript’
      ‘機関車トーマス!’
                                                                              3
            Copyright © Acroquest Technology Co., Ltd. All rights reserved.
2. Spineに興味を持った経緯	
 n  WGP(Web Graphical Platform)を「JavaScriptMVC
     フレームワーク」を使って改良せよ!
   Ø  WGPはグラフィカルなWebUI開発用のJavaScriptなOSS。




                                                            http://wgp.sourceforge.net/	
                                                                                       4
              Copyright © Acroquest Technology Co., Ltd. All rights reserved.
3. Spineとは?	
 1.  Backbone.jsにインスパイアされて開発。	
 2.  開発者: Alex MacCaw (@maccam)氏
   Ø  著書:
     –  ステートフルJavaScript(原書:JavaScript Web Applications)
     –  The Little Book on CoffeeScript
 3.  「ステートフルJavaScript」で提案する手法を体現する
     ことを目指して、執筆時に開発。	

                          本に出てくるSpine.jsは、CoffeeScriptに出会う前の
                          純粋なJavaScript実装版です。	



                                                                                  5
                Copyright © Acroquest Technology Co., Ltd. All rights reserved.
4. Spineの3つの特徴	

    1. Simple	
                                          3. CoffeeScript	




  2. Lightweight	
                                                                              6
            Copyright © Acroquest Technology Co., Ltd. All rights reserved.
4-1. SimpleなMVCモデルアーキテクチャ	
                                                       ①  Event                   ②  Rendering
                                                          Handling                ③  Routing

                             Controller	
      Event	
                                                             Event	



                                    Bind	
      View	
                                                                  Model	



  ①  Layout                                      ①  Data Model
  ②  Template                                    ②  Data storage and manipulation	
                                                                                                 7
                Copyright © Acroquest Technology Co., Ltd. All rights reserved.
4-2. Lightweightなフレームワーク	
 1.  ライン数: 約500 Line
 2.  サイズ(min+gzip): 8.1k(最小構成4.1k)
   ü  Backbone.js(5.6k)+Underscore.js(4k)
   ü  Ember.js(42k)
   ü  AngularJS(29k)       Ember.js

   ※ 勉強会後、サイズについて比較条件
   が同じではないとのコメントを頂き、条件
                                         AngularJS
   をmin+gzip時のサイズに統一して改版
   しました。	
                        Backbone.js
                                 +Underscore.js

                                             Spine.js

 3.  依存ライブラリ: なし                                             0          10        20   30   40   50
   Ø  JQuery or Zepto.js は推奨
                                                                                                 8
                Copyright © Acroquest Technology Co., Ltd. All rights reserved.
4-3. CoffeeScriptは簡潔で分かりやすい!?	
class	
 Model	
 extends	
 Module	
 
…	
 
	
 

 @select:	
 (callback)	
 ->	
 
   result	
 =	
 (record	
 for	
 id,	
 record	
 of	
 @records	
 when	
 
callback(record))	
 
   @cloneArray(result)	
 
	
 

…	
 
	
                                                                     Javaエンジニア的に
 @each:	
 (callback)	
 ->	
                                             は分かりやすい!
   for	
 key,	
 value	
 of	
 @records	
 
                                         Good-bye! prototype.	
     callback(value.clone())	
 
	
 
                         https://github.com/maccman/spine/blob/master/src/spine.coffee	
                                                                                           9
                    Copyright © Acroquest Technology Co., Ltd. All rights reserved.
5. 何はともあれ、Todos App!	
 n  Spineで、有名なTodos Appを使って作ってみよう!




 n  全ソースはGithubにて公開しています。
  Ø    https://github.com/muraken720/todos-spineapp-hem-eco
  Ø    https://github.com/muraken720/todos-spineapp-hem-jqtmpl
                                                                                      10
                    Copyright © Acroquest Technology Co., Ltd. All rights reserved.
5. Todos Appの構成	
                                                               The Element pattern

                                                                             TaskApp(Controller)	




                                                                              TaskController	

                                                                              Task(Model)	

                                                                              task.eco(View)	


                                                                                              11
           Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6. Spineの7つのお気に入りポイント	
④Event、Elementのマッピン
グが簡単
                                                                 ②Storage機能を併せ持つ
                                    Controller	
⑤Ecoテンプレート                                                       ③Adapterの切り替えが簡単
をpre-compile

                View	
                                             Model	
                                     Spine.js	
                                                                  ⑥楽々デバッグ
①定形作業を自動化                                                         ⑦ビルドで頭スッキリ!

                                                                            Hem
          Spine.app                                          dependency manager
         app generator	
                                                                   & server	
                                                                                  12
                Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6-①. Spine.appで定形作業を自動化	
 n  Spine.app とは、アプリケーションの自動生成ツール
 n  インストール
   > npm install spine.app hem # インストール

 n  各種コマンド

   spine app todos       # アプリケーションのひな形を生成
   spine model task                        # Modelのひな形を生成
   spine controller taskctrl              # Controllerのひな形を生成	



                                                                                    13
                  Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6-②. ModelはStorage機能を併せ持つ	
 Spine	
 =	
 require('spine')	
 
 	
 

 class	
 Task	
 extends	
 Spine.Model	
                     configureで、Model
                                                            名とプロパティ名を
 	
 	
 @configure	
 'Task',	
 "name",	
 "done”	
  定義するだけ。
 …	
 
                                                            Storageに対する操
 	
 	
 @active:	
 ->	
                                      作は標準で提供
 	
 	
 	
 	
 @select	
 (	
 (item)	
 ->	
 !item.done	
 )	
 
 …	
 
 module.exports	
 =	
 Task	
                              app/models/task.coffee	

 	
 
              Modelが提供する関数(抜粋)	
              create	
                   find	
                          save
              select                     exsits	
                        updateAttribute
              each                       all	
                           bind
                                                                                           14
                         Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6-③. Model Adapterの切り替えが簡単	
 Spine	
 =	
 require('spine')	
 
 	
 

 class	
 Task	
 extends	
 Spine.Model	
 
 	
 	
 @configure	
 'Task',	
 "name",	
 "done”	
 
 	
 

 	
 	
 @extend	
 @Local	
                extendでLocalStrorage用の
 	
                                      Adapterを指定
 	
 	
 @active:	
 ->	
 
 	
 	
 	
 	
 @select	
 (	
 (item)	
 ->	
 !item.done	
 )	
 
 …	
 
 module.exports	
 =	
 Task	
                       app/models/task.coffee	


 ü  @LocalでHTML5のLocalStorageに永続化
 ü  @AjaxでRESTでサーバサイドを呼び出し	
                                                                                        15
                      Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6-④. ControllerでEventのマッピングが簡単	
class	
 TaskApp	
 extends	
 Spine.Controller	
 
…	
 
	
 events:	
                               Eventと関数の関連付け定義は
	
 	
 	
 	
 "submit	
 form":	
 "create"	
  以下の形式
	
 	
 	
 	
 "click	
 .clear":	
 "clear”	
  events:
…	
                                         “イベント名 Selector”: “関数名”
	
 create:	
 (e)	
 ->	
 
	
 	
 	
 	
 e.preventDefault()	
 
	
 	
 	
 	
 Task.create(name:	
 @input.val(),	
 done:	
 false)	
 
	
 	
 	
 	
 @input.val("")	
                            app/index.coffee	


ü  events hashでユーザ操作によるイベントを関数にマッピング可能。
                                                                                      16
                    Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6-④. ControllerでElementのマッピングが簡単	
class	
 TaskApp	
 extends	
 Spine.Controller	
 
…	
 
                                            Elementと変数の関連付け定義は
	
 	
 elements:	
                           以下の形式
	
 	
 	
 	
 ".items":	
 "items"	
 
	
 	
 	
 	
 ".countVal":	
 "count"	
        elements:
                                             “Selector”: “変数名”
	
 	
 	
 	
 ".clear":	
 "clearlink"	
 
	
 	
 	
 	
 "form	
 input":	
 "input”	
 
…	
 
	
 	
 addOne:	
 (task)	
 =>	
 
	
 	
 	
 	
 taskctrl	
 =	
 new	
 TaskController(item:	
 task)	
 
	
 	
 	
 	
 @items.append(taskctrl.render().el)	
  app/index.coffee	
  ü  elements hashでDOMを変数にマッピング可能。
                                                                                      17
                    Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6-⑤. ViewにてEcoテンプレートをpre-compile	
 ü  Viewに関しては特に規定なし。
 ü  後述のHemにてEcoテンプレートをpre-compileしてくれるので、
     requireで簡単に利用可能。	
<div class="item <%= "done" if @done %>">
 <div class="view" title="Double click to edit...">
  <input type="checkbox" <%= "checked='checked'" if @done %>>
  <span><%= @name %></span> <a class="destroy"></a>
 </div>
 <div class="edit">
  <input type="text" value="<%= @name %>">
 </div>
</div>      Controllerにて以下のように利用する
                                                                                     app/views/task.eco	
          render: =>
           @replace require('views/task')(@item)
                                                                                                      18
                   Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6-⑥. Hemで楽々デバッグ	
n  Hem とは、開発用サーバ&依存関係管理ツール
n  開発用サーバの起動

  hem server        # 開発用のサーバを起動


  ü  “*.coffee”, “*.styl” をapplication.js, application.cssに変換
  ü  “*.eco”をpre-compile
  ü  ファイルの更新を監視しており、サーバの再起動なしで変
      更を自動反映



                                                                                  19
                Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6-⑦. Hemのビルドで頭スッキリ	
n  デプロイ用のビルド
  hem build     # application.js, application.cssを生成

  ü  requireを解釈して、JavaScript間の依存関係を解
      消したデプロイ用の統合ファイル(application.js,
      application.css)を生成




                                                                                20
              Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6-⑦. Hemのビルドで頭スッキリ	
<head>
 <title>Todos</title>
 <link rel="stylesheet" href="css/todos.css" type="text/css" charset="utf-8">
 <script src="lib/json2.js" type="text/javascript" charset="utf-8"></script>
 <script src="lib/jquery.js" type="text/javascript" charset="utf-8"></script>
 <script src="lib/jquery.tmpl.js" type="text/javascript" charset="utf-8"></script>
 <script src="lib/spine.js" type="text/javascript" charset="utf-8"></script>
 <script src="lib/local.js" type="text/javascript" charset="utf-8"></script>
 <script src="lib/todos.js" type="text/javascript" charset="utf-8"></script>
</head>



<head>
 <title>Todos</title>
 <link rel="stylesheet" href=”/application.css" type="text/css" charset="utf-8">
 <script src=”/application.js" type="text/javascript" charset="utf-8"></script>
</head>

                                                                                               21
                             Copyright © Acroquest Technology Co., Ltd. All rights reserved.
7. まとめ:Spineの3つの特徴	

    1. Simple	
                                          3. CoffeeScript	




  2. Lightweight	
                                                                              22
            Copyright © Acroquest Technology Co., Ltd. All rights reserved.
7. まとめ:Spineの7つのお気に入りポイント	
④Event、Elementのマッピン
グが簡単
                                                                 ②Storage機能を併せ持つ
                                    Controller	
⑤Ecoテンプレート                                                       ③Adapterの切り替えが簡単
をpre-compile

                View	
                                             Model	
                                     Spine.js	
                                                                  ⑥楽々デバッグ
①定形作業を自動化                                                         ⑦ビルドで頭スッキリ

                                                                            Hem
          Spine.app                                          dependency manager
         app generator	
                                                                   & server	
                                                                                  23
                Copyright © Acroquest Technology Co., Ltd. All rights reserved.
ご清聴、ありがとうございました。	




           Infrastructures	
  Evolution	

                                                                    24
  Copyright © Acroquest Technology Co., Ltd. All rights reserved.

More Related Content

What's hot

SORACOM S+Cameraを利用して在庫チェックをやってみた
SORACOM S+Cameraを利用して在庫チェックをやってみたSORACOM S+Cameraを利用して在庫チェックをやってみた
SORACOM S+Cameraを利用して在庫チェックをやってみたTakanori Suzuki
 
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについてSEGADevTech
 
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステムSEGADevTech
 
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cCDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cNorito Agetsuma
 
Javaにおけるネイティブコード連携の各種手法の紹介
Javaにおけるネイティブコード連携の各種手法の紹介Javaにおけるネイティブコード連携の各種手法の紹介
Javaにおけるネイティブコード連携の各種手法の紹介khisano
 
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Masatoshi Tada
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpYuji Kubota
 

What's hot (10)

SORACOM S+Cameraを利用して在庫チェックをやってみた
SORACOM S+Cameraを利用して在庫チェックをやってみたSORACOM S+Cameraを利用して在庫チェックをやってみた
SORACOM S+Cameraを利用して在庫チェックをやってみた
 
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
 
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
「龍が如くスタジオ」のQAエンジニアリング技術を結集した全自動バグ取りシステム
 
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cCDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
 
Javaにおけるネイティブコード連携の各種手法の紹介
Javaにおけるネイティブコード連携の各種手法の紹介Javaにおけるネイティブコード連携の各種手法の紹介
Javaにおけるネイティブコード連携の各種手法の紹介
 
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
 
AR-Frame x AR.js入門
AR-Frame x AR.js入門AR-Frame x AR.js入門
AR-Frame x AR.js入門
 
Java EE8 Report
Java EE8 ReportJava EE8 Report
Java EE8 Report
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 
UE4を用いたTPS制作事例 EDF:IR 地球を衛る兵士の歩き方
UE4を用いたTPS制作事例 EDF:IR 地球を衛る兵士の歩き方UE4を用いたTPS制作事例 EDF:IR 地球を衛る兵士の歩き方
UE4を用いたTPS制作事例 EDF:IR 地球を衛る兵士の歩き方
 

Similar to Spine入門

全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験AdvancedTechNight
 
3-コンテナスターターパックのご紹介
3-コンテナスターターパックのご紹介3-コンテナスターターパックのご紹介
3-コンテナスターターパックのご紹介KotaSato3
 
Voicepic@FacebookNight
Voicepic@FacebookNightVoicepic@FacebookNight
Voicepic@FacebookNightManabu Shimobe
 
Karateによる UI Test Automation 革命
Karateによる UI Test Automation 革命Karateによる UI Test Automation 革命
Karateによる UI Test Automation 革命Takanori Suzuki
 
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶjQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶShumpei Shiraishi
 
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介bitbank, Inc. Tokyo, Japan
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向Tsutomu Ogasawara
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!guestc06e54
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Kenta Suzuki
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624Yusuke Suzuki
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築VOYAGE GROUP
 
OSSで作るOpenStack監視システム
OSSで作るOpenStack監視システムOSSで作るOpenStack監視システム
OSSで作るOpenStack監視システムsatsuki fukazu
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことbitbank, Inc. Tokyo, Japan
 
ゲームだけじゃないHTML5
ゲームだけじゃないHTML5ゲームだけじゃないHTML5
ゲームだけじゃないHTML5Osamu Shimoda
 

Similar to Spine入門 (20)

Backbone.js入門
Backbone.js入門Backbone.js入門
Backbone.js入門
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
 
3-コンテナスターターパックのご紹介
3-コンテナスターターパックのご紹介3-コンテナスターターパックのご紹介
3-コンテナスターターパックのご紹介
 
Cakephp
CakephpCakephp
Cakephp
 
Voicepic@FacebookNight
Voicepic@FacebookNightVoicepic@FacebookNight
Voicepic@FacebookNight
 
Karateによる UI Test Automation 革命
Karateによる UI Test Automation 革命Karateによる UI Test Automation 革命
Karateによる UI Test Automation 革命
 
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶjQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
 
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築
 
Springの今
Springの今Springの今
Springの今
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
Groovyコンファレンス
GroovyコンファレンスGroovyコンファレンス
Groovyコンファレンス
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築
 
AppFormix勉強会資料
AppFormix勉強会資料AppFormix勉強会資料
AppFormix勉強会資料
 
OSSで作るOpenStack監視システム
OSSで作るOpenStack監視システムOSSで作るOpenStack監視システム
OSSで作るOpenStack監視システム
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
 
ゲームだけじゃないHTML5
ゲームだけじゃないHTML5ゲームだけじゃないHTML5
ゲームだけじゃないHTML5
 

More from AdvancedTechNight

CSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DCSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DAdvancedTechNight
 
D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界AdvancedTechNight
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めようAdvancedTechNight
 
CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現AdvancedTechNight
 
これから利用拡大?WebSocket
これから利用拡大?WebSocketこれから利用拡大?WebSocket
これから利用拡大?WebSocketAdvancedTechNight
 
TypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
TypeScriptのススメ ~JavaエンジニアのためのJava(like)ScriptTypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
TypeScriptのススメ ~JavaエンジニアのためのJava(like)ScriptAdvancedTechNight
 
three.jsで作る3Dの世界
three.jsで作る3Dの世界three.jsで作る3Dの世界
three.jsで作る3Dの世界AdvancedTechNight
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介AdvancedTechNight
 
Stormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPIStormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPIAdvancedTechNight
 
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4AdvancedTechNight
 
Twitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demoTwitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demoAdvancedTechNight
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門AdvancedTechNight
 
ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」AdvancedTechNight
 
Hadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバックHadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバックAdvancedTechNight
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOneAdvancedTechNight
 
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たちATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たちAdvancedTechNight
 
ATN No.1 Hadoop vs Amazon EMR
ATN No.1 Hadoop vs Amazon EMRATN No.1 Hadoop vs Amazon EMR
ATN No.1 Hadoop vs Amazon EMRAdvancedTechNight
 
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersAdvancedTechNight
 

More from AdvancedTechNight (19)

CSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3DCSS3Rendererを使ってiOSでもサクサク3D
CSS3Rendererを使ってiOSでもサクサク3D
 
D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界D3.jsと学ぶVisualization(可視化)の世界
D3.jsと学ぶVisualization(可視化)の世界
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
 
CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現CSSだけで実現するグラフィック表現
CSSだけで実現するグラフィック表現
 
これから利用拡大?WebSocket
これから利用拡大?WebSocketこれから利用拡大?WebSocket
これから利用拡大?WebSocket
 
TypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
TypeScriptのススメ ~JavaエンジニアのためのJava(like)ScriptTypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
TypeScriptのススメ ~JavaエンジニアのためのJava(like)Script
 
three.jsで作る3Dの世界
three.jsで作る3Dの世界three.jsで作る3Dの世界
three.jsで作る3Dの世界
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
Stormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPIStormの注目の新機能TridentAPI
Stormの注目の新機能TridentAPI
 
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
 
Twitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demoTwitterのリアルタイム分散処理システム「Storm」入門 demo
Twitterのリアルタイム分散処理システム「Storm」入門 demo
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門
 
ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」ログ収集フレームワークの新バージョン「FlumeNG」
ログ収集フレームワークの新バージョン「FlumeNG」
 
Hadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバックHadoop scr第7回 hw2011フィードバック
Hadoop scr第7回 hw2011フィードバック
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOne
 
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たちATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
 
ATN No.1 Hadoop vs Amazon EMR
ATN No.1 Hadoop vs Amazon EMRATN No.1 Hadoop vs Amazon EMR
ATN No.1 Hadoop vs Amazon EMR
 
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlersATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlers
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 

Recently uploaded

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Recently uploaded (9)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

Spine入門

  • 1. 2012/07/11 第31回 HTML5とか勉強会 Acroquest Technology Co.,Ltd. Kenichiro Murata(@muraken720)
  • 2. 目次 1.  はじめに 2.  Spineに興味を持った経緯 3.  Spineとは? 4.  Spineの3つの特徴 5.  何はともあれ、Todos App! 6.  Spineの7つのお気に入りなポイント 7.  まとめ 2 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 3. 1. はじめに 自己紹介 = 氏名: ‘村田 賢一郎’ twitter: ‘@muraken720’ 所属: ‘Acroquest Technology Co.,Ltd.’ 仕事: ‘ライフライン系ネットワーク集中監視システム開発’ ‘フレームワーク開発’ 言語: ‘Java’ #JavaScriptはWebアプリケーション開発で少々 興味: ‘node.js’ ‘CoffeeScript’ ‘機関車トーマス!’ 3 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 4. 2. Spineに興味を持った経緯 n  WGP(Web Graphical Platform)を「JavaScriptMVC フレームワーク」を使って改良せよ! Ø  WGPはグラフィカルなWebUI開発用のJavaScriptなOSS。 http://wgp.sourceforge.net/ 4 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 5. 3. Spineとは? 1.  Backbone.jsにインスパイアされて開発。 2.  開発者: Alex MacCaw (@maccam)氏 Ø  著書: –  ステートフルJavaScript(原書:JavaScript Web Applications) –  The Little Book on CoffeeScript 3.  「ステートフルJavaScript」で提案する手法を体現する ことを目指して、執筆時に開発。 本に出てくるSpine.jsは、CoffeeScriptに出会う前の 純粋なJavaScript実装版です。 5 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 6. 4. Spineの3つの特徴 1. Simple 3. CoffeeScript 2. Lightweight 6 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 7. 4-1. SimpleなMVCモデルアーキテクチャ ①  Event ②  Rendering Handling ③  Routing Controller Event Event Bind View Model ①  Layout ①  Data Model ②  Template ②  Data storage and manipulation 7 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 8. 4-2. Lightweightなフレームワーク 1.  ライン数: 約500 Line 2.  サイズ(min+gzip): 8.1k(最小構成4.1k) ü  Backbone.js(5.6k)+Underscore.js(4k) ü  Ember.js(42k) ü  AngularJS(29k) Ember.js ※ 勉強会後、サイズについて比較条件 が同じではないとのコメントを頂き、条件 AngularJS をmin+gzip時のサイズに統一して改版 しました。 Backbone.js +Underscore.js Spine.js 3.  依存ライブラリ: なし 0 10 20 30 40 50 Ø  JQuery or Zepto.js は推奨 8 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 9. 4-3. CoffeeScriptは簡潔で分かりやすい!? class Model extends Module …  @select: (callback) ->    result = (record for id, record of @records when callback(record))    @cloneArray(result) … Javaエンジニア的に  @each: (callback) -> は分かりやすい!    for key, value of @records Good-bye! prototype.      callback(value.clone()) https://github.com/maccman/spine/blob/master/src/spine.coffee 9 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 10. 5. 何はともあれ、Todos App! n  Spineで、有名なTodos Appを使って作ってみよう! n  全ソースはGithubにて公開しています。 Ø  https://github.com/muraken720/todos-spineapp-hem-eco Ø  https://github.com/muraken720/todos-spineapp-hem-jqtmpl 10 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 11. 5. Todos Appの構成 The Element pattern TaskApp(Controller) TaskController Task(Model) task.eco(View) 11 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 12. 6. Spineの7つのお気に入りポイント ④Event、Elementのマッピン グが簡単 ②Storage機能を併せ持つ Controller ⑤Ecoテンプレート ③Adapterの切り替えが簡単 をpre-compile View Model  Spine.js ⑥楽々デバッグ ①定形作業を自動化 ⑦ビルドで頭スッキリ! Hem Spine.app dependency manager app generator & server 12 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 13. 6-①. Spine.appで定形作業を自動化 n  Spine.app とは、アプリケーションの自動生成ツール n  インストール > npm install spine.app hem # インストール n  各種コマンド spine app todos       # アプリケーションのひな形を生成 spine model task # Modelのひな形を生成 spine controller taskctrl # Controllerのひな形を生成 13 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 14. 6-②. ModelはStorage機能を併せ持つ Spine = require('spine') class Task extends Spine.Model configureで、Model 名とプロパティ名を @configure 'Task', "name", "done” 定義するだけ。 … Storageに対する操 @active: -> 作は標準で提供 @select ( (item) -> !item.done ) … module.exports = Task app/models/task.coffee Modelが提供する関数(抜粋) create find save select exsits updateAttribute each all bind 14 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 15. 6-③. Model Adapterの切り替えが簡単 Spine = require('spine') class Task extends Spine.Model @configure 'Task', "name", "done” @extend @Local extendでLocalStrorage用の Adapterを指定 @active: -> @select ( (item) -> !item.done ) … module.exports = Task app/models/task.coffee ü  @LocalでHTML5のLocalStorageに永続化 ü  @AjaxでRESTでサーバサイドを呼び出し 15 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 16. 6-④. ControllerでEventのマッピングが簡単 class TaskApp extends Spine.Controller … events: Eventと関数の関連付け定義は "submit form": "create" 以下の形式 "click .clear": "clear” events: … “イベント名 Selector”: “関数名” create: (e) -> e.preventDefault() Task.create(name: @input.val(), done: false) @input.val("") app/index.coffee ü  events hashでユーザ操作によるイベントを関数にマッピング可能。 16 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 17. 6-④. ControllerでElementのマッピングが簡単 class TaskApp extends Spine.Controller … Elementと変数の関連付け定義は elements: 以下の形式 ".items": "items" ".countVal": "count" elements: “Selector”: “変数名” ".clear": "clearlink" "form input": "input” … addOne: (task) => taskctrl = new TaskController(item: task) @items.append(taskctrl.render().el) app/index.coffee ü  elements hashでDOMを変数にマッピング可能。 17 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 18. 6-⑤. ViewにてEcoテンプレートをpre-compile ü  Viewに関しては特に規定なし。 ü  後述のHemにてEcoテンプレートをpre-compileしてくれるので、 requireで簡単に利用可能。 <div class="item <%= "done" if @done %>"> <div class="view" title="Double click to edit..."> <input type="checkbox" <%= "checked='checked'" if @done %>> <span><%= @name %></span> <a class="destroy"></a> </div> <div class="edit"> <input type="text" value="<%= @name %>"> </div> </div> Controllerにて以下のように利用する app/views/task.eco render: => @replace require('views/task')(@item) 18 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 19. 6-⑥. Hemで楽々デバッグ n  Hem とは、開発用サーバ&依存関係管理ツール n  開発用サーバの起動 hem server # 開発用のサーバを起動 ü  “*.coffee”, “*.styl” をapplication.js, application.cssに変換 ü  “*.eco”をpre-compile ü  ファイルの更新を監視しており、サーバの再起動なしで変 更を自動反映 19 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 20. 6-⑦. Hemのビルドで頭スッキリ n  デプロイ用のビルド hem build # application.js, application.cssを生成 ü  requireを解釈して、JavaScript間の依存関係を解 消したデプロイ用の統合ファイル(application.js, application.css)を生成 20 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 21. 6-⑦. Hemのビルドで頭スッキリ <head> <title>Todos</title> <link rel="stylesheet" href="css/todos.css" type="text/css" charset="utf-8"> <script src="lib/json2.js" type="text/javascript" charset="utf-8"></script> <script src="lib/jquery.js" type="text/javascript" charset="utf-8"></script> <script src="lib/jquery.tmpl.js" type="text/javascript" charset="utf-8"></script> <script src="lib/spine.js" type="text/javascript" charset="utf-8"></script> <script src="lib/local.js" type="text/javascript" charset="utf-8"></script> <script src="lib/todos.js" type="text/javascript" charset="utf-8"></script> </head> <head> <title>Todos</title> <link rel="stylesheet" href=”/application.css" type="text/css" charset="utf-8"> <script src=”/application.js" type="text/javascript" charset="utf-8"></script> </head> 21 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 22. 7. まとめ:Spineの3つの特徴 1. Simple 3. CoffeeScript 2. Lightweight 22 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 23. 7. まとめ:Spineの7つのお気に入りポイント ④Event、Elementのマッピン グが簡単 ②Storage機能を併せ持つ Controller ⑤Ecoテンプレート ③Adapterの切り替えが簡単 をpre-compile View Model  Spine.js ⑥楽々デバッグ ①定形作業を自動化 ⑦ビルドで頭スッキリ Hem Spine.app dependency manager app generator & server 23 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
  • 24. ご清聴、ありがとうございました。 Infrastructures  Evolution 24 Copyright © Acroquest Technology Co., Ltd. All rights reserved.