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

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

on

  • 2,596 views

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

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

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

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

Statistics

Views

Total Views
2,596
Views on SlideShare
2,450
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 Pythonプロダクトを活用した開発チーム運営 in PyCon APAC 2013 Presentation Transcript

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