Slide 1

Slide 1 text

Pythonͱϓϩάϥϛϯά 2016-11-12 PyCon mini Hiroshima 2016

Slide 2

Slide 2 text

Րଜ ஐ඙ • 0x20୅ • ޿ౡҭͪɺ޿ౡੜ·ΕͷϓϩάϥϚ • ޷͖ͳPythonͷػೳ ಺แදه • Twitter: eielh • GitHub: eiel

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

広島に来たら我馬へ

Slide 7

Slide 7 text

すごい広島

Slide 8

Slide 8 text

すごい広島 • エンジニアが集まっている • 雑談とか • 自分の作業とか • 毎週水曜日 19時

Slide 9

Slide 9 text

LT駆動開発

Slide 10

Slide 10 text

LT駆動開発 • 毎月発表して勉強する勉強会 • 毎月発表するのは大変 • とても勉強になる • 毎月 第一土曜日 or 日曜日

Slide 11

Slide 11 text

ITエンジニア合同忘年会 広島ITエンジニア合同忘年会2016 12月10日(土) 18:00

Slide 12

Slide 12 text

Pythonͷࢥ͍ग़

Slide 13

Slide 13 text

Pythonの思い出 • 時代はPythonかなって(2009年ごろ) • Perl/PHPが強い時期

Slide 14

Slide 14 text

Pythonの思い出 • 時代はPythonかなって(2009年ごろ) • Perl/PHPが強い時期 • 仕事でPython、趣味はRuby

Slide 15

Slide 15 text

Pythonの思い出 • 時代はPythonかなって(2009年ごろ) • Perl/PHPが強い時期 • 仕事でPython、趣味はRuby • /usr/bin/pythonを置き換えてしまった

Slide 16

Slide 16 text

Pythonの思い出 • 時代はPythonかなって(2009年ごろ) • Perl/PHPが強い時期 • 仕事でPython、趣味はRuby • /usr/bin/pythonを置き換えてしまった ZVNಈ͔ͳ͘ͳΔʂʂ

Slide 17

Slide 17 text

ࠓ೔ͷ͓࿩

Slide 18

Slide 18 text

「いろいろなプログラミング言語 を適材適所で使うということがピ ンと来ない」という人たちがいる

Slide 19

Slide 19 text

そういうことで 「広島でいろいろなプログラミ ング言語に関心を持っている人」 である火村さん

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

「最新」ばっか
 追いかけててもだめだよ

Slide 22

Slide 22 text

「最新」ばっか
 追いかけててもだめだよ ͳΜౖ͔ΒΕͦ͏ͩͳʜ

Slide 23

Slide 23 text

1ZUIPOͷݞΛ࣋ͭ

Slide 24

Slide 24 text

広島 プログラミング言語 火村 Pythonの肩を持つ

Slide 25

Slide 25 text

あじぇんだ • プログラミング言語の使い分け • いろんなプログラミング言語を学ぶ理由 • 雑なプログラミング言語紹介 • 例になるのかよくわかないけど例 多相 • まとめ

Slide 26

Slide 26 text

お詫び Pythonとプログラミングという タイトルをつけましたが、そん なにタイトルにあった内容に なりませんでした。僕自身が楽し んで話せるように進めていきた いと思います。

Slide 27

Slide 27 text

ϓϩάϥϛϯάݴޠ࢖͍෼͚

Slide 28

Slide 28 text

なぜプログラミングするのか

Slide 29

Slide 29 text

プログラミングする主な理由

Slide 30

Slide 30 text

プログラミングする主な理由 • アプリケーション作成の依頼を受けた

Slide 31

Slide 31 text

プログラミングする主な理由 • アプリケーション作成の依頼を受けた • 仕事

Slide 32

Slide 32 text

プログラミングする主な理由 • アプリケーション作成の依頼を受けた • 仕事 • 目の前の手作業がめんどくさい

Slide 33

