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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
teru0x1
January 09, 2018
Technology
0
42
ラズパイ講習会 No2.5
Pythonの文法について説明するおまけ回
teru0x1
January 09, 2018
Tweet
Share
More Decks by teru0x1
See All by teru0x1
開発効率と信頼性を両立する Ubieのプラットフォームエンジニアリング
teru0x1
0
520
マルチクラスタの認知負荷に立ち向かう! Ubieのプラットフォームエンジニアリング
teru0x1
4
4.7k
ブラウザの外側でWasmを使おう
teru0x1
0
390
スタブサーバ自動生成ツール 〜負荷試験をもっと楽に〜
teru0x1
0
2k
バッチシステムをクラウドネイティブにするために考えたこと
teru0x1
17
8.5k
クラウド環境をFargateに 移行して得た知見
teru0x1
0
1.6k
Goと定数 DMM.go #3
teru0x1
0
2.7k
はてなインターン2020成果発表
teru0x1
0
1.1k
入門QUIC
teru0x1
0
590
Other Decks in Technology
See All in Technology
Windows ファイル共有(SMB)を再確認する
murachiakira
PRO
0
240
事例から紐解くSHIFT流QA支援 ~大規模プロジェクトの品質管理支援、QA組織立ち上げ~ / 20260320 Nozomu Koketsu
shift_evolve
PRO
0
140
Copilot 宇宙へ 〜生成AIで「専門データの壁」を壊す方法〜
nakasho
0
160
SSoT(Single Source of Truth)で「壊して再生」する設計
kawauso
2
320
大規模ECサイトのあるバッチのパフォーマンスを改善するために僕たちのチームがしてきたこと
panda_program
1
380
イベントで大活躍する電子ペーパー名札を作る(その2) 〜 M5PaperとM5PaperS3 〜 / IoTLT @ JLCPCB オープンハードカンファレンス
you
PRO
0
190
AgentCoreとLINEを使った飲食店おすすめアプリを作ってみた
yakumo
2
220
Phase06_ClaudeCode実践
overflowinc
0
1.8k
生成AI活用でQAエンジニアにどのような仕事が生まれるか/Support Required of QA Engineers for Generative AI
goyoki
1
370
スピンアウト講座03_CLAUDE-MDとSKILL-MD
overflowinc
0
1.1k
【社内勉強会】新年度からコーディングエージェントを使いこなす - 構造と制約で引き出すClaude Codeの実践知
nwiizo
20
11k
Phase07_実務適用
overflowinc
0
1.7k
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
270
The Curse of the Amulet
leimatthew05
1
10k
Everyday Curiosity
cassininazir
0
170
Scaling GitHub
holman
464
140k
The Spectacular Lies of Maps
axbom
PRO
1
640
Bash Introduction
62gerente
615
210k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.5k
Code Review Best Practice
trishagee
74
20k
Tell your own story through comics
letsgokoyo
1
870
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
120
Building the Perfect Custom Keyboard
takai
2
720
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でもっと遊びましょう