前々回に引き続き、今回は予告通りほぼろがスタッフとして参加しているPyCon JP 2016での開発環境に焦点をあてて紹介していきます。
PyCon JP 2016編
使っている開発ツール
PyCon JP 2016のWebサイトは下記のようなSaaSを組み合わせて開発しています。
- Jira
- プロジェクト管理ツール。前回徹底したチケット駆動といいましたが、PyCon JPもチケット開発駆動です。
- 個人的にはJiraだとサブタスクが1階層しか作れない点が少しつらくて、Redmineのほうが使いやすく感じています。
- あと、日本語対応が若干雑かな。
- GitHub
- これを読んでくれてる人の中には知らない人はいないであろうGitHub。
- PyCon JPでは、ドキュメント類も含めてほとんどのソースコードをGitHub上で公開しています。
- ちなみにほぼろはWebシステム担当ではなく、メインは今年初の試みとなるAndroidアプリの作成をしています。
- CircleCI
- SaaSの継続的インテグレーションツール。1コンテナでの利用なら無料で利用できます。
- GitHubでPRがマージされたら自動でデプロイする仕組みになっています。
(ここの仕組みは今年のGWにみんなで作りました!) - GitHubとの連携はすごく簡単にでき、日本語の記事も比較的多くあるので、気軽に導入できると思います。
- Slack
- 前回も出てきたチャットツール。
- みなさん本業がある(PyCon JP スタッフはボランティア)ため、普段のコミュニケーションもslack上でチャットがメインです。
- DeployGate
- こちらはWebサイト向けではないのですが、Androidアプリで使っているテストアプリ配布サービスです。
- DeployGateはAndroidのGradleプラグインなんかも用意されてて、めっちゃくちゃ簡単にβ配信できるのでオススメです。(もちろんiOSにも対応してます)
- AndroidアプリでもGitHubのPRマージ -> CircleCI -> DeployGate という自動デプロイをしています。
前回とは真逆で運用コストを下げるためにSaaSをフル活用していますね!
開発フロー
作業としては
- Jiraにチケットを立てる
- それに合わせてブランチ名にチケット番号を振って、各チケットの対応を行う(運用ルールも書いてます)
- 対応が終わったら、GitHubでdevelopブランチに対してプルリクエストを送る。アサインは適当に。
- コードレビューをして、問題がなければGitHub上でマージ
- それを契機にCircleCIが動き出して、ビルド、ステージングへのデプロイが自動で動き出す(アプリの場合はDeployGateからのβ配信になります)
- ステージングで動作確認
- 問題なければ次はmasterブランチへのプルリクエストを作ります
- これをマージすると、今度は本番環境へ自動デプロイ
という流れになっています。
実は、この自動デプロイの仕組みを取り入れたの今年からなんです。 今年は昨年の反省を活かして、ブランチ整理やドキュメント整備、デプロイ自動化などを取り入れ運用コストを下げる努力をしています。 docker取り入れるなんていう話も...
まとめ
SaaS大活用で運用コストを減らしています。 使っているツール、サービス群もメジャーどころが多いかなと思います。
先ほども言った通り、今年のGWに自動化に取り組んだのですが、その時に感じたことが1つあります。
それはLinuxに強い人、フロントエンドに強い人、NginxやPostgreSQLに強い人、そしてアプリに強い人などなど、
本業での専門が全然違う様々なスキルを持った人たちで集まって作業するのはとても面白く、また勉強になるということ。
そして、これはOSS活動ならではのことなのかなと思いました。
みんなレベルが高いので負けてられない...
次回はガラッと違う内容で、ほぼろのローカルの開発環境について少し紹介しようと思っています(特別なことは何一つしてないので期待せずにお待ちくださいw)
それではまた!