コードノート

コードノートはwebを中心にテクノロジー・クリエイティブを伝えるWebメディアです。コードリンク代表、片岡亮が執筆しています。

Youtubeのiframeが複数あるページの高速化。画像クリックで読み込み&スマホではLazyLoad

ページの読み込み速度が遅いと、SEO的にもユーザー体験的にも良くないよねと言われる昨今、外部リソースの読み込みは頭の痛い問題ですね。

頑張って高速化を施したページに、広告タグやYouTubeを設置した瞬間、5秒10秒も読み込み速度が追加された瞬間の悲しみは忘れられません。

その問題を解決するための記事が世の中では多数公開されており、たとえば以下の記事があります。

www.rectus.co.jp

qiita.com

これらに書かれている、最初はサムネイル画像を設置しておき、その画像がクリックされたらYouTubeのiframeへ置き換える方法で基本問題ないかと思います。

ですが参考記事中にも書かれているとおり、スマホ(iOSのみ?)だとautoplayが効かないため、動画の再生に2クリック必要となってしまう問題があります。

■PC(たぶんAndoridも)
・サムネイル画像クリック

・autoplayが効いたYouTubeのiframeが読み込まれる。再生開始。

■スマホ(iOS)
・サムネイル画像クリック

・autoplayが無効のYouTubeのiframeが読み込まれる。

・YouTubeの再生ボタンクリック。再生開始。

以上のような違いがあります。

スマホでautoplayがonになっていると、外出先でページを開いた時にいきなり音が流れてしまう可能性があるので致し方ないですね。

Andoridに関しては、僕の手元の実機だとAPIからplayVideoを叩けばautoplay的な処理を加えられるので問題ないですが、バージョンによっては効かない場合もあるかもしれません。

※追記
Andoridはというか、厳密にはAndroidChomeならってかんじっぽい。
メーカーにもよりますが、Chromeを標準ブラウザとしてないAndroid端末もあるはず(数%程度)なので、AndroidもiOSと同様に処理した方が安全かも。
【YoutubeAPI】 iPhoneやAndroidでplayVideo()が再生されず、読み込み中のままになる | へっぽこ開発室
Chromeが依然としてトップ - 1月モバイルブラウザシェア | マイナビニュース

ともあれ、2クリック必要な状態は好ましくないため、こんな形式を考えてみました。

・PC&Andorid
当初の想定どおり、サムネイルクリックでautoplayのYouTube読み込み。

・iOS
いわゆるLazyLoad(該当のオブジェクト位置までスクロールしたら読み込む方法)っぽい処理にする。

こうすれば、どの環境でも1クリックでYouTubeを再生でき、iOSの場合でもある程度は高速化が効いた状態になるはずです。

というわけで、書いたコードをアップします。
https://github.com/ryryo/youtubeMultiSpeedup

See the Pen Youtube Iframe clickLoad & lazyload by Ryo Kataoka (@ryryo) on CodePen.


codepenでは画像がアップできてないので、再生ボタンなど一部表示が足りない部分があります。動作もちょっと違うかも。

js部分はjQueryで書いてます。今風じゃないですがWordPressなどでも気軽に使えて良いですね。また対したボリュームでないので、html上に書いてしまってます。

一応下記にもjs部を記載します。修正があったらGitHubだけ更新するので最新版はそちらをご覧ください。

<script type="text/javascript">
// 各プレーヤーの格納
var ytPlayer = [];
// プレーヤーのサイズ
var ytWidth = 640;
var ytHeight = 390;

var ua = navigator.userAgent;
if (ua.indexOf('iPhone') > 0 || ua.indexOf('iPad') > 0 || ua.indexOf('iPod') > 0) {
  var os = "ios";
} else if (ua.indexOf('Android') > 0) {
  var os = "android";
} else {
  var os = "pc";
}
logmes("OS:" + os);

// iOSはlazyload的に処理
if (os == "ios") {
  var thisOffset = [];
  $(window).on('load', function () {
    //要素の位置取得
    $(".ytPlayerReady").each(function (i, elm) {
      thisOffset[i] = [];
      thisOffset[i]["playerId"] = $(elm).attr("id");
      thisOffset[i]["movieId"] = $(elm).data("movieid");
      thisOffset[i]["ytWidth"] = ytWidth;
      thisOffset[i]["ytHeight"] = ytHeight;
      thisOffset[i]["height"] = $(elm).offset().top + $(elm).outerHeight();
      thisOffset[i]["lazyStatus"] = false;

      logmes("位置:" + $(elm).attr("id") + ":" + thisOffset[i]["height"]);
    });

    //スクロール開始前にも、ファーストビュー中に動画があったらYouTube起動処理
    youtubeLazy(ytPlayer, thisOffset);
  });

  //lazyload的YouTube起動処理
  $(window).scroll(function () {
    youtubeLazy(ytPlayer, thisOffset);
  });
}

function youtubeLazy(ytPlayer, thisOffset) {
  var nowScrollTop;
  for (var i = 0; i < thisOffset.length; i++) {
    nowScrollTop = $(window).scrollTop() + $(window).height();

    if (nowScrollTop > thisOffset[i]["height"] && !thisOffset[i]["lazyStatus"]) {
      logmes("lazyload:" + thisOffset[i]["playerId"]);

      $("#" + thisOffset[i]["playerId"]).removeClass("ytPlayerReady");
      $("#" + thisOffset[i]["playerId"]).parent().parent().find(".controller").show();

      youTubeIframeAPIReady(ytPlayer, thisOffset[i]["playerId"], thisOffset[i]["movieId"], thisOffset[i]["ytWidth"],
        thisOffset[i]["ytHeight"]);

      thisOffset[i]["lazyStatus"] = true;
    }
  }
}

//画像クリックでのYouTube起動処理
$(".ytPlayerReady").click(function () {
  var playerId = $(this).attr("id");
  var movieId = $(this).data("movieid");
  $(this).removeClass("ytPlayerReady");
  $(this).parent().parent().find(".controller").show();

  logmes("起動クリック:" + playerId + ":" + movieId);

  youTubeIframeAPIReady(ytPlayer, playerId, movieId, ytWidth, ytHeight);

});

$(".y_start").click(function () {
  var playerId = $(this).parents('.controller').data("playerid");
  videoControl("playVideo", playerId);
});
$(".y_pause").click(function () {
  var playerId = $(this).parents('.controller').data("playerid");
  videoControl("pauseVideo", playerId);
});

// 各プレーヤーの埋め込み
function youTubeIframeAPIReady(ytPlayer, playerId, movieId, ytWidth, ytHeight) {
  ytPlayer[playerId] = new YT.Player(playerId, {
    width: ytWidth,
    height: ytHeight,
    videoId: movieId,
    playerVars: {
      rel: 0
    },
    events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange
    }
  });

}

// 各プレーヤー準備完了後の処理
function onPlayerReady(event) {
  playerId = event.target.getIframe().id;
  logmes(playerId + ":onPlayerReady");

  if (os != "ios") {
    // videoControl("mute", playerId);
    videoControl("playVideo", playerId);
  }

}

function onPlayerStateChange(event) {
  playerId = event.target.getIframe().id;
  logmes(playerId + ":onPlayerStateChange");
  playerStateView(event, playerId);
}

function playerStateView(event, playerId) {
  var ytStatus = ytPlayer[playerId].getPlayerState();

  if (ytStatus == 1) {
    logmes('ステータス:再生中');
  } else if (ytStatus == 0) {
    logmes('ステータス:終了');
  } else if (ytStatus == 2) {
    logmes('ステータス:一時停止中');
  } else if (ytStatus == 3) {
    logmes('ステータス:バッファリング中');
  } else if (ytStatus == 5) {
    logmes('ステータス:頭出し済み');
  } else if (ytStatus == -1) {
    logmes('ステータス:未開始');
  } else {
    logmes('ステータス:該当なし?ログ確認');
    console.log(ytStatus);
  }
}

function videoControl(action, playerId) {
  // playVideo or pauseVideo or mute or unMute

  logmes("操作:" + playerId + ":" + action);
  var $playerWindow = $("#" + playerId)[0].contentWindow;
  if ($playerWindow) {
    $playerWindow.postMessage('{"event":"command","func":"' + action + '","args":""}', '*');
  }
}

function logmes(log) {
  if (log != "") {
    var mes = $("#mes").html();
    mes = mes + "<p>" + log + "</p>";
    $("#mes").html(mes);

    var scrollPoint = $('#mes')[0].scrollHeight;

    // $(".mesBox").scrollTop(scrollPoint);
    $('.mesBox').animate({
      scrollTop: $('#mes')[0].scrollHeight
    });
  }
}
</script>

ログをhtml上に出るようにしているのは、スマホでの動作確認に難儀した名残です。
LazyLoad的処理はざっくり書いたので、重くなったりしないか不安な部分。

また諸々の処理には、「IFrame Player API」 が使われています。ついでに再生や一時停止ボタンも動作確認がてらに設置しています。APIのドキュメントはこちらから。
https://developers.google.com/youtube/iframe_api_reference?hl=ja

テスト的にざっくり書いたもので、しっかり検証が済んだコードではないので、安定した動作は保証しかねます。ご利用の際にはお気をつけください。

では👋👋

Google Colaboratoryで学ぶ、LSTMを使ったAIの自動歌詞生成

f:id:moba13:20191027190921j:plain
なんとなくシリーズ化している、ディープラーニング勉強会の第4回目を実施したのでそのメモです。

これまでの振り返り

■第1回 [理論] 実際AIって今どんなことできるのよ?会。

blog.codelink.co.jp

■第2回 [実践] Googleの無料学習環境を使って、ポチポチGANとやらを体験してみよう会。

blog.codelink.co.jp

■第3回 [実践] AIに学習させるデータを加工するのにもプログラムを使うと良いよね会。

blog.codelink.co.jp

今回の概要

ディープラーニングラーニングの概要説明 → 画像処理ときたので、今回は文章処理編。

ちょうど先日、Googleが検索エンジンの一部に「BERT」と言われる、ディープラーニングによる文章解析システムを組み込んだニュースが発表されました。

jp.techcrunch.com
(関係ないですが、「BERT」の前身に「ELMo」というシステムがあり、セサミストリートのキャラ名が命名に含まれてますね。めちゃ蛇足。)

プログラミングによる文章処理はまとめて「自然言語処理 (NLP→natural language processing)」と総称されます。

ゼロから作るDeep Learning ? ―自然言語処理編

ゼロから作るDeep Learning ―自然言語処理編

 

Google検索も世界中のwebサイトの文章を解析して検索結果を作っているので自然言語処理ですし、Google翻訳も入力した文章を解析して違う言語に変換するということで自然言語処理です。

