SlideShare a Scribd company logo
1 of 68
Download to read offline
フロントエンド界隈
遷移速度早すぎないですか…
と思いながら
FM⾳源をいじれる
サービスを作った
murata
1
⾃⼰紹介 a(){ a|a& };a
ID : murata
今年の主な活動 : ボドゲ / slack-bot 量産 / etc ...
Piet (⽩有⿊無5⾊カラーゴルフ) ごちうさ速報Bot あほげー(原⼨⼤エレベーター)
2
https://twitter.com/gochiusa_sokuho https://unityroom.com/games/gensundai_elevator/webgl
近況報告
1⽉から下宿開始 (@北⽩川)
=> ネット回線 => グローバルIP
=> ラズパイ宅内サーバー
(sagisawa.0am.jp / muratam.0am.jp)
http://amzn.asia/4n4xnzC
Webサービス作る機運
3
元々やりたかったこと
今まで : Piet
=> 今度は⾳楽でプログラミングしてみたい
Midiのピアノロール ? => ⾯⽩くないので ☓
もっと普段やらない⽅法…
=> FM⾳源 !!!
4
FM⾳源とは
Frequency Modulation (周波数変調) を 使った⾳源
- 正弦波・三⾓波・矩形波 の合成だけのシンセより凄い
<=> PCM⾳源
簡単に複雑な⾳が出せる => ⾄る所で使われる
- アーケードゲーム
- 電⾞の発着⾳
YAMAHAのDX7が有名
5
FM⾳源とは
Frequency Modulation (周波数変調) を 使った⾳源
	𝑭𝑴 𝒕 = 𝑨	𝒔𝒊𝒏	 𝟐𝝅Ct	 + 𝑩	𝒔𝒊𝒏 𝟐𝝅𝑴𝒕
ただのsin波の定数だった周波数に
別のsin波を⾜し合わせてみたもの
	𝒇 𝒕 = 𝑨 𝟏 𝒔𝒊𝒏 𝟐𝝅𝑪 𝟏 𝒕 + 𝑨 𝟐 𝒔𝒊𝒏 𝟐𝝅𝑪 𝟐 𝒕 +	…		とは格が違う
6
FM⾳源とは
	𝑭𝑴 𝒕 = 𝑨	𝒔𝒊𝒏	 𝟐𝝅C𝒕	 + 𝑩	𝒔𝒊𝒏 𝟐𝝅𝑴𝒕
周波数上への合成 +波形上への直接の合成の組合せで
複雑な⾳⾊がどんどん出せる!
	𝑭𝑴 𝒕 = 𝟐𝒔𝒊𝒏 𝟒𝟒𝟎 ∗ 𝟐𝝅𝒕 + 𝟓𝒔𝒊𝒏 𝟏𝟏𝟎 ∗ 𝟐𝝅𝒕 + 𝟏𝟎𝒔𝒊𝒏(𝟐𝟐	 ∗ 𝟐𝝅𝒕)
+𝟕𝒔𝒊𝒏 𝟒𝟐𝟎 ∗ 𝟐𝝅𝒕 + 𝟓𝒔𝒊𝒏 𝟓𝟓	 ∗ 	𝟐𝝅𝒕 + 𝟏𝟎𝒔𝒊𝒏(𝟕𝟐	 ∗ 𝟐𝝅𝒕)
みたいにアルゴリズムを定義してやばい⾳⾊を作れる
7
FM⾳源とは
アルゴリズムでプログラミングできそう!
=> 意外とむずかった…
- 状態を上⼿く持たせる発想が思いつかなかった
=> ていうか⾳が作れなすぎる…
=> みんなで⾳⾊をいじって
セッション出来れば最⾼では??
8
作りました ( http://muratam.0am.jp/fm/ )
ここから先各⾃⾳出しOK!!
花背⽤に
saezuri.hanase.kmc.gr.jp:31415/
でも開放中!
9
操作⽅法(ログ⽤)
いいかんじに実演
- Volume Ratio はそのままの意味
- ⾏毎の6個のsin波⽣成器と対応
- Attack(sec) : ⽴上がり時間
- Decay(sec) : 減衰⾳量までの時間
- Sustain(x100%) : 減衰⾳量
- Release(sec) : 余韻の時間
10
操作⽅法(ログ⽤)
例 1	)	初期状態 (	 𝒇	:	周波数 )
- 𝑭 𝒕 = 𝒔𝒊𝒏 𝟐𝝅𝒇𝒕
例 2	) (	 𝑨	:	定数 )
- 𝑭 𝒕 = 𝒔𝒊𝒏
𝟐𝝅𝒇𝒕
+𝟗𝟕𝑨𝒔𝒊𝒏(𝟐𝝅𝒇𝒕)
11
操作⽅法(ログ⽤)
例 3	)
- 𝑭 𝒕 = 𝒔𝒊𝒏
𝟐𝝅𝒇𝒕
+𝟐𝟎𝑨𝒔𝒊𝒏 𝟐𝝅𝒇𝒕
+𝟑𝟎𝑨𝒔𝒊𝒏 𝟐𝝅𝒇𝒕
+𝟒𝟎𝑨𝒔𝒊𝒏 𝟐𝝅𝒇𝒕
+𝟓𝟎𝑨𝒔𝒊𝒏 𝟐𝝅𝒇𝒕
+𝟕𝟎𝑨𝒔𝒊𝒏 𝟐𝝅𝒇𝒕
12
操作⽅法(ログ⽤)
例 4	)
- 𝑭 𝒕 = 𝒔𝒊𝒏
𝟐𝝅𝒇𝒕
+𝟐𝟎𝑨𝒔𝒊𝒏 𝟐 ∗ 𝟐𝝅𝒇𝒕
+𝟑𝟎𝑨𝒔𝒊𝒏 𝟑 ∗ 𝟐𝝅𝒇𝒕
+𝟒𝟎𝑨𝒔𝒊𝒏 𝟒 ∗ 𝟐𝝅𝒇𝒕
+𝟓𝟎𝑨𝒔𝒊𝒏 𝟓 ∗ 𝟐𝝅𝒇𝒕
+𝟕𝟎𝑨𝒔𝒊𝒏 𝟔 ∗ 𝟐𝝅𝒇𝒕
+𝟎. 𝟓𝒔𝒊𝒏 𝟐 ∗ 𝟐𝝅𝒇𝒕 + 𝟎. 𝟔𝒔𝒊𝒏 𝟑 ∗ 𝟐𝝅𝒇𝒕
+𝟎. 𝟕𝒔𝒊𝒏 𝟒 ∗ 𝟐𝝅𝒇𝒕 + 𝟎. 𝟖𝒔𝒊𝒏 𝟓 ∗ 𝟐𝝅𝒇𝒕
+𝟎. 𝟗𝒔𝒊𝒏(𝟐𝝅𝒇𝒕)	
13
操作⽅法(ログ⽤)
例 5	)
- 𝑭 𝒕 =
	𝒔𝒊𝒏
