SlideShare a Scribd company logo
1 of 53
Download to read offline
Scala.jsはじめました?
@k_kinzal
k-kinzal/scala-bin
k-kinzal/sbt-bin
k-kinzal/scala-standalone-bin
アジェンダ
1. Scala.jsでできること
2. Scala.js + SBTでできること
3. Scala.js Standaloneでできること
4. まとめ
1. Scala.jsでできること
ScalaをJavaScriptにコンパイルできる
target/scala-2.11/project-name-fastopt.js
(function() {
// 超長い
})();
@JSExportで指定したクラスとメソッド
はglobalに設定される
target/scala-2.11/project-name-fastopt.js
(function() {
// 超長いコード
})();
var list = global.MyList().apply([1, 2, 3, 4])
※objectは一度コールする必要がある
src/main/scala/MyList.scala
@JSExport object MyList {
@JSExport def apply = …
}
src/main/scala/MyList.scala
@JSExport trait MyList {
@JSExport def apply = …
}
※当たり前だけどtraitはエクスポートできない
型によっては出力したメソッドに渡せない
渡せる
- String => String
- Number(整数) => Integer
- Number => Double
- Boolean => Boolean
- null => ALL TYPE
渡せない
- Array => Seq
- Object => Map
- Function => (A) => B
※JSからは呼び出せない独自型で型チェックを行われる
JS側から呼び出す必要がある場合は
scala.scalajs.jsで定義された型を
インターフェースに設定する必要がある
※この仕様大嫌い
渡せる
- Array => scala.scalajs.js.Array
- Object => scala.scalajs.js.Object
- Function => scala.scalajs.js.Function0…
何でも渡せるAnyや
nullを許容するArrayOptとかもある
テストは専用の
テストフレームワークを使う必要がある
※使ったことはない
メジャーなScalaTestとかは使えない
※Scala.jsへの依存を外したプロジェクトを作って
マルチプロジェクト構成にすれば使えはする
必読
- http://www.scala-js.org/
- http://www.scala-js.org/api/scalajs-library/0.6.4
- http://www.scala-js.org/news/2015/07/03/announcing-scalajs-
0.6.4/
- https://github.com/scala-js/scala-js
2. Scala.js + SBTでできること
SBTプロジェクトを作れる
.
├── project
│ ├── build.properties
│ ├── plugins.sbt
├── src
│ ├── main/scala/org/example
│ └── test/scala/org/example
├── target
└── build.sbt
※sjrd/activator-hello-scala-jsとかあるけどまだ公開されてない
project/plugins.sbt
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.4")
build.sbt
enablePlugins(ScalaJSPlugin)
name := “scalajs-example“
scalaVersion := "2.11.5"
$ sbt fastOptJS
SBTから実行もできる
src/main/scala/org/example/Hello.scala
package org.example
import scala.scalajs.js.JSApp
object Hello extends JSApp {
def main = println("Hello")
}
$ sbt run
[info] Compiling 1 Scala source to (...)/scala-js-
tutorial/target/scala-2.11/classes...
[info] Running org.example.Hello
Hello
persistLauncherオプションで
def mainを実行するJSを出力できる
target/scala-2.11/projectname—launcher.js
((typeof global === "object" && global &&
global["Object"] === Object) ? global :
this)["Hello"]().main();
build.sbt
persistLauncher := true
jsDependenciesでJSの依存を
解決できる
target/scala-2.11/project-name-jsdeps.js
(function( window, undefined ) {
// JQueryのコード
})( window );
build.sbt
jsDependencies += "org.webjars" % "jquery" % "1.10.2"
webjars.orgでnpmの
登録とかもできるので
必要なライブラリがあれば随時登録
※やったことはない
target/scala-2.11/project-name-jsdeps.js
build.sbt
jsDependencies += ProvidedJS / "myJSLibrary.js"
src/main/resources/myJSLibrary.js
console.log(111);
console.log(111);
実はES6での出力もできる
target/scala-2.11/project-name-fastopt.js
(function() {
// 超長いES6のコード
})();
build.sbt
scalaJSOutputMode :=
OutputMode.ECMAScript6
こういう機能があれば・・・は
だいたいある
3. Scala.js Standaloneでできること
SBTを使わないでビルドできる
スタンドアローン版も配布されている
出力ディレクトリを自由に指定できる
scalajsc src/main/scala/Hello.scala -d .tmp/ && scalajsld --output
hello.js .tmp/
依存解決がないせいか結構早い
npmベースのプロジェクトに
組み込みやすい
package.json
“scripts”: {
“compile”: “scalajsc src/main/scala/org/example/Hello.scala -d
.tmp/ && scalajsld --output hello.js .tmp/”
}
※npm用にk-kinzal/scalajs-standalone-bin公開してる
ただし、できないことがある
できない
- Scalaライブラリの依存解決(jarを持って来ればできる)
- JSライブラリの依存解決(npmでやることになる)
- IDEのサポート
デメリット踏まえたら
npmに組み込めるので融通が利きやすい
開発サイクルやリリースフローで
困ったらこっち
まとめ
欲しい機能は最低限揃ってる
紹介していないオプションも
結構あるのでAPIドキュメントと
リリースノートは必読
Scala.js独自の作法を抑えておけば
地雷を踏みぬくもとも少なくなるはず
おしまい

