238
. 人工知能とはなにか

人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

1. 人工知能とはなにか

Page 2: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

はじめに

❖本コースでは、『スマートフォンにおける人工知能』について学習する

➢ 世間で今注目されている人工知能技術は、本コースで学ぶ内容よりもさらに高度な学習・研

究が必要ですが、近年では、その研究結果を中身の詳細を知らずとも、しかも無料で利用可

能となっている

➢ 画像認識や音声認識などが該当する

➢ 今や当たり前となったこれらの技術は、ここ数年で急速に使われるようになった技術であり、

まだまだ研究され、進歩する余地がある

❖本コースを通じて、研究結果の利用方法や、それらの研究に携わっていくた

めの基本的な考え方、プログラミングの仕方などを学習する

Page 3: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

人工知能といわれて何をイメージするか?

❖アンドロイド(ロボットのほう)

人工知能のイメージ

❖実際(今の)の人工知能

なんかロボットの画像たとえばアイロボット

(映画)

スマートフォンや自動車(アイロボット社ルンバ)

Page 4: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖強いA.I.

➢ 精神の宿るA.I.

全ての認知機能を具備

❖弱いA.I.(本講座で教えるのはコチラ)

➢ 全ての認知機能は具備しておらず、 特定分野に特化したA.I.

➢ 画像解析、音声認識などに特化

※ A.I. : Aritifical Intelligent、人工知能を指す

強いA.I.と弱いA.I.

Page 5: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

人工知能

ロボットと人工知能の果たす役割

パターン認識 推論

行動

学習

知覚

人工知能は、必ずしも人間と同じことができるわけではないでは、今までの技術と何が違うのか?人間の持つパターン認識・学習・推論と言った機能をもつ

Page 6: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

掃除

部屋の形やゴミの溜まりやすい所を覚え、推測する

センサー情報

お掃除ロボットの場合

❖お掃除ロボットの場合、どのよう

な学習の機能を備えているか?

➢ はじめての部屋であっても掃除してく

れる

➢ すぐれた学習機能

パターン認識

推論

行動

学習

知覚

センサーや掃除機といった既存の製品にはない魅力的な製品に繋がる

Page 7: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖人工知能は、既に私達の生活の中に浸透

❖2025年には、今の30倍の市場が予期

人工知能の作る未来

3兆円 23兆円 86兆円

Page 8: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

人工知能の活躍と変遷

過去何回か人工知能にフォーカス

❖第一次人工知能ブーム(1950年)

➢ 理論

❖第二次人工知能ブーム(1980年台)

➢ 実践(ゲームなどが中心であり、実世界の役に立たず)

➢ エキスパートシステム、ゲームなど

❖第三次人工知能ブーム(2000年台)

➢ ビッグデータやクラウドコンピューティングなどの豊富なリソースにより

➢ 自然言語や画像解析等の分野で活用

Page 9: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

第三次人工知能ブームの背景

人工知能ブームの背景

❖Androidの流布により、ユーザーが気軽にサービスを利用可能に

❖豊富なコンピューティングリソース

❖画期的なアルゴリズム『ディープラーニング(深層学習)』の発見

ディープラーニングにより

❖画像認識の精度向上:70%→95%

❖音声認識の誤認識率:23%→8%

Page 10: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

機械学習のオープンソースライブラリ

機械学習のライブラリを以下に示す

ライブラリ名 アルゴリズム 開発元 利用可能な言語 特徴

TensorFlow ディープラーニング Google Inc. C++/python ディープラーニング汎用のライブラリ画像教育データの水増し機能なども内包Cloud MLでは、

Chainer ディープラーニング Preferred Network python ディープラーニング汎用のライブラリ日本初のライブラリ、コーディングのしやすさを重視

Caffe ディープラーニング Barkley Vision and

Learning Center

python / C++ /

MATLABディープラーニングを用いた画像認識に特化したライブラリWindoiwsでも動作

Theano ディープラーニング Montreal University python ディープラーニング汎用のライブラリTheanoをベースにしたライブラリが多数開発Windowsでも動作

Scikit-learn クラスタリング、SVM,TF-IDF

David Cournapeau python 様々なアルゴリズムを切り替えて利用可能

Page 11: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

1章まとめ

❖人工知能の背景

➢ 弱いAIが既に製品化

■ ゲームなどの分野で大きな成功を収める

■ 自動掃除機と言ったプロダクトが市場にでる

➢ Androidを搭載したスマートフォンの流布により、サービスが利用しやすく

➢ 少子化の対策として期待が集まる

❖人工知能の特性

➢ 知能・知性については明確な定義がない

➢ 学習・認識・推論と言った機能を具備

Page 12: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

2. Androidにおける人工知能

Page 13: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

本章で学ぶ内容

❖Androidという組み込み向けのOSが出てきたことにより、

生活はより便利になった。

❖本章では、人工知能を利用するプラットホームとして

Androidと人工知能の関係を学びます。

Page 14: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

なぜAndroidなのか?

❖なぜAndroidなのか

➢ クラウド・Webサービスの利用がしやすい。

➢ オープンソースであり、どのレベルでも改造が可能であり

➢ ウェアラブルや、テレビ、車載など幅広い分野での活用がなされている

❖Android の種類

➢ Android OS(スマートフォンやタブレット向け)

➢ Android TV(テレビ向け)

➢ Android Auto(自動車向け)

Page 15: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖第一章で学習した内容を元にサービスの全体像としては以下の様になる

人工知能を利用したアプリの全体像

アプリの起動やデータの登録、もしくはユーザーに聞き返す

Android

インターネットの情報から推定する

マイクや画面から入力を受け付ける

Android

クラウド

センサー情報

学習

行動

パターン認識 推論

Page 16: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

マシンアーキテクチャから見た詳細

❖アプリケーションの開発には、JavaやHTTP、JSONと言った知識が必要

Android クラウド

アプリ

マイク等の入力

HTTPサーバ

APLサーバ

データベース

フレームワーク

自分で記述(Java)

HTTP/APIライブラリ

機械学習

自分で記述(Java)

確認結果画面

HTTPサーバ

APLサーバ

HTTP

JSON

IP

Page 17: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

事例紹介

1. Google Now

2. チャットボット

3. ゲームA.I.

Page 18: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

事例1.Google Now

Page 19: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

これまでのAndroid

❖これまで、Androidを利用するためには

なにをしようか?

ゲームで遊ぶ 予定表を登録する

アプリを選択する

新しいアプリをダウンロードするアプリを起動する

使いやすいように、並べ替えをしておく事前

使うとき

Page 20: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Androidの中で起こっていること

Androidにおける人工知能

❖人工知能を積んだAndroid(Google Now)を利用するためには

なにをしようか?

ゲームで遊ぶ予定表を登録する

アプリを選択する

新しいアプリをダウンロードする

アプリを起動する

Androidに話しかける

なんて言ったのか判定

実行内容があっているか考える

ユーザーに確認

結果を表示

Page 21: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Google Nowの動作イメージ

『Google Nowってなに?』とGoogle Nowに問いかけ場合

1.『Google Now』と発声した後の、質問認識画面

2.『Google Nowってなに?』と問いかけた直後

3.検索画面に遷移後

Page 22: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

人工知能の活用によりユーザーの負担が数秒削減

Page 23: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Android TVでは、リモコンから入力

同等のフローで人工知能を利用可能

Android TVにおけるアーキテクチャ

アプリの起動やデータの登録、もしくはユーザーに聞き返す

Android

インターネットの情報から推定する

マイクから入力を受け付ける

リモコン

クラウド

センサー情報

学習

行動

パターン認識 推論

Page 24: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

自作する場合

Google Nowは、Googleのプロダクトの為、内部は非公開だが

自身でプログラムを組む場合、Speech APIで同等の仕組みが作成可能

Android Google

自作アプリ

Google Speech API

マイクFLAC

Encoder

IP

HTTP

音声ファイル

テキスト

Page 25: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Google Nowまとめ

❖クラウド上のリソースを利用する

➢ クラウド上を理解するためには、HTTP通信やJSON、データベースと言った知識が必要になる。

➢特に音声解析では、オーディオ処理やCodecと言った理解も求められる。

