Pythonプロダクトを活用した開発チーム運営 in PyCon APAC 2013
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Pythonプロダクトを活用した開発チーム運営 in PyCon APAC 2013

on

  • 2,696 views

PyCon APAC 2013 で登壇した際に利用したスライドです。 ...

PyCon APAC 2013 で登壇した際に利用したスライドです。

Pythonプロダクトを活用した開発チームの運営ノウハウを、株式会社ALBERTの実例を元にしてご紹介します。

- Mercurial でソースコード管理
- Sphinx でドキュメント作成
- RhodeCode でコードレビュー

Statistics

Views

Total Views
2,696
Views on SlideShare
2,550
Embed Views
146

Actions

Likes
12
Downloads
10
Comments
0

2 Embeds 146

https://twitter.com 145
http://www.google.co.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Pythonプロダクトを活用した開発チーム運営 in PyCon APAC 2013 Presentation Transcript

  • 1. Python プロダクトを活用した 開発チーム運営 in PyCon APAC 2013 株式会社ALBERT @iktakahiro 2013-09-14
  • 2. Agenda •ALBERTの開発環境の紹介 •Pythonプロダクト活用事例
  • 3. 自己紹介 •株式会社ALBERT •池内 孝啓 / Takahiro Ikeuchi •システム開発部 部長 •推しメン : flask •@iktakahiro
  • 4. 株式会社ALBERT •2005年07月設立 •分析力をコアとする  マーケティングソリューションカンパニー •メインの開発言語はJavaです ←
  • 5. 株式会社ALBERT •データマイニング、統計解析、自然言語処理... •数値計算や機会学習アルゴリズムが プロダクトのコア
  • 6. •collections, itertools •SciPy, NumPy •Pandas •nltk Pythonとデータサイエンス
  • 7. こんな開発環境です
  • 8. •Java, SAStruts, Play framework, Spring Batch •Mercurial •RhodeCode •Sphinx •Redmine, Backlog •Jenkins •Python 3.3 今回のテーマ 一部で利用
  • 9. •2011年に導入 •ソースコードのバージョン管理はもちろん •Office系ドキュメントも管理しています Mercurial
  • 10. •TortoiseHg, Eclipse Plugin •IntelliJ, PyCharmやNetBeansでは 標準で使える •Source Treeも人気? Mercurial
  • 11. •CVSから刷新すべく、Git, Subversion, Bazaar と比較検討して決めた •たぶん今の開発メンバーの中には、 なんでGitにしなかったんだ!と思っている 人もいそう... Mercurial 後悔なんて、あるわけない
  • 12. •2013年に導入 •コードレビューとソースコード探索目的 •ディレクトリ構造をみてグループ化してくれる のが何気に便利 Rhodecode
  • 13. RhodeCode
  • 14. RhodeCode
  • 15. RhodeCode Gist
  • 16. •2013年に導入、やっと運用に乗り始めた段階 •ドキュメンテーションツール •Sphinx自体はreST記法なのですが、 Markdownで書いてます ※ 詳細後述 Sphinx
  • 17. 健全な開発チーム運営とは
  • 18. •管理されるべきものが管理されている •技術、仕様の継承が行われている •機能要件以外の品質が担保されている 健全な開発チーム運営
  • 19. プロジェクト 納品したら すぐに負債 そんなの、絶対おかしいよ
  • 20. 改善の系譜
  • 21. •バージョン管理されてないのは論外として •コミット漏れ •レポジトリとプロダクション環境のコードが 何故か一致していない ソースコード管理あるある デプロイ経路は一本化しましょう
  • 22. •デプロイはJenkinsに一任 •CIや自動化の利便性もそうですが、Commit & Pushしなければデプロイできなくなるので •コミット漏れをなくすという単純なルールが 徹底できます Mercurial Jenkins
  • 23. •ドキュメントを書かないのは論外として •Excel方眼紙ェ •Wordを使いこなしてもそれなりにつらい ドキュメント作成あるある でやっぱりドキュメントが書かれなくなる
  • 24. •ドキュメントもコードとして管理 •軽量マークアップ言語で "書くモチベーション"を維持 •再利用性の高いドキュメントを残す Sphinx Mercurial
  • 25. Sphinxとは? [参考] ドキュメントを作りたくなってしまう魔法のツールSphinx http://www.slideshare.net/shimizukawa/sphinx-6084667 •Python製のドキュメンテーションツール •reStructuredTextでマークアップする •拡張でダイアグラムとかも書ける •Wikiではない
  • 26. https://www.oreilly.co.jp/books/9784873116488/ Sphinxとは? •O'REILLYから Ebookが出ましたね
  • 27. •個人で使うにはかなり気軽に始められる •ただしチーム運用には障壁がある - make htmlは誰がやるか? - reST記法の学習コスト - ドキュメントの粒度や階層構造の統一 etc... Sphinxの課題
  • 28. •reST記法の学習コスト reSTがいやなら、 Markdownで書けば良いじゃない Pandocでやろう
  • 29. Pandocとは? [参考] 多様なフォーマットに対応! ドキュメント変換ツールPandocを知ろう http://qiita.com/sky_y/items/80bcd0f353ef5b8980ee •Haskell製ドキュメント変換ツール •軽量マークアップ言語の相互変換 •WordやPDFへの変換もできるすぐれもの •Markdown -> reStructuredText も対応
  • 30. # 見出し1 ## 見出し2 ```python print('test') ``` Markdown 見出し1 ====== 見出し2 --------- .. code:: python print('test') reStructuredText Pandocさんによる変換の例
  • 31. •ビルド( make html ) は誰がやる? コミット∼ビルドを自動化したい Mercurialのhookスクリプトに任せよう
  • 32. ディレクトリ構成 /var/hg/sphinx => Webサーバーの doc root にしておく /var/hg/sphinx/manual1 => Sphinxプロジェクト [manual1] のroot /var/hg/sphinx/manual1/source => rstファイル置き場。ここをレポジトリにする /var/hg/sphinx/sphinx_hook.sh => hookスクリプトの置き場所
  • 33. ディレクトリ構成(つづき) /var/hg/sphinx/manual1/build/html => make htmlしたときのhtml出力場所 ※プロジェクト作成時の設定による http://example.com/manual1/build/html/ => ブラウザから確認できるURI例
  • 34. hookスクリプトの中身 #!/bin/bash repository=$1 BASE_DIR="/var/hg/sphinx" DIR="${BASE_DIR}/${repository}" # pyvenvでSphinx環境を作成した場合 source /usr/local/sphinx/bin/activate # 変換処理 (長いけどワンライナーだよ) cd ${DIR}/source && find ./ -name "*.md" ¦ sed -e 's/^.*///' -e 's/.md$//' ¦ xargs -i pandoc -f markdown -t rst -o {}.rst {}.md
  • 35. source/.hg/hgrc の中身 [hooks] pretxnchangegroup.make /var/hg/sphinx/sphinx_hook.sh manual1 レポジトリ名を引数に与えて実行外部からPUSHされたら実行する hook (hookが失敗したらロールバック)
  • 36. hook処理の流れ 1. レポジトリにPushすると、hookスクリプトが実行される 2. 拡張子 .md のファイルを探し、pandoc で reSTに変換する 3. make html を実行
  • 37. Sphinx Sample
  • 38. Sphinx と Pandoc連携の詳細は 下記スライドを... SphinxをMarkdownで使い隊 - SlideShare http://www.slideshare.net/iktakahiro/sphinxmarkdown
  • 39. Sphinx Mercurial Pandoc •Markdownで書けるし •きれいなHTMLが出来るのは嬉しい •コミット履歴も差分も見られるし それはとっても嬉しいなって
  • 40. •レビュー会してる時間なんかないし •対面レビューも習慣化しない コーディングあるある 負債のバーゲンセール
  • 41. •カジュアルにコードを眺められる環境を作る •レビューは好きなときに •コミットリビジョンにコメントを残せる RhodeCode Mercurial
  • 42. RhodeCode Code Review 仲良くマサカリを投げ合えますね ^^
  • 43. まとめ
  • 44. •Mercurial •RhodeCode •Sphinx •コード管理 •コード品質管理(レビュー) •ドキュメント管理 もう何も恐くない!
  • 45. •管理されるべきものが管理されている •技術、仕様の継承が行われている •機能要件以外の品質が担保されている 健全な開発チーム運営 : おさらい
  • 46. 今後 •Chef流行ってますがAnsible検証中 •Numpy, SciPy, Pandasあたりの ノウハウを公開していきたい
  • 47. ご清聴ありがとうございました