Slide 33 text

プログラミングする主な理由 • アプリケーション作成の依頼を受けた • 仕事 • 目の前の手作業がめんどくさい • 計算機の利用・自分のための自動化

Slide 34

Slide 34 text

プログラミングする主な理由 • アプリケーション作成の依頼を受けた • 仕事 • 目の前の手作業がめんどくさい • 計算機の利用・自分のための自動化 • プログラミングやコンピュータへの理解を深める

Slide 35

Slide 35 text

プログラミングする主な理由 • アプリケーション作成の依頼を受けた • 仕事 • 目の前の手作業がめんどくさい • 計算機の利用・自分のための自動化 • プログラミングやコンピュータへの理解を深める • 学習・知的好奇心

Slide 36

Slide 36 text

アプリケーション作成

Slide 37

Slide 37 text

プログラミング言語より ϓϥοτϑΥʔϜ

Slide 38

Slide 38 text

• Windows • C# VB • Mac iOS • Objective-C Swift • Webフロントエンド • JavaScript

Slide 39

Slide 39 text

選ぶ余地などない

Slide 40

Slide 40 text

プログラミングは手段

Slide 41

Slide 41 text

プログラミングは手段 ໨త͕͋Δͱ͖͸ͦ΋ͦ΋೰·ͳ͍

Slide 42

Slide 42 text

webバックエンド

Slide 43

Slide 43 text

• Python • PHP • Java • Ruby • Scala • Elixir

Slide 44

Slide 44 text

たいていの場合、PHPが正解 状況によってはJava

Slide 45

Slide 45 text

我々はプログラミング言語 に使われているんだ…

Slide 46

Slide 46 text

r 1ZUIPOͷݞʹͷΔ1Z$PONJOJ)JSPTIJNB IUUQXXXTMJEFTIBSFOFUBUTVPJTIJNPUPQZUIPO

Slide 47

Slide 47 text

深さに到達するために 余計につまづく必要はない

Slide 48

Slide 48 text

状況に適したものを選択する

Slide 49

Slide 49 text

自分の目的へ向かうための自動化

Slide 50

Slide 50 text

好きなもの使いやすい

Slide 51

Slide 51 text

1ZUIPOͷݞʹͷΔ1Z$PONJOJ)JSPTIJNB IUUQXXXTMJEFTIBSFOFUBUTVPJTIJNPUPQZUIPO

Slide 52

Slide 52 text

適用範囲が広い 強い(確信)

Slide 53

Slide 53 text

1ZUIPOͷݞʹͷΔ1Z$PONJOJ)JSPTIJNB IUUQXXXTMJEFTIBSFOFUBUTVPJTIJNPUPQZUIPO

Slide 54

Slide 54 text

素直なので 学びやすい

Slide 55

Slide 55 text

他と比較しやすい

Slide 56

Slide 56 text

私がよく使う プログラミング言語

Slide 57

Slide 57 text

最近よくつかうプログラミング言語 • Haskell 学習 他にない機能がたくさん • Ruby 自動化 さくっとかきたい • Scala 自動化 がっつりかくとき • JavaScript 自動化 仕方ないんだ • PHP    仕事 仕方ないんだ

Slide 58

Slide 58 text

最近よくつかうプログラミング言語 • Haskell 学習 他にない機能がたくさん • Ruby 自動化 さくっとかきたい • Scala 自動化 がっつりかくとき • JavaScript 自動化 仕方ないんだ • PHP    仕事 仕方ないんだ 1ZUIPOͳ͍͡ΌΜʂʂ

Slide 59

Slide 59 text

最近よくつかうプログラミング言語 • Haskell 学習 他にない機能がたくさん • Ruby 自動化 さくっとかきたい • Scala 自動化 がっつりかくとき • JavaScript 自動化 仕方ないんだ • PHP    仕事 仕方ないんだ 1ZUIPOͳ͍͡ΌΜʂʂ 1ZUIPOৄ͘͠ͳ͍Ͱ͢

