SlideShare a Scribd company logo
1 of 91
Download to read offline
2011/5/21 N SEG V o l .15




一般的じゃない
 Python入門
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




自己紹介
・名前:アベヒロキ (@hATrayflood)
・職業:自宅サーバ管理者
・URL:http://rayflood.org/diary/
・住所:長野市 地元:東部町

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




Python
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




って何?
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




スクリプト言語
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




         Perlとか
         Rubyとか
         の仲間                by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




        なぜか
        日本では
        マイナー                by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




古参のPerlや
国産のRubyには
敵わないのか…
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




          概要は
          Wikipedia
          を参照               by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




インストーラ
リファレンス
作った人                        by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




※今回は
 Python-2.*系の話
 Python-3.*系は
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




知らん
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




では早速
ソース
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




print("hello world.")

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




いつものヤツ
ですが、流石に
コレだけじゃ…
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




# -*- coding: utf-8 -*-

if __name__ == "__main__":
    print(u"こんにちは")
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




ちょっとPython
っぽくなった
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




> # -*- coding: utf-8 -*-

ソースファイルの
文字コードを指定
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




指定がないとLatin-1
と見なし、MB文字が
ソース中で使えない
コンパイルエラー
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




> if __name__ == "__main__":

ifの行末は「:」。括弧は使わない
明示的な閉じステートメントもない

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




__name__ == "__main__"は
スクリプトとして起動した
ときに実行するって目印

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




>                   print(u"こんにちは")

if内のステートメントか
どうかの判断は、次の行の
インデントで決まります
                              by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




同一レベルのインデントで
同一スコープとみなす
ズレてるものがあると
コンパイルエラー

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




> u"こんにちは"

文字列リテラルの
先頭に「u」を付けると
Unicodeとして扱う
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




Pythonは基本的には
内部Unicodeだけど
リテラルを自動的に
Unicodeに変換しない
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




なんか奇っ怪…

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




次のお題
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




for i in range(4):
   print("i = " + str(i))

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




                            i   =   0
                            i   =   1
                            i   =   2
                            i   =   3   by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




for(i = 0; i < 4; i++)
みたいなforは無い
range()関数を使う
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




range()は数値の配列を
生成する関数で、forの
inに渡すのが主な使い方

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




なので、range()を
print()するとこうなる
> print(str(range(4)))
[0, 1, 2, 3]
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




range()の引数を変えれば
大体のことはできる
> range(10, 4, -2)
[10, 8, 6]

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




> "i = " + str(i)

実は妙なところで型が厳密
混ぜるときは型変換が必要
もちろんこの逆も然り
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




join()は有名すぎるので省略

> "-".join(["a", "b", "c"])
'a-b-c'

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




正直、join()より
他の言語仕様の
ほうが奇妙…
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




次のお題
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




t = datetime.now()
t += timedelta(weeks=1)
t.strftime("%Y/%m/%d")
> '2011/05/28'
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




日付計算は
timedeltaが強力
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




weeks, days,
hours, minutes, seconds,
milliseconds, microseconds
が使いたい放題

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




各項目併用可能
マイナス値も使用可能

t += timedelta(weeks=1, days=-1)
> '2011/05/27'

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




こんなこともいける

t -= timedelta(weeks=1) / 3
t.strftime("%Y/%m/%d %H:%M:%S")
> '2011/05/19 07:20:00'

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




次のお題
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




hoge.py:

def hogehoge():
   print("hogehoge")
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




import hoge
hoge.hogehoge()

> hogehoge                  by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




オブジェクトじゃないのに
なんかオブジェクトっぽい
動きする。キモい。

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




from hoge import hogehoge
hogehoge()

> hogehoge

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




これはこれでimportが長い
パッケージ名を省略できる
ので後が楽といえば楽

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




ところで、hoge.py自身は
パッケージであることを
明示してない

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




< fuga/__init__.py
< fuga/hoge.py

import fuga.hoge
fuga.hoge.hogehoge()
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




ファイルパスがそのまま
パッケージのパスになる
ただし__init__.pyが必要。
中身は空でもよい。
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




__init__.pyにも関数や
クラス書ける。
ただしfrom importに限る

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




fuga/__init__.py:

def fugafuga():
   print("fugafuga")
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