More Related Content

What's hot

第二回tento.tech定例会
第二回tento.tech定例会第二回tento.tech定例会
第二回tento.tech定例会Sosuke Suzuki
 
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Asami Abe
 
Scala.js触ってみた
Scala.js触ってみたScala.js触ってみた
Scala.js触ってみたAsami Abe
 
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ksServlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ksKazuhiro Sera
 
Scalaはじめました!
Scalaはじめました!Scalaはじめました!
Scalaはじめました!Asami Abe
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.jstakezoe
 
Scalaの現状と課題
Scalaの現状と課題Scalaの現状と課題
Scalaの現状と課題Kota Mizushima
 
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門Yoshimura Soichiro
 
AndroidでScalaを使う際の問題点と対策
AndroidでScalaを使う際の問題点と対策AndroidでScalaを使う際の問題点と対策
AndroidでScalaを使う際の問題点と対策Mogi Isamu
 
Java使いにとっての関数
Java使いにとっての関数Java使いにとっての関数
Java使いにとっての関数amkt922
 
Dark vol4 for_slideshare
Dark vol4 for_slideshareDark vol4 for_slideshare
Dark vol4 for_slideshareara_ta3
 
javascript を Xcode でテスト
javascript を Xcode でテストjavascript を Xcode でテスト
javascript を Xcode でテストYoichiro Sakurai
 
ScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったでScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったでAsami Abe
 
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 賢太郎 前多
 
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka docAkkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc賢太郎 前多
 
Sansan様 登壇資料
Sansan様 登壇資料Sansan様 登壇資料
Sansan様 登壇資料Daisuke Nagata
 
Rx swift,Repro framewolrk
Rx swift,Repro framewolrkRx swift,Repro framewolrk
Rx swift,Repro framewolrkDaisuke Nagata
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Shuya Tsukamoto
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jstakezoe
 

What's hot (20)

第二回tento.tech定例会
第二回tento.tech定例会第二回tento.tech定例会
第二回tento.tech定例会
 
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
 
Scala.js触ってみた
Scala.js触ってみたScala.js触ってみた
Scala.js触ってみた
 
Servlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ksServlet と Future の関わり方 #scala_ks
Servlet と Future の関わり方 #scala_ks
 
実戦Scala
実戦Scala実戦Scala
実戦Scala
 
Scalaはじめました!
Scalaはじめました!Scalaはじめました!
Scalaはじめました!
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.js
 
Scalaの現状と課題
Scalaの現状と課題Scalaの現状と課題
Scalaの現状と課題
 
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
 
AndroidでScalaを使う際の問題点と対策
AndroidでScalaを使う際の問題点と対策AndroidでScalaを使う際の問題点と対策
AndroidでScalaを使う際の問題点と対策
 
