SlideShare a Scribd company logo
Next2D
2022/02/07
@Next2D
⾃⼰紹介
• Toshiyuki Ienaga
• Webの制作会社でプログラ
マー/マネージャーしてます。
インフラ > バックエンド > フロントエンド > アプリ
@ienagatoshiyuki
@ienaga
アジェンダ
NoCode Toolの使い⽅(30分)
Frameworkの導⼊と動作フロー(30分)
⼩休憩(5分)
Q&A回答(15分)
Next2Dとは
Next2D(ネクストツーディー)は、JavaScriptで書かれた
2Dレンダリングエンジン「Next2D Player」、Model-
View-ViewModel(MVVM)アーキテクチャを採⽤した
「Next2D Framework」、Webブラウザ上で動作する
オーサリングツール「Next2D NoCode Tool」など、開発
者の⽣産性を上げることを⽬的としたツール・ライブラリ
です。
Next2D Player
Next2D Framework
Next2D NoCode Tool
Next2D Player
JavaScript FlashPlayer「swf2js」から派⽣
したプロジェクトで、2D最速エンジンを提
供することを⽬的としています。 WebGL 、
WebGL2を完全にサポートしており、開発
者は、ブラウザやデバイスの互換性対処を
気にすることなくリッチでインタラクティ
ブなWebコンテンツ、およびゲームを作成
することができます。
Next2D Framework
従来のCanvas/WebGLアプリケー
ションでは困難だったURLによる
Single Page Application(SPA)で
のシーン管理を可能にしました。ま
た、開発パターンを固定化すること
で可読性・共有性をシンプルにし、
効率的な開発を⾏えるNext2D専⽤
フレームワークです。
Next2D NoCode Tool
ノーコード開発を主体としたWebブ
ラウザ上で動作するオーサリング
ツール。 イメージしたアニメーショ
ンを直感的に作成することができ、
書き出したデータはWebにアップ
ロードすることで簡単に公開するこ
とができます。
https://tool.next2d.app
How to use
画像/動画/⾳声/SWFを読込む
フリーハンド/雛形で図形を描く
新規MovieClipを作成する
モーショントゥイーン
テキストを挿⼊する
フィルター/ブレンドを適⽤する
プログラム(JS)を追加する
保存と書き出し
動作動画
画像/動画/⾳声/SWFを読込む(https://youtu.be/Kk05qJAPx0E)
フリーハンド/雛形で図形を描く(https://youtu.be/mg_DyFBXSAs)
モーショントゥイーン(https://youtu.be/0rjewWy8DXM)
テキストを挿⼊する(https://youtu.be/f46fJpJKFIA)
プログラム(JS)を追加する(https://youtu.be/1QDAauMOnC0)
フィルター/ブレンドを適⽤する
https://youtu.be/sj6eljRxbQI
https://youtu.be/SVdEnU6XUMg
https://youtu.be/GUHZYMwM-l0
https://youtu.be/sjJ2fu8B9HE
https://youtu.be/fAbTAG1I1Aw
https://youtu.be/V8_iyeio8mQ
https://youtu.be/krMptdKTMAs
https://youtu.be/krMptdKTMAs
Next2Dチャンネル
Framework Quick Start
npx create-next2d-app app-name
cd app-name
npm start
Chart Flow
⽬次
stage/config設定 <
routing設定とシーン遷移
NoCode Toolとの連携
ViewとViewModel
callback
src/config/stage.json設定
{
"width": 240,
"height": 240,
"fps": 12,
"options": {
"base": ".",
"fullScreen": true
}
}
名前 型 初期値 詳細
width number 240 表⽰領域(Stage)の幅を設定します
height number 240 表⽰領域(Stage)の⾼さを設定します
fps number 12 1秒間に何回描画するかを指定します
名前 型 初期値 詳細
base string .
相対パスの場合、ここで設定したURLがroot
として適⽤されます。絶対パスの場合はここ
で設定したURLは適⽤されません
fullScreen boolean false
Stageクラスで設定した幅と⾼さを超えて画
⾯全体に描画されます
tagId string null
IDを指定すると、指定したIDのエレメント内
で描画を⾏います
bgColor array null
背景⾊の[R,G,B,A]の配列は0〜255で指定で
きます。falseは無⾊透明です
optionsの設定
src/config/config.json設定
{
"local": {
"api": {
"endPoint": "/"
},
"content": {
"endPoint": "/"
}
},
"prd": {
"api": {
"endPoint": "/"
},
"content": {
"endPoint": "/"
}
},
"all": {
"spa": true,
"loading": {
"callback": "Loading"
},
"gotoView": {
"callback": ["callback.Background"]
}
}
}
名前 型 初期値 詳細
spa boolean true
Single Page Applicationとして、URLで
シーンを制御することができます
loading.callback string Loading
画⾯遷移の準備が完了するまでの間、ロー
ディング画⾯を表⽰するかどうかを設定し
ます。コールバックとして設定されたクラ
スのstart関数とend関数を呼び出します
gotoView.callback string|array ["callback.Background"]
gotoView関数が終了した後にコールバック
するクラスを指定できます
初期はlocal、dev、stg、prd、allと、区切られており
local、dev、stg、prdは任意の環境名なので、環境に合わせて変更、もしくは追加が可能です。
国内のメジャーなプラットフォームであればgreeやmobageなどがありますが
こういった、複数のプラットフォームでゲームをリリースする際などの
個別の環境変数として書き出しの出しわけが可能です。
allに設定した変数はどの環境でも使える共有変数となります。
allの固定設定
⽬次
stage/config設定
routing設定とシーン遷移 <
NoCode Toolとの連携
ViewとViewModel
callback
Chart Flow
src/config/routing.json設定
ルーティングに設定できるトッププロパティは
英⼩⽂字と数字([a-z0-9])、スラッシュ(/)、ハイフン(-)、アンダースコア(_)です。
スラッシュ、ハイフン、アンダースコアをキーにCamelCaseでViewクラスにアクセスします。
例)
下記のサンプルの場合は、https://example.com/quest/listでアクセスが可能になり
コンテキストにQuestListView.jsがアタッチされます。
{
"quest/list": {
"requests": []
}
}
routing.jsonの2階層のプロパティ設定
名前 型 初期値 詳細
private boolean false
SPAモードで、直接のアクセスを制御をし
たい時に利⽤します。trueに設定し直接ア
クセスすると、redirectで設定したViewが
読み込まれます
redirect string empty
privateがtrueの時、ここで設定したページ
を読み込みます。設定がない場合は
TopViewが読み込まれます。
requests
(次のページへ)
array null
Viewにアクセスする前に、指定したURLに
リクエストを送信します。受け取った情報
は、nameをキーにnext2d.fw.responseに格
納されます
requests配列のObject設定
名前 型 初期値 詳細
type string content json、content、image、customの固定値が利⽤可能です
path string empty
{{***}}で囲むと、config.jsonの変数を取得できます。
例){{ api.endPoint }}path/to/api
name string empty
nameを設定すると、設定した値をキーとして取得したデータを
next2d.fw.responseに格納します。
cache boolean false nameで設定した値をキーにして、取得したデータをキャッシュします。
callback string|array null
リクエスト完了後にコールバックするクラスを指定することができます。指定
したクラスのコントラクターの第⼀引数に取得した値が設定されます。model
ディレクトリ直下のクラスが対象となります。
class string empty
リクエストを実⾏するクラスを指定することができます。modelディレクトリ直
下のクラスが対象となり、DirName.ClassNameで設定できます
(typeがcustomのときのみ呼び出されます。)
access string empty
リクエストを実⾏する関数へのアクセスを指定できます。publicあるいはstatic
を指定することができます。
(typeがcustomのときのみ呼び出されます)
method string empty
リクエストを実⾏する関数を指定することができます。
(typeがcustomのときのみ起動します)
シーン遷移
シーンの移動はApplicationクラスで実装されてるgotoView関数を利⽤します。
各クラスの親クラスにappというgetterを実装しており、下記の記述でシーン移動が実⾏されます。
SPAモードを有効にした場合は、URLでのシーン遷移も可能です。下記のシーン遷移は同義となります。
URLでの遷移
https://example.com/quest/list
関数での遷移
this.app.gotoView("quest/list");
シーン遷移(QueryString)
Next2D FrameworkではQueryStringが利⽤できます。
QueryStringの値はnext2d.fw.queryに格納され、親クラスを継承している場合はthis.queryから取得可能です。
URLでの遷移
https://example.com/quest/list?questId=10&areaName=sample
関数での遷移
this.app.gotoView("quest/list?questId=10&areaName=sample");
Queryの取得
性質上、全ての値をStringとして格納するので、numberなどはキャストして利⽤するのがお勧めです。
const questId = this.query.get("questId") | 0;
const areaName = this.query.get("areaName");
⽬次
stage/config設定
routing設定とシーン遷移
NoCode Toolとの連携 <
ViewとViewModel
callback
NoCode Toolの連携①
• routing.jsonの設定例
名前 値 説明
type content contentを指定します。
path {{ content.endPoint }}content/sample.json NoCode Toolで書き出したJSONデータが保管されているURLを追記します。
name MainContent
cacheを利⽤する、もしくは、レスポンスデータを任意のクラスで取得し
たいケースの時は設定してください。
cache true
jsonファイルのアニメーションデータは静的なデータなので、⼆度⽬から
はキャッシュから再利⽤する事を推奨しています。但し、シーン数やアニ
メーションの数が多い場合はメモリリークする可能性がありますので、使
い過ぎはお気をつけください。再利⽤性の⾼いものはキャッシュし、状況
などで変化するようなアニメーションはfalseに設定するのがいいかと思い
ます。
NoCode Toolの連携②
export class TopContent extends next2d.fw.Content
{
get contentName () {
return "MainContent";
}
get namespace () {
return "TopContent";
}
}
get namespaceとget contentNameのgetter設定は必須となります。
contentNameでどのJSONデータかを判別させる為、routing.jsonのnameと⼀致させる必要があります。
namespaceで設定した⽂字列は、NoCode Toolで設定したシンボル名と⼀致させる必要があります。
NoCode Toolの連携③
Controller AreaのLibraryタブを開き
新しいMovieClipを追加します。
追加した、MovieClipのSymbol部分をダブルクリックして
get namespaceで設定した⽂字列と同じ⽂字を追記します。
アニメーション単体で管理するのもいいですが
シーン単位でアニメーションを管理した場合などに便利です。
また、クリエイターとプログラマーがシンボル名を共有していれば
お互いに⼲渉する事なく作業を進められ、結合まで進められます。
⽬次
stage/config設定
routing設定とシーン遷移
NoCode Toolとの連携
ViewとViewModel <
callback
Chart Flow
ViewとViewModel
viewの管理は1シーンに1View、1ViewModelが基本スタイルで、ディレクトリ構成はキャメルケースの最
初のブロックで作成するのを推奨しています。
複数のViewクラスやViewModelクラスを⽣成する際は、以下のコマンドで⾃動⽣成する事をお勧めします。
このコマンドはrouting.jsonのトッププロパティの値を分解し、viewディレクトリ直下に対象のディレクトリ
がなければディレクトリを作成し、ViewとViewModelが存在しない場合飲み新規クラスを⽣成します。
npm run generate
View
メインコンテキストにアタッチされるコンテナの
役割を担うのがViewクラスの役割です。
その為、記述は⾄ってシンプルで、routingで設定
した値のキャメルケースでファイルを作成し、
next2d.fw.Viewを継承するのが基本のスタイルで
す。特殊な⽤件がない限り、Viewでロジックを組
む事はありません
export class TopView extends next2d.fw.View
{
constructor () {
super();
}
}
ViewModel
表⽰の際は、bind関数がコールされ、ページ遷移
する際はunbind関数がコールされます。
Viewに任意のDisplayObjectをbindするのが、
ViewModelの役割です。
ドメインロジックなどはsrc/modelで管理し、UI
などのはsrc/componentで管理する事を推奨して
います。
(こちらのデザインパターンはまだ模索中です。)
export class TopViewModel extends next2d.fw.ViewModel
{
constructor (view) {
super(view);
}
unbind (view) {
/** 処理をかく**/
}
bind (view) {
/** 処理をかく **/
}
}
bindの記述例
(Promise)
⾮同期に表⽰オブジェクトを追加していく
Frameworkには読み込み演出もあるため、ユー
ザーの多くは待機ストレスなく画⾯遷移を⾏える
と思います。
また、PC/スマホの処理可能なタイミングでプロ
グラムを実⾏する事で、端末にかかる負担を軽減
できるのではないかと思います。
bind (view)
{
return new Promise((resolve) => {
// 処理を書く
resolve(value);
})
.then((value) => {
return new Promise((resolve) => {
// 処理を書く
resolve(value);
}
})
.then((value) => {
return new Promise((resolve) => {
// 処理を書く
resolve(value);
}
});
}
⽬次
stage/config設定
routing設定とシーン遷移
NoCode Toolとの連携
ViewとViewModel
callback <
callback
Next2D Frameworkの
シーン遷移時に複数の
callbackのタイミングが
あります。
1
callbackの実⾏は、指定
したクラスをnew演算⼦
の第⼀引数にデータを
セットし、execute関数
をコールします。
2
各クラスのconstructorで
必要なデータを受け取り、
execute関数で任意の処
理を⾏うイメージです。
3
callback設定は配列も可
能です。配列にする事で
複数のcallbackを設定で
きます。
4
Chart Flow
callbackの記述例
next2d.fw.Modelを継承する事で、Frameworkが
所持してる各種のgetterにアクセスする事が可能
になります。
constructorにはrouting.jsonのrequestsで取得し
たレスポンスデータがセットされ、その後、
execute関数がコールされます
例)
src/model/callbackにSample.jsを作成
export class Sample extends next2d.fw.Model
{
constructor (response) {
this.response = response;
}
execute () {
/** 処理をかく**/
}
}
Chart Flow
⼤きく2つのフロー機能があり
⼀つは、シーン遷移とリクエストのフロー
もう⼀つは、View-ViewModelのフロー
View-ViewModel
シーン遷移とリクエスト
ご清聴ありがとうご
ざいました。

More Related Content

PDF
Unityティーチャートレーニングデイ -認定3Dアーティスト編-
PDF
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
PPTX
【デブサミ2010】アジリティを向上させる開発ツールの進化
PDF
Unity教える先生方注目!ティーチャートレーニングデイを体験しよう
PDF
devsumi2012 17-D-1 Kinectで創る10年後のカタチ
PDF
Unityティーチャートレーニングデイ -認定プログラマー編-
PDF
どうなる?Windows 8時代の業務アプリ開発
PDF
パーミッションモデルの過渡期への対応
Unityティーチャートレーニングデイ -認定3Dアーティスト編-
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
【デブサミ2010】アジリティを向上させる開発ツールの進化
Unity教える先生方注目!ティーチャートレーニングデイを体験しよう
devsumi2012 17-D-1 Kinectで創る10年後のカタチ
Unityティーチャートレーニングデイ -認定プログラマー編-
どうなる?Windows 8時代の業務アプリ開発
パーミッションモデルの過渡期への対応

What's hot (19)

PDF
Android0422
PDF
Cocos2d-JSはイケてる? イケてない?
PDF
みゆっき☆Think#3 「androidに触ってみるよ!」
PDF
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
PDF
Cocos2d-x&CocosCodeIDE&Luaで個人開発始めました
PPTX
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
PDF
Kinect kihonnoki
PDF
AOA2.0を実装してみた
PPTX
GR-SAKURAのUSBホスト機能で遊ぼう
PDF
用途に合わせたアニメーションの実装方法
PDF
HTML5でFirefox OSアプリを作ろう
PDF
エンジニアリング領域における KEL シンクライアントソリューションのご紹介
PDF
プロトタイピングの潮流とデザイナーへの提言
PDF
はてなにおける Android アプリのソフトウェアテスト
PDF
Kinect for windows sdk cpp
PDF
Devsumi2013_15-c-7 アドテク・ターゲティング技術
PDF
Cocos最新情報(2015/3/13)
PPTX
Windows 11 がやってくる - IT管理者の準備と対策
PDF
Open dataとハッカソンで変わる世界
Android0422
Cocos2d-JSはイケてる? イケてない?
みゆっき☆Think#3 「androidに触ってみるよ!」
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
Cocos2d-x&CocosCodeIDE&Luaで個人開発始めました
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
Kinect kihonnoki
AOA2.0を実装してみた
GR-SAKURAのUSBホスト機能で遊ぼう
用途に合わせたアニメーションの実装方法
HTML5でFirefox OSアプリを作ろう
エンジニアリング領域における KEL シンクライアントソリューションのご紹介
プロトタイピングの潮流とデザイナーへの提言
はてなにおける Android アプリのソフトウェアテスト
Kinect for windows sdk cpp
Devsumi2013_15-c-7 アドテク・ターゲティング技術
Cocos最新情報(2015/3/13)
Windows 11 がやってくる - IT管理者の準備と対策
Open dataとハッカソンで変わる世界
Ad

Similar to Next2D (11)

PDF
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
PDF
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
PDF
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
PDF
Engine cedec2014 dist_jp
PDF
GREE Tech Conf 2022 GREE VR Studio Laboratory - UXDev R&D Summary 2022 #GREETC
PDF
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKA
PDF
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
PDF
Unity 名古屋セミナー [Sprite Studio]
PDF
Houdini 12 5_overview_jp
PPTX
福岡発!最新のAI/VR/AR技術動向と最新の技術体験
PDF
Cocos2d-xおよび関連サービスについて
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
Engine cedec2014 dist_jp
GREE Tech Conf 2022 GREE VR Studio Laboratory - UXDev R&D Summary 2022 #GREETC
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKA
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
Unity 名古屋セミナー [Sprite Studio]
Houdini 12 5_overview_jp
福岡発!最新のAI/VR/AR技術動向と最新の技術体験
Cocos2d-xおよび関連サービスについて
Ad

Next2D