< fuga/__init__.py

from fuga import fugafuga
fugafuga()
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




__init__.pyに何か書く意味は
分からないけど、こんなことも
できるあたり、チェック目的か?


                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




fuga/__init__.py:

raise("error") #print("error")

def fugafuga():
   print("fugafuga")
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




import fuga.hoge

>    raise("error") #print("error")
>   Traceback (most recent call last):
>    File "test.py", line 4, in <module>
>      import fuga.hoge
>    File "fuga/__init__.py", line 1, in <module>
>      raise("error") #print("error")
>   error

                                   by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




事例                          by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




実はライブラリ
作ってました。
rfZenHan
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




s = u"012ABCabc!@#アイウガダパ㈱:"
rfZenHan.normalize(s)
> 012ABCabc!@#アイウガダパ(株):

※詳細はソースのコメント参照


                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




元ネタ
仕様:Perl Unicode::Japanese
実装:Python zenhan.py

車輪の再発明万歳
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




eyeD3
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




mp3のID3タグを
編集するライブラリ
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




他の言語でまともに動く
ライブラリなかったのが
そもそものきっかけ

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




Python
ナイスプレー
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




Google App Engine

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




Googleのオレオレ仕様な
Webアプリ実行環境
ただしサーバ性能は強力

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




言語はJava、Python、Go
フレームワークはそれぞれ
DBは独自で非SQL

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




Trac                        by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




言わずと知れた
プロジェクト管理
バグ追跡システム
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




プラグイン豊富
svn以外にもhgや
gitも使えるらしい
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




Mercurial
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




バージョン管理システム
gitと同じ分散型
Web画面が標準である

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




Python、OpenJDK
Mozilla、その他
多数のOSSで採用
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




Firefoxビルド
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




高速化のために
プロファイル採取
して最適化
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




つまりビルドの
過程で自動実行
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




ブラウザなので
Webサーバが必要
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




Pythonは標準で
SimpleHTTPServer
が使える
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




Python
ナイスプレー
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




まとめ
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




奇妙な
言語です
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




仕様も
使う人も                        by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




奇妙さ故か
日本では
マイナーだけど
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




ニッチなところで
役には立ってるので

                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




ここはあえて
この言葉で
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




Python
ナイスプレー
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




ありがとう
ございました
                            by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




リンク集
twitter hATrayflood
http://twitter.com/hATrayflood
Wikipedia Python
http://ja.wikipedia.org/wiki/Python
Python インストーラ
http://www.python.org/download/
Python 日本語リファレンス
http://www.python.jp/Zope/links/python_documents
作った人 グイド・ヴァンロッサム
http://ja.wikipedia.org/wiki/グイド・ヴァンロッサム

                                  by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




rfZenHan
http://rayflood.org/diary-temp/rfZenHan-0.2.zip
元ネタ 仕様
 半角←→全角変換,Unicode::Japanese に
 未公開機能が… daily dayflower
http://d.hatena.ne.jp/dayflower/20060530/1148951624
元ネタ 実装
 blogSetomits Python 全角/半角変換モジュール zenhan.py
 アルファベット・記号・数字・カタカナの全角・半角変換をする
http://straitmouth.jp/blog/setomits/148
 
Firefox PGOビルド
http://mxr.mozilla.org/mozilla2.0/source/build/pgo/profileserver.py


                                                by A B E H i rok i a k a h A Tra y f l ood
2011/5/21 N SEG V o l .15




eyeD3
http://eyed3.nicfit.net/
Google App Engine
http://code.google.com/intl/ja/appengine/
Trac
http://trac.edgewall.org/
Mercurial
http://mercurial.selenic.com/

                             by A B E H i rok i a k a h A Tra y f l ood

More Related Content

Viewers also liked

Modest09 j query事始め
Modest09 j query事始めModest09 j query事始め
Modest09 j query事始めhATrayflood
 
高橋Rf.html + printplus
高橋Rf.html + printplus高橋Rf.html + printplus
高橋Rf.html + printplushATrayflood
 
Devnaga6 高橋rf.html + printplusリリース
Devnaga6 高橋rf.html + printplusリリースDevnaga6 高橋rf.html + printplusリリース
Devnaga6 高橋rf.html + printplusリリースhATrayflood
 
