Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ラズパイ講習会 No2.5
Search
teru0x1
January 09, 2018
Technology
0
34
ラズパイ講習会 No2.5
Pythonの文法について説明するおまけ回
teru0x1
January 09, 2018
Tweet
Share
More Decks by teru0x1
See All by teru0x1
マルチクラスタの認知負荷に立ち向かう! Ubieのプラットフォームエンジニアリング
teru0x1
4
3.1k
ブラウザの外側でWasmを使おう
teru0x1
0
280
スタブサーバ自動生成ツール 〜負荷試験をもっと楽に〜
teru0x1
0
1.5k
バッチシステムをクラウドネイティブにするために考えたこと
teru0x1
17
7.9k
クラウド環境をFargateに 移行して得た知見
teru0x1
0
1.4k
Goと定数 DMM.go #3
teru0x1
0
2.5k
はてなインターン2020成果発表
teru0x1
0
990
入門QUIC
teru0x1
0
460
【衝撃】Archlinuxをインストールした結果がヤバすぎた!
teru0x1
0
54
Other Decks in Technology
See All in Technology
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
610
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
3
220
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
390
DynamoDB でスロットリングが発生したとき/when_throttling_occurs_in_dynamodb_short
emiki
0
130
Platform Engineering for Software Developers and Architects
syntasso
1
520
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
Terraform未経験の御様に対してどの ように導⼊を進めていったか
tkikuchi
2
430
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
110
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
160
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
280
Can We Measure Developer Productivity?
ewolff
1
150
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
4
120
Music & Morning Musume
bryan
46
6.2k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Designing for Performance
lara
604
68k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
BBQ
matthewcrist
85
9.3k
The Cost Of JavaScript in 2023
addyosmani
45
6.8k
KATA
mclloyd
29
14k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
The Cult of Friendly URLs
andyhume
78
6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Transcript
Raspberry pi 講習会 Part2.5 : 初めてのpython 2018年1⽉9⽇ B2 ⼩野輝也
今⽇の予定 1. とりあえずPythonをインストール 2. シェル、rootについて 3. プログラミング⾔語いくつ知ってる︖ 4. Python3に⼊⾨しよう
Python3をインストール 時間がかかるので先にこっちをやる。 インストールを待ってる間に⾊々説明 https://gist.github.com/dschep/24aa61672a2092246eaca282 4400d37f
https://gist.github.com/dschep/24aa61672a2092246eaca2824400d37f を⾒ながら進めよう。 $ sudo apt update $ sudo apt install
build-essential tk-dev libncurses5-dev libncursesw5- dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl- dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev $ wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz $ tar xf Python-3.6.0.tar.xz $ cd Python-3.6.0 $ ./configure $ make $ sudo make altinstall wgetコマンド︓webからダウンロード makeコマンド︓ソフトウェアのビルド つまりコンパイル&ライブラリのリンク
シェルスクリプトのシェルとは • シェル(shell)とは、OSの⼼臓部(カーネルという)とユー ザーの橋渡しとなるプログラムである。 OSカーネル シェル ユーザー ユーザーとの 対話能⼒を持 たない
ユーザーからの コマンドを解釈 してOSに引き渡 す。 僕たち ls 3e 29 ea … 4a 8b 3c … lchika.sh タ | ミ ナ ル ソ フ ト
rootについて さっきからスドスド何なんだよ︕︕︕︕と思っている頃かな︖ n Linuxにはデフォルトでrootというユーザが⽤意されている。 n rootはいわゆる「管理者」。windowsではadministratorという。 n rootはLinuxにおける全知全能の神。なんでもできる。
rootについて 全部rootで操作すればいいんじゃないの︖ n ⼤事なファイルをミスって削除したらRPIが起動しな いかも n セキュリティ的に良くない
rootについて ならrootじゃないといじれないファイルはどうするのか n そんな時にはコマンドの前にsudo(superuser do) をつける。 n $ sudo nano
hogehoge n 普通はsudo付きでコマンド実⾏しようとするとパ スワード⼊⼒が求められる・・・。
CUIのメリット CUIでしか動作しないソフトウェアは⼭のようにある u プログラミング関係は特にそう。 u マニュアルにも「コマンド使えて当然でしょ︖」と⾔わんばかりに 環境構築⽅法などが書いてある。
CUIのメリット 2 ・⼀括操作、連続実⾏などが⼀瞬で終わる。 u 1000個のファイルから各10個ずつあるjpgとtxtとpptだけ抜き出し てzipにするとか u 毎⽇午前3時にバックアップを取るとか u pdfをまとめてダウンロードするとか
プログラミング言語、いくつ知ってる?
C⾔語 u古くからある伝統的な⾔語。 u速くて軽い。 u主にハードウェア制御(低レイヤ)に使われる。 u情エレ2年は授業でやります。
C++ uこちらも伝統がある. uCの進化版 u⾔語仕様全て理解してる奴マジで0⼈説が有⼒ u⿊魔術の1つでもある。
Java uモバイルアプリ(Android)やwebアプリ、業務シ ステムなど幅広く使われている。 u⼤規模で堅牢なシステムを構築するのに向いて いる。
コンパイラ型⾔語 コンパイルが必要な⾔語をコンパイラ型⾔語という。 先にあげた3つの⾔語はコンパイラ型⾔語の代表格
Python u直感的で理解しやすい⽂法 uweb、⼈⼯知能、科学計算など幅広い分野で活 ⽤されている。 u今最もアツい⾔語
JavaScript uwebページの修飾が主な⽬的 uフロントエンド界のスター u最近はnode.jsというやべー奴が流⾏っている。 uJavaと混同すると⼈権が剥奪されることが憲法 に明記されている。
PHP uサーバーサイド記述⾔語 u割と簡単にwebアプリケーションプログラムが書ける。
インタプリタ型⾔語 インタプリタ 実⾏と同時に逐⼀プログラムを解釈して機械語に変換する。 同時翻訳機のようなもの。 先ほどの3つの⾔語はインタプリタ型⾔語。 ⼀般的にコンパイラ型に⽐べて動作が遅いもののお⼿軽。
Python3に⼊⾨しよう。 今回はこれらの有名⾔語の中からPython3に⼊⾨しよう。 Pythonをマスターしたら年収5000兆円も夢じゃない︕︕︕
Pythonの特徴 n Python2系とPython3系があり、それらに互換性がない。 n コマンドラインからでも操作できる(お⼿軽︕︕) n 豊富な標準ライブラリ(Cでいう標準関数) n 外部からライブラリ(プログラムの部品となるもの)をインス トールすることが多い。
さあPython3のインストールだ︕︕︕ 本来、Pythonを使うにはwebからインタプリタや標準ライブラリを インストールしなければならない。 しかし、ラズパイにはPython2が最初からインストールされている。 $ python --version python 2.7.9 ただし、Python3は⼊ってないので、これからインストールします。
(プリインストールされているバージョンもあります。) インストールされてるかな︖と思ったら --versionオプションを試してみる
パッケージとは︖ ソフトウェアを1つの製品としてまとめたもの ⼤抵2つ以上のファイルから構成される これらを探したり、依存ライブラリを調べたりするのは⾯倒 パッケージマネージャ
パッケージマネージャのココがすごい︕ • 簡単にインストール、アンインストールができる︕ • パッケージ間の依存関係を解決してくれる。
パッケージ管理に使うコマンド $ sudo apt update ローカルに保存されている「インストールできるパッケージ リスト」の更新 $ sudo apt
install hogehoge hogehogeパッケージをインストール
コマンドラインからPython3 $ python3.6 Python 3.6.0 (default, Dec 4 2017, 04:10:59)
[GCC 4.9.2] on linuxType "help", "copyright", "credits" or "license" for more information. >>> print("hello, python!") hello, python! こんな感じで、気軽にコマンドラインから利⽤できる。 $ python だとpython2系が 起動する 注意︕
Python3の⽂法をガーっと学ぶ >>> a = 10 >>> b = 20 >>>
print(a+b) 30 C⾔語だと #include <stdio.h> int main(){ int a = 10; int b = 20; printf(“%d”, a+b); return 0; }
Python3の⽂法をガーっと学ぶ >>> a = “hoge” >>> print(a) hoge
Python3の⽂法をガーっと学ぶ >>> a = 3 >>> b = 2 >>>
a/b 1.5 >>> a*b 6
Python3の⽂法をガーっと学ぶ *リスト >>> a = [1, 2, “hogehoge”, 3.14] >>>
print(a[0]) 1 >>> print(a[-2]) hogehoge
Python3の⽂法をガーっと学ぶ *リスト >>> newlist = a[0:2] >>> print(newlist) [1, 2]
>>> newlist.append(5) >>> print(newlist) [1, 2, 5]
Python3の⽂法をガーっと学ぶ *ディクショナリ >>> b = {“Japan”: ”Tokyo”, “USA”: “WashingtonD.C.”} >>>
print(b[“Japan”]) ‘Tokyo’
Python3の⽂法をガーっと学ぶ >>> a = [0, 1, 2, 3] >>> for
i in a: ... print(i) 0 1 2 3
Python3の⽂法をガーっと学ぶ >>> a = "robot-architect" >>> for c in a:
... print(c.upper()) R O ...
Python3の⽂法をガーっと学ぶ *リスト内包 >>> a = [ i for i in
range(10) ] >>> print(a) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> b = [ i**2 for i in range(10) if i%2 == 0 ] >>> print(b) [0, 4, 16, 36, 64]
シーケンス リスト、⽂字列、ディクショナリなどはシーケンスという。 シーケンスはどれも似たようなアクセス⽅式、機能を備える
Python3の⽂法をガーっと学ぶ >>> hoge = 5000 >>> print("I want {} trillioin
yen".format(hoge)) I want 5000 trillioin yen
pythonファイルを作成 $ nano sample.py ファイルにプログラムを書く $ python3.6 sample.py
ステートメント import time while True: print("spam!") time.sleep(1)
関数 def hoge(foo): print(foo) return foo+10 bar = hoge(2) print(bar)
Python3の⽂法をガーっと学ぶ n Pythonにおけるオブジェクトとは︖ 数値や⽂字列、リスト、辞書、関数、クラス(後述)、モジュール、 パッケージといったデータのこと。 n クラスとは オブジェクトの設計図となるもの。なんちゃらオブジェクトはこんな 値を持ってこんな操作ができますよというのを定義できる。 この辺はスライド1枚で理解できるものではないので割愛
Python3でfizbuz 1から100までの整数のうち、3の倍数でfiz,5の倍数でbuz,15の倍数 でfizbuzと表⽰されるようなプログラムを書こう。 *if⽂の書き⽅を調べてみよう $ python3.6 fizbuz.py 3:fiz 5:buz 6:fiz
9:fiz 15:fizbuz ...
python2と3を⾒分けよう ネット上にはPythonとだけ書いて2系が3系かわからない記事 がいっぱいある。 だがこれらには互換性がないため、⾒分けるのがとても重要。
python2と3を⾒分けよう Python2系 Python3系 プログラム冒頭に、 -*- coding: utf-8 -*- なし print
"hello" print("hello")
お疲れ様でした。 $ sudo poweroff 次回はpythonでもっと遊びましょう