いま、人工知能は「Google検索」を大きく変えようとしている|WIRED.jp

噂によると、一時のあいだ、シンハル氏は機械学習システムをGoogle検索に採用することに断固たる抵抗を示していたようだ。

これまでのGoogle検索は、人間の手による厳格なルールにもとづいたアルゴリズムを採用してきた。あるグーグル元社員によれば、ニューラルネットにおける解釈やその対応がより困難を極めるという懸念からだ。

ほんの2.3年前には、Google検索部門のトップの人も「ディープラーニングによる自然言語処理?まだまだ無理でしょ」って言っていたのは、今となるとなんだか不思議ですね。 

diamond.jp

2016年末には、AIによる東大の入学試験合格を目指すプロジェクト「東ロボくん」が、今のAIでは長文の文脈理解難しい、といった理由でプロジェクトを凍結しました。

しかしその2年後にはGoogleがBERTを発表し、そのさらに先端のシステム「T5」では人間以上とも言える文章読解スコアを出しています。すごい。

BERTについて詳しい解説はこちらなど。

ai-scholar.tech

RNN・LSTMって何?

そんな前振りがあってからの今回のお勉強会でしたが、「BERT」の前身「ELMo」にもLSTMは使われています。

qiita.com

f:id:moba13:20191027180744p:plain

RNN・LSTMについて僕が劣化コピーした解説をweb上にまき散らすのは嫌なので、詳しくは筑波大学の先生の講義動画がなぜか無料で見れるのでそちらを。

ocw.tsukuba.ac.jp

かなりざっくり言えば、ディープラーニングで時系列データを学習する時に利用されるモデルです。

「時系列データ」と言うと若干言葉がややこしいですが、平均気温の変化グラフや株価の変化、人の動作記録、会話データなど時間の変化があるデータは全部、時系列データです。

そんなデータを扱う時のベーシックなモデルがRNNです。そしてRNNだと長期の時系列データを学習できなかったので、その弱点を補ったのがLSTMです、みたいなかんじ。

今回のテーマは「AIの自動歌詞生成」ですが、「文章を書く」のも時系列があるデータ処理です。

人は皆、文章を書くとき、それまで書いた文章(過去)を元に、続く文章(未来)を想像しているのですから。

AI君にも、歌詞の導入が「会いたくて会いたくて」だったら、それに続く言葉はなんでしょう?とお題を出して答えてもらうわけです。

当然、いきなりそんな質問には答えられないので、事前にいっぱい歌詞のテキストデータを時系列データとして学習してもらいます。その学習を元に、AIが新しい歌詞を生みだしてくれるのです。

やってみよう

そんなこんなで、実際にAIによる自動歌詞生成を行った環境がこちらに。

毎度おなじみ、Googleが無料でディープラーニングの学習環境を貸してくれるサービス「Google Colaboratory」を使いながら、web上にある先人達のコードをほぼそのまま使わせていただきました。

colab.research.google.com

主に参考にさせていただいた記事。

cedro3.com

cedro3.com

qiita.com

後半、形態素解析も利用した学習例もありますが、正直蛇足かなぁという気もしています。

形態素解析は昔ながらの自然言語処理手法の一つで、文章を「意味を持つ最小限の単位(=単語)」に分割する方法です。

それを使い、AIに文章を1文字1文字渡すのでなく、前準備として文章を意味ごとに分割してから渡してみよう、という試みですが、効果があるかはなんとも言えません。

普通に考えると効果が高そうですが、ディープラーニングの学習は人間があれこれ手を加えたデータの方が良いのでは?と試行錯誤した結果よりも、データをそのまま与えた結果の方が良いことも多いのがまた不思議なところです。

ディープラーニングによる日本語解析の研究成果ってあまり公にされていないので、この辺実際どうなっているのかな?というのは、気になりポイントです。

データ準備・結果

コードはお借りしたものを使うので、学習用の歌詞データを集めるのが大変といういつものやつでした。

最初、30曲かそこらで学習したのですが、結果が芳しくなかったので、途中から適当にプログラムを書いて400曲(約20万字)ぐらい収集して入れたら良いかんじになりました。

(参考)

qiita.com

5曲10曲でも学習できないことはないですが、元の歌詞そのままのフレーズが出ることが多くあまり楽しくなかったので、良い結果を出したかったら最低100曲ぐらいはあると良いのかなぁと思います。

それでも歌詞は、そこまで文脈が必要なくとも"それっぽい"結果に見えるので対象として面白いですね。

例えば小説生成になると青空文庫といった権利的な問題もない大量のデータがあるのでやりやすいですが、小説における"それっぽい"文章はハードルが高くなりがちです。

僕がテストした時は、主にボカロ系のアーティスト楽曲をまとめたデータで学習させてみました。

学習元データの歌詞の文節ごとにスペースが入っていたため、通常のテキストを学習させる際よりも変な日本語が出づらかった気がします。改行が多いのも同様に。

プログラムからすると「スペース」も「改行」も一つの文字なので、「スペース・改行の次にはどんな文字が来る?」という質問が定期的に挟まり、その都度良い感じに内容がリセットされる印象でした。

逆にいえば、「それ」「君」「僕」「今日」など文頭によく出る単語が頻出し過ぎて、浅い文になりがちだったとも言えます。

その辺は元データのスペースや改行を一部削ったりすると、また違った結果になりそうです。すべては学習データしだい。

Google Colaboratoryで学ぶ、Pythonによる画像加工&DCGAN

f:id:moba13:20190923214439j:plain

非ITな人向けディープラーニング勉強会を、第3回目も実施したのでその内容をざっくり公開。前回・前々回の内容は以下に。

■第1回 [理論] 実際AIって今どんなことできるのよ?会。

blog.codelink.co.jp

■第2回 [実践] Googleの無料学習環境を使って、ポチポチGANとやらを体験してみよう会。

blog.codelink.co.jp

色々とご存知の方からすると、いきなりGANかよ、という話はありますがエンタメ重視で文系的な人も楽しめると良いなぁというゆるい方針でやっています。

今回の内容を実行した例。

AI勉強会、今回の概要 → Pythonの画像加工ライブラリを使ってみよう

前回(第2回)は、GAN(敵対的生成ネットワーク)による教師無し学習を体験してみよう、という会だったのですが、今回はその続編的な内容です。

最初は3分クッキング番組がごとく、「それでは、事前に用意した128x128の正方形画像500枚を読み込みます。」という流れで始めていたのですが、その部分もPythonで準備してみよう!というのが今回のおおまかな主旨でした。

ディープラーニングのプログラミングといえば大半がPython!というのが半ば常識となっている昨今ですが、それはPythonの文法がわかりやすいといったこともありつつ、ライブラリが豊富というのも大きな要因でしょう。

NumPyといった数値計算ライブラリはもちろん、画像加工のライブラリも充実しており、今回はその体験会というかんじでした。

プログラミングを日頃行う人からすれば、「ライブラリが豊富だから~」と話せば一発で通じますが、一般の人からすれば、「ライブラリー?何それ図書館?」という話なので、ライブラリとはなんぞやと説明するよりも、まず使ってみるのが一番では?という意図です。

そして加工した画像をそのまま使って、改めてDCGANの実行もしてみよう!という内容をまとめたGoogle Colabのノートブックをこちらにアップしてあるので、ご覧くださいませ。

colab.research.google.com

事前準備:
友達でも有名人でも良いので、加工したい人物画像いっぱい。サイズとかはプログラムでまとめて直すので変更不要。

短いコードは僕が適当に書いていますが、大半のコードはwebに公開されていたものをColab内で実行できるよう一部改変したものになっています。

だいたい全部コメントに引用元を書いている…はずですが、漏れがあったらご指摘いただければ幸いです。

ディープラーニングの画像学習データを作成する時のライブラリというと、「Pillow」「OpenCV」の2つをよく目にすることになりますが、それらを活用するサンプルコード集になっています。

また合わせて、画像の水増しをするために、ディープラーニング用のライブラリの一つ「Keras」に搭載された機能の一つ、ImageDataGeneratorクラスも使っています。

ディープラーニングの学習では、画像が多く(数百枚~数万枚)あった方が精度が向上することがあるのですが、中々それだけの画像を集めるのは大変です。

そこで学習手法として、1枚の画像を左右反転・色味変更・上下左右に少しずらす、といった方法でコピーするという処理を挟みます。全部オリジナル画像の方がもちろん良いですが、枚数が少ないよりは水増しした方が良いかんじに。

そんなこんなでノートブック内で行っている画像処理は、以下の5つです。

・画像のファイル形式の統一(今回はpngに統一) → Pillow
・複数の画像を1枚に統合 → Pillow
・人物画像から、顔部分だけを正方形に切り抜く → OpenCV
・画像のサイズを統一する → OpenCV
・画像の水増し → Keras

顔検出について

勉強会では、顔画像を切り抜く処理が「おぉ!」と盛り上がっていました。

こんなかんじで、プログラムが人物画像から顔部分を認識して切り抜いた画像を生成してくれます。

f:id:moba13:20190923205255j:plain
ディープラーニングの学習のために、顔画像を集めて1枚1枚手動で画像加工ソフトを使って正方形に切り抜いていきましょう、なんていうのはやってられないので、こんな形で自動化できる部分は自動化するのは重要な工程です。

『退屈なことはPythonにやらせよう』が7万部も売れているらしいので、間違いない。

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

  • 作者: Al Sweigart,相川愛三
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/06/03
  • メディア: 単行本(ソフトカバー)

最終的な現場では、自動化できない部分を手動で一枚一枚加工したデータセットを作ることが重要だったりもしますが、個人の勉強ではそこに時間をかけられないですからね。

ちなみに、今回利用したコードでは顔画像検出精度は2/3程度という肌感でした。当然元データの質によりますが、少しでも斜めを向いていたりすると、うまく検出できないな、という感覚です。

顔検出は他にも色々方法があるようで、以前別の機会で使った、ディープラーニングによって構築された「Face Recognition」がもっと良いかんじでした。

github.com

静止画からの顔検出はもちろん、動画からの顔検出にも対応。

顔の類似度判定も可能で、以前、基本1人の顔写真、数百枚の中に数枚混じった別人の画像を除去する時にとてもお世話になりました。

「ライブラリを使えばたった数十行のコードでこんな便利なことが!」と言うのは、数百・数千行と書かれたライブラリのコードを軽視しているように聞こえてしまうかもしれないですが、感謝の念を込めつつ活用していくことがとても大切です。

Kerasで書かれたDCGANの実行

