Python エンジニアの作り方 2011.08 #pyconjp

22
Python エエエエエエエエエ エエ エ (@tk0miya)

Transcript of Python エンジニアの作り方 2011.08 #pyconjp

Page 1: Python エンジニアの作り方 2011.08 #pyconjp

Python エンジニアの作り方

小宮 健 (@tk0miya)

Page 2: Python エンジニアの作り方 2011.08 #pyconjp

お前誰よ• 名前– 小宮 健– Twitter: @tk0miya

• 所属– ( 株 ) タイムインターメディア– テクニカルオフィサ

• Python 歴– ちょうど 2 年ぐらい

Page 3: Python エンジニアの作り方 2011.08 #pyconjp

お前だれよ• blockdiag シリーズの中の人– テキストファイルから図を生成するツール– See http://blockdiag.com/

• Sphinx 拡張の開発 (googlecharts など )

Page 4: Python エンジニアの作り方 2011.08 #pyconjp

Python エンジニアの作り方• Python に出会ってからの体験談• ソフトウェアのリリースを通しての経験• 自分がどう変わったのか

• 注意事項– 技術的な話はしません– 効果には個人差があります

Page 5: Python エンジニアの作り方 2011.08 #pyconjp

Before Python

Page 6: Python エンジニアの作り方 2011.08 #pyconjp

My Computing History

• コンピュータ歴 17 年• C, Ruby, Perl などを使ってきた• Linux (Debian) 歴 12 年ぐらい

Page 7: Python エンジニアの作り方 2011.08 #pyconjp

My Computing History

16〜 19 20〜 23 24〜 27 28〜 31

C

VisualC++

Ruby

Perl

PHP

Python

Page 8: Python エンジニアの作り方 2011.08 #pyconjp

Python に出会う前の自分• ギークになりたいギーク見習い• オールドタイプ– 新しいツール / 手法を取り入れない

• ツールを作ってもリリースしない• いいアイディアがあれば、といつも思って

Page 9: Python エンジニアの作り方 2011.08 #pyconjp

Python との出会い• まったくの偶然• 同僚が Python エンジニアだった• 中略• 付き合いで使い始めた

• 最初の印象– 取り立ててすごい言語だとは感じなかった– シンプルかつストイックな言語

Page 10: Python エンジニアの作り方 2011.08 #pyconjp

Develop with Python

Page 11: Python エンジニアの作り方 2011.08 #pyconjp

Meet up a good idea: blockdiag

• 仕事で画面遷移図を作る機会があった– 毎週 Visio で微調整を繰り返す

• ほんの少しの変更に 1-2 時間かかる– ほとんどレイアウト調整

• 遷移図画像を生成するツールをつくろう– blockdiag を作り始めた– 最初のリリース (0.1.0) まで約 2 週間

Page 12: Python エンジニアの作り方 2011.08 #pyconjp

決心• 遷移図生成ツールはちゃんとリリースす

る– 投げ出さない– 完璧を目指さない (80% の出来をめざす )

• 新しい技術を取り入れる– ユニットテスト– 分散バージョン管理 (Mercurial)– 新しい言語: Python

Page 13: Python エンジニアの作り方 2011.08 #pyconjp

blockdiag の構成技術• パーサ– テキストファイルを解析しながら読み込む– funcparserlib のサンプルをそのまま流用

• レイアウトエンジン– 読み込んだデータを適切に並べる– 地道に改良を繰り返す

• 画像出力– 線、円などで画像を描く– PIL でベタ書き。 BASIC の延長線上

Page 14: Python エンジニアの作り方 2011.08 #pyconjp

開発途中で必要になった知識• 環境構築ツール (buildout)• パッケージングの知識 (PyPI, setuptools)• クラウド環境 (AppEngine)• Web フレームワーク (Flask)• プラグイン構造の作り方 (setuptools)• Python 2.4 〜 2.7 の差異• 依存ライブラリへのパッチ投げ

Page 15: Python エンジニアの作り方 2011.08 #pyconjp

開発の助けになった人 / ものたち

• Google• Twitter• エキスパート Python プログラミング• 友人の意見• 勉強会 /Hack-a-thon で出会った人たち

Page 16: Python エンジニアの作り方 2011.08 #pyconjp

ソフトウェアのリリース• 以前は リリース = 公開 だと思っていた• blockdiag はみんなに使って貰いたい– 単に PyPI にアップロードするだけでは足り

ない– いろんな勉強会で発表することに

Page 17: Python エンジニアの作り方 2011.08 #pyconjp

勉強会での発表• 積極的に発表を繰り返した– 9 ヶ月間で 14回発表• 開発系 (Python, Perl, Ruby)• ネットワーク系 (JANOG, #qpstudy, #odstudy)• 英語圏 (EuroPython)

• Demonstrable な発表を心がけてきた–百聞は一見にしかず。デモ重要

Page 18: Python エンジニアの作り方 2011.08 #pyconjp

After development w/Python

Page 19: Python エンジニアの作り方 2011.08 #pyconjp

blockdiag を開発して得たもの• Python を使った開発のやり方• “勉強”と”開発”の違い• 開発者とユーザーの幸せなサイクル• アウトプットはインプットを呼ぶ• コミュニティの力

Page 20: Python エンジニアの作り方 2011.08 #pyconjp

まとめ : Python エンジニアの作り方

• ソフトウェアを開発しよう–既存の OSS プロジェクトへの参加等– 作るだけではなくリリースも

• 発信 ( アウトプット ) しよう–得た情報はブログ / 勉強会などでアウトプッ

トする• 楽しむこと– 勉強会や Sprint, Hack-a-thon などで仲間を作

Page 21: Python エンジニアの作り方 2011.08 #pyconjp

Q&A

Page 22: Python エンジニアの作り方 2011.08 #pyconjp

ご清聴ありがとうございました• 宣伝– blockdiag 使ってください

(http://blockdiag.com)– Office Hour やります• 13:20 〜 13:50 at 3F 廊下• ざっくばらんに声をかけてください

–明日の Sprint でも開発しています