Slide 60

Slide 60 text

• 楽に解決したい • 学びたい プログラミング言語の使い分け

Slide 61

Slide 61 text

͍ΖΜͳϓϩάϥϛϯάݴޠ ΛֶͿཧ༝

Slide 62

Slide 62 text

プログラミングそのものを 理解を深めるため

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

ԁபͰ͢Ͷ

Slide 68

Slide 68 text

一方向からみてるだけでは 全体像は把握できない

Slide 69

Slide 69 text

言語に問わない知識を 見つけ出すために さまざまなプログラミング言語を試す

Slide 70

Slide 70 text

プログラミングという概念を 理解することが目的

Slide 71

Slide 71 text

もっと楽に プログラミングがしたい

Slide 72

Slide 72 text

構造化定理 • 全てのアルゴリズムは3つの基本構造を組 み合わせてつくることができる • 順次 • 繰り返し • 選択

Slide 73

Slide 73 text

言語の持つ多くの機能は なくてもなんとかなる

Slide 74

Slide 74 text

プログラミングは 小さな部品を組み合わせて 大きな部品を構築する

Slide 75

Slide 75 text

大きな部品を使えば 見通しがよくなる

Slide 76

Slide 76 text

ࡶͳݴޠ঺հ

Slide 77

Slide 77 text

本内容は個人の主観と偏見で 満ちています。なるべく間違っ たことを言わないように気を つけてはいますが、すべてを 知っているわけではありませ ん。気軽な指摘や反論はご自 由にお願いします。

Slide 78

Slide 78 text

覚えて損はないGoogle言語

Slide 79

Slide 79 text

Python • 人類をPerlの闇から救った • 文法がニュートラルな言語 • 利用範囲が広い • 非プログラマにも多く利用されている • 計算機を活用したいなら覚えるべき

Slide 80

Slide 80 text

Java • 硬いPython。比較的似ている気はする • ビッグデータの活用に活躍している • Python利用者であれば • Jythonがある • Java利用者であれば • Groovyを覚えるほうが現実的かもしれない

Slide 81

Slide 81 text

Go • Pythonの思想をC言語の得意な世界で • Pythonとはちょっと違った非同期 • Go製のコマンドラインツールが増えてる • GoとPythonが使えると強い

Slide 82

Slide 82 text

JavaScript • Pythonと似てきている • await/async • ジェネレータ • モジュールシステム • 非プログラマでも使えるべき • ブラウザを使うなら覚えるべき言語

Slide 83

Slide 83 text

async/awaitで使うloopが初めから動 いてる感じの言語 loop = asyncio.get_event_loop()

Slide 84

Slide 84 text

Pythonと立ち位置が近い言語

Slide 85

Slide 85 text

Perl • Pythonが闇に葬った言語 • Pythonを利用しているなら • 必要がないなら覚える必要はない

Slide 86

Slide 86 text

PHP • Pythonが使えるなら覚える理由はあまりない • 世界に追いついていく言語 • Pythonも使えると幅が広がる • クロージャがPythonよりも丁寧に扱える

Slide 87

Slide 87 text

# Python def hoge(): n = 1 def goro(): n + 1 # n͕ࢀরͰ͖Δ return goro() hoge() # => 2

Slide 88

Slide 88 text

// PHP function hoge() { $n = 1; $goro = function() use ($n) { // use ($n) ͕ඞཁ return $n+1; }; return $goro(); } hoge(); // => 2

Slide 89

Slide 89 text

Ruby • Pythonの良きライバル • Lispが好きならRubyのほうが楽しい • 世界に高階関数を浸透させた功績

Slide 90

Slide 90 text

Lisp • ポール・グレアムがPythonにはクロージャ がないがLispにはある • python3には nonlocalがある • マクロが強力 • docstringがある

Slide 91