❖人工知能は推定を行う。

➢推定のため、『精度』と言った問題が発生する。

➢ ユーザーに確認し直すという画面を設けることで、精度が低い場合にも対応

❖Androidを利用し、マイクの入力を受け取ることができる。

➢その際、Javaでの記述が必要になる

➢ Android TVでもリモコンを経由することで、同等の仕組みを利用可能

❖人工知能の活用により、ユーザーの時間を数秒効率化

Page 26: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

事例2:チャットボット(人工無能)

Microsoft Bot Frameworkの場合

Page 27: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

チャットボット・人工無能とは

❖チャットボット・人工無能とは

➢チャットにて自動応答するボット(ロボットの略称)から、自動的に会話するプログラムを指す

➢会話しか能がないため、無能と言われる

Page 28: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

チャットボットの例

以下にチャットボットの例を示す

ボット名 開発元 説明

Siri Apple iOSや、macOS

から利用可能

りんな Microsoft LINEを通じて利用可能

Cortana Microsoft Windows 10から利用可能

Watson IBM 会話APIを通じて利用可能

Page 29: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

チャットボットの仕組み

❖最新のチャットボットは、チ

ャットサービスを経由して

実現が可能。

➢ メッセージの受信をし、どの

ようなメッセージを返すのか、

決めることができる。

➢会話APIなどを通じて高度な

会話を行うことも可能。

Android チャットサービス&BotFramework

Bot

会話状態管理

会話状態遷移

会話API

アプリ

Bot

プログラムユーザ認証

復号

状態遷移

Page 30: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

マシンアーキテクチャから見た詳細

❖C#やnodejsという開発言

語を利用

➢ HTTPSによる暗号化が必

➢ユーザー情報を漏洩させ

ないため、IDなどは匿名

のものが利用される

チャットサービス&BotFramework

Bot

会話状態管理

会話状態遷移

会話API

Bot

プログラムユーザ認証

node.js

Bot

Framework

プログラムHTTPS

JSON

IP

匿名ID

状態情報メッセージ

Page 31: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

チューリングテスト

会話AI

人間

❖人工無能の精度の判定方法

➢相手の見えない状態で会話を行い、人間が会話AIか人物か判定できなければ

➢精度が良いものとする

壁やインターネット等

Page 32: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

チャットボットまとめ

❖サーバー間でHTTPS通信を行う。

❖著名なサービスに対応したフレームワークも登場

➢ Facebook,Skype,Slack等に対応

➢ MicrosoftのLUIS(Language Understanding Intelligent Service)にも対応

❖ユーザー情報を扱う為、考慮することも多い

➢チャットという個人同士のやりとりをサーバーにも渡すため、暗号化必須

➢ユーザー情報は匿名のため、必要であればプログラムの中でユーザーに確認

➢スマートフォンは非常に身近な為、このような配慮が必要

Page 33: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

事例3.ゲームA.I.

Page 34: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

ゲームAIとは

最後に、70年台から利用されているゲームAIの概要について紹介

ゲームは、コンピューターゲームができるまではカードゲームやボードゲームと言った物

が主流

最近では、AlphaGoにて、囲碁の勝利がニュースになった

Page 35: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Android

ゲーム

オフラインゲームAI

❖対戦相手A.I.

➢ Androidの中に実装

➢オフライン(ネットワークにつながっていなくても)でも遊べる

ゲームサービス

タイトル

対戦画面

スコア

対戦相手A.I.

ランキング

販売管理

易しい

普通

難しい

マルチ対戦

Page 36: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Android

ゲーム

対戦AIの概要

対戦AIの中で、勝てる手を推論し、実行する

対戦画面 対戦A.I.

1.手を入力2.勝てる手を推論する

3.手を実行する

Page 37: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

ソフトウェアの壁

あなたは人工知能を作れるか?

ゲームの対戦を通じて、人間と対話するプログラムをゲームAIと呼ぶ

あなた

ゲームAI

壁を隔てて対戦している図

Page 38: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

ゲームA.I.まとめ

❖ゲームA.I.では、対戦相手を実装

❖ゲームというスコープで人間と対話を行う

➢人間らしく振る舞うと言った挙動は不要

❖オフラインでも遊べるように、スマートホンの少ないコンピューターの計算リソースだ

けでも、実行可能。

➢但し、ゲームのルール設定を誤ると膨大な計算量が必要な場合がある

Page 39: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

2章まとめ

❖3つの人工知能を活用した仕組みについて紹介

➢人間らしい挙動に近い作りをしようとすると、膨大な計算やデータが必要になるため、クラウドとの連

携が必須になる。

❖本章以降では、人工知能活用の入り口として、1,3の詳細を実習を通して学習

Page 40: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

3. Cloud Vision APIを使ってみよう

Page 41: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Cloud Visionとは

❖Cloud Visionは、Googleが提供する画像認識サービス

https://cloud.google.com/vision/

❖ブラウザやAPIを通じて、利用可能なサービス

➢APIは、自分の書いたプログラムからそのシステムを利用可能にする

インターフェース

Page 42: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

本章で学ぶ内容

❖Google Cloud Visionに触れて、何ができるのか学ぼう

❖Cloud Vision APIを使って、作れるアプリを考えてみよう。

Page 43: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Cloud Visionを使ってできること

❖以下のような画像の判定が行なえる

➢ 色の占める割合

➢ 画像内容の推定

➢ 含まれている文字列の解析(OCR)

➢ ロゴ検知

➢ 有害コンテンツ判定

■ アダルト的

■ 詐欺的

■ 医療的

■ 暴力的

※ OCR: Optical Character Recognition(光学文字認識)

Page 44: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Cloud Visionと人工知能の関係

Cloud Visionによって分類された結果に意味づけし、

その学習データをもとに、

ユーザーの画像を解析する。

Cloud Vision

1.様々な画像を入力

2.分類された画像を意味づけ

3.ユーザーが画像を入力

4. 分類などを返す

Cloud ML

学習をする場所

学習済モデル

Page 45: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Cloud Visionの利用方法

Page 46: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Cloud Visionの使い方

❖Cloud Visionの使い方

1. URLを開く

■ https://cloud.google.com/vision/

Page 47: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Cloud Visionの使い方

2. 画像ファイルをドラッグ・アンド・ドロップし、チェックを入れる

Page 48: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Cloud Visionの使い方

3. 分析結果が表示される

Page 49: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Cloud Visionの実行結果例

❖Cloud Visionでは以下のような情報を得ることができます。

項目 返ってくる項目 備考

Properties 色情報と占める割合 常に

Label 写っている物の名前 常に

Safe Search 有害な(青年向け、暴力的)コンテンツが含まれているか

常に

Text 検出された文字と位置 文字が含まれているときのみ

Face 顔のパーツが検出された位置や感情推定、画像をとったアングル

顔が含まれていたときのみ

Logo ロゴの情報 ロゴが含まれていたときのみ

Landmark ランドマーク(有名な建物) ランドマークが含まれていたときのみ

Page 50: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Cloud Visonは人工知能

結果は推定結果の為、scoreと共に返却される。

[

{

"mid": "/m/0g6n3",

"description": "Sagrada Familia (¥"Expiatory Temple of the Holy Family¥")",

"score": 0.927383,

"boundingPoly": {

"vertices": [{"x": 60,"y": 39},{"x": 517,"y": 39},{"x": 517,"y": 255},{"x": 60,"y": 255}]

},

"locations": [{

"latLng": {"latitude": 41.403579,"longitude": 2.174242}

}]

}

]

Page 51: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Cloud Visionの応用例

❖単純に得られる情報だけでも以下の様な恩恵を得ることが可能です。

➢ チャットサービスでの有害な画像のブロック

➢ テレビ・映画などのコンテンツの流出の検知

➢ 来客の満足度の推定

Page 52: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

3章まとめ

❖Cloud Visionは画像認識の人工知能

➢ 推定結果や推定に利用した領域を得ることができる

➢ 人工知能単体で得られるものは、そのままではサービスとして成立しないが、既存サービス

と組み合わせることで、これまでにない価値を生み出すことが可能

