pepper アトリエ秋葉原 - 入門 part1 atelier akihabara...

40
ワークショップ 番外編 Python入門 Part1 1 2017/9/08 Softbank Robotics Atelier Akihabara

Upload: others

Post on 28-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

ワークショップ 番外編 Python入門 Part1

1

2017/9/08

Softbank Robotics

Atelier Akihabara

Page 2: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

このワークショップについて

2

免責事項

このワークショップはアトリエのスタッフが作成したものであり

ソフトバンクロボティクス(株)公式のものではないことをご了承ください。

Page 3: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

Pepper ワークショップPython入門~Part1~

アトリエ秋葉原

Page 4: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

Pepperのアプリ開発という

実体験

実体験とコミュニティーで開発を促進する

アトリエ コミュニティー

経験や知見を

コミュニティーで共有

相互

促進

アトリエ秋葉原とは

Page 5: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

ワークショップ

初級

中級

上級+α

#1

#3 #4 #5

#6

#2

タッチアンドトライ

自由に開発

質問はスタッフに

お客様同士の交流検証や

打ち合わせの利用も可

土日

タッチアンドトライ

貸し切り(有料)

Pepper for Biz説明会&タッチアンドトライ

貸し切り(有料)

タッチアンドトライ&ワークショップ

タッチアンドトライ&ワークショップ

1週間の予定

アトリエ秋葉原のサービス

Page 6: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

アトリエスタッフが製作したオリジナルワークショップ

ワークショップ番外編について

・外部APIとの連携を試そう(天気とTwitter)・Pepperのディレクトリ構造を知ろう

・ペッパーリモコンを作ろう

・NAOqi2.5.5とNAOqi2.4.3の違い

・Pepperで学ぶPython基礎講座その1(変数の扱い方)・Pepperで学ぶPython基礎講座その2(制御文を知る)・Pepperで学ぶPython基礎講座その3(関数を作る)・Pepperで学ぶPython基礎講座その4(BOXを編集)・既存のBOXをPythonで書きかえてみよう(メールとQRコード)・Azure Face APIで顔認証 ハンズオン

・Pepperで学ぶ、はじめてのWatson(Visual Recognition編)・Pepper x TensorFlow 入門

Page 7: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

実体験とコミュニティーで開発を促進する

#6

アトリエサテライト

有志でPepperと開発スペースを提供している

企業、大学、コミュニティスペース

秋葉原で回答できない質問は各サテライトへ

アトリエサテライトについて

Page 8: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

●  お名前●  所属●  プログラミング経験や本日の意気込み

今回ワークショップ講師を務める

**と申します。

よろしくお願いします

軽く自己紹介をしましょう!

始める前に

Page 9: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

Pythonの基本的な記述の仕方を学ぶ

このワークショップでは基本的なpythonの文法を学びます

• 指定した文字列を出力する• 変数• リスト• 辞書

本日の内容

Page 10: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

Pythonとは?

Page 11: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

Pythonとは

● 1991年にオランダ人のグイド・ヴァン・ロッサム氏によって開発された 汎用的なプログラミング言語

● There’s only one way to do it

  -読みやすく、効率もよいコードをなるべく簡単に書けるようにする

11

日本語ではニシキヘビ

Page 12: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

①シンプルな文法-インデントを強制することで誰が書いても似たようなコードになる

②豊富なライブラリ群-特に数学系のライブラリが充実-数学計算からデータベース、Web 開発、GUI アプリの作成等

Pythonの特徴

12

C言語 Python

Page 13: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

Pythonの特徴

13

高度なアプリ開発にPythonは

必須!

Page 14: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

Python

14

実行方法

-コマンドライン上で[python ファイル名]を入力

インストール方法

参考(Windows):http://qiita.com/taiponrock/items/f574dd2cddf8851fb02c参考(mac):http://qiita.com/ms-rock/items/6e4498a5963f3d9c4a67

Page 15: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

使うボックスはこれ

Page 16: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

Python Script boxの関数

16

__init__ behaviorが読み込まれた時

onLoad 親ボックスのonStartが実行された時

onUnload 親ボックスのonStopが実行された時

onInput_onStart ボックスのonStartに信号が入力された時

onInput_onStop ボックスのonStoppedに信号が入力された時

onLoad onUnload

onInput_onStart

onInput_onStop

Page 17: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

Python Script boxの関数

ここにかく

Page 18: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

ーprint文ー  出力する

18

ws.py

print 出力させたい内容

Choregraphe上

self.logger.info(出力させたい内容)

self.logger.info(“Hello World!!”)self.logger.info(10)self.logger.info(3.14)

Hello World!!103.14

Page 19: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

ー四則演算ー 和・差・積・商・剰余

19

演算 演算子

和 +

差 -

積 *

商 /

剰余 %

self.logger.info(11+3) self.logger.info(11-3)self.logger.info(11*3)self.logger.info(11/3)self.logger.info(11%3)self.logger.info(11.0/3.0)

Page 20: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

ー変数ー  値を格納する

20

型 意味 例

int 整数値 1 , 150 , -30

float 浮動小数点数 1.414 , 0.5 , -1.2

str 文字列 “Apple” , “Hello!” , “50”

● Pythonでは型の指定をする必要がない(代入時)x =5y =1.5z = “Apple”

自動でxはint型、yはfloat型、zはstr型と認識

int x = 5;float y = 1.5;str z = “Apple”;

Page 21: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

ーフォーマット指定子ー  

21

型 指定子

int %d

float %f

str %s

使い方

“ x = %d ” % x

文字列にint型の変数を代入すると宣言

代入する変数

Page 22: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

ーformat関数ー  文字列に変数を埋め込む