Slide 91 text

特定のプラットフォーム

Slide 92

Slide 92 text

Swift • Pythonに似ているといえば似ている • というか最近の言語にいろいろい似ている • Appleに興味がなければ覚えなくてもいい • 言語という点には学べる点が多い

Slide 93

Slide 93 text

C# • async/awaitはここからきた • ひとつの標準言語

Slide 94

Slide 94 text

おまけ

Slide 95

Slide 95 text

Haskell • 文法的にはPythonに似ている言語 • 使い勝手は全然違う • どんな言語と比べても学びが多い • Pythonより強力な内包表記がある

Slide 96

Slide 96 text

Scala • Pythonにはそんなに似てない • どちらかというとRubyに似ている • forがリストの内包表記として使える • Replにペーストモードがある

Slide 97

Slide 97 text

# Python [ (x, y) for x in range(1,10) if x % 2 == 0 for y in range(1,10) if y % 3 == 0 ] // Scala for { x <- 1 to 9 if x % 2 == 0 y <- 1 to 9 if y % 3 == 0 } yield (x, y)

Slide 98

Slide 98 text

Erlang • Pythonと縁は少ない • バイナリの内包表記という機能がある • 分散・リアルタイムシステム • 学べる点が多い • 個人的には • ScalaのAkkaとの違いを学ぶために勉強している

Slide 99

Slide 99 text

%% erlang όΠφϦͷ಺แදه << <> || <> <= <<1,2,3,4,5>>, X rem 2 == 0>>.

Slide 100

Slide 100 text

Elixir • erlangがRubyっぽくなりました • これからのwebの有力候補

Slide 101

Slide 101 text

Julia • 科学計算処理でPythonを脅かしている • 実行が早い • CythonやNumPyなら負けないとか • Haskellでデータ処理がんばってた人が • Julia使いになってた

Slide 102

Slide 102 text

Rust • 今後オープンソースの世界で活躍するはず • Haskellを使う人が「良い」と言う言語

Slide 103

Slide 103 text

C • 標準であるけどニュートラルではない • Pythonのソースをよむためにも覚えよう

Slide 104

Slide 104 text

C++ • 闇のPython • さらなる進化を続けている

Slide 105

Slide 105 text

Re: θϩ͔Β͸͡ΊΔϓϩάϥϛϯά • JavaScript • Python • Ruby

Slide 106

Slide 106 text

࣮຿Ͱૺ۰͠΍͍͢ • C#/VB • Java • PHP • JavaScript • C/C++

Slide 107

Slide 107 text

ϓϩάϥϛϯάͱ͍͏֓೦Λ
 ֶͼ͍ͨͳΒ • Erlang • Haskell • Lisp

Slide 108

Slide 108 text

文法的な部分を中心に話をしましたが コミュニティやエコシステムの違いも 本来は言語の違いになると思います

Slide 109

Slide 109 text

言語機能 多相

Slide 110

Slide 110 text

No content

Slide 111

Slide 111 text

まとめ

Slide 112

Slide 112 text

プログラミングは 多くの場合 手段

Slide 113

Slide 113 text

目的のために 楽な手段を選択すべき

Slide 114

Slide 114 text

多くの場合、言語は 使い分けさせられる

Slide 115

Slide 115 text

もしプログラミングが 目的するなら

Slide 116

Slide 116 text

得意な言語を軸に 他のプログラミング言語を学ぶことで プログラミングという概念が学べる

Slide 117

Slide 117 text

素直な言語なので Pythonと比較するのはおすすめ

Slide 118

Slide 118 text

Haskell は 面白い機能がたくさんある

Slide 119

Slide 119 text

まとめ • 言語の使い分け • ほとんどプラットフォーム • 楽できるものを使う • いろんな視点をみることで • プログラミングの本質がみえる • プログラマーとして一歩前に出たいなら • すこし特徴的な言語にも挑戦してみて