SlideShare a Scribd company logo
1 of 38
天気予報ガジェットを作りな
がら、Pythonを勉強しよう
@Fablab北加賀屋
2016/1/30
八登浩紀
FabLabとは?
• パーソナル・ファブリケーションに必要な機材を備
えた、実験的な市民工房のネットワークです。
• ファブラボ憲章にのっとり、”Do It With
Others(DIWO)”, ”Learn Make Share”を実践する場
として機能しています。
• 詳しくは、以下のページをご参照ください。
http://fablabkitakagaya.org/whatsfablab_page/
えんやとは?
• ファブラボ北加賀屋の電子工作チームの名前です。
• 現在は以下の3チームにゆるく分かれて活動しています
• Arduino
• RaspberryPi → 今日はこれ。
• mbed
• えんやのfacebookページがありますので、ぜひご参加ください。
https://www.facebook.com/groups/391695280989870/
ものづくりとプログラミング
• なぜものづくりにプログラミングが必要なの?
• 情報の入力
← センサー、インターネットなど
• 情報の加工
← プログラミング
• 情報の出力
← LED、サーボモーター、インターネットなど
Pythonとは?
• スクリプト型の言語で、コンパイルなしで実行でき
る言語です。
• 科学技術計算に強く、CADソフトなどのスクリプ
トとしてもよく用いられます(例:Rhinoceros)
• Raspberry Pi上で動作するRaspbianという
OS(Linux)の標準言語です。
なぜPythonか?
• ユーザーが多いです。
www.tiobe.com/index.php/content/paperinfo/tpci/index.html
• 機能としてコンパクトで習得がしやすいと言われて
います。
• ライブラリが充実していて、機能拡張が容易です
(例:文字列処理、ネット処理、数式処理など)
• どんなOS上でも使えます(マルチプラットフォーム
)
Pythonの言語仕様
• ガベージコレクタによる自動メモリ管理
• 手続き型、オブジェクト指向、関数型など、色々な
書き方のコーディングができる(マルチパラダイム)
• 変数の型は自動的に決定される(動的型付け)
• 変数の型チェックが自動で行われる(強い型付け)
Raspberry Piとは?
• PCライクなマイコンボード。
• キーボード、マウス、モニターを繋いで普通のPC
のように使えます。ネット接続も容易です。
• GPIO出力により電子回路に組み込めます。
• OSはLinux(Raspbian), Windows IoT Coreなど。
Raspberry Piのラインナップ
• Raspberry Pi:初代ラズパイ
• Raspberry Pi 2:CPU4コア+メモリ1GBで
性能強化したラズパイ
• Raspberry Pi Zero:5ドルの小さなラズパイ
• スペックは以下を参照。
https://ja.wikipedia.org/wiki/Raspberry_Pi
今回の目標:Pythonと
Raspberry Piで天気予報ガジ
ェットを作ろう!
天気予報ガジェットの仕組み
Internet
天気予報情報の取得
ラズパイ
天気予報情報の処理
LED点灯信号の出力
ブレッドボードLED
Pythonを勉強しよう
RaspberryPiに
ログインしてみよう
• Windows
• 方法1:SSH
1. TeraTermをインストール
2. TeraTermで以下のサーバにsshで接続
192.168.0.99
ユーザー名: pi, パスワード: raspberry
• 方法2:VNC
1. UltraVNCをインストール
2. VNCで以下のサーバに接続
192.168.0.99:5901 パスワード:raspberry
RaspberryPiに
ログインしてみよう
• Mac
• 方法1:SSH
ターミナルからsshで以下のサーバにアクセス
ssh pi@192.168.0.99
パスワード: raspberry
• 方法2:VNC
Finder→メニューバーの移動→サーバへ接続
サーバアドレス:vnc://pi@192.168.0.99:5901/
パスワード:raspberry
Pythonの基本文法
四則演算
• 2.2+5.6
• 3−1
• 3.1*4.2
• 3/4
• (3+4)*10/3
変数と型
• x = 4
• y = “Python”
• z = True
• x = “Test” + 5
• y = “Test” + “Python”
文字列、入出力、コメント
• len(“Python”)
• “Python” * 10
• print(“Python”)(3.系) print “Python”(2.系)
• temp = input(“Temperature is: “)
• # ここはコメントです
条件比較
• 2 == 2, 3 != 10
• “Python” == “Ruby”
• 3 >= 10, 3 < 10
• not x == 2
• “P” in “Python”, “1” not in “Python”
• x > 3 and y > 2, x > 3 or z < 2
条件分岐とインデント
• if x >= 20:
print(“large”)
elif x > 5:
print(“medium”)
else:
print(“small”)
• if “Python” in “PythonPython”:
print(“true”)
• if x > 10 and y > 5:
print(“Large”)
リスト
• list = [ 10, 20, 30, “Python”, “RasPi” ]
list[1], list[-1]
len(list)
list[2:4], list[-4:-2], list[1:]
• list.append(100)
• list.remove(“Python”)
• list.reverse()
• numbers = [ 5, 3, 10, 2]
numbers.sort()
max(numbers), min(numbers)
辞書型
• a = { ‘First’:”Python”, ‘Second’:”Raspberry Pi” }
a[‘First’]
• b = {‘First’:”Python”, “Second”:[1,2,3,4,5]}
b[‘Second’][2]
ループ
• for member in list:
print(member)
• for i in range(10):
print(i)
• x = 0
while x < 10:
print(x)
x = x + 1
関数
• def sum(a, b):
return a + b
sum(10, 20)
• def multiple(a,b=10):
return a*b
multiple(5)
multiple(5,4)
モジュール、ライブラリ
• import math
math.sqrt(5)
• from math import sqrt
sqrt(5)
• from math import *
sin(pi/2)
• import RPi.GPIO as GPIO
PythonでLチカしてみよう
• ブレッドボード
GND
電源ライン
1列が
導通している
PythonでLチカしてみよう
http://raspi.tv/2014/rpi-gpio-quick-reference-updated-for-raspberry-pi-bから引用
PythonでLチカしてみよう
#!/use/bin/python3
# -*- coding: utf-8 -*-
# モジュールのロード
import time
import RPi.GPIO as GPIO
# GPIOの設定
GPIO.setmode(GPIO.BCM)
# 出力LEDのGPIOピン番号
GPIO_LED = 17
# GPIOのピン番号を出力に設定
GPIO.setup(GPIO_LED, GPIO.OUT)
try:
while(1):
GPIO.output(GPIO_LED, GPIO.HIGH)
time.sleep(1)
GPIO.output(GPIO_LED, GPIO.LOW)
time.sleep(1)
except KeyboardInterrupt:
pass
# GPIOの終了処理
GPIO.cleanup()
天気予報ガジェットの
プログラムを見ていこう
天気予報ガジェットの仕様
• インターネットから一週間分の天気予報情報を取得
します → OpenWeatherMap、Webからの情報
取得
• 天気予報情報から、6時、12時、18時の天気情報を
取り出します → JSON、正規表現
• 分からない部分はWebを検索すればだいたい見つか
ります!
天気予報ガジェットの仕様
• 各時間の天気に応じて以下のようにLEDを光らせる
→ RPi.GPIO
晴れ:消灯
曇り:暗く点灯
雨、雪:明るく点灯
OpenWeatherMap
• http://openweathermap.org/
• APIで世界の各都市の天気を取得できる
• 現在の天気と、5日間・3時間ごとの天気を取得可能
• フリーなら、1分60回、1日50,000回まで取得可能
• 以下のURLにアクセスすると、5日分の天気予報情報が返ってく
る
http://api.openweathermap.org/data/2.5/forecast?q=Osaka-
shi,jp&mode=json&appid=4d8be64e277f433755b3db1a42248b0e
Webページからの情報取得
• URLを指定して、そのURLにアクセスしたときに返ってく
る情報(ブラウザに表示されるのと同じもの。)を取得で
きます。
• 使用例:
import urllib.request
response = urllib.request.urlopen(url)
encoding = response.headers.get_content_charset()
line = response.read().decode(encoding)
JSON
• 表示の仕様:http://openweathermap.org/forecast5
• Webで情報をやりとりするための形式です。
• 決まった構造を取るので、ライブラリで簡単にPythonの
辞書型に変更して、情報を取得することができます。
• 使用例:
decode = json.loads(line)
dt_txt = decode[‘list'][0]['dt_txt']
正規表現
• 文字列を処理するための手法です。
• 文字列の中から、条件に合う部分を抽出できます。
• 使用例:
import re
pattern = re.compile(r'd+')
dt_txt=“2014-07-23 09:00:00”
strlist = pattern.findall(dt_txt)
strlist[0]:”2014”, strlist[1]:”07”, …
• http://www.geocities.jp/m_hiroi/light/python04.html
お天気予報ガジェットのプロ
グラム
• 実際のコードを見ながら説明します。
Pythonの学び方
• Codeacademy(英語)
https://www.codecademy.com/
• ドットインストール(日本語)
http://dotinstall.com/lessons/basic_python_v2
• Jessica McKellar
http://pyvideo.org/video/1850/a-hands-on-
introduction-to-python-for-beginning-p
ご静聴ありがとうござい
ました。

More Related Content

Similar to 天気予報ガジェットを作りな がら、Pythonを勉強しよう

Play meetup-2-dev-best-practices
Play meetup-2-dev-best-practicesPlay meetup-2-dev-best-practices
Play meetup-2-dev-best-practices
k4200
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
Shintaro Fukushima
 
掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public
掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public
掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public
Hisaya Okada
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto study
Naoya Inada
 

Similar to 天気予報ガジェットを作りな がら、Pythonを勉強しよう (20)

「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
Play meetup-2-dev-best-practices
Play meetup-2-dev-best-practicesPlay meetup-2-dev-best-practices
Play meetup-2-dev-best-practices
 
Tableau Developers Club 外部サービス連携#1 Tabpy触ってみよう#1
Tableau Developers Club 外部サービス連携#1 Tabpy触ってみよう#1Tableau Developers Club 外部サービス連携#1 Tabpy触ってみよう#1
Tableau Developers Club 外部サービス連携#1 Tabpy触ってみよう#1
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
 
Marsface Project: 火星および太陽系惑星群の擬似不自然構造物探索
Marsface Project: 火星および太陽系惑星群の擬似不自然構造物探索Marsface Project: 火星および太陽系惑星群の擬似不自然構造物探索
Marsface Project: 火星および太陽系惑星群の擬似不自然構造物探索
 
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようC++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
 
Hadoop~Yahoo! JAPANの活用について~
Hadoop~Yahoo! JAPANの活用について~Hadoop~Yahoo! JAPANの活用について~
Hadoop~Yahoo! JAPANの活用について~
 
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会
 
「自動化...か、かっこいいタル」(憧れ)から始める自動化
「自動化...か、かっこいいタル」(憧れ)から始める自動化「自動化...か、かっこいいタル」(憧れ)から始める自動化
「自動化...か、かっこいいタル」(憧れ)から始める自動化
 
2013_kougi6
2013_kougi62013_kougi6
2013_kougi6
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
 
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化PyData入門(超初心者編)~野球のデータをカジュアルに可視化
PyData入門(超初心者編)~野球のデータをカジュアルに可視化
 
MapReduceによる大規模データ処理 at Yahoo! JAPAN
MapReduceによる大規模データ処理 at Yahoo! JAPANMapReduceによる大規模データ処理 at Yahoo! JAPAN
MapReduceによる大規模データ処理 at Yahoo! JAPAN
 
掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public
掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public
掃除をさせるだけではもったいない「ルンバ」の魅力と攻略法 Public
 
Tableauのつまづきポイント
TableauのつまづきポイントTableauのつまづきポイント
Tableauのつまづきポイント
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto study
 

天気予報ガジェットを作りな がら、Pythonを勉強しよう