【目標】
教育機関でのアジャイル学習、企業でのアジャイル練習などに利用できる内容にしたいなと思ってます。
本学習の目的は以下。
・アジャイル的な開発を大まかに習得する
・代表的な開発手法や管理方法を実践してみることで、自分なりのやり方を作る下地をつける
【学習環境】
・開発環境はWindowsマシン、インターネット接続可能
・顧客(アプリの作成依頼者)役が最低1人いる
・5人前後でチームを作り、一定期間×5程度の期間で学習
(私は一定期間を15時間(作業時間)としましたが、本来の推奨は2週間程度)
※企業ならチームの1人がスクラムマスター、他をメンバとして5人以上の体制をとる(顧客役は別チームのスクラムマスター等に依頼など)
※教育機関なら指導者1人+チームごと5人以上で構成
【アジャイル開発】
アジャイル開発の方法は以下を想定しています。自動デプロイまではできなかったので今回除外。
・スクラム開発:スクラム開発の枠組みで開発を進める
・チケット管理:Redmineで作業、不具合修正をチケット管理
・GitHub-flow:コード管理の流れ、SourceTree+GitHubで行う
・自動テスト:Djangoで用意されるunittest結果をjenkinsで結果(カバレッジ)表示
【使用ツール】
ツール類は以下を想定。
プログラミング言語 | Python |
フレームワーク | Django |
DB | SQLite |
IDE | PyCharm |
バージョン管理 | GitHub(+SourceTree) |
ビルド | 保留(SCons?) |
単体テスト | unittest(Django) |
CI | jenkins |
チケット管理 | Redmine |
コミュニケーションツール | ChatWork |
■Python/Django/unittest
開発手法の習得を目標とするので、正直プログラミング言語は何でも良いと考えました。Django(Python)を選択したのはDB周りが自動化されていて作業が少なく、テストも作りやすかったからです。Ruby on railsやSpring等もありだと思います。
単体テストはDjangoに組み込まれたunittestを使います。結合レベルでテストをするならSeleniumなどを入れてもいいのかと思います。
■SQLite/PyCharm
DjangoはデフォルトでSQLiteを使うので、今回はそのまま使います。切り替えれば簡単にMariaDBやPostgreSQLも使えるようです。
Djangoはテキストエディタやvi等でも十分開発できるので、IDEはなくても良いです。CUI環境なら不要。PyCharmはEclipseやVisual Studioレベルではないですが、Python用IDEなので補完など幾つか役立つ感じはします。有料版はDjangoプロジェクトを自動生成できるので便利っぽい。今回はWindows上で開発するのでPyCharmを使いました。
■GitHub
MercurialでもGitLabでもBitbacketでも何でも良いです。不慣れなので情報が多く、一番メジャーなGitHubを使う使う事にしました。
■Redmine
jira,Trac,Redmineなど、何でも良いと思います。以前ちらっとRedmineを使っていたのでチケット管理に慣れるまでそのままいきます。
■jenkins
CIツールの代表なので、特に他の選択肢はなし。
■Chatwork
SlackやサイボウズLiveなど色々ありますし、SkypeやLINEを使う場合もあるかと思います。現状、ChatWorkがイマイチ使いきれてない感じです。メッセージが自動通知されないのは設定の問題なのでしょうか。
【その他】
以下のサーバーは自前で準備する必要があります。私はレンタルサーバ内に構築しました。jenkinsは分かりませんが、RedmineはOpenShift等の無料SaaSを利用してもよいでしょう。
・Redmine
・jenkins