Modest04 firefox-3.6.4以降のビルドについて
Modest04 firefox-3.6.4以降のビルドについてModest04 firefox-3.6.4以降のビルドについて
Modest04 firefox-3.6.4以降のビルドについてhATrayflood
 
Our tongan flag
Our tongan flagOur tongan flag
Our tongan flagtinivia
 
Environmental Management Accounting Dissemination Activitites In Vietnam
Environmental Management Accounting Dissemination Activitites In VietnamEnvironmental Management Accounting Dissemination Activitites In Vietnam
Environmental Management Accounting Dissemination Activitites In VietnamNguyen Dang Anh Thi
 
Modest02 freetype2 on fx-3.6 win32
Modest02 freetype2 on fx-3.6 win32Modest02 freetype2 on fx-3.6 win32
Modest02 freetype2 on fx-3.6 win32hATrayflood
 
Nseg2 自宅サーバ運用について
Nseg2 自宅サーバ運用についてNseg2 自宅サーバ運用について
Nseg2 自宅サーバ運用についてhATrayflood
 
Sustainable Shrimp Farming In Vietnam 04.2007
Sustainable Shrimp Farming In Vietnam 04.2007Sustainable Shrimp Farming In Vietnam 04.2007
Sustainable Shrimp Farming In Vietnam 04.2007Nguyen Dang Anh Thi
 

Viewers also liked (9)

Modest09 j query事始め
Modest09 j query事始めModest09 j query事始め
Modest09 j query事始め
 
高橋Rf.html + printplus
高橋Rf.html + printplus高橋Rf.html + printplus
高橋Rf.html + printplus
 
Devnaga6 高橋rf.html + printplusリリース
Devnaga6 高橋rf.html + printplusリリースDevnaga6 高橋rf.html + printplusリリース
Devnaga6 高橋rf.html + printplusリリース
 
Modest04 firefox-3.6.4以降のビルドについて
Modest04 firefox-3.6.4以降のビルドについてModest04 firefox-3.6.4以降のビルドについて
Modest04 firefox-3.6.4以降のビルドについて
 
Our tongan flag
Our tongan flagOur tongan flag
Our tongan flag
 
Environmental Management Accounting Dissemination Activitites In Vietnam
Environmental Management Accounting Dissemination Activitites In VietnamEnvironmental Management Accounting Dissemination Activitites In Vietnam
Environmental Management Accounting Dissemination Activitites In Vietnam
 
Modest02 freetype2 on fx-3.6 win32
Modest02 freetype2 on fx-3.6 win32Modest02 freetype2 on fx-3.6 win32
Modest02 freetype2 on fx-3.6 win32
 
Nseg2 自宅サーバ運用について
Nseg2 自宅サーバ運用についてNseg2 自宅サーバ運用について
Nseg2 自宅サーバ運用について
 
Sustainable Shrimp Farming In Vietnam 04.2007
Sustainable Shrimp Farming In Vietnam 04.2007Sustainable Shrimp Farming In Vietnam 04.2007
Sustainable Shrimp Farming In Vietnam 04.2007
 

More from hATrayflood

KancolleSnifferを引き継いだ話と次期バージョンについて
KancolleSnifferを引き継いだ話と次期バージョンについてKancolleSnifferを引き継いだ話と次期バージョンについて
KancolleSnifferを引き継いだ話と次期バージョンについてhATrayflood
 
Firefox Localization Meetup
Firefox Localization MeetupFirefox Localization Meetup
Firefox Localization MeetuphATrayflood
 
Nseg92 kotlin null safety
Nseg92 kotlin null safetyNseg92 kotlin null safety
Nseg92 kotlin null safetyhATrayflood
 
Modest16 ね?簡単でしょ? makefile.in
Modest16 ね?簡単でしょ? makefile.inModest16 ね?簡単でしょ? makefile.in
Modest16 ね?簡単でしょ? makefile.inhATrayflood
 
Modbuilders 独自ビルド環境について
Modbuilders 独自ビルド環境についてModbuilders 独自ビルド環境について
Modbuilders 独自ビルド環境についてhATrayflood
 
高橋rf.html 0.3
高橋rf.html 0.3高橋rf.html 0.3
高橋rf.html 0.3hATrayflood
 