❖Cloud Visionがどのように凄いかの再確認のためには、画像ファイルやフォ

ーマットの理解が必要。

➢ 画像フォーマットについては、テキストを参照

Page 53: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

4. 開発環境の構築

Page 54: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Android Studioとは

❖Android Studioとは

➢ Androidアプリケーションを開発するための、統合開発環境(IDE)

➢ JetBrains社が開発したIntelliJ IDEAをベースにAndroid開発に最適化されており、Windows、

Mac OS XおよびLinux用が存在する

➢ Android Developerサイトより入手できる

Page 55: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

セットアップ手順

❖手順

1. Android Studioのダウンロード

2. Android Studioのインストール

3. Componentのダウンロード

Page 56: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

ダウンロード

❖手順 1. Android Studioのダウンロード

➢ 次のURLにアクセスし、 [Download Andorid Studio] をクリックする

■ https://developer.android.com/studio/index.html

Page 57: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

インストール

❖手順 2. Android Studioのインストール

1. ダウンロードしたdmgファイルを実行する

2. Android Studioアイコンを [Application]フォルダにドラッグする

Page 58: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖初期設定

➢ ランチャーからAndroidStudioを起動する

➢ インストールロケーションの設定

■ 「I do not have a ...」を選択

インストール

Page 59: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖AndroidStudioが起動します

インストール

Page 60: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖手順 3. コンポーネントのインストール

➢ アプリケーション開発に必要な最低限のコンポーネントをインストールする

➢ デフォルトの設定のまま画面の指示に従って、次々と「Next」ボタンをクリックする

➢ 最後に「Finish」をクリックする

コンポーネントのインストール

Page 61: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖コンポーネントのインストール(続き)

➢ コンポーネントがインストールされる

➢ 「Finish」ボタンをクリックして完了

コンポーネントのインストール

Page 62: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖確認

➢ 次のような画面が表示されることを確認する

コンポーネントのインストール

Page 63: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

4章まとめ

❖Androidアプリケーション開発に必要なツール

➢ JDK 8

➢ Android Studio

➢ Android SDK

➢ Androidエミュレータまたは、Androidデバイス

❖Android Studioのインストール

➢ Android StudioのインストーラはAndroid Developerサイトから入手可能

➢ Android Studioを使って、Android アプリケーション開発に必要なコンポーネントのインスト

ールができる

Page 64: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

開発ツールの使い方

Page 65: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

概要

❖HelloWorldアプリケーションの作成を通じて、開発ツールの操作方法を習得

する

➢ Android Studio

➢ エミュレータ、 Android Virtual Device (AVD)

➢ Android Device Monitor

Page 66: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Android Studio

❖Android Studioとは?

➢ Androidアプリケーションを開発する為のIDE(統合開発環境)

❖提供する機能

➢ Androidプロジェクトの作成

➢ プロジェクトのビルド

➢ Androidアプリケーションの実行・デバッグ

➢ リソースファイルの作成支援

■ リソースファイルについては本節で解説

Page 67: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Hello Worldの表示

❖初めにAndroidプロジェクトを作成し、下記のアプリケーションを作成する

➢ 完成イメージ

新規作成したプロジェクトは、図のようなHello world!と表示されるアプリケーションのプロジェクトとして作成される

Page 68: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖Androidプロジェクトを作成する

1. [Start a new Android Studio project]を選択(初回起動時)

※プロジェクトウィンドウが表示されている場合はFile > NewからAndroid Application Project をクリック

プロジェクトの作成(1)

Page 69: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

2. [New Project]画面の設定

■設定情報を入力し、Nextボタンをクリック

プロジェクトの作成(2)

項目 設定値

Application Name HelloWorld

Company Domain デフォルトの設定のまま

Project location デフォルトの設定値

※デフォルトの設定値

Page 70: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

3. [New Project]画面の設定 2

■ Phone and Tablet にチェックをいれ、Minimum SDK の値を選択し、 [Next] ボタンをクリックする

プロジェクトの作成(3)

※講師の指示に従う

Page 71: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

4. [Add an activity to Mobile]画面の設定

■Empty Activityを選択し、 [Next] ボタンをクリックする

プロジェクトの作成(4)

Page 72: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

5. [Choose options for your new file]画面の設定

■Finishボタンをクリックする

プロジェクトの作成(5)

Page 73: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

6. Android Projectが生成され、下図のように表示される。

■ [Tip of the day]のダイアログは閉じる

■ 初回起動時は、ビルドに必要なライブラリなどのダウンロードがあるため、ビルドに時間がかかる。

プロジェクトの作成(6)

※初回起動時はビルドに時間がかかる

Page 74: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

プロジェクトの作成(7)

7. ビルドが終了すると、下図のように表示される。

Page 75: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

1. ツールバーの[AVD Manager]ボタンをクリックするとエミュレータ一覧を表示される

エミュレータの作成(1)

Page 76: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

エミュレータの作成(2)

2. 「Create Virtual Device」ボタンをクリックする

Page 77: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

エミュレータの作成(3)

3. 「Nexus 5」を選択し、「Next」ボタンをクリックする

Page 78: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

エミュレータの作成(4)

4. 「Lollipop」を選択し、「Next」ボタンをクリックする

Page 79: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

エミュレータの作成(5)

5. デフォルトの設定のまま、「Finish」ボタンをクリックする

Page 80: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

エミュレータの作成(6)

6. 「Run」ボタンをクリックする

Page 81: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

エミュレータの作成(7)

3. エミュレータの起動を確認する

Page 82: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

1. ツールバーの[Run]ボタンをクリックしてアプリケーションを実行する

アプリケーションの実行

Page 83: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

アプリケーションの実行

2. デバイス選択画面が表示されるので、起動中のエミュレータを選択する

Page 84: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖確認

➢ エミュレータにアプリケーションがインストールされ、アプリケーションが起動し、下記画

面が表示されることを確認する

実行画面の確認

Page 85: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖ リソースファイルとは?

➢ ソースコード以外の全ての外部ファイル

➢ Androidプロジェクトでは/res以下に格納されているファイル

リソースファイル

# リソースファイル 内容

1 res/drawable(-hdpi, -xhdpiなど)/

画像ファイル( .png, .jpeg )

2 res/mipmap(-hdpi, -xhdpiなど)/

ランチャーアイコン