Java使いにとっての関数
Java使いにとっての関数Java使いにとっての関数
Java使いにとっての関数
 
Dark vol4 for_slideshare
Dark vol4 for_slideshareDark vol4 for_slideshare
Dark vol4 for_slideshare
 
javascript を Xcode でテスト
javascript を Xcode でテストjavascript を Xcode でテスト
javascript を Xcode でテスト
 
ScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったでScalaでBacklogの通知bot作ったで
ScalaでBacklogの通知bot作ったで
 
【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い 【LT】akka receive とScala Javaの違い
【LT】akka receive とScala Javaの違い
 
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka docAkkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc
 
Sansan様 登壇資料
Sansan様 登壇資料Sansan様 登壇資料
Sansan様 登壇資料
 
Rx swift,Repro framewolrk
Rx swift,Repro framewolrkRx swift,Repro framewolrk
Rx swift,Repro framewolrk
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
 

Similar to Scala.jsはじめました?

Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行guest5f4320
 
Java ee6 with scala
Java ee6 with scalaJava ee6 with scala
Java ee6 with scalaSatoshi Kubo
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情takezoe
 
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Hiroshi Ito
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentialstnoda
 
Asakusa FrameworkとScalaの密かな関係
Asakusa FrameworkとScalaの密かな関係Asakusa FrameworkとScalaの密かな関係
Asakusa FrameworkとScalaの密かな関係hishidama
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発Kota Mizushima
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門だいすけ さとう
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDEdcubeio
 

Similar to Scala.jsはじめました? (20)

Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行
 
Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行
 
fanscala1 3 sbt
fanscala1 3 sbtfanscala1 3 sbt
fanscala1 3 sbt
 
Java ee6 with scala
Java ee6 with scalaJava ee6 with scala
Java ee6 with scala
 
Survey of Apache Spark
Survey of Apache SparkSurvey of Apache Spark
Survey of Apache Spark
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
 
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentials
 
Rpscala2011 0601
Rpscala2011 0601Rpscala2011 0601
Rpscala2011 0601
 
MoteMote Compiler Plugin
MoteMote Compiler PluginMoteMote Compiler Plugin
MoteMote Compiler Plugin
 
Asakusa FrameworkとScalaの密かな関係
Asakusa FrameworkとScalaの密かな関係Asakusa FrameworkとScalaの密かな関係
Asakusa FrameworkとScalaの密かな関係
 
ScalaCL in ScalaKaigi
ScalaCL in ScalaKaigiScalaCL in ScalaKaigi
ScalaCL in ScalaKaigi
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
Trait in scala
Trait in scalaTrait in scala
Trait in scala
 
hscj2019_ishizaki_public
hscj2019_ishizaki_publichscj2019_ishizaki_public
hscj2019_ishizaki_public
 

More from K Kinzal

解説: Token Extensions - Solana Developer Hub Online #SolDevHub
解説: Token Extensions - Solana Developer Hub Online #SolDevHub解説: Token Extensions - Solana Developer Hub Online #SolDevHub
解説: Token Extensions - Solana Developer Hub Online #SolDevHubK Kinzal
 
コントラクトを作らない ブロックチェーンアプリケーション開発 #SolDevHub
コントラクトを作らない ブロックチェーンアプリケーション開発 #SolDevHubコントラクトを作らない ブロックチェーンアプリケーション開発 #SolDevHub
コントラクトを作らない ブロックチェーンアプリケーション開発 #SolDevHubK Kinzal
 
Solana Pay入門 on Solana Developer Hub #1 #SolDevHub
Solana Pay入門 on Solana Developer Hub #1 #SolDevHubSolana Pay入門 on Solana Developer Hub #1 #SolDevHub
Solana Pay入門 on Solana Developer Hub #1 #SolDevHubK Kinzal
 
AIで始めるRustプログラミング #SolDevHub
AIで始めるRustプログラミング #SolDevHubAIで始めるRustプログラミング #SolDevHub
AIで始めるRustプログラミング #SolDevHubK Kinzal
 