𝟐𝝅𝒇𝒕
+	𝟏𝟎𝟎𝑨𝒔𝒊𝒏
𝟐𝝅𝒇𝒕	
+	𝟏𝟓𝟎𝑨𝒔𝒊𝒏(𝟐𝝅𝒇𝒕)
14
操作⽅法(ログ⽤)
例 6	)
- 𝑭 𝒕 =
	𝒔𝒊𝒏
𝟐𝝅𝒇𝒕
+	𝟏𝟎𝟎𝑨𝒔𝒊𝒏
𝟔 ∗ 𝟐𝝅𝒇𝒕	
+𝟏𝟒𝟏𝑨𝒔𝒊𝒏 𝟐𝝅𝒇𝒕
+𝟏𝟑𝟑𝑨𝒔𝒊𝒏(𝟐𝝅𝒇𝒕)
		+	𝟎. 𝟕𝟐𝒔𝒊𝒏
𝟔 ∗ 𝟐𝝅𝒇𝒕	
+	𝟏𝟒𝟏𝑨𝒔𝒊𝒏 𝟐𝝅𝒇𝒕
+	𝟏𝟑𝟑𝑨𝒔𝒊𝒏(𝟐𝝅𝒇𝒕)
15
操作⽅法(ログ⽤)
例 7	(feedback))
- 𝑭 𝒕 = 𝒔𝒊𝒏(𝟐𝝅𝒇𝒕 + 𝟏𝟕𝟒𝑨𝒔𝒊𝒏(𝟐𝝅𝒇𝒕 +	… ))
(実装は⼀つ前の時点のデータを取ってる)
16
Web初⼼者の奮闘⽇記を解説します
1 . サーバー構築
2 . イマドキっぽいjsでWebサービスを作る
3 . 地獄のWebフロントエンド
17
サーバー構築
今時だと AWS や GCP などのクラウド ?
せっかく買ったのでラズパイで作るぞ!
ムカムカしても実体を物理的に殴ってストレス解消可能!
18
サーバー構築 : ラズパイとは
35$(僕は4400円で買った)で買える激安PC
- 1GBRAM, USB*4, Wifi, BlueTooth 等完備
- イヤホンジャック => ⾳響
- HDMI => ディスプレイ
- ピン => 電⼦⼯作
- 消費電⼒も少ない(7Wらしい) => 電気代が浮く!
- 64bit :: Raspbian じゃなく ArchLinux
19
サーバー構築 : SSHポート開放
最初はキーボードとディスプレイで起動
めんどう => SSH
- 設定をいじるだけ 楽
デフォルトの22番のまま公開
=> 1時間で中国から⼆件SSH(admin)アクセス
Fail2Ban + ポート変更
20
サーバー構築 : 外部公開
買ったwifiルーターでポートフォワード設定
http://118.237.118.55/ は HTTP 80番ポート
宅内のラズパイの(固定した) 192.168.2.107:80 へ転送
無料のMyDNSで名前固定
- http://muratam.0am.jp
- http://sagisawa.0am.jp
(ちなみに数百円の http://無.space も持ってます )
21
サーバー構築 : nginx 設定
$sudo apt-get install nginx
proxy /virtual host / fastcgi-php / etc ...
http://muratam.0am.jp
- / => http://muratam.github.io/ へ 転送
- /fm/ => ポート 31415 (今回のWebサービス) へ 転送
http://sagisawa.0am.jp
- #gacha⽤の画像 や よさRTで集めた画像を保存してます
22
サーバー構築 : node.js 導⼊
サーバーでも動く JavaScript
最新のjsの仕様(ES6等)で書ける
ライブラリがいっぱい
- forever : 楽々デーモン化
- express : パスに応じて配信
- socket.io : 楽々websocket
23
Web初⼼者の奮闘⽇記を解説します
1 . サーバー構築
2 . イマドキっぽいjsでWebサービスを作る
3 . 地獄のWebフロントエンド
24
イマドキっぽいjsでサイトを作る
- ES6 + HTML5 + CSS3
- jQuery / underscore / bootstrap / less
- Vue.js
- Webpack (+babel + import)
25
イマドキ ?
そもそもはじめてWebサービス作るし全くの初⼼者
- ここから先の内容は本当にイマドキなのだろうか
- そもそもイマドキとはなんなのだろうか
僕のメインは Unity なので その観点からも考察したい。
- UIに関しては⼤体神という印象を持ちました
今回のサイトでどこに何を利⽤したかを説明します。
( ここにはUnityer ⽬線で⾒た感想が記述されます ) 26
ES6 (ES2015)
2015年6⽉に標準化された最近のJavaScriptの仕様
import { hoge } from "fuga";
let,const,()=>{} : ブロックスコープで書ける
`id = ${id}` : テンプレートリテラル
class : 継承とかもきちんと出来る
(x,y=0)=>x+y : デフォルト引数も使える
let [x,y] = [1,2] : 分割代⼊とかも出来る
( const とか 分割代⼊とか C#でも使いたかった… (無くはないけど…) / JSONが楽で裏⼭) 27
HTML5
2014年10⽉に勧告された最近のHTMLの仕様
canvas : 図形/画像の描画
WebGL : 3Dグラフィックスの描画
web audio API : 好きな⾳を鳴らせる
WebSocket : ブラウザとサーバーでセッション可能
article/nav/header/footer... : 妥当なタグの追加
history API :: URLを動的に変更
Adobe Flashを駆逐しましょう
( canvas楽で裏⼭ / そもそもテキストで シュッと UIを綺麗に書けて裏⼭ ) 28
Canvas ~HTML5~
線や図形を描画できる (今回の波形ビューなど)
ctx.strokeStyle = "#999";
ctx.clearRect(0,0,w,h);
ctx.beginPath();
ctx.moveTo(x1,y1);
ctx.lineTo(x2,y2);
ctx.stroke();
毎フレーム実⾏ : requestAnimationFrame(func)
( canvas楽で裏⼭ / そもそもテキストで シュッと UIを綺麗に書けて裏⼭ ) 29
Web Audio API ~HTML5~
⾳声を操作できる
例 )
- オシレーター(sin波など)を鳴らす
- ディストーションエフェクトをかける
- コンプレッサをかける
- マイク/Webカメラ などと接続する
- 任意の⾳声を鳴らす => FM⾳源の実現
( canvas楽で裏⼭ / そもそもテキストで シュッと UIを綺麗に書けて裏⼭ ) 30
Web Audio API ~HTML5~
FM⾳源を実現する
1. サンプリングレートを指定 (今回は44100)
2. データをセットする配列⻑を指定 (今回は2048)
3. createScriptProcessor,onaudioprocess を指定
4. 2048/44100秒分毎にデータを作成
outputBuffer.getChannelData(0) のデータを書き換える
( canvas楽で裏⼭ / そもそもテキストで シュッと UIを綺麗に書けて裏⼭ ) 31
Web Audio API ~HTML5~
データを書き換える
-1~1の振幅 (変化が 0 だと無⾳)
- Chrome だとデータをリサイクルするので変な⾳
( canvas楽で裏⼭ / そもそもテキストで シュッと UIを綺麗に書けて裏⼭ ) 32
history API ~HTML5~
URLバーのURLを動的に変更できる
history.replaceState("","","./hogehoge");
ADSRやマトリクスを変更すると動的にURLが変わる
.../?mat=[[0,0,...,0],...,[1,1,...,0,0]]&adsr=[0.6,0.05,0.7,0.2]
このURLをパースしてパラメータにする実装をしている
( canvas楽で裏⼭ / そもそもテキストで シュッと UIを綺麗に書けて裏⼭ ) 33
CSS 3
2011年ごろから徐々に勧告されているCSSの仕様
- hsl / hsla :扱いやすい⾊
- :not / :nth-child / ... : 扱いやすいSelector
- グラデーション / 丸⾓ / シャドウ
- アニメーション
( そんな項⽬まで簡単に指定できるとか裏⼭…) 34
イマドキっぽいjsでサイトを作る
- ES6 + HTML5 + CSS3
- jQuery / underscore.js / Bootstrap / LESS
- Vue.js
- node.js + express + forever + socket.io
- Webpack (+babel + import)
35
$ jQuery(イマドキでは無さそう)
DOM操作を簡単にするやつ
例 ) $("#slider > .edit").removeClass(”edit");
- HTMLの構造に⼤きく依存してしまうので⾟い
- 構造制御が分散しがち
- プラグインのライブラリが結構あるのでそこで使った
- $(”.hoge“).find(‘.slider’).roundSlider({...}); みたいな
var piyo = GameObject.Find(”hoge"),FindChild(”fuga"),AddComponent<Piyo>(); ... 36
_ (underscore)
便利ライブラリ集
なんかいっぱい便利関数がある
_.debounce(()=>{ ... },500)
- 待ち時間に対応した繰り返し呼び出しを抑⽌
- 今回はtwitterボタン増殖バグ対策に
_.throttle(()=>{ ... }, 100)
- 宣⾔した時間内の⼆度⽬以降の呼び出しを抑⽌
- range / bind / memoize / delay / once / wrap ...
( そんなん毎回わざわざ (多分Unityにデファクトなの無いけど)書きとうない…) 37
Bootstrap
レスポンシブデザイン楽々なTwitter社のフレームワーク
- Bootstrapなデザインにすーぐにできるよー
- 今回は 垂直スライダーライブラリ⽤に使った
( 少なくともUGUIのデフォルトのよりは数倍カッコイイから裏⼭ / 垂直バーは余裕w ) 38
LESS
CSSでは出来ないあんなことやこんなこと
- 変数 : @hoge = #765;
- 演算 : fuga : @hoge + #111;
- ⼊れ⼦ルール / import
- // ⼀⾏コメント
ブラウザで CSSに実⾏時に変換も (CDNですぐ試せる)
http://less-ja.studiomohawk.com/
( そもそもCSSをください(45$のはあるけどね) ) 39
イマドキっぽいjsでサイトを作る
- ES6 + HTML5 + CSS3
- jQuery / underscore.js / Bootstrap / LESS
- Vue.js
- Webpack (+babel + import)
40
Vue.js
データバインディングが楽々出来る凄いやつ
- React.js / Angular.js / Riot.js よりも楽々らしい
https://jp.vuejs.org/v2/guide/comparison.html
- React.js よりも速いしJSXも無いしシンプルらしい
- Angular.js より学習が楽らしい ( ... )
- Riot.js よりも ツール/APIサポートがいいらしい (察し)
今回のUI構築は全部これに任せました
( キムワイプみたいなデザインしてからに... / 逆に裏⼭でもない ) 41
Vue.js
最初はとりあえず直書きしてた
const div = document.createElement(“div");
div.className += ”container”;
document.getElementById('sliders').appendChild(div);
流⽯につらすぎたし動的UI変更もつらすぎる
( 疲れてきたら⾳⾊を作って遊んで下さいませ ) 42
Vue.js
jQuery にしてみた
$('#fmsliders')[0].appendChild(
$('<div class="container"></div>')[0]
);
増えてくると構造が把握できなくなってくる
( 疲れてきたら⾳⾊を作って遊んで下さいませ ) 43
Vue.js
最終的にVue.jsにした ( 48個のスライダー⽣成部 例)
let sliders = {
template:
`<div class="h-sl"><fm-h v-for="y in 6" :y="y-1"></fm-h></div>`,
components: {
'h-sl': {
props: ['y'],
template:
`<div class="h-w-sl"><sl v-for="x in 8" :x=x-1 :y=y></sl></div>`,
components: {
"sl": slider
}
}
}
};
( 疲れてきたら⾳⾊を作って遊んで下さいませ ) 44
Vue.js
最終的にVue.jsにした (丸スライダー部 例 )
const slider = {
props: ['x', 'y'],
template: `
<div :class="{
evens: ((x<6?x:1)*y+1) % 2 === 0,
odds: ((x<6?x:1)*y+1) % 2 === 1 ,
lighter: ((x+1) * (y +1) ) % 2 === 1 && x < 6}">
<div class="slider"></div>
</div>`,
mounted() { ...
$(this.$el).find('.slider').roundSlider(property);
}
};
( 疲れてきたら⾳⾊を作って遊んで下さいませ ) 45
Vue.js
最終的にVue.jsにした (ピアノ鍵盤部 例 )
template: `<div class="piano">
<pianokey v-for="p in pianos()" :code="p.code" :keyboard="p.keyboard"
:issharp="p.issharp" :hz="p.hz"> </pianokey></div>`,
components: { pianokey:
props: ['code', 'keyboard', 'issharp', 'hz'],
data() { return {ispressed: false}; },
template: `<div class="piano-key"
:class="{'sharp' :issharp,'piano-press':ispressed}"
@mousedown="press" @mouseup="release" @mouseleave="release">
<div>{{code}}<br>{{ keyboard.toUpperCase() }}</div> </div>`,
methods: {
press() { fm.regist(this.hz); this.ispressed = true; },
release() { fm.release(this.hz); this.ispressed = false;},
}}}}
( 疲れてきたら⾳⾊を作って遊んで下さいませ ) 46
Vue.js
最終的な index.html と fm.js の例
<div id="app">
<amplitude-view></amplitude-view>
<fm-slider-view></fm-slider-view>
<piano-view></piano-view>
</div>
new Vue({
el: '#app',
components: {
'fm-slider-view': FMSliderView(fm),
'piano-view': PianoView(fm),
'amplitude-view': AmplitudeView(fm)
}
});
( 疲れてきたら⾳⾊を作って遊んで下さいませ ) 47
Vue.js
のちのちUIが複雑になってきても⾒通しが⽴ちやすい
template:
`<div class="fm-sliders">
<table>
<tr class="slider-container">
<td style="width:22px;"></td>
<td v-for="x in 8” … ></td> </tr>
<fm-h-container v-for="y in 6" :y="y-1"></fm-h-container>
</table>
<div>
<adsr-view :A=A :D=D :S=S :R=R ></adsr-view>
<div class="adsr-sliders">
<fm-adsr-slider v-for="index in 4" :index="index-1"
@adsr-value-changed="adsrchanged">
</fm-adsr-slider> </div></div></div>`,
( 疲れてきたら⾳⾊を作って遊んで下さいませ ) 48
イマドキっぽいjsでサイトを作る
- ES6 + HTML5 + CSS3
- jQuery / underscore.js / Bootstrap / LESS
- Vue.js
- Webpack (+babel + import)
49
Webpack
js/css だけでなく json / html / pug / coffee / png ... など
様々な種類のリソースをまとめてビルドしてくれるくん
( Unity はそもそもUnityが全部Asset として扱ってくれますね ) 50
Webpack
そもそも何故ビルドするのか?
.js / .css をそのまま配置した⽅が早いのでは?
.less だってクライアント側でパースすればいいのでは?
そう思っていたけれども…
( まあUnityもビルドするしね... ) 51
Webpack
ブラウザの js には 別スクリプトの import 機能がない!
htmlに こんな感じでスクリプトタグで⼀列にべた書きする?
=> 依存関係が全然わからなくなる
=> そもそもグローバルが汚染されてつらい
( js糞 wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww )
<script	src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>			
<script	src="https://cdnjs.cloudflare.com/ajax/libs/less.js/2.7.2/less.min.js"></script>			
<script	src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.6/marked.min.js"></script>
….........................................................….
52
Webpack
ブラウザの js には 別スクリプトの import 機能がない!
=> 動的にスクリプト内で別スクリプトタグを追加するくんを
書けばいいのでは ? => ⾮同期に読み込まれて あかん
=> Require.js
( C# だったら普通に名前空間でusing すればいいだけですね )
define((require, exports, module)=>{
let util = require('util');
console.log(util.add(1, 2));
});
53
Webpack
ブラウザの js には 別スクリプトの import 機能がない!
でもどうせ require するなら ES6みたいにしたい
=> Browserify
- ES6感覚でrequireしていい
=> npm のモジュールも使える!
=> ビルドして⼀個のjsにまとめる!
=> ⼀回のリクエストで全部とれて便利
( C# だったら普通に名前空間でusing すればいいだけですね. ) 54
Webpack
ブラウザの js には 別スクリプトの import 機能がない!
でもどうせ ビルドするなら css とかも全部ビルドすれば?
=> Webpack
- ビルドも早い(らしい)(実際差分watchビルドも出来る)
- js の minify もできる(1/4くらいに)
- lessもビルド可能
- ビルドしたjsは昔のブラウザでも読める!(babel)
( UnityはUnityが勝⼿にやってくれます ) 55
Webpack
いつの間にか
ブラウザのくせに
jsもcssもビルドする
世界観になっていた
( UnityはC#なのでもとよりビルドします ) 56
Webpack
( UnityではimportというよりはC#の関数として読み込むというか… )
import 'bootstrap/dist/css/bootstrap.min.css';
import 'bootstrap';
import './css/style.less';
import FM from './fm';
import AmplitudeView from './amplitude-view';
import PianoView from './piano-view';
import FMSliderView from './fm-slider-view';
let fm = new FM();
import Vue from 'vue';
new Vue({
el: '#app',
components: {
'fm-slider-view': FMSliderView(fm),
'piano-view': PianoView(fm),
'amplitude-view': AmplitudeView(fm)
}
});
!function(t){function	e(i){if(n[i])return	
n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return	
t[i].call(o.exports,o,o.exports,e),o.l=!0,o.export
s}var n={};e.m=t,e.c=n,e.i=function(t){return	
t},e.d=function(t,n,i){e.o(t,n)||Object.definePr
operty(t,n,{configurable:!1,enumerable:!0,get:i
})},e.n=function(t){var
n=t&&t.__esModule?function(){return	
t.default}:function(){return	t};return	
e.d(n,"a",n),n},e.o=function(t,e){return	
Object.prototype.hasOwnProperty.call(t,e)},e.p
="/dist/",e(e.s=98)}([function(t,e){var
n;n=function(){return	
this}();try{n=n||Function("return	
this")()||(0,eval)("this")}catch(t){"object"==typ
eof window&&(n=window)}t.exports=n},functi..
57
Web初⼼者の奮闘⽇記を解説します
1 . サーバー構築
2 . イマドキっぽいjsでWebサービスを作る
3 . 地獄のWebフロントエンド
58
地獄のWebフロントエンド
別名「Web初⼼者の愚痴の時間」です
- ブラウザ毎に微妙に異なる実装状況
- ビルド⽅法に依って異なる実⾏時間
- webpack する .vue なんかキモい
- ブラウザ間の同期
- っていうかフロントエンド界隈遷移速度早すぎないですか…
59
ブラウザ毎に微妙に異なる実装状況
Safariでは document.addEventListenerでkeyを取れない
- キーボード取得に keyIdentifier という別のでやる
- ʻU+0041ʼ: ʻaʼ, ʻU+0030ʼ: ʻ0ʼ, ... 的な世界です
Chrome が 何か キーボード反応が遅い => 誰か助けて…
- あまりにも遅すぎるので Chromeは切りました
document.addEventListener(
'keydown', (e) => e.key === ”a” && press());
( キーボード操作すらめんどいとかUnityからしたらありえんですぞwwww ) 60
ブラウザ毎に微妙に異なる実装状況
Edge の css
- “inline-flex” プロパティが上⼿く処理されなかった
- 最初の実装だと⿊鍵が左端に全部集まってた
Edge で es6対応が微妙に⾜りてなかった
- let [x,y] = [100,200] ; が出来なかった
=> Webpackのbabelでいつの間にか解決してた
( プラットフォームごとにレンダリング結果が変わるとかUnityからするとありえんですぞw ) 61
ビルド⽅法に依って異なる実⾏時間
minify するのとしないのとで実⾏時間が⼤幅に変わった
プロファイリングしてみると、⾳楽⽣成部で
2048のデータのループを36の⾏列演算するところだった
その関数を呼び出す階層が深かったせいか?
ワカンネ
( 数倍も変わるとかありえんですぞww ) 62
webpack する .vue なんかキモい
Vue.js 公式は webpackでの
.vue 形式を推している
html / js / css を全部まとめてて
なんか気持ち悪い
エディタサポートも⾟い
レンダリング⽅法も特殊で⾯倒
( * 個⼈の感想です ) 63
ブラウザ間の同期
new Date().getTime() で取得する現在時間が
ブラウザ(クライアント)毎に微妙に違う
0.04秒くらい⼿元で実⾏して違ってつらたん
定期的にサーバーに合わせるようにした
( > < ) 64
っていうかフロントエンド界隈遷移
速度早すぎないですか…
最初は index.html と fm.js と style.css だけでいいと思った
⼀年以上前の記事だと参考にならないこともよくある
⼀年ごとくらいでフレームワークぽんぽん乗り換えてる
記事とか読むととてもつらそうに⾒えてきた
⼀から始めるの⾟そうだなあ〜〜〜〜〜〜
( * Unity だったらすーぐにできるよ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 ) 65
デザインについて
結構頑張ってみた
- アクセントカラー / ベースカラー
- フォント
- アフォーダンス
- ⾯積効果
- 既存のWebサイトをいじって遊ぶ⽅法も分かってきた
- きれいなデザインが出来るのは楽しいです。
( 時間が余っていればここをなが〜くしゃべります) 66
まとめ+感想
最近のっぽい WebツールでFM⾳源サービスを作ってみた
フロントエンド界隈は進みが早いのでほえ〜という気分
Web媒体で作ると公開するのがめっちゃ楽で最⾼
⾊々なプログラミングをするのは楽しい
ラッパーの⽅は、
いい⾳⾊が出来たら是⾮共有して下さい
67
ネット上の参考記事
javascriptから始めるプログラミング (KMC by drafear) :
https://inside.kmc.gr.jp/pukiwiki/?javascript%A4%AB%A4%E9%BB%CF%A4%E1%A4%EB%A5%D7%A5%ED%A5%B
0%A5%E9%A5%DF%A5%F3%A5%B0
HTML5 MDN : https://developer.mozilla.org/ja/docs/Web/HTML/HTML5
CSS3 MDN : https://developer.mozilla.org/ja/docs/Web/CSS/CSS3
便利機能満載のライブラリ Underscore.js : http://d.hatena.ne.jp/ninoseki/20110414/1302786001
FM⾳源 Wikipedia : https://ja.wikipedia.org/wiki/FM%E9%9F%B3%E6%BA%90
FM⾳源 ニコニコ⼤百科 : http://dic.nicovideo.jp/a/fm%E9%9F%B3%E6%BA%90
FM⾳源について : http://qiita.com/fukuroder/items/e1c2708222bbb51c7634
ご清聴ありがとうございました!
68

More Related Content

What's hot

Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたMITSUNARI Shigeo
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらいNaoki Nagazumi
 
Ruby でつくる型付き Ruby
Ruby でつくる型付き RubyRuby でつくる型付き Ruby
Ruby でつくる型付き Rubymametter
 
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4Takashi Hoshino
 
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層智啓 出川
 
PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰hagino 3000
 
SPAのルーティングの話
SPAのルーティングの話SPAのルーティングの話
SPAのルーティングの話ushiboy
 
CEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかるCEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかるTakahito Tejima
 
オープンデータのためのスクレイピング
オープンデータのためのスクレイピングオープンデータのためのスクレイピング
オープンデータのためのスクレイピング直之 伊藤
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!amusementcreators
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexprGenya Murakami
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみたSatoshi Sato
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門Fixstars Corporation
 
Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recog...
Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recog...Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recog...
Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recog...yukihiro domae
 
超絶技巧プログラミングの世界(FTD2015)
超絶技巧プログラミングの世界(FTD2015)超絶技巧プログラミングの世界(FTD2015)
超絶技巧プログラミングの世界(FTD2015)mametter
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Fixstars Corporation
 

What's hot (20)

Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらい
 
Ruby でつくる型付き Ruby
Ruby でつくる型付き RubyRuby でつくる型付き Ruby
Ruby でつくる型付き Ruby
 
TDDBC お題
TDDBC お題TDDBC お題
TDDBC お題
 
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
 
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
 
PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰PRML ベイズロジスティック回帰
PRML ベイズロジスティック回帰
 
SPAのルーティングの話
SPAのルーティングの話SPAのルーティングの話
SPAのルーティングの話
 
CEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかるCEDEC2015 サブディビジョンサーフェスの すべてがわかる
CEDEC2015 サブディビジョンサーフェスの すべてがわかる
 
オープンデータのためのスクレイピング
オープンデータのためのスクレイピングオープンデータのためのスクレイピング
オープンデータのためのスクレイピング
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
 
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
 
CPUの同時実行機能
CPUの同時実行機能CPUの同時実行機能
CPUの同時実行機能
 
Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recog...
Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recog...Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recog...
Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recog...
 
超絶技巧プログラミングの世界(FTD2015)
超絶技巧プログラミングの世界(FTD2015)超絶技巧プログラミングの世界(FTD2015)
超絶技巧プログラミングの世界(FTD2015)
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 

Viewers also liked

暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編京大 マイコンクラブ
 
数値解析と物理学
数値解析と物理学数値解析と物理学
数値解析と物理学すずしめ
 
タイ文字と若干情報科学[修正版]
タイ文字と若干情報科学[修正版]タイ文字と若干情報科学[修正版]
タイ文字と若干情報科学[修正版]. きぷ
 
フォントの選び方・使い方
フォントの選び方・使い方フォントの選び方・使い方
フォントの選び方・使い方k maztani
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.kiki utagawa
 
ひまわり本7章
ひまわり本7章ひまわり本7章
ひまわり本7章CHY72
 
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016kyoto university
 
KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回kyoto university
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringYahoo!デベロッパーネットワーク
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 
Firefox Add-on SDK 入門
Firefox Add-on SDK 入門Firefox Add-on SDK 入門
Firefox Add-on SDK 入門Shoot Morii
 

Viewers also liked (20)

暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
 
Altseed
AltseedAltseed
Altseed
 
数値解析と物理学
数値解析と物理学数値解析と物理学
数値解析と物理学
 
タイ文字と若干情報科学[修正版]
タイ文字と若干情報科学[修正版]タイ文字と若干情報科学[修正版]
タイ文字と若干情報科学[修正版]
 
フォントの選び方・使い方
フォントの選び方・使い方フォントの選び方・使い方
フォントの選び方・使い方
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
 
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
 
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
 
C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回C#でゲームを作る2016 第7回
C#でゲームを作る2016 第7回
 
C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回C#でゲームを作る2016 第3回
C#でゲームを作る2016 第3回
 
ひまわり本7章
ひまわり本7章ひまわり本7章
ひまわり本7章
 
C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回
 
C#でゲームを作る2016 第5回
C#でゲームを作る2016 第5回C#でゲームを作る2016 第5回
C#でゲームを作る2016 第5回
 
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016
 
KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回KMC JavaScriptから始めるプログラミング2016 第一回
KMC JavaScriptから始めるプログラミング2016 第一回
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
 
Pietのエディタを作った話
Pietのエディタを作った話Pietのエディタを作った話
Pietのエディタを作った話
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 
Firefox Add-on SDK 入門
Firefox Add-on SDK 入門Firefox Add-on SDK 入門
Firefox Add-on SDK 入門
 
ECMAScript没proposal追悼式
ECMAScript没proposal追悼式ECMAScript没proposal追悼式
ECMAScript没proposal追悼式
 

Similar to FM音源をいじれるWebサービスを作った

Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Mori Shingo
 
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketPlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketKazuhiro Hara
 
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)さくらインターネット株式会社
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
Web socketドロンくん その後-
Web socketドロンくん その後-Web socketドロンくん その後-
Web socketドロンくん その後-Yuuichi Akagawa
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪Kunihiro TANAKA
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)Satoshi Shimazaki
 
Web制作のアレコレ
Web制作のアレコレWeb制作のアレコレ
Web制作のアレコレregret raym
 
Web Audio APIでシンセサイザーの作成
Web Audio APIでシンセサイザーの作成Web Audio APIでシンセサイザーの作成
Web Audio APIでシンセサイザーの作成aike
 
WebRTC meetup Tokyo 1
WebRTC meetup  Tokyo 1WebRTC meetup  Tokyo 1
WebRTC meetup Tokyo 1mganeko
 
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介Dai Utsui
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002Takeshi Kuramochi
 
JAMstackは眠らない
JAMstackは眠らないJAMstackは眠らない
JAMstackは眠らないKuniyoshi Tone
 
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)parrotstudio
 
AWS Black Belt Online Seminar 2016 HPC分野でのAWS活用
AWS Black Belt Online Seminar 2016 HPC分野でのAWS活用AWS Black Belt Online Seminar 2016 HPC分野でのAWS活用
AWS Black Belt Online Seminar 2016 HPC分野でのAWS活用Amazon Web Services Japan
 
20230511_Node-RED_Park_vol11_kitazaki_v1.pdf
20230511_Node-RED_Park_vol11_kitazaki_v1.pdf20230511_Node-RED_Park_vol11_kitazaki_v1.pdf
20230511_Node-RED_Park_vol11_kitazaki_v1.pdfAyachika Kitazaki
 
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~Fujio Kojima
 
Web技術勉強会 第38回
Web技術勉強会 第38回Web技術勉強会 第38回
Web技術勉強会 第38回龍一 田中
 

Similar to FM音源をいじれるWebサービスを作った (20)

Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketPlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
 
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Web socketドロンくん その後-
Web socketドロンくん その後-Web socketドロンくん その後-
Web socketドロンくん その後-
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
 
Web制作のアレコレ
Web制作のアレコレWeb制作のアレコレ
Web制作のアレコレ
 
Web Audio APIでシンセサイザーの作成
Web Audio APIでシンセサイザーの作成Web Audio APIでシンセサイザーの作成
Web Audio APIでシンセサイザーの作成
 
Open VZ
Open VZOpen VZ
Open VZ
 
WebRTC meetup Tokyo 1
WebRTC meetup  Tokyo 1WebRTC meetup  Tokyo 1
WebRTC meetup Tokyo 1
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介
 
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
 
JAMstackは眠らない
JAMstackは眠らないJAMstackは眠らない
JAMstackは眠らない
 
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
思い通りにいかないのがWebなんて 割り切りたくないから (Gunma.web #4 2011/02/12)
 
AWS Black Belt Online Seminar 2016 HPC分野でのAWS活用
AWS Black Belt Online Seminar 2016 HPC分野でのAWS活用AWS Black Belt Online Seminar 2016 HPC分野でのAWS活用
AWS Black Belt Online Seminar 2016 HPC分野でのAWS活用
 
20230511_Node-RED_Park_vol11_kitazaki_v1.pdf
20230511_Node-RED_Park_vol11_kitazaki_v1.pdf20230511_Node-RED_Park_vol11_kitazaki_v1.pdf
20230511_Node-RED_Park_vol11_kitazaki_v1.pdf
 
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
 
Web技術勉強会 第38回
Web技術勉強会 第38回Web技術勉強会 第38回
Web技術勉強会 第38回
 

More from CHY72

Cc dx lib72-p
Cc dx lib72-pCc dx lib72-p
Cc dx lib72-pCHY72
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~CHY72
 
Unity2015_No9_~Photonでオンラインゲーム~
 Unity2015_No9_~Photonでオンラインゲーム~  Unity2015_No9_~Photonでオンラインゲーム~
Unity2015_No9_~Photonでオンラインゲーム~ CHY72
 
Unity2015_No8_~UGUI&Audio~
Unity2015_No8_~UGUI&Audio~ Unity2015_No8_~UGUI&Audio~
Unity2015_No8_~UGUI&Audio~ CHY72
 
Unity2015_No7_~Unity2D~
Unity2015_No7_~Unity2D~Unity2015_No7_~Unity2D~
Unity2015_No7_~Unity2D~CHY72
 
Unity2015_No5_~Mecanim~
 Unity2015_No5_~Mecanim~  Unity2015_No5_~Mecanim~
Unity2015_No5_~Mecanim~ CHY72
 
Unity2015_No4_~NavMesh~
Unity2015_No4_~NavMesh~Unity2015_No4_~NavMesh~
Unity2015_No4_~NavMesh~CHY72
 
Unity2015_No3~Shooting~
Unity2015_No3~Shooting~Unity2015_No3~Shooting~
Unity2015_No3~Shooting~CHY72
 
Unity2015_No2~Terrain~
Unity2015_No2~Terrain~Unity2015_No2~Terrain~
Unity2015_No2~Terrain~CHY72
 

More from CHY72 (9)

Cc dx lib72-p
Cc dx lib72-pCc dx lib72-p
Cc dx lib72-p
 
Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
Unity2015_No9_~Photonでオンラインゲーム~
 Unity2015_No9_~Photonでオンラインゲーム~  Unity2015_No9_~Photonでオンラインゲーム~
Unity2015_No9_~Photonでオンラインゲーム~
 
Unity2015_No8_~UGUI&Audio~
Unity2015_No8_~UGUI&Audio~ Unity2015_No8_~UGUI&Audio~
Unity2015_No8_~UGUI&Audio~
 
Unity2015_No7_~Unity2D~
Unity2015_No7_~Unity2D~Unity2015_No7_~Unity2D~
Unity2015_No7_~Unity2D~
 
Unity2015_No5_~Mecanim~
 Unity2015_No5_~Mecanim~  Unity2015_No5_~Mecanim~
Unity2015_No5_~Mecanim~
 
Unity2015_No4_~NavMesh~
Unity2015_No4_~NavMesh~Unity2015_No4_~NavMesh~
Unity2015_No4_~NavMesh~
 
Unity2015_No3~Shooting~
Unity2015_No3~Shooting~Unity2015_No3~Shooting~
Unity2015_No3~Shooting~
 
Unity2015_No2~Terrain~
Unity2015_No2~Terrain~Unity2015_No2~Terrain~
Unity2015_No2~Terrain~
 

FM音源をいじれるWebサービスを作った