Nseg17 新世代firefox紹介
Nseg17 新世代firefox紹介Nseg17 新世代firefox紹介
Nseg17 新世代firefox紹介hATrayflood
 
Modest08 core i7 2600とfirefox 4.0b9でベンチ測ってみたよ
Modest08 core i7 2600とfirefox 4.0b9でベンチ測ってみたよModest08 core i7 2600とfirefox 4.0b9でベンチ測ってみたよ
Modest08 core i7 2600とfirefox 4.0b9でベンチ測ってみたよhATrayflood
 
Nseg10 pcセキュリティの第一歩
Nseg10 pcセキュリティの第一歩Nseg10 pcセキュリティの第一歩
Nseg10 pcセキュリティの第一歩hATrayflood
 
Modest06 firefox 4 の l10 n について
Modest06 firefox 4 の l10 n についてModest06 firefox 4 の l10 n について
Modest06 firefox 4 の l10 n についてhATrayflood
 
Nseg5 第17回北海道開発オフ参加報告
Nseg5 第17回北海道開発オフ参加報告Nseg5 第17回北海道開発オフ参加報告
Nseg5 第17回北海道開発オフ参加報告hATrayflood
 
Nseg3 firefoxとmozillaコミュニティの紹介
Nseg3 firefoxとmozillaコミュニティの紹介Nseg3 firefoxとmozillaコミュニティの紹介
Nseg3 firefoxとmozillaコミュニティの紹介hATrayflood
 

More from hATrayflood (12)

KancolleSnifferを引き継いだ話と次期バージョンについて
KancolleSnifferを引き継いだ話と次期バージョンについてKancolleSnifferを引き継いだ話と次期バージョンについて
KancolleSnifferを引き継いだ話と次期バージョンについて
 
Firefox Localization Meetup
Firefox Localization MeetupFirefox Localization Meetup
Firefox Localization Meetup
 
Nseg92 kotlin null safety
Nseg92 kotlin null safetyNseg92 kotlin null safety
Nseg92 kotlin null safety
 
Modest16 ね?簡単でしょ? makefile.in
Modest16 ね?簡単でしょ? makefile.inModest16 ね?簡単でしょ? makefile.in
Modest16 ね?簡単でしょ? makefile.in
 
Modbuilders 独自ビルド環境について
Modbuilders 独自ビルド環境についてModbuilders 独自ビルド環境について
Modbuilders 独自ビルド環境について
 
高橋rf.html 0.3
高橋rf.html 0.3高橋rf.html 0.3
高橋rf.html 0.3
 
Nseg17 新世代firefox紹介
Nseg17 新世代firefox紹介Nseg17 新世代firefox紹介
Nseg17 新世代firefox紹介
 
Modest08 core i7 2600とfirefox 4.0b9でベンチ測ってみたよ
Modest08 core i7 2600とfirefox 4.0b9でベンチ測ってみたよModest08 core i7 2600とfirefox 4.0b9でベンチ測ってみたよ
Modest08 core i7 2600とfirefox 4.0b9でベンチ測ってみたよ
 
Nseg10 pcセキュリティの第一歩
Nseg10 pcセキュリティの第一歩Nseg10 pcセキュリティの第一歩
Nseg10 pcセキュリティの第一歩
 
Modest06 firefox 4 の l10 n について
Modest06 firefox 4 の l10 n についてModest06 firefox 4 の l10 n について
Modest06 firefox 4 の l10 n について
 
Nseg5 第17回北海道開発オフ参加報告
Nseg5 第17回北海道開発オフ参加報告Nseg5 第17回北海道開発オフ参加報告
Nseg5 第17回北海道開発オフ参加報告
 
Nseg3 firefoxとmozillaコミュニティの紹介
Nseg3 firefoxとmozillaコミュニティの紹介Nseg3 firefoxとmozillaコミュニティの紹介
Nseg3 firefoxとmozillaコミュニティの紹介
 

Recently uploaded

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (8)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