Rust 入門 in Solana #SolDevHub
Rust 入門 in Solana #SolDevHubRust 入門 in Solana #SolDevHub
Rust 入門 in Solana #SolDevHubK Kinzal
 
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjpChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjpK Kinzal
 
What is GraphQL
What is GraphQLWhat is GraphQL
What is GraphQLK Kinzal
 
地層化の力学 書きかけ版
地層化の力学 書きかけ版地層化の力学 書きかけ版
地層化の力学 書きかけ版K Kinzal
 
Dgeni with AngularJS Application
Dgeni with AngularJS ApplicationDgeni with AngularJS Application
Dgeni with AngularJS ApplicationK Kinzal
 
Dgeniで始めるドキュメントジェネレーション
Dgeniで始めるドキュメントジェネレーションDgeniで始めるドキュメントジェネレーション
Dgeniで始めるドキュメントジェネレーションK Kinzal
 
超音波通信という怪しい技術 In html5minutes 7 #tritonjs
超音波通信という怪しい技術 In html5minutes 7 #tritonjs超音波通信という怪しい技術 In html5minutes 7 #tritonjs
超音波通信という怪しい技術 In html5minutes 7 #tritonjsK Kinzal
 
PHP+伺かで始める新しい通知の形
PHP+伺かで始める新しい通知の形PHP+伺かで始める新しい通知の形
PHP+伺かで始める新しい通知の形K Kinzal
 

More from K Kinzal (12)

解説: Token Extensions - Solana Developer Hub Online #SolDevHub
解説: Token Extensions - Solana Developer Hub Online #SolDevHub解説: Token Extensions - Solana Developer Hub Online #SolDevHub
解説: Token Extensions - Solana Developer Hub Online #SolDevHub
 
コントラクトを作らない ブロックチェーンアプリケーション開発 #SolDevHub
コントラクトを作らない ブロックチェーンアプリケーション開発 #SolDevHubコントラクトを作らない ブロックチェーンアプリケーション開発 #SolDevHub
コントラクトを作らない ブロックチェーンアプリケーション開発 #SolDevHub
 
Solana Pay入門 on Solana Developer Hub #1 #SolDevHub
Solana Pay入門 on Solana Developer Hub #1 #SolDevHubSolana Pay入門 on Solana Developer Hub #1 #SolDevHub
Solana Pay入門 on Solana Developer Hub #1 #SolDevHub
 
AIで始めるRustプログラミング #SolDevHub
AIで始めるRustプログラミング #SolDevHubAIで始めるRustプログラミング #SolDevHub
AIで始めるRustプログラミング #SolDevHub
 
Rust 入門 in Solana #SolDevHub
Rust 入門 in Solana #SolDevHubRust 入門 in Solana #SolDevHub
Rust 入門 in Solana #SolDevHub
 
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjpChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
 
What is GraphQL
What is GraphQLWhat is GraphQL
What is GraphQL
 
地層化の力学 書きかけ版
地層化の力学 書きかけ版地層化の力学 書きかけ版
地層化の力学 書きかけ版
 
Dgeni with AngularJS Application
Dgeni with AngularJS ApplicationDgeni with AngularJS Application
Dgeni with AngularJS Application
 
Dgeniで始めるドキュメントジェネレーション
Dgeniで始めるドキュメントジェネレーションDgeniで始めるドキュメントジェネレーション
Dgeniで始めるドキュメントジェネレーション
 
超音波通信という怪しい技術 In html5minutes 7 #tritonjs
超音波通信という怪しい技術 In html5minutes 7 #tritonjs超音波通信という怪しい技術 In html5minutes 7 #tritonjs
超音波通信という怪しい技術 In html5minutes 7 #tritonjs
 
PHP+伺かで始める新しい通知の形
PHP+伺かで始める新しい通知の形PHP+伺かで始める新しい通知の形
PHP+伺かで始める新しい通知の形
 

Recently uploaded

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
 
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
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (7)

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
 
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
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
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の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 

Scala.jsはじめました?