imedioハンズオンセミナー用のコード

# ■ Youtube API

リファレンス
https://developers.google.com/youtube/iframe_api_reference

[手順]
1.APIを読み込む

```html+cheetah
<script src="https://www.youtube.com/iframe_api"></script>
```

2.ビデオが挿入されるブロックの作成

```html+cheetah
<div id="movie-content">ビデオの読みこみ中...</div>
<div id="player"></div>
```

3.JavaScriptが読み込み完了すると、下記関数が呼び出される

```Javascript
function onYouTubeIframeAPIReady() { }
```
4.Playerのインスタンスを起動

```Javascript
player = new YT.Player(
        'player', // 埋め込む場所の指定
        {
            videoId: '-THpgvRFkQ8', // YouTubeのID
            width: 1080, // プレーヤーの幅
          	height: 600, // プレーヤーの高さ
            playerVars: {
                loop: 1,//0:ループしない 1:ループする 1の場合playlist設定必須
                playlist: 'JN-bmtN9OjA',//次に流すYoutubeのID
                autoplay: 1, //オートプレイ
                controls: 1, //コントローラー無し
                showinfo: 0, //動画タイトルなど表示しない
        		theme: "light" // テーマの選択（dark|light）

            },
            events: {
                'onReady': onPlayerReady
            }
        }
    );
```

5.プレイヤーの準備が整ったら
https://developers.google.com/youtube/iframe_api_reference?hl=ja#Playback_controls

```js
function onPlayerReady(event) {

	// ビデオの再生
	event.target.playVideo();
	// ミュートにする
	event.target.mute();
}
```

6.デバイス情報取得

```js
var getDevice = (function(){
    var ua = navigator.userAgent;
    if(ua.indexOf('iPhone') > 0 || ua.indexOf('iPod') > 0 || ua.indexOf('Android') > 0 && ua.indexOf('Mobile') > 0){
        return 'sp';
    }else if(ua.indexOf('iPad') > 0 || ua.indexOf('Android') > 0){
        return 'tab';
    }else{
        return 'other';
    }
})();
```

7.ビデオの読み込み中をプレイヤーの準備ができたら消す



# ■ Web Speech API

リファレンス
https://developer.mozilla.org/ja/docs/Web/API/Web_Speech_API

1.入力フォーム作成

```html
<input type="text" name="test" value="" id="searchbox">
```

2.アイコン
Font Awesomeを使います
http://shared-blog.kddi-web.com/sandbox/fa.zip

```html
<link rel="stylesheet" type="text/css" href="./css/fa/css/font-awesome.min.css">
<i onClick="record()" class="fa fa-microphone fa-2x" id="recb"></i>
```


3.ブラウザ判定

```js
// Chromeブラウザかどうか判定する
var ua = window.navigator.userAgent.toLowerCase();
if (ua.indexOf('chrome')!== -1){
	// Cromeの場合
	console.log('Chromeです')
}else{
	// Chrome以外の場合
	console.log('Chrome以外です')
}
```

4.Chrome以外はマイクアイコンを消す

```js
// グローバル変数にマイクボタンを挿入
var MICBTN = document.getElementById('recb');
if (ua.indexOf('chrome')!== -1){
	// Cromeの場合

}else{
	// Chrome以外の場合
	MICBTN.style.display = 'none';
}
```

5.Speech APIのインスタンスを起動

```js
// Speech APIのインスタンス起動
window.SpeechRecognition = window.SpeechRecognition || webkitSpeechRecognition;
var recognition = new webkitSpeechRecognition();
// 言語設定
recognition.lang = 'ja';
```

6.録音開始

```js
// 録音開始
function record(){
	recognition.start();
	MICBTN.style.color = 'red';
}
```

7.録音終了トリガー

```js
// 録音終了時トリガー
recognition.addEventListener('result', function(event){
	// 録音した音声を「text」変数に代入
	var text = event.results.item(0).item(0).transcript;
	// テキストボックスに録音したテキストを挿入
	var textBox = document.getElementById('searchbox');
	textBox.value = text;
}, false);
```

8.Web Speechの終了

```js
recognition.onend = function() {
	// マイクを黒に戻す
	MICBTN.style.color = 'black';
}
```


# ■ Fetch API
リファレンス
https://developer.mozilla.org/ja/docs/Web/API/Fetch_API
Polifil
https://github.com/github/fetch

1.Fetch APIを使いJSONファイルを取得する

```js
// Fetch APIを使い、指定のJSONファイルを取得
// RESTサーバーからJSONデータ取得
fetch( 'http://chps1888.route-server.jp/rest/v1/list/user' )
  .then( function ( data ) {
      if(data.ok) {
        return data.json();
      }else{
        // データ取得がNGの場合の処理
        console.log('Network response was not ok.');
      }
  })
  .then( function ( json ) {
    if(json) {  
        console.log(json);
    }else{
        // JSONデータがnullの場合
        console.log('Broken json data.');
    }
  })
```

2.JSONを挿入するブロックの用意

```html
<span id="error"></span>
<div id="json"></div>
```

3.JSONデータを処理する

```js
var returnHtml = '<h1>' + json[0].field_name + '</h1>';
var textBlock = document.getElementById('json');
textBlock.innerHTML = returnHtml;
```