前回、DCGANの実行には、TensorFlowで書かれたこちらのコードを使っていました。

github.com

ただ以前はそのままcloneして実行できていたのですが、最近のGoogleColab内のアップデートの影響かそのままだとエラーが発生する事態に。

もう4年も前にPython2で書かれているものだし、仕方ない。

原因を特定して書き直しても良かったのですが、今回画像の水増しにKerasを使っていましたし、せっかくならとKerasで書かれたDCGANのコードを探してみました。

参考記事:

qiita.com

qiita.com

ベースは「keras GAN 自前データセットで画像生成」のコードを使わせていただきましたが、ちょっと生成結果が微妙だったので、generatorとdiscriminatorのモデル部分だけ「DCGANでISSEY MIYAKEをデザインする」のコードに変更し利用しました。

colabのノートブック内にも書いてますが、それをまとめたものはこちらに。

GitHub - ryryo/keras_dcgan_origin

GANの実行は、今回で終わりの予定でいます。

ディープラーニング=画像であれこれ、だけでは決してないですが、「ディープラーニングによってAIが目を持つようになった」と言われることもあり、画像を扱うのはとっかかりとして面白いですね。

ディープラーニング以前であれば、顔認証のプログラムを書くといったらめちゃ大変なことだったと思うのですが、制作にかかる時間が減り、精度は逆に向上しているのは驚きです。


次回以降は、名言生成・歌詞生成といった、文章生成をしてみたいね~と話しているところですが果たしてどうなるのか、乞うご期待。

Google Colaboratoryで学ぶ、ディープラーニングのDCGANによる教師無し画像生成

f:id:moba13:20120718190846j:plain
以前、こちらの記事に書いたようにディープラーニングについて専門家でもない僕がゆるく非IT系な方向けに話す、という勉強会をしたのですが、まさかの第2回も開催したのでその内容も公開することにします。

blog.codelink.co.jp

前回は、単にどんなディープラーニングの技術が実際にあるかをまとめて紹介するだけだったのですが、今回は実践編として既存のディープラーニングプログラムを動かす、ということをしました。

サンプルコードをgithubからコピーして動かすだけとはいえ、数年前だったら環境構築で全員挫折していただろうに、今は学習環境が整っていて素敵ですね。

概要の説明なども含め、1~2時間ほどで一応みなさん実行できました。

GANって何?

= 敵対的生成ネットワーク(Generative adversarial networks)

前回の記事にも書いてますが、以下のようにAIが入力した画像を学習し、オリジナルの画像を生成するよ!という技術です。

詳細な説明記事はweb上にたぶん100万記事ぐらいあります。

概略だけ言えば、ジェネレーター(画像の生成器)とディスクリミネータ(画像の識別器)という2つのモデルを作成し、ジェネレーターは本物っぽい偽画像を作り、ディスクリミネータはそれが偽物かどうか見抜く、というバトルを繰り替えす中でお互い成長し、最終的にまるで本物のような画像が作れるという、青春バトルものマンガのようなAIです。

本来的な学習ステップとしていきなりGANをやるのは、行程をすっ飛ばしまくっていますが、仕事でもないしおもろいことやらないとみんな眠いよね!というチョイスでした。

また、上記の例はGANの中でも、styleGANという新しめな技術でさらにその中でも学習がうまくいったものを公開しているように見受けられます。

今回は、styleGANでなく最初期に公開されたDCGANという、GANを作るチュートリアルの時にはほぼこれが出てくるってやつを使いました。モデル構造もシンプルなので理解しやすいですが、その分そんなにはうまく画像は生成されません。

僕がポケモンやドラクエのモンスターを数時間学習させたものでもこんなもんです。

手書き文字ぐらいのシンプルなものなら、割と良い具合に。

論文自体は2015年11月に公開され、使ってみました!みたいな記事も一番出てきますね。APIとして公開されているGANもDCGANによるものが、現状まだ多い気がします。

arxiv.org

実装されたコードはこちらのものを利用しました。

github.com

TensorFlowで書かれたもので、今ではkerasやchainer、PyTorchといったより手軽にコードを書けるディープラーニング用のライブラリ製のものもたくさんgithub等で公開されていますが、このTensorFlow製のものがオプションも豊富で使いやすかったため採用しました。

Python2で書かれているので、実行環境がPython3だとそのまま使えないのだけが詰まりどころでしょうか。

model.pyを見ればジェネレーターもディスクリミネータも、畳み込み層を4層入れてるだけなんだなぁとか、ぼんやりはわかって面白いです。

必要な事前準備

GANの学習のためには、事前に「AI君、キミはこれらの画像を元に、新しい画像を作ってね!」という画像の準備が必要です。

最低でも100枚ほど、精度を上げるためには数千枚あった方が良いです。細かいことを言うとこんなかんじ

・画像フォーマットの統一 (今回はpngに統一でやりました)
・画像の大きさの統一 (デフォルトでは108px×108px)
・exif情報の削除 (Photoshopのバッチ処理で画像加工時などについてしまうケースもあります。)
・zipに圧縮(フォルダごと圧縮でなく、画像をすべて選択の上、圧縮してください。サブディレクトリが発生しないように。unzip時にオプションで解決しても良いけど)

この準備が手間ですが、ディープラーニングはデータ集めが大事っていうのはこういうことなのだなぁというぷち体験ができます。

勉強会では、インターネットの大海に転がっていたポケモンの画像一覧などを共有しましたが、さすがに公に2次配布するのは色々よろしくなさそうなので、ここでは控えておきます。

研究用に公開されている画像も多くあり、「機械学習 データセット」などでググれば商用で無ければ自由に使える画像データも多く手に入るはずです。

無料のディープラーニング学習環境 Google Colab

いざディープラーニングをやろう!と言っても、自身のmacでその実行環境を作るだとか、さらに高速な学習完了を作るためにはハイスペGPUを搭載したパソコン(25万円~ できれば100万円ぐらい)を購入する必要がある、という準備が必要で詰みます。

そんな中、2018年頃登場したのが、Google Colaboratory(通称 : Google Colab)です。

colab.research.google.com

ブラウザさえあれば、環境構築不要・無料で機械学習の学習環境が作れる??マジかよGoogle最高すぎでは???と界隈ではかなり話題となっていました。

ブラウザ経由でクラウド上にあるGoogleのPCを使うイメージなので、windowsの方でもmacと同様に使うことができます。

無料な分、12時間ごとに全データの削除がかかるといった制限はあるのですが、勉強に使うだけであれば十分ですね。

また、Colab上に記載したコマンドはノートブックとして共有も可能で、チュートリアル的なものを作成するのも容易です。今回は、この機能を使ってみなさんにポチポチと実行してもらいました。

書籍では、こちらの本がディープラーニングの各種プログラムを実行するためのColabノートブックをたくさん制作されていて良かったです。

■図解速習DEEP LEARNING | Amazon

巷で話題の技術書典で販売されていたものを書籍版として加筆したもののようですね。

DCGANを実践するためのGoogleColabノートブック

というわけで、僕が作成したDCGANを実行するためのノートブックを公開しておきます。

colab.research.google.com

上記ファイルを開き、画面左上の「PLAYGROUNDで開く」をクリックすれば、ご自身のColab環境で学習をすることができます。

ただこの内容も、下記記事を参考にしたものであり、僕が作ったと言えるものではありません。追加で生成結果画像をGifアニメ化するコードを追加してあるぐらいです。

qiita.com

この記事の制作者様、DCGANのコード制作者様、DCGANの論文制作者様、GoogleColabの制作者様、TensorFlowの制作者様、Pythonの制作者様、Linuxの制作者様、各種PCパーツの製作者様方..etc に感謝の念を遠隔で送ってから使いましょう。
基本は、このファイル内にある各コマンドにカーソルを合わせると出てくる再生ボタン(「▼」を横にしたようなボタン)を押していけば、実行できるようになっています。コマンドを編集した後であれば、Shift+Enterで実行。

書き換えが必要な部分は捕捉コメントを書いてあるので、それに沿って変更し実行してください。

が、プログラムをしたことが無い方はどこかしらでエラーが出て詰まります。

勉強会でも基本的にほぼそのサポートをするのがメインでしたが、エラーの内容を見て適宜「ls」コマンドでファイルの存在を確認したり、「pwd」コマンドで自分が今いるフォルダを確認しながら、実行していってください。

cd、mkdir、cp、unzip、ls、pwd、git clone ぐらいのコマンドならなんとなく知っているよ、という人であれば余裕だと思います。

簡易Q&A

Q.プログラムの学習が完了したっぽいけど、「/home/DCGAN-tensorflow/out/(学習結果フォルダ)/samples」に結果画像が1つも出ないんですが?

A. 画像枚数が少なく学習回数が少ないと、結果を出力するまでのポイントに届かず、結果を出す前に学習が終わっている可能性があります。

なので、学習を実行するコマンドを下記のように書き換え、学習回数増加と、画像を出力する頻度減をしてみてください。

!python2 main.py --dataset (データセットフォルダ名) --input_fname_pattern="*.png" --epoch=100 --sample_freq=100 --train --crop

--epochが学習回数。(サンプルだと25になってる)
--sample_freqが結果画像を出力する頻度。(デフォルトだと200になってる)

Q.もっと長く学習させて良い結果を作りたいです。

A.学習を開始するコマンド内の「--epoch=25」を「--epoch=10000」などに書き換えて実行すればokです。(これで1万回学習を実行)

ただ、たくさん学習する際にはいくつか補足が必要なので解説します。

1.Colabの時間制限問題

GoogleColabは無料で使えるのですが、その代わり12時間ごとにデータがすべて削除されるという制限があります。

そのため、学習は最高でも数万回程度が限度かと思います。(画像の枚数で前後)

また画像の枚数が数百枚程度だと、epoch3000回程度であまり画像が代わり映えしなくなってきます。通称「過学習」

2.ブラウザ開きっぱなしが必要問題

GoogleColabは12時間がリセットかかるのと合わせ、1時間半画面を開いてなくてもリセットがかかるという制限があります。

また画面を開いていたとしても、別のタブを開いていたり、ブラウザ以外のアプリを見ていても10分ほどでセッションが切れる(キミ、画面もう見てないよねという判定)がされます。

なので、長時間学習する際には、Colabの画面を開いたまま他の作業はせず放置する必要があります。また、その間PCがスリープモードになってもダメなので、PCの設定を変えPCを放置してもスリープしない設定に変更してください。

3.学習完了するまで、結果の確認できない問題

基本的には、学習が完了するまで結果の画像を確認するコマンドを実行することができません。