22

● 文字列に変数を埋め込み出力することができる

任意の文字列1変数任意の文字列2

文字列1変数1文字列2変数2文字列3

“任意の文字列1{}任意の文字列2”.format(変数)

“文字列1{0}文字列2{1}文字列3”.format(変数1,変数2)

Page 23: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

ーprint文ー  文字・変数を出力する

23

x = 10y = 1.5z = "apple”self.logger.info(y+0.5)self.logger.info(z+”banana”)self.logger.info(“x : {0},y : {1},z : {2}”.format(x,y,z))

2.0applebananax : 10, y : 1.5,z : apple

Page 24: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

● 値を複数格納することができる(配列という)

-値1つ1つのデータを要素という

-データのいる場所(何番目にいるか)をindexという

-リスト名[index(数字)]で要素を取り出すことができる

ーリストー 複数の値を一つの値として扱う

24

5 19 -8 3 22 93

data = [5,19,-8,3,22,93]

data

index 0   1   2   3   4   5

data[4]

Page 25: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

ーリストー 文字列も配列

25

Choice

z =“apple” a p p l ez

z = "apple”list = [5,3.2,”melon”,’b’]self.logger.info(z[3])self.logger.info(list[2])self.logger.info(list[0]+3)self.logger.info(list[3]+”anana”)

Page 26: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

● 1組の値(keyとvalue)を複数格納することができる

-同じ辞書内に同じkeyは使えない

-順序は考慮されていない

ー辞書ー

26

pepper = {“height”:121,”weight”:29,”atelier”:”akihabara”}

key valueheight 121weight 29atelier “akihabara”

pepper

Page 27: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

pepper ={“height”:121,”weight”:29,”atelier”:”akihabara”}self.logger.info(pepper[“height”])    #値の取得

pepper[“company”]=“softbank” #要素の追加

self.logger.info(pepper)

ー辞書ー

key valueheight 121weight 29atelier “akihabara”

company “softbank”

pepper

←追加

Page 28: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

①花子さんの身長・体重が格納されている辞書がある。BMIを小数点第2位まで求めて出力せよ。

hanako = {“height”:150,”weight”:42}

ー演習問題ー

変数がfloat型の場合:(y: {:.2f}).format(y)と書くと小数点以下の桁数指定ができる。

BMI:

はなこさんのBMIは18.67です。

体重(kg)身長(m)×身長(m)

ヒント・辞書のvalueの取り出し方は? →辞書名[key]

Page 29: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

②花子さんと太郎さんの身長・体重が格納されている辞書

のリストがある。BMIを小数点第2位まで求めて出力せよ。

data =[{"height":150,"weight":42},{"height":170,"weight":60}]

ー演習問題ー

はなこさんのBMIは18.67で太郎さんのBMIは20.76です。

リストの要素が辞書になっている!→リストから辞書を取り出して、valueを取り出す

Page 30: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

まとめ

Page 31: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

本日の内容

Pythonの基本的な記述の仕方を学ぶ

31

出力(print文)四則演算変数の型リスト辞書条件分岐(if文)繰り返し文(for文、while文)関数とはchoregraphe特有のpythonの記述の仕方

ここまで→

Page 32: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

おまけ

Page 33: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

33

開発のための情報

「アトリエ秋葉原 ブログ」で検索

・ワークショップのスライドをダウンロードできます

・イベントの紹介とイベントのレポートが見ることができます

Pepper アトリエ秋葉原 with SoftBank

Page 34: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

34

開発のための情報

「アトリエ秋葉原 FB」で検索

・アトリエ秋葉原のFacebookグループです

・情報共有や質問ができます

アトリエ秋葉原FBグループ

Page 35: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

35

・プログラミングに関する知識を記録・共有するためのサービス

・Pepperタグに有志によるPepperに関する様々な技術情報があります

開発のための情報

「Qiita pepper 」で検索

Qiita

Page 36: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

36

開発のための情報

「Pepper Developer Network 」で検索

・SBR公式Youtubeチャンネル

・ロボアプリ開発でよく使うパターンや知らないとハマっちゃうポイントについて説明して

います。

Pepper Developer Network

Page 37: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

37

おつかれさまでした!

これにてPepperで学ぶPython講座その1は終わりになります。

WSは続けてぜひ受講してみてください

お帰りの際はアンケートの記入に

ご協力ください

お疲れ様でした

Page 38: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

38

アンケートURL

https://goo.gl/XoNkfd

Page 39: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

①花子さんの身長・体重が格納されている辞書がある。BMIを小数点第2位まで求めて出力せよ。

ー演習問題ー 答え

hanako = {"height":150,"weight":42}bmi = hanako["weight"]*10000.0/(hanako["height"]*hanako["height"])self.logger.info("はなこさんのBMIは{:.2f}です。".format(bmi))

Page 40: Pepper アトリエ秋葉原 - 入門 Part1 Atelier Akihabara 番外編...・Pepperのディレクトリ構造を知ろう ・ペッパーリモコンを作ろう ・NAOqi2.5.5とNAOqi2.4.3の違い

②花子さんと太郎さんの身長・体重が格納されている辞書

のリストがある。BMIを小数点第2位まで求めて出力せよ。

ー演習問題ー 答え

data = [{"height":150,"weight":42},{"height":170,"weight":60}]bmi1 = data[0]["weight"]*10000.0/(data[0]["height"]*data[0]["height"])bmi2 = data[1]["weight"]*10000.0/(data[1]["height"]*data[1]["height"])self.logger.info("はなこさんのBMIは{0:.2f}でたろうさんのBMIは{1:.2f}です。".format(bmi1,bmi2))