Python エンジニアの作り方 2011.08 #pyconjp
-
Upload
takeshi-komiya -
Category
Documents
-
view
8.129 -
download
4
Transcript of Python エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方
小宮 健 (@tk0miya)
お前誰よ• 名前– 小宮 健– Twitter: @tk0miya
• 所属– ( 株 ) タイムインターメディア– テクニカルオフィサ
• Python 歴– ちょうど 2 年ぐらい
お前だれよ• blockdiag シリーズの中の人– テキストファイルから図を生成するツール– See http://blockdiag.com/
• Sphinx 拡張の開発 (googlecharts など )
Python エンジニアの作り方• Python に出会ってからの体験談• ソフトウェアのリリースを通しての経験• 自分がどう変わったのか
• 注意事項– 技術的な話はしません– 効果には個人差があります
Before Python
My Computing History
• コンピュータ歴 17 年• C, Ruby, Perl などを使ってきた• Linux (Debian) 歴 12 年ぐらい
My Computing History
16〜 19 20〜 23 24〜 27 28〜 31
C
VisualC++
Ruby
Perl
PHP
Python
Python に出会う前の自分• ギークになりたいギーク見習い• オールドタイプ– 新しいツール / 手法を取り入れない
• ツールを作ってもリリースしない• いいアイディアがあれば、といつも思って
る
Python との出会い• まったくの偶然• 同僚が Python エンジニアだった• 中略• 付き合いで使い始めた
• 最初の印象– 取り立ててすごい言語だとは感じなかった– シンプルかつストイックな言語
Develop with Python
Meet up a good idea: blockdiag
• 仕事で画面遷移図を作る機会があった– 毎週 Visio で微調整を繰り返す
• ほんの少しの変更に 1-2 時間かかる– ほとんどレイアウト調整
• 遷移図画像を生成するツールをつくろう– blockdiag を作り始めた– 最初のリリース (0.1.0) まで約 2 週間
決心• 遷移図生成ツールはちゃんとリリースす
る– 投げ出さない– 完璧を目指さない (80% の出来をめざす )
• 新しい技術を取り入れる– ユニットテスト– 分散バージョン管理 (Mercurial)– 新しい言語: Python
blockdiag の構成技術• パーサ– テキストファイルを解析しながら読み込む– funcparserlib のサンプルをそのまま流用
• レイアウトエンジン– 読み込んだデータを適切に並べる– 地道に改良を繰り返す
• 画像出力– 線、円などで画像を描く– PIL でベタ書き。 BASIC の延長線上
開発途中で必要になった知識• 環境構築ツール (buildout)• パッケージングの知識 (PyPI, setuptools)• クラウド環境 (AppEngine)• Web フレームワーク (Flask)• プラグイン構造の作り方 (setuptools)• Python 2.4 〜 2.7 の差異• 依存ライブラリへのパッチ投げ
開発の助けになった人 / ものたち
• Google• Twitter• エキスパート Python プログラミング• 友人の意見• 勉強会 /Hack-a-thon で出会った人たち
ソフトウェアのリリース• 以前は リリース = 公開 だと思っていた• blockdiag はみんなに使って貰いたい– 単に PyPI にアップロードするだけでは足り
ない– いろんな勉強会で発表することに
勉強会での発表• 積極的に発表を繰り返した– 9 ヶ月間で 14回発表• 開発系 (Python, Perl, Ruby)• ネットワーク系 (JANOG, #qpstudy, #odstudy)• 英語圏 (EuroPython)
• Demonstrable な発表を心がけてきた–百聞は一見にしかず。デモ重要
After development w/Python
blockdiag を開発して得たもの• Python を使った開発のやり方• “勉強”と”開発”の違い• 開発者とユーザーの幸せなサイクル• アウトプットはインプットを呼ぶ• コミュニティの力
まとめ : Python エンジニアの作り方
• ソフトウェアを開発しよう–既存の OSS プロジェクトへの参加等– 作るだけではなくリリースも
• 発信 ( アウトプット ) しよう–得た情報はブログ / 勉強会などでアウトプッ
トする• 楽しむこと– 勉強会や Sprint, Hack-a-thon などで仲間を作
る
Q&A
ご清聴ありがとうございました• 宣伝– blockdiag 使ってください
(http://blockdiag.com)– Office Hour やります• 13:20 〜 13:50 at 3F 廊下• ざっくばらんに声をかけてください
–明日の Sprint でも開発しています