3 res/layout/*.xml 画面デザイン情報(ex. activity_main.xml)

4 res/values/colors.xml 色情報

5 res/values/dimens.xml サイズ情報(5px,10dip,20pt)

6 res/values/strings.xml 文字列情報

プロジェクトViewにすると見やすい

Page 86: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

リソースエディタ

❖リソースファイルの作成支援機能がある

➢ リソースエディタの種類

■ レイアウトエディタ

● 画面デザインリソースファイルの作成サポート機能

■ リソースエディタ

● 画面デザインリソースファイル以外のリソースファイルの作成サポート機能

Page 87: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

画面デザインを作成する

❖レイアウトエディタの機能を使用して、HelloWorldにボタン、チェックボックス、テキスト入力を含む画面を作成する

➢ ボタン、チェックボックスはレイアウトエディタのGUI機能を利用して追加する

➢ テキスト入力は、画面デザインリソースファイル(XMLファイル)を直接編集して追加する

◆各ビューの表示文字列

# ビュー 表示文字列

1 ボタン Button01

2 チェックボックス CB1

3 テキスト入力 EditText階層構造

<LinearLayout>

<TextVIew />

<Button />

<CheckBox />

<EditText />

</LinearLayout>

Page 88: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

リソースエディタの起動

❖画面デザインリソースファイルを開く

1. Package Explorerからres/layout/activity_main.xmlをダブルクリックする

2. res/layout/activity_main.xmlのファイルがレイアウトエディタで開かれ、右図の画面が表示さ

れることを確認する

Page 89: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖レイアウトエディタのDesignタブで、TextViewを画面中央に移動する

1. TextViewを選択し、中央にドラッグする

Viewを移動する

中央に移動

Page 90: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖レイアウトエディタのDesignタブで、画面デザインにボタン、チェックボックスを追加する

1. [Palette]からButtonを選択し、TextViewの下に配置する

2. 同様に、 CheckBoxをButtonの下に配置する

Viewを追加する

TextViewの下に配置

Page 91: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

3. Buttonをクリックし、Propertiesビューのtextプロパティの値を「Button01」に変更する

4. 同様にCheckBoxのtextプロパティCB1に変更する

Viewの表示テキストを変更する

Page 92: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実行確認

❖アプリケーションを実行し、次のことを確認する

➢ 画面にボタン、チェックボックスが表示されている

➢ ボタンの表示文字列が "Button01" になっていること

➢ チェックボックスの表示文字列が "CB1" になっていること

※エミュレータでは大文字で表示される

Page 93: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Viewの整列

❖Layoutを変更し、ボタンやテキストを整列する

➢ デフォルトは、RelativeLayoutになっている為、LinearLayoutに変更する

Page 94: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

• LinearLayoutに変更する

1. [Design]タブから[Text]タブを選択し、XMLエディタを表示する

Viewの整列(1)

Page 95: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Viewの整列(2)

2. XMLのルート要素をRelativeLayoutからLinearLayoutに変更する

• 縦並びにするため"orientation"プロパティの値を"vertical"に設定する

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

...略...

android:orientation="vertical"

tools:context=".MainActivity">

...略...

</LinearLayout>

Page 96: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実行確認

❖アプリケーションを実行し、次のことを確認する

➢ 画面左上に垂直方向に整列している

Page 97: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

EditTextの追加

• XMLエディタを使って、EditTextを追加する

1. テキスト入力ビューである、 EditTextタグをactivity_main.xmlに追加する

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android=http://schemas.android.com/apk/res/android

・・・>

<TextView

・・・/>

<Button

・・・ />

<CheckBox

・・・ />

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="EditText"></EditText>

</LinearLayout>

Page 98: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

2. [Design]タブに表示を切り替えて、EditTextが表示されている事を確認する

画面プレビューの確認

DesignタブでEditTextが表示されている

Page 99: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実行確認

❖アプリケーションを実行し、次のことを確認する

➢ EditTextが追加され、「EditText」と表示されている

Page 100: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

デザイン以外のリソースを使用する

❖HelloWorldに追加したボタンの表示文字列を Hello Button に変更する

❖表示文字列は文字列リソースファイルに設定する

Page 101: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖文字列リソースファイルは、アプリケーションで使用する文字列を定義した

リソースファイルである

(res/values/strings.xml)

文字列リソースの定義

■画面デザインリソースファイル(res/layout/activity_main.xml)上のTextView

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:padding="@dimen/padding_medium"

android:text="@string/hello_world"

tools:context=".MainActivity" />

2.TextViewのTextプロパティから文字列リソースファイルの文字列を参照する

実行

■文字列リソースファイル(res/values/strings.xml)<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="hello_world">Hello world!</string>

・・・・・・・・・</resources>

1.画面上に表示する文字列を文字列リソースファイルに追加する

文字列を参照する

3.strings.xmlに設定されている文字列が表示されている

Page 102: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

文字列リソースの追加(1)

❖文字列リソースファイルに文字列設定を追加する

➢ res/values/strings.xmlをダブルクリックする

➢ エディタが開かれ、下図の画面が表示されることを確認する

Page 103: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

文字列リソースの追加(2)

3. <string>タグを追加し、次の内容を追加する

• <string name="button_label">Hello Button</string>

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="app_name">HelloWorld</string>

<string name="button_label">Hello Button</string>

</resources>

項目名 設定値

Name button_label

Value Hello Button

Page 104: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

4. レイアウトエディタが起動し、"Button01"をクリックする

5. Propertiesビューからtextプロパティの [...] ボタンをクリックする

文字列リソースの追加(3)

_

Page 105: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

6. Resoucesウィンドウが表示されたら、button_label を選択し[OK]ボタンをクリックする

文字列リソースの追加(3)

_

Page 106: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖アプリケーションを実行し、次のことを確認する

➢ ボタンの表示文字列が Hello Button になっている

文字列リソースの追加(4)

Page 107: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

マニフェストファイルとは

❖マニフェストファイルとは?

➢ AndroidManifest.xml(アプリケーションに1つ存在)

➢ アプリケーションに関する以下の情報等を定義する

■ アプリケーションのアイコン、タイトルの設定

■ 使用するコンポーネント(Activity、Service等)の定義

■ コンポーネントの振る舞いに関する定義

■ アプリケーションのアクセス制限設定

Page 108: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

マニフェストファイルを変更する

❖マニフェストエディタ

➢ app/manifestsフォルダをダブルクリックすると、エディタ起動する

➢ マニフェストファイルはxmlの書式で記述されている

➢ 変更するには内容を直接編集する

Page 109: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

デバッグツールの使用方法

❖Android Device Monitor

➢ 主なデバッグ機能

■ モニタリング

■ エミュレータ操作

■ エミュレータ・ハードウェア内の情報取得

■ メモリ使用量

Page 110: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Android Device Monitorの使用方法

❖Android Device Monitorを起動する

➢ Android Studioのツールバーから[Android Device Monitor] を選択する

Page 111: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Android Device Monitorのデバッグ機能

❖Android Device Monitorのデバッグ機能

➢ モニタリング

■ アプリケーションが出力するログの参照

■ リソース使用状況の参照

➢ エミュレータへのデータ送信

■ 電話発信

■ SMS送信

■ 位置情報送信

➢ スクリーンショット取得

➢ プロセス管理

■ ガベージコレクション実行

■ プロセス停止

➢ ファイル操作

Page 112: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

アプリケーションログの参照

❖アプリケーションログの参照

➢ ログを出力するには、android.util.Logクラスのログ出力メソッドを使用する

■サンプルコードimport android.util.Log;

Log.e(“HelloWorld”, “Error Message”); // エラーを出力するログLog.w(“HelloWorld”, “Warning Message”); // ワーニングを出力するログLog.i(“HelloWorld”, “Infomation Message”); // アプリケーション動作の情報を出力するログLog.d(“HelloWorld”, “Debug Message”); // デバッグ情報を出力するログLog.v(“HelloWorld”, “Verbose Message”); // 詳細情報を出力するログ

ログ出力

Page 113: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Hello Worldからログを出力する(1)

❖HelloWorldの起動時にアプリケーションログを出力

➢ AndroidViewからMainActivity.javaをダブルクリックする

➢ MainActivity.javaのソースコードが開かれ、下図の画面が表示されることを確認する

Page 114: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Hello Worldからログを出力する(2)

➢ MainActivity#onCreateにログ出力を行う5つのコードを追加する

package com.example.mycompany.helloworld;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.util.Log; ← コード補完で自動的に追加されるimport android.view.Menu;

import android.view.MenuItem;

public class MainActivity extends ActionBarActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Log.e("HelloWorld", "Error Message");

Log.w("HelloWorld", "Warning Message");

Log.i("HelloWorld", "Information Message");

Log.d("HelloWorld", "Debug Message");

Log.v("HelloWorld", "Verbose Message");

}

追加する

Page 115: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Hello Worldからログを出力する(3)

➢ アプリケーションを実行し、画面が表示されることを確認する

Page 116: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Hello Worldからログを出力する(4)

5. Android Device Monitorの画面を表示する

6. LogCatビューに5つのログが出力されていることを確認する

Page 117: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

5章まとめ

❖Android Studio

➢ Androidアプリケーションを開発するための統合開発環境(IDE)

➢ Android Studioには便利な支援機能がある

■ Androidプロジェクトの作成

■ Androidアプリケーションの実行・デバッグ

■ GUIを使った画面デザイン

■ コードの入力支援

❖Android Device Monitor

➢ Android Studioのデバッグツール

➢ モニタリング、エミュレータ操作などの機能がある

Page 118: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

マルバツゲーム概要

概要と設計

Page 119: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

概要

❖ 本書で作成するゲーム

❖開発の進め方

❖マルバツゲーム設計

Page 120: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

本書で作成するゲーム

Page 121: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

本書で作成するゲーム

❖本書ではマルバツゲームの作成を行う

➢マルバツゲームの作成を通してゲームAIの理解を深めることを目的とする

❖画面をタッチして、盤面に◯または☓を配置するおなじみのゲーム

➢本書では盤面に◯☓を配置することを、「マークを記入する」と表記する

❖三目並べとも呼ばれる

Page 122: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習マルバツゲームで遊ぶ

❖実際にマルバツゲームで遊んでみる

➢ 1人遊びできるマルバツゲームを使ってゲームを行う

Goolgeの検索ワードに「tictactoe」と入力するとマルバツゲームができる

Page 123: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習マルバツゲームで遊ぶ

❖実習の進め方

➢ ドメインモデルを作成する

■ゲームをしながら、どんなオブジェクトがあるのか、どんな振る舞いが用意されているのかを考

察する

■ひととおりの考察が終わったら、プログラムで使われていそうなクラス、メソッドなどを書き出す

■余裕があればクラス図を作成する

※ドメインモデル● システムに関わるさまざまな実体とそれらの関係を説明するシステムの概念モデルのことをドメインモデルという

Page 124: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

解答マルバツゲームで遊ぶ

この実習の解答はありません

隣の人のドメインモデルと比較し、意見してみましょう

Page 125: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

開発の進め方

Page 126: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

ステップアップ手順

❖5つのステップでアプリケーションを完成させる

➢設計

■開発の準備と設計

➢製造

■ Step 1. 基盤作成と2P対戦機能

■ Step 2. ランダム AI

■ Step 3. ルールベースAI

■ Step 4. CPU vs CPU

■ Step 5. プレイアウトAI

Page 127: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

完成図

モード選択 ゲーム開始 ゲーム中 ゲーム終了

Page 128: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

画面構成

❖タイトル画面

モードボタンゲームの難易度別のCPU対戦、2P

対戦、CPU同士の対戦が用意されている

モードボタンをクリックするとゲーム画面に遷移する

Page 129: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

画面構成

❖ゲーム画面

➢開始前

ゲーム開始ボタンボタンをクリックするとゲームが始まる。

○ボタンをクリックした場合は先手となり、

×ボタンをクリックした場合は後手となる。

先手後手選択メッセージ

Page 130: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖ゲーム画面ゲーム中

画面構成

プレイヤーの表示● 先手、後手のプレイヤーの名称が表示される

● CPU対戦:○ 「あなた」「コンピュータ」

● 2P対戦○ 「Player 1」「Player2」

● CPU同士の対戦○ 「コンピュータ1」「コンピュータ

2」

マルバツゲームのマス現在のマルバツの対戦状態が表示される。ユーザはこのエリアをタップしてマークを記入する

Page 131: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖ゲーム画面

➢ゲーム終了

画面構成

勝敗メッセージダイアログゲームの勝敗結果が表示されます

Page 132: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

スケルトンプロジェクト

❖各Stepに対応したスケルトンプロジェクトを用意

➢解答ドキュメントから取得するStep 5. プレイアウトAI

プロジェクト名 実装済の処理

TicTacToe01_1 Step 1-1. 基盤作成と2P対戦機能(画面遷移)

TicTacToe01_2 Step 1-2. 基盤作成と2P対戦機能( 2P対戦)

TicTacToe02 Step 2. ランダム AI

TicTacToe03 Step 3. ルールベースAI

TicTacToe04 Step 4. CPU vs CPU

TicTacToe05 Step 5. プレイアウトAI

Page 133: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

開発の準備と設計

Page 134: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

アプリケーションの説明

❖ 概要

➢マルバツゲームアプリケーション

➢ タイトル画面とゲーム画面の2画面構成

➢ タイトルでは、ゲームモード(難易度、2P対戦など)を選択する

➢ゲーム画面では、先手、後手を選択する

Page 135: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

アプリケーションの構成

❖アプリケーションを構成する主なクラス

クラス 説明

TitleActivity タイトル画面

MainActivity ゲーム画面

Constants 定数定義クラス

Cell ◯☓マークオブジェクト

Player プレイヤー抽象クラス

TicTacToe ゲームロジッククラス

GameController Playerの操作とゲームの監視をする

Page 136: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

TitleActivity

❖TitleActivity

➢ タイトル画面

➢ゲームモードを選択すると、ゲーム画面に遷移する

➢ゲームモード

■ Easy

■ Nomal

■ Hard

■ 2P Play

■ CPU vs CPU

Page 137: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖MainActivity

➢ゲーム画面

➢先手、後手を選択してゲーム開始

➢ゲーム終了後にダイアログ表示

MainActivity

◯ ☓どちらかをクリックする

Page 138: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Constants

❖Constantsクラス

➢定数定義クラス

➢主にゲームロジッククラスで扱う数値、文字データの集まり

Page 139: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Cell

❖Cellクラス

➢盤面の1マス分の情報を持ったオブジェクト

➢ ○マーク、☓マーク記入なしなどの状態を管理する

➢ マークに合わせた画像リソースを提供する

Page 140: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

TicTacToe

❖TicTacToeクラス

➢ゲームのロジッククラス

➢盤面の状態を管理する

➢内部にCellクラスの配列を持っている

➢ゲーム初期化や終了判定などのアルゴリズムが実装されている

Page 141: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Player

❖Playerクラス

➢プレイヤー抽象クラス

➢ プレイヤーとしての属性と振る舞いが定義されている

Player

User AI

Page 142: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Player

❖Playerクラス

➢プレイヤー抽象クラス

➢ プレイヤーとしての属性と振る舞いが定義されている

Player

User AI

Page 143: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

User

❖Userクラス

➢ Playerの派生クラス

➢ プレイヤーが人だったときに使用する

Player

User AI

Page 144: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

AI

❖AIクラス

➢ Player派生クラス

➢ CPU対戦のときのゲームAIとしての振る舞いを実装

➢難易度に合わせて、AIクラスの派生クラスが複数いる

■ RandomAI

■ RuleAI

■ PlayoutAI

Player

User AI

Page 145: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

GameController

❖GameControllerクラス

➢ゲーム操作クラス

➢ゲームの状態を管理する

➢内部にTicTacToeクラスとPlayerクラスを持ち、実際のゲームの操作、監視を行う

Page 146: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

クラス図

❖ゲームロジック関連のクラス図

Cell

<<interface>>

GameController.Listener

Player

User AI

<<interface>>

Player.Listener

GameController TicTacToe

Page 147: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

シーケンス図

❖ゲーム開始シーケンス

Page 148: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

シーケンス図

❖ゲーム中のシーケンス

Page 149: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習の進め方

❖次のステップでアプリケーションを完成させる

➢ Step 1. 2P対戦

➢ Step 2. ランダムAIの作成

➢ Step 3. CPU 対 CPU モードの作成

➢ Step 4. ルールベースAIの作成

➢ Step 5. プレイアウトAIの作成

Page 150: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

完成図

モード選択 ゲーム開始 ゲーム中 ゲーム終了

Page 151: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

6章まとめ

❖マルバツゲームのアルゴリズムの理解

❖ドメインモデルの作成

❖アプリケーションを構成する主なクラス

❖クラス図による、各クラスの関係

❖シーケンス図

➢アプリケーション起動の流れの理解

➢ゲーム中の流れの理解

クラス 説明

TitleActivity タイトル画面

MainActivity ゲーム画面

Constants 定数定義クラス

Cell ◯☓マークオブジェクト

Player プレイヤー抽象クラス

TicTacToe ゲームロジッククラス

GameController Playerの操作とゲームの監視をする

Page 152: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

7. マルバツゲームの作成1

Step 1. 基盤作成と2P対戦機能

Page 153: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Step 1. 2P対戦の概要

❖概要

➢ 2P対戦 モードで遊べるようにする

➢ マルバツゲームに2P対戦の機能を実装する

➢ 1台のAndroidを2人で交互に使う

Page 154: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

開発の流れ

❖2P対戦機能を完成させるまでの流れ

1. 画面作成

■画面デザインの作成

■ タイトル画面からゲーム画面を呼び出す

2. 2P対戦の実装

■ゲームロジックの作成

■画面ロジック

● Activityとゲームロジッククラスの連携処理

Page 155: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

完成図

モード選択 ゲーム開始 ゲーム中 ゲーム終了

Page 156: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習1.画面作成

❖画面作成概要

➢ タイトル画面とゲーム画面を作成する

➢ タイトル画面でゲームモードボタンをクリックすると、ゲーム画面に遷移する

Page 157: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習1. 画面作成の準備

❖プロジェクトを作成する

➢ Application name: TicTacToe

➢次の画面以降はデフォルトの値を使用する

デフォルトの値を使う

デフォルトの値を使う

Page 158: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習1. 画面作成の準備

❖リソースファイルを準備する

➢ プロジェクトが作成されたら、付属のDVDよりリソースファイルを以下のように配置する

Page 159: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習1. 画面作成の手順

❖画面の作成 手順

➢ 1. タイトル画面の作成

➢ 2. ゲーム画面のの作成

➢ 3. 画面遷移処理の実装

➢ 4. AndroidManifestファイルの修正

※各手順の詳細についてはテキストを参照する

Page 160: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習1. 画面作成動作確認

❖アプリケーションを実行し、以下のことを確認する

➢ タイトル画面からゲーム画面に遷移する

➢ゲーム画面で、押されたボタンのIDがログに出力されていること

Page 161: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習1. 画面作成解答

❖解答ドキュメントを確認する

Page 162: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習2. 2P対戦の実装

❖2P対戦の実装概要

➢ゲーム画面で、先手後手ボタンをクリックするとゲームが開始される

➢ゲーム終了後にダイアログが表示され、勝敗結果が表示される

Page 163: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習シーケンス図

❖ユーザが画面をタップして、マークを記入するまでの流れ

Page 164: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習2. 2P対戦の実装の手順

❖手順

➢ 1. ゲームロジックの作成

➢ 2. 画面とゲームロジックの連携処理

※各手順の詳細についてはテキストを参照する

Page 165: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習2. 2P対戦の実装動作確認

❖アプリケーションを起動して次のことを確認する

➢ タイトル画面が正しく表示されている

➢ゲーム画面が正しく表示されている

➢ 2P対戦が正常に動作する

モード選択 ゲーム開始 ゲーム中 ゲーム終了

Page 166: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習2. 2P対戦の実装解答

❖解答ドキュメントを確認する

Page 167: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

7章まとめ

❖基盤作成と2P対戦機能の概要

➢ タイトル画面からゲーム画面の画面遷移機能を実装

➢ゲームの基盤部分となるゲームロジックを実装

❖2P対戦機能の実装

➢ Playerクラスを継承したUserクラスを作成

➢マークを記入するなどの、実際の振る舞いはAndroidを操作している人が行う

Page 168: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

思考ルーチン

Page 169: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

コンピュータゲームにおける人工知能

❖人工知能とは

➢ 人間の知的営みをコンピュータに行わせるための技術のこと

➢ 人間の知的営みを行うことができるコンピュータプログラムのこと

❖人工知能の技術をコンピュータゲームに応用する

➢ ゲーム内のノンプレイヤーキャラクター(以降、NPCと略称)

に知能あるいは知性を持っているような

錯覚を生み出すことができる

Page 170: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

ゲームAI

❖ゲームAI

➢ コンピューターゲームにおいて利用されるAI(人工知能)を指す

➢ ノンプレイヤーキャラクター (NPC) の振る舞いに知能があるかのような錯覚を生み出す技法

■ 将棋や麻雀などのボードゲームのCPU対戦

■ 戦略シミュレーションゲームの他国

■ RPGの敵キャラクター

■ 対戦型格闘ゲームやシューティングゲームなどの敵の行動パターン

Page 171: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

❖思考ルーチン

➢ コンピュータゲームのプログラムの一部

➢ プレイヤーと対戦する側の行動を決定するプログラム

➢ ソリティアのような1人遊び専用のゲーム以外には、何かしらの思考ルーチンが含まれている

➢ 一般的には、一手ずつ考えて行動するターン制のゲームに対して主に用いる用語である

一人遊びゲーム 対戦ゲーム

思考ルーチンとは何か

Page 172: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

思考ルーチンがプレイヤーの対戦相手

❖思考ルーチンがプレイヤーの対戦相手を操作している

➢ 思考ルーチンはゲームの中でプレイヤーの対戦相手 として登場する

■ チェスや将棋などのボードゲームの対戦相手、戦略シミュレーションゲームの他国など

➢ プレイヤーと対戦する側の行動を決定するプログラムとしての思考ルーチンが組み込まれている

Page 173: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

どんな思考ルーチンがあるか

❖ゲームや難易度に合わせて思考ルーチンを使い分ける

➢ 乱数に従うもの

■ オセロゲームなどでランダムに手をうつ

➢ 同じ動作の繰り返し

■ 同じ行動を繰り返す敵キャラクター

➢ ルールベース

■ 五目並べなどで最後の一手を阻害する

思考ルーチンはゲームを面白くする重要な要素

Page 174: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

コンピュータの思考

❖コンピュータの思考

➢ 受け取った情報を、あらかじめ与えられた条件に従って結論を出す

➢ 判断条件を変更しない

■ 決められた判断の基準を最適化することができない

■ 試行錯誤をしない

➢ 決まっている状況では、人間より素早く判断を行うことができる

➢ 新しい状況では 正しく判断することができない

Page 175: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

人間の思考

❖人間の思考

➢ 受け取った情報を、自ら決めた条件に従って判断を行う

➢ 判断条件を自ら変更できる

■ 判断基準の最適化をしていくことができる

➢ 新しい状況のもとでも、判断を行うことができる

Page 176: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

ディスカッション

Page 177: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

強い思考ルーチン

❖強い思考ルーチンとはどんなものかを考える

Page 178: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

おもしろい思考ルーチン

❖おもしろい思考ルーチンとはどんなものかを考える

Page 179: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

8章まとめ

❖コンピュータゲームにおける人工知能について

➢ 人工知能の技術をコンピュータゲームに応用し、NPCに知能あるいは知性を持っているよう

にみせる

❖ゲームAIとはコンピューターゲームにおいて利用されるAI(人工知能)のこと

❖思考ルーチンは、コンピュータゲームのプログラムの一部

Page 180: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す
Page 181: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

講師用資料(受講生閲覧禁止)

Page 182: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

強い思考ルーチン

❖回答例:

➢ 有利な手を選択する

■ オセロゲームで角を取る

➢ 先読みする

■ 数手先まで探索する

➢ 最善手選択

■ 独自の評価アルゴリズムで点数化する

■ オセロゲームなどでなるべく多くのコマをひっくり返す

Page 183: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

おもしろい思考ルーチン

❖回答例:

➢ プレイヤーが勝てる

■ 理不尽なくらい強いAIはつまらない

➢ ルールを守る

■ プレイヤーと対等でなければいけない

● プレイヤーの情報を盗み見ない

● 変数とか覗かない

➢ 弱すぎない

■ チェスゲームでチェックメイトなのにキングを守らない

➢ 人間らしい

Page 184: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

マルバツゲームの作成2

Step 2. ランダムAI

Page 185: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Step 2. ランダムAIの概要

❖概要

➢ Easy モードで遊べるようにする

➢ マルバツゲームにAI対戦機能を追加する

➢ ランダムな手を選択するAIを作成する

Page 186: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

マルバツゲームのAI

❖マルバツゲームで作成するゲームAI

➢ 縦一列の継承関係

■ Playerクラスを継承した AI クラス

■ AIクラスを継承した、RandomAI クラス

■ RandamAIクラスを継承したRoulebaseAI クラス

■ RoluAIを継承したPlayoutAI

Player

AI

RolubaseAI

PlayoutAI

RandomAI

User

Page 187: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

ランダムAIの思考ルーチン

❖思考ルーチン

➢ どこに打つかをランダムに選択する

➢ 盤面の状態に関係なく常にランダムな一手を選択する

Page 188: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習ランダムAIの作成

❖マルバツゲームにEasyモードのCPU対戦機能を追加する

➢ タイトル画面で Easyモードを選択した時に、ランダムAIと対戦する

モード選択 ゲーム開始 ゲーム中 ゲーム終了

Page 189: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習シーケンス図

❖ランダムAIがマークを記入するまでの流れ

Page 190: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習ランダムAIの作成(手順)

❖手順

➢ AIクラスの作成

➢ AIクラスを継承したRandomAIクラスの作成

➢ 思考ルーチンの実装

➢ GameControllerの修正

Player

AI

RandomAI

User

Page 191: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習確認

❖アプリケーションを実行して次のことを確認する

➢ CPU対戦ができる

■ 自動的に◯ or ☓が入力される

➢ プレイヤーラベルが「あなた」と「コンピュータ」になっている

Page 192: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習解答

❖解答ドキュメントを確認する

Page 193: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

9章まとめ

❖ランダムAIの機能を実装

➢ ランダムAIは、次の手をどこに打つかをランダムに選択する

➢ Playerクラスを継承したAIクラスの作成

➢ AIクラスを継承した、RandomAIクラスの作成

➢ RandomAIクラスにAIの思考ルーチンを実装している

❖Easyモード対応

➢ タイトル画面でEasyモードを選択した時に、ランダムAIと対戦する機能を追加

Page 194: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

10. マルバツゲームの作成3

Step 3. ルールベースAI

Page 195: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Step 3. ルールベースAIの概要

❖概要

➢ Normal モードで遊べるようにする

➢ マルバツゲームのAI対戦にルールベースAI機能を追加する

➢ ルールベースに基づいてゲームをするAIを追加する

Page 196: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

ルールベースAIの思考ルーチン

❖ 思考ルーチン

➢ 次の一手で3つ並べることができる場合はそこを選択する

➢ 相手が次の一手で勝てる場合は阻止する

➢ どちらでもないときはランダムに選択する

◯ ◯ ◯

◯ ◯ ☓

ここに置くと勝てる

相手の勝ちを阻止する

Page 197: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習ルールベースAIの作成

❖マルバツゲームNormalモードのCPU対戦機能を追加する

➢ タイトル画面で Normal モードを選択した時に、ルールベースAIと対戦する

Page 198: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習シーケンス図

❖ルールベースAIがマークを記入するまでの流れ

Page 199: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習ルールベースAIの作成(手順)

❖手順

➢ RandomAIクラスを継承したRulebaseAIクラスの作成

➢ 思考ルーチンの実装

➢ GameControllerの修正

Player

AI

RolubaseAI

RandomAI

User

Page 200: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習確認

❖アプリケーションを実行して次のことを確認する

➢ 3つ並べることができる場所があったときにそこに打つ

➢ 相手の勝ちを阻止する

➢ いずれでもないときは、ランダムな一手を選択する

Page 201: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習解答

❖解答ドキュメントを確認する

Page 202: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

10章まとめ

❖ルールベースAIの機能を実装

➢ ルールベースAIは、次の手をどこに打つかをゲームルールに基づいて選択

➢ 勝敗が決まるようなときに最善手を選択するような機能をもつ

➢ 次の一手で勝敗が決まらないようなケースでは、ランダムな一手を選択する

➢ RandomAIクラスを継承した、RulebaseAIクラスの作成

❖Normalモード対応

➢ タイトル画面でNormalモードを選択した時に、ランダムAIと対戦する機能を追加

Page 203: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

11. マルバツゲームの作成4

Step 4. CPU vs CPU

Page 204: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Step 4. CPU vs CPU概要

❖マルバツゲームにCPU同士対戦機能を追加する

➢ CPU vs CPU モード機能の追加

➢ 対戦で使用するCPUはランダムAIを搭載したものとする

➢ CPU同士の対戦は “プレイアウトモード”で必要な機能となる

Page 205: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習CPU vs CPU の作成

❖マルバツゲーム CPU vs CPU モードの機能を追加する

➢ タイトル画面で CPU vs CPU モードを選択した時に、ルールベースAIと対戦する

Page 206: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習シーケンス図

❖CPU vs CPU の処理フロー

Page 207: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習CPU vs CPU の作成(手順)

❖手順

➢ MainActivityの修正

➢ GameControllerの修正

Page 208: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習確認

❖アプリケーションを実行して次のことを確認する

➢ CPU同士対戦ができる

■ CPU対戦開始ボタンをクリックするとゲームが開始する

■ 自動的に◯と ☓が入力される

➢ プレイヤーラベルが「コンピュータ1」と「コンピュータ2」になっている

Page 209: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習解答

❖解答ドキュメントを確認する

Page 210: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

11章まとめ

❖CPU同士の対戦機能を実装

➢ MainActvitiyにThreadを用意して、対戦を自動化

❖CPU vs CPU モード対応

➢ タイトル画面でCPU vs CPUモードを選択した時に、ランダムAIと対戦する機能を追加

Page 211: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

12. マルバツゲームの作成5

Step 5. プレイアウトAI

Page 212: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

Step 5. プレイアウトAI概要

❖マルバツゲームのAI対戦にプレイアウトAI機能を追加する

➢ Hard モード機能の追加

➢ プレイアウト結果に基づいてゲームをするAIを追加する

❖AIの機能

➢ ルールベースAIの機能を使い、次の1手が勝利または敗北にならないようにする

➢ それ以外ではプレイアウトを使って次の1手を決めるため、30回のシミュレートを行う

Page 213: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

プレイアウト

❖プレイアウトとは

➢ ある局面を想定して、コンピュータが乱数に従い、二人の仮想プレイヤーを演じて、終局ま

で打つこと

➢ 乱数を使って多数の終局図を作り、勝敗を記録する

➢ コンピュータ囲碁プログラミングでよく使われている

➢ モンテカルロ探索を取り入れることで、精度が向上する

http://commutative.world.coocan.jp/blog/2008/07/post_798.html

Page 214: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

乱数を使ってマルバツをする

❖乱数を使って多数の終局図(例では100戦)を作り、勝敗を記録する

◯ ☓ ◯

☓ ◯

◯ ◯ ☓

☓ ◯ ◯

◯ ☓ ☓

◯ ☓

◯ ☓

◯ ☓ ◯

☓ ◯

☓ ◯ ◯

☓ ☓ ◯

☓ ◯

◯ ◯

100戦53勝

100戦48勝

48勝 28勝 46勝

24勝 53勝 27勝

40勝 34勝 44勝

記録ある局面での次の1手目を順番に実行

結果

Page 215: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

乱数を使ってマルバツをする

❖勝敗記録から最も勝率の高い場所を次の1手とする

48勝 28勝 46勝

24勝 53勝 27勝

40勝 34勝 44勝

次の1手

Page 216: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

プレイアウトAIの思考ルーチン

❖思考ルーチン

➢ ルールベースAIの思考ルーチンを引き継ぐ

➢ 次の一手で勝敗が決まらないときにプレイアウトで1手を選択する

◯ ◯ ◯

◯ ◯ ☓

ここに置くと勝てる

相手の勝ちを阻止する

◯ ☓

◯ ☓ ◯

プレイアウトで選択

Page 217: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習プレイアウトAIの作成

❖マルバツゲームHardモードのCPU対戦機能を追加する

➢ タイトル画面で Hard モードを選択した時に、ルールベースAIと対戦する

Page 218: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習シーケンス図

❖プレイアウトAIがマークを記入するまでの流れ

Page 219: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習プレイアウトAIの作成(手順)

❖手順

➢ PlayoutGameControllerの作成

➢ PlayoutAIの作成

➢ 思考ルーチンの実装

➢ GameControllerの修正

Player

AI

RolubaseAI

PlayoutAI

RandomAI

User

Page 220: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習確認

❖アプリケーションを実行して次のことを確認する

➢ 3つ並べることができる場所があったときにそこに打つ

➢ 相手の勝ちを阻止する

➢ ログを確認し、上記以外の場合で最も勝ちの多い手を選択していること

Page 221: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

実習解答

❖解答ドキュメントを確認する

Page 222: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

12章まとめ

❖プレイアウトとは

➢ ある局面を想定して、終局まで打つことをプレイアウトという

➢ 使うのには乱数を使って次の手を決定する

❖プレイアウトAIの機能を実装

➢ プレイアウトAIは、プレイアウトを使って最善手を決定する

➢ プレイアウトの仮想プレイヤーにはランダムAIを用いる

➢ RulebaseAIクラスを継承したPlayoutAIクラスの作成

❖Hardモード対応

➢ タイトル画面でEasyモードを選択した時に、ランダムAIと対戦する機能を追加

Page 223: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

13. まとめ

Page 224: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

まとめ

章 タイトル

1章 人工知能とはなにか

2章 Android に学ぶ人工知能

3章 Cloud Vision を使ってみよう

4章 開発環境の構築

5章 開発ツールの使い方

6章 マルバツゲーム概要

Page 225: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

まとめ

章 タイトル

7章 人工知能とはなにか

8章 マルバツゲームの作成 2. ランダムAI

9章 マルバツゲームの作成 3 ルールベースAI

10章 マルバツゲームの作成 4 CPU vs CPU

11章 開発ツールの使い方

12章 マルバツゲームの作成 5 プレイアウトAI

13章 まとめ

Page 226: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

1章人工知能とはなにか

❖1章では次のことについて学びました。

➢人工知能の背景

■人工知能は既に製品化されており、ゲームや自動掃除機と言ったプロダクトが市場に出ている

■ Android搭載のスマートフォンの流布により、様々なサービスがしやすくなり、大量のデータが

ユーザーからアップロードされるようになってきた

■ これらのデータを活用して、人工知能のさらなる研究が進んでいる

➢人工知能の特性

■学習・認識・推論と言った機能を備える。(機械学習についてはスコープ外)

■ 知能や知性には明確な定義がない為、明確な説明は難しい

Page 227: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

2章 Android に学ぶ人工知能

❖2章では次のことについて学びました。

➢ Android から利用可能な人工知能の例

■ユーザーの目的をかなえてくれるものから、ユーザーが普段何気なく行っている行動を助けてくれるものがある

■ユーザーを楽しませてくれる物と様々なものが存在している

➢ Androidの登場により、受けた恩恵

■音声キャプチャーと言ったアプリが簡単にかける様になった。

■身近なチャットアプリが頻繁に利用される様になった。

●チャットアプリから利用可能な会話ボット(人工無脳)を作るための仕組みが登場

➢チューリングテスト

■人工無能の人間らしさの判定基準

■あくまで統計的な手法に基づいたものであり、明確な判定基準としては弱い

Page 228: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

3章 Cloud Vision を使ってみよう

❖3章では次のことについて学びました。

➢ Cloud Vision

■ Cloud Visionは、Google が提供している、画像解析エンジン

■ ブラウザや、自作のアプリケーションからAPIを通じて画像解析が可能

➢ Cloud Vision では、以下の様な解析を得ることができる

■ Properties: 色がどの程度含まれているか

■ Label: どのようなものが含まれているか

■ Safe Search: 青年的、詐欺的、暴力的、医療的かどうか

■ Text: OCRの結果

■ Face: 顔情報がどの位置に含まれているか

■ Logo: どの企業のロゴがどの位置に含まれているか

Page 229: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

3章 Cloud Vision を使ってみよう

❖3章では次のことについて学びました。

➢ Cloud Vision

■ Cloud Visionは、Google が提供している、画像解析エンジン

■ ブラウザや、自作のアプリケーションからAPIを通じて画像解析が可能

➢ Cloud Vision では、以下の様な解析を得ることができる

■ Properties: 色がどの程度含まれているか

■ Label: どのようなものが含まれているか

■ Safe Search: 青年的、詐欺的、暴力的、医療的かどうか

➢画像フォーマット

■ ビットマップ、JPEG、PNMなどのフォーマットがある

Page 230: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

4章開発環境の構築

❖4章では次のことについて学びました。

➢ Androidアプリケーション開発に必要なツール

■ JDK 8

■ Android Studio

■ Android SDK

■ Androidエミュレータまたは、Androidデバイス

➢ Android Studioのインストール

■ Android StudioのインストーラはAndroid Developerサイトから入手可能

■ Android Studioを使って、Android アプリケーション開発に必要なコンポーネントのインストール

ができる

Page 231: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

5章開発ツールの使い方

❖5章では次のことについて学びました。

➢ Android Studio

■ Androidアプリケーションを開発するための統合開発環境(IDE)

■ Android Studioには便利な支援機能がある

● Androidプロジェクトの作成

● Androidアプリケーションの実行・デバッグ

● GUIを使った画面デザイン

● コードの入力支援

➢ Android Device Monitor

■ Android Studioのデバッグツール

■ モニタリング、エミュレータ操作などの機能がある

Page 232: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

6章マルバツゲーム概要

❖6章では次のことについて学びました。

➢マルバツゲームのアルゴリズムの理解

➢ ドメインモデルの作成

➢ アプリケーションを構成する主なクラス

➢ クラス図による、各クラスの関係

➢シーケンス図

■ アプリケーション起動の流れの理解

■ゲーム中の流れの理解

クラス 説明

TitleActivity タイトル画面

MainActivity ゲーム画面

Constants 定数定義クラス

Cell ◯☓マークオブジェクト

Player プレイヤー抽象クラス

TicTacToe ゲームロジッククラス

GameController Playerの操作とゲームの監視をする

Page 233: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

7章マルバツゲームの作成 1

❖7章では次のことについて学びました。

➢基盤作成と2P対戦機能の概要

■ タイトル画面からゲーム画面の画面遷移機能を実装

■ゲームの基盤部分となるゲームロジックを実装

➢ 2P対戦機能の実装

■ Playerクラスを継承したUserクラスを作成

■マークを記入するなどの、実際の振る舞いはAndroidを操作している人が行う

Page 234: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

8章思考ルーチン

❖8章では次のことについて学びました。

➢ コンピュータゲームにおける人工知能について

■人工知能の技術をコンピュータゲームに応用し、NPCに知能あるいは知性を持っているように

みせる

➢ ゲームAIとはコンピューターゲームにおいて利用されるAI(人工知能)のこと

➢ 思考ルーチンは、コンピュータゲームのプログラムの一部

Page 235: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

9章マルバツゲームの作成2

❖9章では次のことについて学びました。

➢ ランダムAIの機能を実装

■ ランダムAIは、次の手をどこに打つかをランダムに選択する

■ Playerクラスを継承したAIクラスの作成

■ AIクラスを継承した、RandomAIクラスの作成

■ RandomAIクラスにAIの思考ルーチンを実装している

➢ Easyモード対応

■ タイトル画面でEasyモードを選択した時に、ランダムAIと対戦する機能を追加

Page 236: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

10章マルバツゲームの作成3

❖10章では次のことについて学びました。

➢ ルールベースAIの機能を実装

■ルールベースAIは、次の手をどこに打つかをゲームルールに基づいて選択

■勝敗が決まるようなときに最善手を選択するような機能をもつ

■次の一手で勝敗が決まらないようなケースでは、ランダムな一手を選択する

■ RandomAIクラスを継承した、RulebaseAIクラスの作成

➢ Normalモード対応

■ タイトル画面でNormalモードを選択した時に、ランダムAIと対戦する機能を追加

Page 237: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

11章マルバツゲームの作成4

❖11章では次のことについて学びました。

➢ CPU同士の対戦機能を実装

■ MainActvitiyにThreadを用意して、対戦を自動化

➢ CPU vs CPU モード対応

■ タイトル画面でCPU vs CPUモードを選択した時に、ランダムAIと対戦する機能を追加

Page 238: 人工知能とはなにか - it.28monka-itaku.netit.28monka-itaku.net/denshi-app/wp-content/uploads/2016/11/02.pdf · 機械学習のオープンソースライブラリ 機械学習のライブラリを以下に示す

12章マルバツゲームの作成5

❖12章では次のことについて学びました。

➢ プレイアウトとは

■ある局面を想定して、終局まで打つことをプレイアウトという

■使うのには乱数を使って次の手を決定する

➢ プレイアウトAIの機能を実装

■プレイアウトAIは、プレイアウトを使って最善手を決定する

■ プレイアウトの仮想プレイヤーにはランダムAIを用いる

■ RulebaseAIクラスを継承したPlayoutAIクラスの作成

➢ Hardモード対応

■ タイトル画面でEasyモードを選択した時に、ランダムAIと対戦する機能を追加