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.5k
ブラウザの外側でWasmを使おう
teru0x1
0
300
スタブサーバ自動生成ツール 〜負荷試験をもっと楽に〜
teru0x1
0
1.7k
バッチシステムをクラウドネイティブにするために考えたこと
teru0x1
17
8k
クラウド環境をFargateに 移行して得た知見
teru0x1
0
1.5k
Goと定数 DMM.go #3
teru0x1
0
2.5k
はてなインターン2020成果発表
teru0x1
0
1k
入門QUIC
teru0x1
0
490
【衝撃】Archlinuxをインストールした結果がヤバすぎた!
teru0x1
0
68
Other Decks in Technology
See All in Technology
PL900試験から学ぶ Power Platform 基礎知識講座
kumikeyy
0
110
5分で紹介する生成AIエージェントとAmazon Bedrock Agents / 5-minutes introduction to generative AI agents and Amazon Bedrock Agents
hideakiaoyagi
0
220
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
120
10分で紹介するAmazon Bedrock利用時のセキュリティ対策 / 10-minutes introduction to security measures when using Amazon Bedrock
hideakiaoyagi
0
170
現場の種を事業の芽にする - エンジニア主導のイノベーションを事業戦略に装着する方法 -
kzkmaeda
2
1.5k
偶然 × 行動で人生の可能性を広げよう / Serendipity × Action: Discover Your Possibilities
ar_tama
1
740
Nekko Cloud、 これまでとこれから ~学生サークルが作る、 小さなクラウド
logica0419
2
730
『AWS Distinguished Engineerに学ぶ リトライの技術』 #ARC403/Marc Brooker on Try again: The tools and techniques behind resilient systems
quiver
0
130
Postmanを使いこなす!2025年ぜひとも押さえておきたいPostmanの10の機能
nagix
2
120
関東Kaggler会LT: 人狼コンペとLLM量子化について
nejumi
3
460
テストアーキテクチャ設計で実現する高品質で高スピードな開発の実践 / Test Architecture Design in Practice
ropqa
3
710
リアルタイム分析データベースで実現する SQLベースのオブザーバビリティ
mikimatsumoto
0
950
Featured
See All Featured
Statistics for Hackers
jakevdp
797
220k
It's Worth the Effort
3n
184
28k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
51k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
99
18k
Music & Morning Musume
bryan
46
6.3k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
950
Embracing the Ebb and Flow
colly
84
4.6k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Navigating Team Friction
lara
183
15k
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でもっと遊びましょう