突然ですが、みなさん普段の開発環境ってどういったものでしょうか?
例えば、ソースコードのバージョン管理にGitを利用している方もいればSVNやMercurialを使っている方もいます。 開発を便利にしてくれるツールはそれこそ星の数ほどありますし、その組み合わせも千差万別だと思います。 そして、この開発環境次第では、開発スピードも品質も大きく変わってきますよね。 だからこそ、いいツールはどんどん教えて欲しいですし、いいと感じたものは周りにも広めていきたいし、私自身もそういったものを作っていけたらなと思います。
そこでまずは私から、普段の開発環境や使っているツールを紹介していこうと思います。
仕事編
使っている開発ツール
今回はまず仕事で使っているツール群を紹介します。 仕事だと下記のようなOSSを組み合わせて使うことが多いです。
- Redmine
- プロジェクト管理ツール。徹底したチケット駆動開発なため、ここを起点に全ての作業が始まります。
- GitLab
- オンプレでGitリポジトリの管理に利用しています。昔はGitHubライクなUIでしたが、今では独自の路線に切り替え日々進化しています。ソースコードのバージョン管理、以前はSVNを利用していましたが、今はGitでないと無理ですね。。。
- Jenkins
- 継続的インテグレーションツール。GitのイベントフックやWeb管理画面、WebAPIなどを起点にいろんな作業を自動化するためのツールです。
- Slack
- チャットツール。いろんな開発系サービスとのインテグレーションがウリですが、botが発言してもあまり見ないため(最初は見るけどだんだん見なくなるんですよね...)、純粋なチャットツールとして利用しています。チケットを立てた/更新した時は、伝えたい相手に直接メンションを飛ばして確認依頼を投げています。
外部ホスティングサービスを使わないでOSSを活用しようとした場合の有名どころを集めた感じの構成ですね。
開発フロー
作業の流れとしては
- Redmineにタスクごとにチケットを切る
- それに合わせてブランチ名にチケット番号を振って、各チケットの対応を行う
- 対応が終わったら、GitLabでマージリクエスト(GitHubでいうプルリクエスト)を自分以外の誰かに出す
- コードレビューをして、問題がなければGitLab上でマージ
- それを契機にJenkinsが動き出して、テスト、ビルド、デプロイが自動で動き出す
といった感じです。
とてもスタンダードな開発環境、開発フローになっているのではないでしょうか。 使っていても特に問題もなく、非常にうまくまわっています。
まとめ
今回は主に仕事で利用している開発環境、ツールを紹介しました。 有名どころのアプリケーションばかりなので、日本語での情報もたくさんあり、万人にオススメできる構成だと思います。
今回取り上げたツールはすべてOSSで、自分でサーバーを立てれば無料(サーバー代は除く)で運用可能です。(ソースコードが公開されているだけでなく、公式のdockerイメージもあります)
また、DigitalOceanなどの各種VPSサービスで、アプリケーションインストール済みの仮想マシンがすぐに立てられます。
非常に簡単に試してみることができるので、導入を検討中で少し触ってみたい方にはオススメです。
次回は、ほぼろがスタッフとして参加しているPyCon JPでの開発環境に焦点をあてようと思います。お楽しみにー!