Nseg15 一般的じゃないpython入門

  • 1. 2011/5/21 N SEG V o l .15 一般的じゃない Python入門 by A B E H i rok i a k a h A Tra y f l ood
  • 2. 2011/5/21 N SEG V o l .15 自己紹介 ・名前:アベヒロキ (@hATrayflood) ・職業:自宅サーバ管理者 ・URL:http://rayflood.org/diary/ ・住所:長野市 地元:東部町 by A B E H i rok i a k a h A Tra y f l ood
  • 3. 2011/5/21 N SEG V o l .15 Python by A B E H i rok i a k a h A Tra y f l ood
  • 4. 2011/5/21 N SEG V o l .15 って何? by A B E H i rok i a k a h A Tra y f l ood
  • 5. 2011/5/21 N SEG V o l .15 スクリプト言語 by A B E H i rok i a k a h A Tra y f l ood
  • 6. 2011/5/21 N SEG V o l .15 Perlとか Rubyとか の仲間 by A B E H i rok i a k a h A Tra y f l ood
  • 7. 2011/5/21 N SEG V o l .15 なぜか 日本では マイナー by A B E H i rok i a k a h A Tra y f l ood
  • 8. 2011/5/21 N SEG V o l .15 古参のPerlや 国産のRubyには 敵わないのか… by A B E H i rok i a k a h A Tra y f l ood
  • 9. 2011/5/21 N SEG V o l .15 概要は Wikipedia を参照 by A B E H i rok i a k a h A Tra y f l ood
  • 10. 2011/5/21 N SEG V o l .15 インストーラ リファレンス 作った人 by A B E H i rok i a k a h A Tra y f l ood
  • 11. 2011/5/21 N SEG V o l .15 ※今回は  Python-2.*系の話  Python-3.*系は by A B E H i rok i a k a h A Tra y f l ood
  • 12. 2011/5/21 N SEG V o l .15 知らん by A B E H i rok i a k a h A Tra y f l ood
  • 13. 2011/5/21 N SEG V o l .15 では早速 ソース by A B E H i rok i a k a h A Tra y f l ood
  • 14. 2011/5/21 N SEG V o l .15 print("hello world.") by A B E H i rok i a k a h A Tra y f l ood
  • 15. 2011/5/21 N SEG V o l .15 いつものヤツ ですが、流石に コレだけじゃ… by A B E H i rok i a k a h A Tra y f l ood
  • 16. 2011/5/21 N SEG V o l .15 # -*- coding: utf-8 -*- if __name__ == "__main__": print(u"こんにちは") by A B E H i rok i a k a h A Tra y f l ood
  • 17. 2011/5/21 N SEG V o l .15 ちょっとPython っぽくなった by A B E H i rok i a k a h A Tra y f l ood
  • 18. 2011/5/21 N SEG V o l .15 > # -*- coding: utf-8 -*- ソースファイルの 文字コードを指定 by A B E H i rok i a k a h A Tra y f l ood
  • 19. 2011/5/21 N SEG V o l .15 指定がないとLatin-1 と見なし、MB文字が ソース中で使えない コンパイルエラー by A B E H i rok i a k a h A Tra y f l ood
  • 20. 2011/5/21 N SEG V o l .15 > if __name__ == "__main__": ifの行末は「:」。括弧は使わない 明示的な閉じステートメントもない by A B E H i rok i a k a h A Tra y f l ood
  • 21. 2011/5/21 N SEG V o l .15 __name__ == "__main__"は スクリプトとして起動した ときに実行するって目印 by A B E H i rok i a k a h A Tra y f l ood
  • 22. 2011/5/21 N SEG V o l .15 > print(u"こんにちは") if内のステートメントか どうかの判断は、次の行の インデントで決まります by A B E H i rok i a k a h A Tra y f l ood
  • 23. 2011/5/21 N SEG V o l .15 同一レベルのインデントで 同一スコープとみなす ズレてるものがあると コンパイルエラー by A B E H i rok i a k a h A Tra y f l ood
  • 24. 2011/5/21 N SEG V o l .15 > u"こんにちは" 文字列リテラルの 先頭に「u」を付けると Unicodeとして扱う by A B E H i rok i a k a h A Tra y f l ood
  • 25. 2011/5/21 N SEG V o l .15 Pythonは基本的には 内部Unicodeだけど リテラルを自動的に Unicodeに変換しない by A B E H i rok i a k a h A Tra y f l ood
  • 26. 2011/5/21 N SEG V o l .15 なんか奇っ怪… by A B E H i rok i a k a h A Tra y f l ood
  • 27. 2011/5/21 N SEG V o l .15 次のお題 by A B E H i rok i a k a h A Tra y f l ood
  • 28. 2011/5/21 N SEG V o l .15 for i in range(4): print("i = " + str(i)) by A B E H i rok i a k a h A Tra y f l ood
  • 29. 2011/5/21 N SEG V o l .15 i = 0 i = 1 i = 2 i = 3 by A B E H i rok i a k a h A Tra y f l ood
  • 30. 2011/5/21 N SEG V o l .15 for(i = 0; i < 4; i++) みたいなforは無い range()関数を使う by A B E H i rok i a k a h A Tra y f l ood
  • 31. 2011/5/21 N SEG V o l .15 range()は数値の配列を 生成する関数で、forの inに渡すのが主な使い方 by A B E H i rok i a k a h A Tra y f l ood
  • 32. 2011/5/21 N SEG V o l .15 なので、range()を print()するとこうなる > print(str(range(4))) [0, 1, 2, 3] by A B E H i rok i a k a h A Tra y f l ood
  • 33. 2011/5/21 N SEG V o l .15 range()の引数を変えれば 大体のことはできる > range(10, 4, -2) [10, 8, 6] by A B E H i rok i a k a h A Tra y f l ood
  • 34. 2011/5/21 N SEG V o l .15 > "i = " + str(i) 実は妙なところで型が厳密 混ぜるときは型変換が必要 もちろんこの逆も然り by A B E H i rok i a k a h A Tra y f l ood
  • 35. 2011/5/21 N SEG V o l .15 join()は有名すぎるので省略 > "-".join(["a", "b", "c"]) 'a-b-c' by A B E H i rok i a k a h A Tra y f l ood
  • 36. 2011/5/21 N SEG V o l .15 正直、join()より 他の言語仕様の ほうが奇妙… by A B E H i rok i a k a h A Tra y f l ood
  • 37. 2011/5/21 N SEG V o l .15 次のお題 by A B E H i rok i a k a h A Tra y f l ood
  • 38. 2011/5/21 N SEG V o l .15 t = datetime.now() t += timedelta(weeks=1) t.strftime("%Y/%m/%d") > '2011/05/28' by A B E H i rok i a k a h A Tra y f l ood
  • 39. 2011/5/21 N SEG V o l .15 日付計算は timedeltaが強力 by A B E H i rok i a k a h A Tra y f l ood
  • 40. 2011/5/21 N SEG V o l .15 weeks, days, hours, minutes, seconds, milliseconds, microseconds が使いたい放題 by A B E H i rok i a k a h A Tra y f l ood
  • 41. 2011/5/21 N SEG V o l .15 各項目併用可能 マイナス値も使用可能 t += timedelta(weeks=1, days=-1) > '2011/05/27' by A B E H i rok i a k a h A Tra y f l ood
  • 42. 2011/5/21 N SEG V o l .15 こんなこともいける t -= timedelta(weeks=1) / 3 t.strftime("%Y/%m/%d %H:%M:%S") > '2011/05/19 07:20:00' by A B E H i rok i a k a h A Tra y f l ood
  • 43. 2011/5/21 N SEG V o l .15 次のお題 by A B E H i rok i a k a h A Tra y f l ood
  • 44. 2011/5/21 N SEG V o l .15 hoge.py: def hogehoge(): print("hogehoge") by A B E H i rok i a k a h A Tra y f l ood
  • 45. 2011/5/21 N SEG V o l .15 import hoge hoge.hogehoge() > hogehoge by A B E H i rok i a k a h A Tra y f l ood
  • 46. 2011/5/21 N SEG V o l .15 オブジェクトじゃないのに なんかオブジェクトっぽい 動きする。キモい。 by A B E H i rok i a k a h A Tra y f l ood
  • 47. 2011/5/21 N SEG V o l .15 from hoge import hogehoge hogehoge() > hogehoge by A B E H i rok i a k a h A Tra y f l ood
  • 48. 2011/5/21 N SEG V o l .15 これはこれでimportが長い パッケージ名を省略できる ので後が楽といえば楽 by A B E H i rok i a k a h A Tra y f l ood
  • 49. 2011/5/21 N SEG V o l .15 ところで、hoge.py自身は パッケージであることを 明示してない by A B E H i rok i a k a h A Tra y f l ood
  • 50. 2011/5/21 N SEG V o l .15 < fuga/__init__.py < fuga/hoge.py import fuga.hoge fuga.hoge.hogehoge() by A B E H i rok i a k a h A Tra y f l ood
  • 51. 2011/5/21 N SEG V o l .15 ファイルパスがそのまま パッケージのパスになる ただし__init__.pyが必要。 中身は空でもよい。 by A B E H i rok i a k a h A Tra y f l ood
  • 52. 2011/5/21 N SEG V o l .15 __init__.pyにも関数や クラス書ける。 ただしfrom importに限る by A B E H i rok i a k a h A Tra y f l ood
  • 53. 2011/5/21 N SEG V o l .15 fuga/__init__.py: def fugafuga(): print("fugafuga") by A B E H i rok i a k a h A Tra y f l ood
  • 54. 2011/5/21 N SEG V o l .15 < fuga/__init__.py from fuga import fugafuga fugafuga() by A B E H i rok i a k a h A Tra y f l ood
  • 55. 2011/5/21 N SEG V o l .15 __init__.pyに何か書く意味は 分からないけど、こんなことも できるあたり、チェック目的か? by A B E H i rok i a k a h A Tra y f l ood
  • 56. 2011/5/21 N SEG V o l .15 fuga/__init__.py: raise("error") #print("error") def fugafuga(): print("fugafuga") by A B E H i rok i a k a h A Tra y f l ood
  • 57. 2011/5/21 N SEG V o l .15 import fuga.hoge > raise("error") #print("error") > Traceback (most recent call last): > File "test.py", line 4, in <module> > import fuga.hoge > File "fuga/__init__.py", line 1, in <module> > raise("error") #print("error") > error by A B E H i rok i a k a h A Tra y f l ood
  • 58. 2011/5/21 N SEG V o l .15 事例 by A B E H i rok i a k a h A Tra y f l ood
  • 59. 2011/5/21 N SEG V o l .15 実はライブラリ 作ってました。 rfZenHan by A B E H i rok i a k a h A Tra y f l ood
  • 60. 2011/5/21 N SEG V o l .15 s = u"012ABCabc!@#アイウガダパ㈱:" rfZenHan.normalize(s) > 012ABCabc!@#アイウガダパ(株): ※詳細はソースのコメント参照 by A B E H i rok i a k a h A Tra y f l ood
  • 61. 2011/5/21 N SEG V o l .15 元ネタ 仕様:Perl Unicode::Japanese 実装:Python zenhan.py 車輪の再発明万歳 by A B E H i rok i a k a h A Tra y f l ood
  • 62. 2011/5/21 N SEG V o l .15 eyeD3 by A B E H i rok i a k a h A Tra y f l ood
  • 63. 2011/5/21 N SEG V o l .15 mp3のID3タグを 編集するライブラリ by A B E H i rok i a k a h A Tra y f l ood
  • 64. 2011/5/21 N SEG V o l .15 他の言語でまともに動く ライブラリなかったのが そもそものきっかけ by A B E H i rok i a k a h A Tra y f l ood
  • 65. 2011/5/21 N SEG V o l .15 Python ナイスプレー by A B E H i rok i a k a h A Tra y f l ood
  • 66. 2011/5/21 N SEG V o l .15 Google App Engine by A B E H i rok i a k a h A Tra y f l ood
  • 67. 2011/5/21 N SEG V o l .15 Googleのオレオレ仕様な Webアプリ実行環境 ただしサーバ性能は強力 by A B E H i rok i a k a h A Tra y f l ood
  • 68. 2011/5/21 N SEG V o l .15 言語はJava、Python、Go フレームワークはそれぞれ DBは独自で非SQL by A B E H i rok i a k a h A Tra y f l ood
  • 69. 2011/5/21 N SEG V o l .15 Trac by A B E H i rok i a k a h A Tra y f l ood
  • 70. 2011/5/21 N SEG V o l .15 言わずと知れた プロジェクト管理 バグ追跡システム by A B E H i rok i a k a h A Tra y f l ood
  • 71. 2011/5/21 N SEG V o l .15 プラグイン豊富 svn以外にもhgや gitも使えるらしい by A B E H i rok i a k a h A Tra y f l ood
  • 72. 2011/5/21 N SEG V o l .15 Mercurial by A B E H i rok i a k a h A Tra y f l ood
  • 73. 2011/5/21 N SEG V o l .15 バージョン管理システム gitと同じ分散型 Web画面が標準である by A B E H i rok i a k a h A Tra y f l ood
  • 74. 2011/5/21 N SEG V o l .15 Python、OpenJDK Mozilla、その他 多数のOSSで採用 by A B E H i rok i a k a h A Tra y f l ood
  • 75. 2011/5/21 N SEG V o l .15 Firefoxビルド by A B E H i rok i a k a h A Tra y f l ood
  • 76. 2011/5/21 N SEG V o l .15 高速化のために プロファイル採取 して最適化 by A B E H i rok i a k a h A Tra y f l ood
  • 77. 2011/5/21 N SEG V o l .15 つまりビルドの 過程で自動実行 by A B E H i rok i a k a h A Tra y f l ood
  • 78. 2011/5/21 N SEG V o l .15 ブラウザなので Webサーバが必要 by A B E H i rok i a k a h A Tra y f l ood
  • 79. 2011/5/21 N SEG V o l .15 Pythonは標準で SimpleHTTPServer が使える by A B E H i rok i a k a h A Tra y f l ood
  • 80. 2011/5/21 N SEG V o l .15 Python ナイスプレー by A B E H i rok i a k a h A Tra y f l ood
  • 81. 2011/5/21 N SEG V o l .15 まとめ by A B E H i rok i a k a h A Tra y f l ood
  • 82. 2011/5/21 N SEG V o l .15 奇妙な 言語です by A B E H i rok i a k a h A Tra y f l ood
  • 83. 2011/5/21 N SEG V o l .15 仕様も 使う人も by A B E H i rok i a k a h A Tra y f l ood
  • 84. 2011/5/21 N SEG V o l .15 奇妙さ故か 日本では マイナーだけど by A B E H i rok i a k a h A Tra y f l ood
  • 85. 2011/5/21 N SEG V o l .15 ニッチなところで 役には立ってるので by A B E H i rok i a k a h A Tra y f l ood
  • 86. 2011/5/21 N SEG V o l .15 ここはあえて この言葉で by A B E H i rok i a k a h A Tra y f l ood
  • 87. 2011/5/21 N SEG V o l .15 Python ナイスプレー by A B E H i rok i a k a h A Tra y f l ood
  • 88. 2011/5/21 N SEG V o l .15 ありがとう ございました by A B E H i rok i a k a h A Tra y f l ood
  • 89. 2011/5/21 N SEG V o l .15 リンク集 twitter hATrayflood http://twitter.com/hATrayflood Wikipedia Python http://ja.wikipedia.org/wiki/Python Python インストーラ http://www.python.org/download/ Python 日本語リファレンス http://www.python.jp/Zope/links/python_documents 作った人 グイド・ヴァンロッサム http://ja.wikipedia.org/wiki/グイド・ヴァンロッサム by A B E H i rok i a k a h A Tra y f l ood
  • 90. 2011/5/21 N SEG V o l .15 rfZenHan http://rayflood.org/diary-temp/rfZenHan-0.2.zip 元ネタ 仕様  半角←→全角変換,Unicode::Japanese に  未公開機能が… daily dayflower http://d.hatena.ne.jp/dayflower/20060530/1148951624 元ネタ 実装  blogSetomits Python 全角/半角変換モジュール zenhan.py  アルファベット・記号・数字・カタカナの全角・半角変換をする http://straitmouth.jp/blog/setomits/148   Firefox PGOビルド http://mxr.mozilla.org/mozilla2.0/source/build/pgo/profileserver.py by A B E H i rok i a k a h A Tra y f l ood
  • 91. 2011/5/21 N SEG V o l .15 eyeD3 http://eyed3.nicfit.net/ Google App Engine http://code.google.com/intl/ja/appengine/ Trac http://trac.edgewall.org/ Mercurial http://mercurial.selenic.com/ by A B E H i rok i a k a h A Tra y f l ood