しかし、何時間も学習を持つのも寂しいので、途中で都度結果を確認する方法があります。(放置したまま12時間経ってしまって、データ消えちゃうとより寂しい。)

それは、学習しているタブとは別に、もう一つ別タブでGoogleClabを開き、そこでコマンドを実行するという方法です。

これなら、学習を進める処理と平行して、都度学習した結果を確認できます。そのためのノートブックも公開してあるので、ご利用ください。

colab.research.google.com

4.学習中にブラウザが落ちる問題

長時間、学習をさせているとブラウザがメモリを大量に消費しブラウザが落ちるという問題を確認しています。

(Windowsだとブラウザが固まる、macだと「PCの容量が足りません」的なメッセージが出る。)

この問題は、学習のログである
[ 1 Epoch:[ 0/50] [ 0/ 11] time: 5.4089, d_loss: 7.00813675, g_loss: 0.00110264
みたいな表示が溜まると、起きてしまう問題のようです。

そのため、元のプログラムからこのログ表示をしないように変更したファイルをアップしたので、そちらに上書きを行い実行してみてください。

(print文をコメントアウトしただけのgithubに公開するまでもないものをdropboxで共有しているものなので、そのうち消してしまっているかもしれません。)

この処理は、先ほど貼ったColabノートブックの「KTP-学習中に平行して実行結果を確認する用.ipynb」の一番最後、「modelファイル上書き」という部分に記載してあります。

 

以上!

AI・ディープラーニングついて話した内容をまとめておく

f:id:moba13:20120618182927j:plain

こんにちは。僕です。

先日なぜか、主に非ITな方々に向けてディープラーニングについて説明する場があり、色々とメモっておいたことをブログにも放出しておくことにしました。

日頃業務ではディープラーニングには触れることはなく、ゴリゴリのエンジニアでもないwebディレクターの書いた内容になるので、話半分でお願いします🙏

日常的なコミュニケーションにおいて「だいたい合っていること」を話すのは普通のことですが、技術の場において「だいたい合っていること」を話すのは罪深いことだったりします。すべて正しく記述するのがプログラムってものですから。

その一方、世の中では技術に明るくない、なんか偉い人・営業・コンサルタント・ブロガーみたいな方々が、「だいたいすら合っていない」内容をドヤ顔で語っており、oh..知識の二極化が進む..!と悲しくなるので、恥ずかしながら公開しておきます。

マジで違う部分に関しては、優しくご指摘いただけると幸いです。

人工知能って何?

f:id:moba13:20190618002425j:plain

人工知能は現在第3次ブームと言われますが、これまでの遍歴を「第1・2次」「第3次」の2つのに分け、解説を行いました。

第1・2次ブーム 「人間が知能を理論的に再現していく流れ」

出てくる用語としては「記号処理」「知識ベース」「ルールベース」「エキスパートシステム」といったものがあります。

「人工知能」と言ってはいますが、機械に考えさせるのではなく、人の考え方をプログラムで疑似的に再現しよう、といった分野です。

古い技術のように言われることが多いですが、現在のインターネット(www)や、従来の検索エンジン、機械翻訳などは、この技術を応用した先にあるものです。

第3次ブーム 「機械が自ら学習する。機械学習・深層学習(ディープラーニング)」

人間のニューロンを模した回路を作れば、機械がデータを勝手に学習してくれるのでは?というのが、現在ブームとなっている機械学習・深層学習の分野です。

概念自体は、機械学習-1960年頃 深層学習-1980年頃に生まれていますが、精度が低く 〜第2次ブームのように、結局は人が機械にルールが与えないとダメだよね、と言われる時代が続きました。

それが、2012年になり画像認識(有名なGoogleの深層学習による猫画像認識のニュース)の分野で人間が作ったアルゴリズムの精度を超えた!ということで話題となりました。

- 機械学習と深層学習の違いは何か

深層学習は、機械学習の手法の一つです。機械学習 > 深層学習。

共に、大量のデータの中から「特徴をつかむ」ことを試みます(=学習)。その方法が従来の機械学習と、深層学習では異なります。

従来の機械学習では、特徴のつかみ方自体は人が教えます。深層学習では特徴のつかみ方も自身で模索します。

これが深層学習はその中身がブラックボックス(人間がルールを定義していない)だ、と言われる所以です。

また、その学習を可能にするために、人工ニューロンを何層にも深く重ねることから、「深層」学習と呼ばれます。

  • 機械学習は、人がルールを用意した浅い層のネットワークで学習する。
  • 深層学習は、人がルールを設けない深い層のネットワークで学習する。

といった具合です。

そして、ハードウェアの性能向上や、畳み込みニューラルネットワーク(CNN)という手法で精度が向上したことで、いま現在深層学習が人がルールを作る方法よりも高い精度を誇るようになったのです。

(だいぶ端折った解説なので、適宜詳しい解説を見てください🙇)

 

ディープラーニングで出来ることってなんだ

f:id:moba13:20190618104655j:plain
正確にはもっと細かく分類できるのですが、ここでは

「認識/予測」「生成」「行動」×「数値」「画像/動画」「文章/言語」「音声/音楽」というマトリクスに分けて事例紹介をしました。

YouTubeやTwitterの動画を多く貼っていますので、言葉を見るよりもぜひそちらを直接見ていただいた方がイメージしやすいかと思います。

【数値】

・認識/予測

例えば株価、売上、来店数といった数値予測の分野で、ディープラーニングの大きな成果を聞くことはあまりありません。

というのも、数字の分析であれば従来の統計的なアプローチで十分なケースが多いためです。

一方で、下記のようなニュースもあり、必ずしもディープラーニングが生きない、ということでも無さそうですが、あまり得意分野とは言えません。 

www.itmedia.co.jp

そんな中世の中では、「AIでデータ分析!」みたいな商品も見受けられるので、そんな時は、Excelで計算しているような従来の技術にAIと冠を付けているだけなのか、ディープラーニングなのかはよく確認した方が良いかもしれません。

手段と目的の話なので、目的さえ達成できるなら、古かろうが新しかろうがどちらでも良いんですけどね。

【画像/動画】 Hot!

ディープラーニングが今一番得意とするのがこの分野です。「機械が目を持った」と言われる所以。

・認識/予測

- 画像認識

注目を集めたのが2012年。この年に人工知能の画像認識コンテスト「ILSVRC」で深層学習による画像認識の精度が、従来の機械学習での精度を超えました。

この年の誤認識率は約17%ほどですが、2015年には3.5%ほどにまで下がっています(人間は5%ほど誤認識する。)

news.mynavi.jp

- 物体検出 YOLOv3

動画からの物体検出で有名なモデルがYOLOです

www.youtube.com

物体検出の活用として有名なのは、やはり自動運転でしょうか。一方で自動運転のすべてがディープラーニングではなく、走行ルートの決定には既存の技術が使われているケースが多いです。

note.mu

f:id:moba13:20190618104040p:plain
(上記記事から引用)

海外では、走行含めすべてディープラーニングで行おうとする研究もありますが、それは後ほど強化学習の項目で紹介します。

-顔認識
いわゆる顔パス的な機能も、主に海外で実装され始めています。

国内でも以下のような事例があります。

www.itmedia.co.jp

最近、話題になったSnapchatによる2人の顔の入れ替えなども、この技術が応用されているかと思われます。

www.youtube.com

tiktokのフィルターやスタンプにも。

- ドローンとの組み合わせ
ドローンに搭載したカメラとの相性が良く、建造物 / 太陽光パネル 等の傷点検への活用事例も多く見受けられます。密猟者など発見のための無人パトロールにも。

- 電車車両の点検

- 癌の検出

business.nikkei.com

- Adobe Sensei
Photoshopなどで有名なAdobeも、各ソフトに画像認識技術を応用した機能を提供し始めています。

www.youtube.com

 

・生成

人工知能感(AIが新しいものを作り出している感) があるのが生成の分野です。

- GAN

有名な技術が、GANです。以下のような画像生成例があります。

styleGAN

アイドル画像生成

ポケモン画像生成

アニメキャラ画像生成

ラーメン二郎画像生成

線画から背景風が画像を生成するGauGANも最近話題でした。

www.youtube.com

DeepFake(偽動画)もGAN技術の活用です。

オバマ大統領

www.youtube.com

シュワルツェネッガー → シルベスター・スタローン

www.youtube.com

- pix2pix

別のところでは、pix2pixという技術も注目されています。

線画に自動着色

www.youtube.com

白黒写真に色付け

www.youtube.com


【文章/言語】

・認識/予測

- Seq2Seq

文章分野で一番話題なのはやはり、Google翻訳の精度向上でしょう。ここではディープラーニングのSeq2Seqという技術が使われいます。

-その他、ディープラーニングによる文章解析例。

- 文章の要約
- スパムメール判定
- 対話(Microsoftのりんな など)

- word2vec

深層学習ではなく、機械学習のものですが、word2vecも言語処理技術として以前注目を集めました。文章内の単語同士の意味の近さを計算する技術です。

ロゼッタストーンなどの古代文字の文章解読の際の考えが元にあり、近くに頻出する単語の意味は近い(「東京」と「首都」は意味が近い)、という検出を機械が行います。

word2vecで分析したデータを、深層学習に使うといったデータ加工にも使われているようです。

活用事例

qiita.com

・生成

-RNN / LSTM

文章生成では「RNN」「LSTM」といったディープラーニングの技術が使われるケースが多いです。

機械学習で時系列データを扱う手法で、文章なら前の文字から次の文字を予測するといった形で使われます。しかし、文章全体の文脈を考えるといったことが出来ず、あまり精度の高いことは現状できていません。

活用例

nus-miz.hatenablog.com

- GPT-2

現状ディープラーニングの文章生成精度は微妙、書いたところですが、最新の研究では高い精度を誇るモデルも登場しています。

www.itmedia.co.jp

1行書けば、それに続く文章が自動生成されます。その精度の高さから、フェイクニュースやスパムサイトへ利用される恐れがあり、すべての技術が公開されない、という判断がされています。

 

【音声/音楽】 Hot!

音の分野も、画像と並ぶディープラーニングの大きな成果が得られている分野です。

・認識/予測

- スマートスピーカー

有名なのが、GoogleHomeやAlexaを始めとしたスマートスピーカーですね。

developers-jp.googleblog.com

- 文字起こし

音声の文字起こしもかなり精度が向上しました。

ledge.ai

勝間和代さんも執筆活動の多くを音声入力化していると聞きます。

katsumakazuyo.hatenablog.com

その他、音楽界隈でもこのような実例が出てきています。

- 演奏から、特定の楽器の音だけ抽出
- 曲から譜面を起こす(AI耳コピ)

・生成

- WaveNet

人工音声生成に関しては、WaveNetという技術が有名です。

先日、アメリカの一部地域で「Google Duplex」というレストランや美容院の音声AIによる電話予約代行サービスも開始されました。

youtu.be

他にも、電話の自動応答・迷惑電話ブロックという機能も提供され始めています。

japanese.engadget.com

- 音楽生成

音楽生成分野も、文章生成と同じくまだまだ拙いですが、たびたび精度の上がった報告がされています。

createwith.ai

Googleが提供する、新しい音を作るシンセサイザー NSynth Super

www.youtube.com

 

【強化学習】

ここまで紹介した事例とは少し変わりますが、ディープラーニングの中で大きな注目を集めるのが深層強化学習の分野です。

AI囲碁プログラムのAlphaGoが特に有名ですが、機械に行動に対する「報酬と罰」を設定し、基本的な動作方法だけを教えた上で、最も最適な行動を機械自身が模索していく方法です。

ゲームで言えば、AIが最初はコントローラーをガチャガチャ適当に動かす中で、スコアが高くなる・ゲームオーバーにならないプレイ方法を身につけていく、という学習方法です。

- DeepMind社

AlphaGoを開発したDeepMind社は現在、StarCraft IIというゲームの攻略にも挑んでいます。

「DeepMindのゲームAI「AlphaStar」、StarCraft IIでプロゲーマーに完勝。しかし条件平等化で1敗を喫す」

japanese.engadget.com

(完勝と書かれていますが、AIが超有利な環境での場合です。)

囲碁や将棋は「完全情報ゲーム」と呼ばれていて、盤面上に相手の手札も含めすべての情報が見えるゲームを指します。

一方現在はそうではない、「不完全情報ゲーム」の攻略も目指している状態です。麻雀・ポーカーといった、相手の手札を読んで戦うゲームでは、まだAIは人に勝ち切れていない、ということです。

- OpenAIGym

強化学習用の学習環境を提供しているのが、OpenAIという団体です。

gym.openai.com

主にAtari社のゲーム(インベーダーやブロック崩しなど)を、PC上で実行・プログラムで操作しやすくするツールキットを提供しています。

ブロック崩しを強化学習した例

www.youtube.com

昨年は、OpenAI Retro Contestというセガのソニックで一番ハイスコアを出すコンテストが開催され、1位はこのようなプレイをAIが行っています。

偶然にもバグを発見する動作をしていますが、強化学習は今後ゲームのデバッグ作業やゲームのバランス調整にも活用されていくことが期待されています。

- 自動運転

先に、自動運転は部分的にしかディープラーニングを活用していない、という話をしましたが、イギリスのベンチャー企業ではすべてをディープラーニングする研究が行われています。

jp.techcrunch.com

www.youtube.com

また、Amazonは「AWS DeepRacer」という機械学習にするラジコン操作キットの提供と、そのコンテストも数年行っています。

aws.amazon.com

先日の日本大会では、AI学習を始めたばかりの人が優勝したことが話題になりました。

newswitch.jp

以上!

この辺をふんわり把握しておけば、世の中でAI○○と呼ばれる商品を見た時に、それが新しい技術のものか、既存技術のものかなんとなく見分けられるはずです。

ソードアート・オンラインで学ぶVRのミライ

f:id:moba13:20190219202421j:plain

日頃、違う業界の人から振ってもらう話題は、人工知能かVR・ARか仮想通貨かチームラボの展示で8割ぐらい占められる気がする僕です、こんにちは。きっと趣味の少ないIT男子あるある。

昨年は、PSVRやOculusGOの普及もあって、普通の人もVRに興味を持つことが多かったことでしょう。

個人的にVRなお仕事に関わりはないですが、身近にそれを生業にしている人もいますし、趣味的な意味でももちろんバリバリ興味があります。

そしてVRといえば、当然話に上がるのが「ソードアート・オンライン(略称:SAO)」です。

f:id:moba13:20190219212209j:plain

SAOはライトノベルから始まり、アニメ化・映画化もしている、VRの世界を舞台とした国内累計部数1300万部・全世界累計部数2200万部を突破する超人気作品です。ジャンプ作品でもない小説タイトルなのに、国内外共に見てもナルトの約10%ほどの部数が出ている。

今、理系学生が進路や大学の専攻を決める際にも、明らかに影響を与えているような作品と言えるでしょう。スラムダンクが流行ったからみんなバスケ部に入る、みたいなことで。

ですが、「おっVRの話ですか! やっぱSAOの話も外せないですよね!」みたいなテンションで話を進めようとすると、「え?ラノベ?アニメ?オタクのやつでしょ。それよりVRってこれからどうなんですか?」といった反応が返ってきて悲しくなるので、このブログに行き場のない熱を置いておこうと思います。

正味、すでに発売されているVR端末で、現在の安価なハードウェアで再現できることは一通りやりきっている感があるので、これからVRへの幻滅期を迎えるであろう中で希望の火を絶やさぬようにするには、ファンタジーの力も必要でしょう。

SAOは現代における、SF小説や攻殻機動隊のような存在

シリコンバレーのテックな起業家達のエピソードを見る時に、SF小説の存在はかかせません。

アップルの初代MacintoshのCMは『一九八四年』が元になっただとか、アマゾンのジェフ・ベゾスは『ダイヤモンド・エイジ』から着想を得てKindleを作っただとか、Paypalの創業メンバーは全員『クリプトノミコン』が愛読書だっただとか、適当に調べるだけでも様々なエピソードが飛び出してきます。

(参考記事) イーロン・マスク、ザッカーバーグなどの世界的な起業家がオススメするSF小説はコレだ!

国内の作品でも、『攻殻機動隊』というSFアニメ作品がたびたびIT経営者のインタビューで引用されます。

この作品だけで通信技術の発達、VRやAR、AI、身体の機械化といったテーマを網羅的捉えることが可能です。

第1話 公安9課 SECTION-9

第1話 公安9課 SECTION-9

  • 発売日: 2016/08/05
  • メディア: Prime Video

フィクションとは未来に訪れるかもしれない世界を、「今」に体験する装置です。その未来は今生のうちには訪れない可能性の方が高いかもしれません。

ただ、その体験をした人が未来に向けて開発を進めてくれたからこそ、今のインターネットやスマートフォンといった技術に手元にあります。そんな作品群を軽視することは、全くもってできません。

一方で、そんな有名な作品群を今若い人達が読むのは若干の辛さがあります。

僕もSF小説は超有名どころは軽く読みましたが、新しめな作品でも出版されたのが2000年ぐらいなので、当時オンタイムで読んでいた人達とは読む温度感が違うように感じられます。

その作品のコアなメッセージは多少の時間が経過しても劣化しません。

しかし、書かれた当時との社会的な価値観の変化や、今現在の技術の普及度合いを踏まえると、どうしてもあぁ昔の作品だな、という気持ちが生じてきて世界に入り込むことができません。

それこそ小説ではなく映画ですが、初期のスターウォーズだと、未来を描くのに最新CGでなく特撮技術って何で、という気持ちに。それが当時の最先端であることはわかっていつつも、今10代の人に全力でスターウォーズ薦められるかって言うと、ちょい違うよなと。

となると、今の時代にあった作品が必要であり、その一つがソードアートオンラインだと思うのです。

基本的には、VRの世界で主人公と女の子達が共に戦いながらも、きゃっきゃっうふふする作品ではあるので、その辺は現代子供版・島耕作だと思い大人スイッチを切って読む必要があります。

一方、それと同時に今の若い世代にとっての未来技術が描かれた作品になっているのです。

そこで今回は、SAOから読み解けるVRが発達した社会の可能性であるとか、危惧すべき問題点、といったことを18巻までにある4シリーズに分けて書いていきます。

書籍は以前一度手放してしまっていたので、この記事のために、Kindleで全巻1万円以上かけて買い直して全部パラパラと読み直すという謎の努力をしました。書き終えたらちゃんとじっくり読み直したい。

そしてここからは書くのが楽な敬語省略形式でお送りします。あとめちゃくちゃネタバレするので未読の場合はご注意を。

ーーー✂ーーー

SAO アインクラッド編 1〜2巻

ソードアート・オンライン1アインクラッド (電撃文庫)

ソードアート・オンライン1アインクラッド (電撃文庫)

 【現実とはなにか】

今作の始まりは「フルダイブシステム」と呼ばれる、現在のような視覚と聴覚だけのVRでなく、五感全体で違う世界を体験できるVRのオープンワールドゲームが発売されるところから始まる。

五感による体験も大事ながら、入力のインターフェースが理想的。今のゲームではVRの操作はどうやったってコントローラーが必要。しかし作中のゲームでは、脳波による身体操作が可能に。

つまり、VR上の身体を、現実の身体と同じように操作できる。

当然VR上の身体の方が高機能だし、さらに身体動作にコンピュータによる動作のアシストを介在させることも可能。

ゲーム上で現実さながら肉体を感じながらも、さらにプロアスリートばりの身体動作を再現できることになる。

映像の解像度が現実並みになるとか、触覚も再現されるとかよりも、この入力インターフェイスが、一番の現実感を得るポイントかもしれない。

そんな全ゲーマーの夢のような世界なので、ゲーム開始と同時に数多くのユーザーがログイン。

しかし、そこで大きな事件が発生する。それが、現実世界へのログアウト不可。VRの世界に閉じ込められてしまうのである。

フルダイブシステムでは、現実の五感をすべてカットしVR上の五感に意識をスイッチすることなる。今のゲームのように、画面を見ているのでなく、夢の中でCGで作られた空間に入るようなもの。

ゲーム開発者の意図的な操作により、ゲームにログインしているプレイヤー全員がVRという夢から覚めなくなってしまう。現実に戻る条件はただ一つ、ゲームを全クリアすること。

それだけならまだ良かったが、さらに一つ最悪の制約が加えられる。

それがゲームオーバー=現実での死亡。ゲームオーバーになると、VRのヘッドギアを介して脳を電気で焼き切ることによって死亡してしまう。

プレイヤー達は最新VRの世界という夢の世界に入ってすぐに、現実のために文字通り命をかけて戦うという試練が課せられることになってしまった。

前記のとおり、この試練はバグにより生まれたのではない。あくまでゲーム製作者が意図的に仕組んだことである。ではその製作者の意図とは何だったのであろうか。

それを一言にするのであれば「現実とは何か」という問いにあると思う。

「現実はゲームと違ってリセットボタンが押せないんだよ」なんて語られることはずっと前からあるけれど、リセットボタンの押せないゲームが作られてしまった。

そこでは、解像度がまだ現実には及ばないとはいえ、五感が再現され、現実の肉体と同じあるいはそれ以上に操作できる。

そんな世界の中で生活する時、現実が現実たる条件とは何か?という疑問が出てくる。

それは例えば以下のようなものかもしれない。

・肉親や友人といった人間関係
・子孫を残すための生殖活動
・老いと死

親そして子といった根源の生命的なものは、この未来世界であれバーチャルに再現することはできない。

一方で、血の繋がらない人間関係、そして死というのは、バーチャルで再現できる。

人間関係は、ゲームクリアに年単位かかる舞台を用意し、クリアには協力が必要不可欠となれば自然と発生する。

そして死は(倫理的な話はさておき)簡単に実装できる。

ゲーム開発者は「死」という機能を組み込むことで、VRの世界をただの娯楽ではない第二の現実としようとした。

VRの空間をいかに現実より便利にしても、多くの人間はそこを現実とは思えない。

しかし、死という苦痛を加えるとそこが万人にとって現実と化すのであれば、それは何とも皮肉な話になる。

現実が現実たる大きな条件の一つは苦痛があること、ということになるからだ。

もちろんプレイヤー達はもう一つの「現実」の条件である、肉親達との再会といった目的のため、VRの世界には入り浸らずに命をかけてゲームクリアを望んでいく。

しかし、その試練の苦しみから、よりVRの世界を現実と感じていくことになる。

・・・

とまぁ、「人の身体の暖かみをわかっていない!」「命への想像力を失っている!」とお叱りを受けそうなことを書いているわけだけど、バーチャルの世界の解像度が現実に遠く及ばない内に、「現実」とは何かを考えておくのは大事なことだよね、というお話。

SFの2時間映画だと、現実は大変でバーチャル世界はキラキラしていたけれど、やっぱり一番大切なのは現実の愛だよね!といったところで話が終わるのだけど、さらにもう一歩踏み込んだことを考えてみるのもたまには必要。

「やっぱり現実が一番!」という考えは、現代だけの考え方かもしれない。未来の話をする時に現在の価値観だけで、すべてを解釈可能だと思う方が不自然になる。

現実逃避でなく現”在”逃避し未来を思考するのがファンタジーの役割だ。

ーーー✂ーーー

SAO フェアリダンス編 3〜4巻

ソードアート・オンライン〈3〉フェアリィ・ダンス (電撃文庫)

ソードアート・オンライン〈3〉フェアリィ・ダンス (電撃文庫)

 【現実が2つになった時の弊害】

前シリーズの試練を2年の月日をかけて乗り越え、現実に戻った主人公だが、まだ解決しきれない問題を抱え、また別のフルダイブゲームにログインしていくことになる。

しかし、当然家族達はその行為に難色を示す。現実に残されてた人達からすれば、2年間も寝たきりになったようにしか見えない主人公が、まだその世界に接しようとするのだから。

現代でもすでに、最低限の活動以外は「VRの世界で生きていきたい」と半ば本気で言う人はいる。そして、そう思う人が増えた時、様々な社会的な問題が起きるのは簡単に想像できる。

今作中ではその一つの象徴的な出来事として、VR空間上で主人公と彼の妹が、現実での関係性を認識しない状態で出会い、そこで恋愛感情を覚える、という描写がある。

アニメ的な表現として、主人公に恋心持つ可愛い妹の存在、というのはあるある表現ではある。

ただ、現実世界では普通に兄弟をしていたのに、VR上で改めて出会いそこで恋し、その後に現実での繋がりを知ってしまい強く悲しみを感じる、というのはパッと見はアニメ的表現ながら、とてもSF的な描写だと思う。

他にも、2年間も寝たきりであったプレイヤー達の、肉体的衰弱を補うためのリハビリであったり、学校への復帰をどうするのか、心理的カウンセリングといった、大人達からの「VRなんて甘い幻想は忘れて、現実にちゃんと適応しなさい。」というメッセージが作中で繰り返し発せられる。

それでもVRの中で得た体験や関係性もまたもう一つの現実であると捉える主人公達の葛藤は、将来的に多くの人間が戦うことになる問題かもしれない。

・・・

また、今シリーズ中ではゲーム中で死んでも現実で死ぬことはない。「ゲーム上での死=現実での死」という設定は、シリーズごとにonとoffが都度切り替わる。

これは、現実のような苦痛が無くなったVRの世界も、もう一つの現実と思うことが可能か、という問いだと思う。

前シリーズでは死という苦痛が無ければ、VRをもう一つの世界を現実と感じることが出来なかった。

しかし、その試練を乗り越えたプレイヤー達であれば、そんなネガティブな動機無く、新しい世界をもう一つの現実と感じられるのでは?という、全シリーズ通しての作者の長く続く挑戦の始まりになる。

今作の主人公達は、人類で一番最初のVRネイティブになろうとしているが、その世界でゲームをしているだけであれば、周りの大人達に現実を見ろ、と言われるのは必然。

でも重要なのは、今のデジタルネイティブ世代と同様、テクノロジーの存在を当たり前の現実と捉えることだ。

仕事に使えるだとか、お金になる、役立つといった事柄は、その後に続く些細なものに過ぎない。

ーーー✂ーーー

SAO ファントムバレッド編 5〜6巻

ソードアート・オンライン〈5〉ファントム・バレット (電撃文庫)

ソードアート・オンライン〈5〉ファントム・バレット (電撃文庫)

 【PTSDとジェンダー】

今シリーズでは、銃器で戦い多くのプロプレイヤーも存在するゲームが舞台となる。

このゲームも通常のVRゲームであり、当然ゲームオーバーになったところで現実に死ぬ人はない。しかし、何件か立て続けにゲームで死亡したプレイヤーが現実でも死ぬ事件が発生する。

その事件の究明のため、主人公がこのゲームを新たに始めるところからストーリーは始まる。

そこで新たに登場するヒロインは、昔現実世界で巻き込まれた事件がきっかけで銃に対して強いトラウマを持っていた。

しかしながらゲームとはいえ、そんなトラウマの塊のような世界に彼女はなぜ触れるのだろうか。そこにはどうにか怖れに立ち向かい、克服しようという姿勢が見えてくる。

実は、現在でももう似たような話で、VRを活用したPTSDの治療が試験的に始まっている。

よく例に上がるのが、9.11の被害者達の治療だ。カウンセラーと共に、当時の事故現場を再現した映像をVRで追体験をする。

そこで生じる、強い罪悪感といったトラウマにつながる感情を一つ一つ書き換えていく治療を行う。それには、一定の効果が認められているらしい。

ある意味で、擬似的に過去へ戻るタイムスリップだ。

反対に、擬似的に未来へ進むタイムスリップの活用例としては、アスリートのイメトレへの活用があげられる。

よく成功したイメージをすることで、パフォーマンスが上がると言われるが、実際にVRで成功した映像を繰り返し見ることで、一定のパフォーマンス向上が認められているいう。

VRというと、空間的なアプローチにばかり目がいきがちだが、すでに時間的なアプローチも進んでいることはとても興味深い。

・・・

また、このゲーム中では主人公が新たにアバターを作成する際、現実の彼の女顔をAIが分析し自動で生成した結果、誰もが彼を女性と見間違うという一幕がある。

これは昨今のジェンダー問題への問いかけといった要素はほぼなく、どちらかというと「らんま1/2」辺りから始まる、性別が変わるアニメあるあるのSF版表現といったニュアンスが強い。

なので、これを読んだ若い読者が何か強い印象を覚えることは少ないだろうが、逆にある意味それぐらいライトに、肉体的な性別はパラメータの一つに過ぎないと捉えるきっかけにもなるように思う。

今のインターネットは現実のパラメータを公開しながら交流することが多いので、画面の向こうの相手の性別を把握していることはだいぶ当たり前になった。

しかし、少し前までの匿名なインターネットの場合、当然のように相手の性別はわからなかったし、(少なくとも僕は)大して気にもしていなかった。

当時、同級生がMMOゲーム内で、ネカマ・ネナベと呼ばれる、異なる性別のキャラクターを作り、現実の繋がりが無い相手にはその性で接する行為もしていたけれど、特に嫌悪感無く普通に見ていた。

VTuberとして男性が美少女を演じることの先駆けみたいなものだったと思う。

それが現在の、自分の性の捉え方に繋がっているのではないかと、今改めて振り返ると感じるところがある。

バーチャルでは「肉体 > 精神」でなく「精神 > 肉体」の形に自然となる。

昨今、カメラアプリで顔の造形を綺麗にしSNSへ投稿するのも、肉体はある程度ベースにしつつも、精神的にどんな形でありたいかの要素が強い。もはやメイクどころか整形レベルでの肉体的な変化が生じているし。

現実の肉体では、整形はまだだいぶ禁忌感があるけれど、バーチャルの肉体だとみんなめちゃめちゃカジュアルに整形しているのは、個人的にはだいぶ面白いところ。

現実で会う顔と、SNSで会う顔が割と違うのに、それをみんな普通に受け入れているのが不思議。

それならもうアプリで作った顔と同じになるよう、現実で整形しても何も変わらないのでは?と個人的には思うのだけど、それは性の捉え方の話とだいぶ近いのでないか思える。

ーーー✂ーーー

SAO マザーズロザリオ編 7巻

ソードアート・オンライン7 マザーズ・ロザリオ (電撃文庫)

ソードアート・オンライン7 マザーズ・ロザリオ (電撃文庫)

 【VRと医療】

医療という、人の命にダイレクトに繋がるテーマをゲームという文脈で語るのは、(初っ端から人の死を扱う今作ではあるけれど)中々に危ない。

どうしても、読者が生命を軽く見積もることに繋がるのでは?という懸念が出てくる。

しかしながらも著者はそれを認識した上で、できる限り丁寧にこの医療というテーマに踏み込んだように感じられる。

今シリーズでは、フルダイブシステムをただのゲーム用技術ではなく、医療的な活用をする描写がたびたび登場する。

フルダイブシステムは、肉体の五感をオフにして仮想の五感に意識を移す技術なので、それを応用すれば、麻酔なく患者の痛覚をカットできるという具合に。よく映画に出てくるコールドスリープのようだ。

痛覚も肉体の電気信号の一つに過ぎない、と考えれば将来的にありえないことはないよな、と思わされる。

今シリーズは、そんな医療システムの恩恵を受け、VR空間で生きる人物が登場する。

出生時から難病を抱え、その病状の悪化により3年間寝たきりとなった少女だ。

これまでの医療であればその治療の間、多くの肉体的苦痛に苛まれ、当然人との交流も断絶される。その負担が、VR技術により少なからず軽減される、というストーリーが展開される。

人の痛みをネタにしてテクノロジーの優位性を露骨にアピールするようなことはあまり良くないかもしれないけれど、事実として救われる人がいるのであれば救った方が良い。

肉体的にも精神的にも不自由な現実と、自由な仮想現実があった時、人はどちらに救われるのだろうか。

少なくとも、こんな辛い状態に身を置かれた人を目の前にした時、「VRなんてニセモノの世界に過ぎない。もっと現実としっかり向き合うべきだ!」なんて言葉を投げつけるひとはさすがにいないはず。

これから先、VR問わずテクノロジーが発展していくと、「大切なのは、人と人と触れ合う暖かみ」という言葉も増えてくるだろうし、それは実際にとても大切なものだ。

ただ、人は暖かいものでテクノロジーは冷たいもの、という謎の二項対立は溶かしていった方が良い。冷たい人もいるし、テクノロジーを通じても暖かさは感じられる。

ーーー✂ーーー

(8巻のアーリーアンドレイト編は短編集なため省略)

SAO アリシゼーション編 9〜18巻

ソードアート・オンライン (9) アリシゼーション・ビギニング (電撃文庫)

ソードアート・オンライン (9) アリシゼーション・ビギニング (電撃文庫)

 【魂とAI】

本作で人気なシリーズであり、長編なシリーズであり、風呂敷を広げまくっているのが今シリーズ。

元々、未来的なVR技術を描いてきた本作だが、このシリーズではさらに一歩技術が進んだ舞台となる。

ざっくり一行で書くと、量子脳理論によりVRの解像度が限りなく現実と等しくなり、その技術の応用で人のように振る舞うAIが登場し、そのAIを搭載したロボットも登場し、各国はその利権を握るためサイバー戦争を行う、という全部乗せ感に溢れている。

一つの技術の登場で、すべてのテクノロジーが一気に発展するというのは、今作中でのまさにシンギュラリティを迎えた世界を描いたシリーズと言える。

◼︎VRの進化

まず今シリーズでは、VRの世界をCGで制作することを止める。

現代でも、8Kだ5Gだなんだと言って、解像度や通信速度が向上する近未来は見えているけれど、それはCGを制作するコストがガンガン上がることにも繋がる。ゲーム業界では何年も前から、そのコスト問題に言及している。

じゃあどうしたら良いんだ、という問題に対して今シリーズ中での次世代型技術「ソウル・トランスレーター」では、脳に直接五感のイメージを書き込むというアプローチを行う。

作中でもその説明に対して、全員が「は?何言ってるの?」という反応をする。笑

簡単に概要だけ理解する方便として、意図的に見せたい夢を見せる技術という説明がされるので、基本的にその理解で良いだろう。

夢が夢とわかる状態を明晰夢と言うけれど、意図的に明晰夢を作り出して、さらに夢同士をインターネットで繋ぐ技術 is ヤバい。

その技術的な原理は全くわからないけれど、VRの解像度を現実と同じにし、さらに視覚と聴覚だけでなく、触覚・味覚・嗅覚も再現しようとする時、現在の技術の延長では不可能な気は確かにする。

なので、ブレイクスルーとして全く違うアプローチをする技術が生まれる、というのはぶっ飛びつつも、妥当な筋書きに思える。

◼︎時間の加速化、肉体的寿命の超越

CGで作られた世界で無く、夢の中に作られた世界を見ることになった副産物として、時間加速化という概念も本シリーズでは生まれる。

うたた寝して見る夢の中の時間の速度と、現実での時間の速度は必ずしも連動しない。走馬灯も現実の何倍もの時間速度でイメージを見ると言う。

それであれば夢によって作られたVRの世界も、現実の何倍ものスピードにすることは確かに可能なはずだ。ドラゴンボールでいう「精神と時の部屋」のVR版の爆誕である。

しかも今シリーズ中では、現実の3倍の速度どころか、1000倍まで安定運用、安全性を無視すれば5000倍まで時間加速が可能になる。

現実世界で1日を送る間に、VR上では5000日つまり13年以上を送ることが可能になる。義務教育が1日で余裕で終わってしまう。

脳にも寿命があるから、擬似不老不死にはならないという設定にとりあえずなっているけれど、肉体的に老いることなく寿命が倍になる世界。ヤバい。

映画マトリックスでは、戦闘技術を一瞬で体にインストールする描写もあったけれど、それも力技(一瞬に見せかけて、実際は夢の世界でめちゃ鍛錬する)で再現可能になる。

VRというと、空間的な制限からの解放とだけ思いがちだけど、その技術が行き着く先では時間的な制限からも解放される、という世界観はとても面白い。

◼︎AIの進化

夢を書き込む技術、と書いてきたけれど、その対象は当然「脳」だ。つまり脳の情報を読み込み、そして書き込む技術である。

であれば当然、脳のコピーも可能だ。すると登場するのが、人間の脳のデータを元にした人工知能である。ヤバい(3回目)。

人の脳を技術的に模倣できれば、AIの性能も飛躍的に向上するのでは?という話は、現代でもたびたび話されるけれど、まんまそれを行なっている。

一応、脳のコピーは出来ても、人格のコピーは不具合が生じるということで、記憶をフォーマットし赤ちゃん状態にし、VR上で人間の身体を与え教育させるという試みが今シリーズでは行われる。

AIに、人格のフレームと人間と同様の肉体を与え、0歳から教育するというとかなり時間がかかる試みだが、当然ここでは先に書いたとおり時間の高速化が行える。

5000倍なら、1000年分の学習という名の世代交代が、3ヶ月もせず完了する。

まさに「この世界は仮想現実である」ということを、この世界の人間側が実装している形だ。

そしてある程度、人工知能の学習が済んだ世界に、人間がログインしたらどうなるのだろうか、ということを主人公はそのモニターとして検証していくことになる。

現実世界で、どれだけ高度な人工知能が生まれても、ペッパー君みたいなロボットボディであれば、それを人間と思うことはない気がする。

でもVR上であれば、身体性は完全に人間と同一である。そして脳も人と同様の構造を機械的に再現したものを搭載している。

それはもはやほぼ人間と言っても良いのかもしれない。では、そこに魂は宿っているのだろうか。

◼︎AIの人権と戦争

これだけのハイテクノロジーなのだから、当然開発費はとんでもない額になっているだろう。

この世界では、その研究開発の名目はAIの戦争活用、ということになっている。急にディストピア。

VRの擬似的な世界で学習をしたAIをロボットなりに搭載して戦争地帯に投入すれば、人間の兵隊が死ぬことは無くなるだろう、ということだ。

作中の現実世界でそのような事態にはならないが、VR世界では戦争が行われことになる。

AIの学習データを奪い合うために、各国の人間がログインし争うのだ。しかも、日本 vs アメリカ・中国・韓国の連合軍という色々問題を感じる構図で。

この作品、ハリウッド実写映画化計画があったり、中国や韓国でも売れているのに、その国を敵国として描写するのはめちゃ攻めてるな、と思うところ。

ただIT利権を争う昨今の情勢を見ると、現実にAIが発展することを考える際に、見て見ぬフリをしてはいけない部分なのかもしれない。

そんな世界の中で、主人公達はそのAIを守るために戦う。日本側として海外陣営と戦ってはいるが、同時に日本の大人に対しても、AIをデータでなく人間として扱うよう訴え続けることになる。

大人は「10万人のAI人格データが死ぬことよりも、君1人が死ぬ方が問題だ。」と語る。

正直その大人に無茶苦茶同意するのだけど、主人公達はAIの命も人間の命も等価であると本心から思っている。

今、僕らの世界はある意味で、機械を奴隷にすることで成り立っている。

従業員をブラック企業的に扱うことは問題だけど、機械に24時間労働させることは何の問題にもならない。

でも仮に、その機械が人格を持った時、彼らを人間では無く機械だからと奴隷扱いして良いのか、という話だ。

テーマとしてはSFあるあるなのだけど、昔は遥か未来の与太話だったことが、現代で考えると、生きている内には無いかもしれないけど、今の延長線上にある議題に感じられる。

ーーー✂ーーー

そしてアクセル・ワールドへ

ということで、18巻までのSAOの話は以上。

本作はまだ進行中で、現行でも21巻まで出版されている。ぜひ手にとって読んでみて欲しい。

で、そろそろまとめをと思いきや、実はSAOの作者は同時並行でもう一つ作品を書いている。それが「アクセル・ワールド」だ。

部数としてはSAOの1/4程度だけど、エンジニア層だとこちらの作品の方が好きという人が身の回りには多い。

SAOは2022年以降のVR世界を描いているが、アクセル・ワールドはさらにその先2046年以降の世界を舞台としている。

SAOがVRの導入期だとしたら、そこで描かれた新技術が完全に浸透した世界をアクセル・ワールドでは見ることが出来る。

ここではその概要をざっくりしたものに留めておくけれど、ぜひセットで読みたい作品だ。

アクセル・ワールド〈1〉黒雪姫の帰還 (電撃文庫)

アクセル・ワールド〈1〉黒雪姫の帰還 (電撃文庫)

【現実とVRとARの境界の消滅】

SAOとアクセル・ワールドの違いを挙げるとしたらそれは、SAOの時代においてVRは「別世界」だったのが、アクセル・ワールドでは「並行世界」的になっているということだ。

インターネットも昔は現実とは別世界だったのが、SNSの発展で現実とある程度連動した世界になりつつあるのと近しいかもしれない。

今現在も、VRとARという言葉に合わせて「MR (Mixed Reality)」という言葉があるが、まさにMRな世界が実装された世の中になっている。

ARというと「ポケモンGo」のように、現実の世界の上にバーチャルを重ねているもの、とみんな理解していると思うけれど、MRでは現実もがバーチャルとなる。

今作中ではその実装方法として、街中全体に360°カメラが設置され、その撮影データを瞬時にバーチャルに変換し、人々はバーチャル化された現実空間を見る、という世界で生きている。

すると世界全体がディスプレイとなる。そして物質もがプログラミングの対象となる。

そうなると現実世界でも、物体を宙に浮かせたり、壁を透視して向こうにある物に見たり、さらに何かしらの形でデータを質量に変換する方法が生まれていれば(3Dプリンター的技術が何段階か発展していれば)、空中に描いた椅子が具現化してそれに座ることが可能となる。

もしディズニーリゾートでMRが実装されれば、空に妖精が飛び回り彼らとは握手ができ、建物は空中に浮きながら光輝き、霧の中を歩いていたら突然目の前に大きな山が地面から生えてくる、なんて世界になると思う。

こんな世界となる時、それを「VRを現実にオーバーレイさせる」と表現するのも、「ARの範囲を拡張する」と表現するのもふさわしくないので、MRという別概念となるのは自然のことだと思う。

MRが実装されたこの作中の世界においてもVR世界は存在するが、それはMRは現実世界の延長線上という制約上、どうしても出来ないことを行う世界のルールを変えた空間、といった立ち位置になっている。例えば、動き回っても絶対にケガをしない空間だとか。

作者が、最初SAOではVRを別世界として描いていたのが、その未来にあるアクセル・ワールドでは、VRを現実に溶け込ませて描いているのはとても面白い。

実はSAOの最初の舞台で、プレイヤー達がVRゲーム上に閉じ込められる時、彼らはゲーム上で作った別の顔(いわゆるアバター)がリセットされ、現実と同じ顔に戻されプレイをするという描写がある。

これは単に、VRの世界に現実味を持たせるための手段とも取れるが、この段階ですでに作者、そしてSAOのゲーム開発者は、最終的に現実とVRの世界がリンクする世界を着地点とし、この演出をしたのでないか、とも思える。 

ーーー✂ーーー

終わりに

今の世の中で、未来を語るのは割と困難だ。

有名な人が、Twitterで未来について輝かしい未来について語ろうとすると、「ちゃんと現実を見てください。そんなこと言っても目の前にこんな問題があるんですよ。」という返答が録音音声のようにループで返ってくる。まじデッドロック。

現実に閉塞感がある人は、未来の人に嫉妬したくなるのだろうし、即物的な人は、未来よりも目の前の企業の株価の方が大事だろう。

「起業家がTwitterでポエムを書き始めたらその会社はヤバい。」(問題から目をそらして現実逃避している、の意)なんて揶揄されるけれど、一方で現実的過ぎてもいけない。

「どれだけテクノロジーが発展しても、結局おじさん達の思惑・癒着があるから全く現実的ではない。」という意見こそが最もおじさん的だったりする。

理想論だけで未来の技術を語るのは確かにポエムな面もありつつ、未来のビジョンを考える時に「でもそこは◯◯社の利権があるから、それを考慮して…」と但し書きを下に連ねるのはかなりシュール。

非現実を現実にする話をする時に、現実的に考えてと言っている人の方がおかしい。

それでも、こんな現代に生きる僕らが「現実的に考えて」を捨てて未来を考えるのは難しい。

そんな時には、ファンタジーという現実を捨てた思考が可能な装置はとても便利だ。脳のロックを外すことが出来る。

大人になると、役に立つことだけを学ばなければいけないという強迫観念が出てくる。英会話だとかプログラミングだとか。

それはそれで当然土台として必要だ。大人がアニメやYouTubeばかり見ていても困る。笑

ただそんな現実的なスキルを生かすのは、一見役に立たないファンタジーだったりする。

という、大人がゲームやアニメを見る都合の良い言い訳を本記事の〆としたい✌︎('ω'✌︎ )

ブロックチェーンゲーム「My Crypto Heros(マイクリ)」を1ヶ月ぐらいプレイしての雑感と良い点・悪い点

f:id:moba13:20190121175643p:plain

仮想通貨、イーサリアムの中では「Dappsゲーム」というカテゴリがあります。

基本、昔懐かしのブラウザゲーなのですが、そのインフラが仮想通貨のネットワーク上に乗っかっているものです。

その中で今、一番人気なゲームが「マイクリプトヒーローズ(通称:マイクリ)」です。DAU(1日のアクティブユーザー数)が5000人を超え、当然ソーシャルゲーム比べればまだまだだけど、中々規模感出てきたねという数字になってきました。

ソーシャルゲーム会社gumiの国光さんも最近こんなツイートをされていましたね。

ゲームとして割と良く出来ているので、僕もぽちぽちやっていて、前回のゲーム内イベントでは150位ぐらいの中堅?です。

業界関係者ではないですし、Dappsゲーがこれからくるぞ!みたいな発言はしないですが、一ゲーマーとして、改めて「ゲーム」について考える機会だったので、技術的な話よりは、ゲーム的目線でつらつらっと良い面・悪い面を書いていきます。

ーーー✂ーーー

時間を資産にできる

マイクリが正月にテレビCMを打った時にプッシュしたポイントがここでした。

Dappsゲームでは、キャラクターのデータを自分の資産として保有でき、それを売買できます。なので、ゲームに飽きたらキャラをお金にできるよ!って話です。

Good

YouTuberやe-Sportsプレイヤーといった特定の立場で無くとも、ゲームで生活できるようになるかも!

Bad

既存のゲームでもRMT(リアルマネートレード)という形で、ゲームのキャラクターが売れるタイトルはあった。今でもグレーゾーンだけど、ソーシャルゲームのアカウントをヤフオクで売っている、なんて状態は存在する。

それこそMMOゲームでは2000年以前に誕生したウルティマオンラインのころから、RMTはあった。

その換金性から、BOTと呼ばれる自動プログラムを回すプレイヤーが生まれたり、課金でいきなり最強になるプレイヤーが生まれることで難易度のインフレ化が進み、ゲームバランスが崩れ、自然にRMTは禁止になっていった。

ーーー✂ーーー

不正対策はしやすい、かも

Good

ゲームキャラ・アイテムの資産性が上がると、不正が起きやすくなるのは確かで、初期ソーシャルゲーム時代もGREEの「探検ドリランド」などでトレード機能の増殖バグを悪用し、お金を稼ぐ人がいた。

ただイーサリアム上でキャラが管理されるDappsゲーでは、こういったトレード上の不正を行うのは基本的に無理だと思われる。

いま多くのソーシャルゲームはトレード機能を備えていないのは、詐欺やRMTへの懸念ももちろん、バグなくトレード機能を作る困難さが大きく影響していそう。その機能がコスト少なく作れるのは良い。

ーーー✂ーーー

開発会社に手数料少なくお金が入る

Good

iOSやAndroidのゲームでは課金時にショバ代が30%持っていかれる中、イーサリアム決済でクレジットカード決済の手数料よりも安く開発会社にお金が送れるのは良い。

最近人気ゲーム「Fortnite」も配信する、ゲームプラットフォーム「Epic Games」が手数料を12%に改定することがニュースになったけれど、仮想通貨関係なく手数料を考え直す流れは続きそう。

japanese.engadget.com

最近、ソーシャルゲーム会社もHTML5ベースのゲームを作っているが、これは同様の問題意識だと思われる。可愛い水着キャラをガンガン出したいだけかもしれないけれど。

enza.fun

Bad

手数料の少ないゲームプラットフォームを使ったり、クレジットカード決済で良くない?って話になるケースは多そう。

ーーー✂ーーー

ユーザーが慣れる・UIが進化する

Good

仮想通貨関係なく「このゲーム面白いよ!」と評判が広がれば、自然と仮想通貨を使うきっかけになる。合わせて一般ユーザーが使いやすいよう、決済画面の使いやすさを向上させる良いきっかけになる。

今年の頭にNHKで放送された「平成ネット史」で、i-modeはエンタメコンテンツによって普及した、という話が出たけれど、それに近い部分はありそう。

時間をかけてプレイしたキャラやアイテムを売る、というのもある種のマイニング体験。

ーーー✂ーーー

ゲームタイトルのサービス終了時、キャラを保持できる

Good

ここ数年たびたび話題に上がることだけど、ソーシャルゲームのサービスが終了したら、強制的にキャラが失われることになる。

そのキャラデータをイーサリアム上に保持していれば、他のゲームタイトルにキャラをコンバートする、なんてことが出来るのかもしれない。SAOでも別ゲームにキャラを持っていくなんて描写があったように。

Bad

これをユーザーが求めているかは謎。

現状でも、サービスが終了しないにしても、そのゲームに飽きて別のゲームに移ったら、またレベル1からゲームを始めるのは自然。

モンハンで、新しいナンバリングのタイトルにデータを引き継ぎできるといった、同一シリーズ内でのデータ引き継ぎはあるにせよ、その程度であればあえてブロックチェーンで、とはならない。

ーーー✂ーーー

宣伝効果

Good

運営会社からすれば、ユーザーが自分のキャラの希少価値を上げるために、他のプレイヤーを自発的に勧誘してくれるのは嬉しい。

Bad

その宣伝行為の大きな動機がお金のためになってしまうと、過度に盛って、悪い点を隠すことにも繋がる恐れがある。というかすでにそういう傾向はあり、そこは気持ち悪い。仮想通貨ブロガーといった存在と同様。

ーーー✂ーーー

最後に
なぜソーシャルゲームでRMTが成立しないのか

先に書いたとおり、お金でゲーム内の強さが購入できる問題点は「1.BOTやバグを利用した不正行為の横行」と「2.インフレ化によるゲームバランスの崩壊」です。

1. ソーシャルゲームの多くの不正はデジタルゆえの弊害です。現実の世界では起きないものが多いでしょう。それがブロックチェーン技術により現実と同様不正が起きづらくなったら、それは一つの進歩かもしれません。

・・・

2.ソーシャルゲームで強さをお金を買えると、ゲームバランスは崩壊します。

しかし一方で遊戯王やMTGといったカードゲームではある種のRMTが成立(カードパックを購入して、いらないけど強いカードを引いたらそれをカードショップに売って、自分のデッキにあった別の強いカードを購入するのは普通)しています。

それでもゲームバランスが保てるのは、なぜでしょうか。

それは「かけた時間」が売買可能か、にあると思います。

ーーー
カードゲーム・・
キャラは売れるが、プレイヤースキル(かけた時間)は売れない。

ソーシャルゲーム・・
キャラも売れるし、キャラのレベル(かけた時間)も売れる。
ーーー

という構造の違いです。(マイクリの否定でなく、一般論として)

ただ、じゃあプレイヤースキルを大事にしたゲームを作ろう!というのは安易でたぶん成功しません。ソーシャルゲームが日本で万人に受けた理由として、「ゲームが下手でも、時間をかければレベルが上がって勝てるようになる。」というのは大きいでしょう。

だから流行るソーシャルゲームのために、やっぱり「レベル」は必要そうです。

でも繰り返しになりますが、「レベル」という時間の概念があるゲームで、お金でそのレベル(時間)を買えるようにするのは、インフレに繋がりやすくゲームを成立させるのが中々困難に感じます。

また一方で「プレイヤースキル」を求める実力主義のゲームでは、そもそも老若男女に流行らせることが難しそうです。そんなジレンマ。

 

これぐらい各ゲーム開発会社は当然わかっているでしょうし、その辺のバランスが整ったDappsゲームが登場するとしたらそれは素晴らしいなーと思い、この界隈をウォッチしているのでした。