今回は技術的な内容に関して、面白いことを知ったのでお伝えしたいと思います。
先日、開発手法に関する外部研修を受講した時に以前読んだことのある”チーム開発 実践入門”とほぼ同じ内容のことをおっしゃられており、しかも誰もが知っているようなサービスも同じ手法で開発されているということで、その手法について今回は概要をお伝えしたいと思います。
ちなみに↑の本は、最近読んだ開発手法の書籍においてとても理解しやすい内容でしたので、エンジニア歴が浅い方(5年未満)にはとてもおすすめです!
前置き
[st-kaiwa2]最近、プロジェクトの開発手法について悩んでいるのかい?[/st-kaiwa2]
[st-kaiwa1]はい、実は以前のプロジェクトでバージョン管理ができていなかったりリグレッションテスト※ができておらず、リリース後に今まで動いていた機能が動かなくなったりと問題がたくさん発生していました。。。(実話)[/st-kaiwa1]
[st-kaiwa2]そうなんだね。それって君がアサインされた時からそんな状態だったの?[/st-kaiwa2]
[st-kaiwa1]はい。特に決まったルールもなくそれぞれ自己流にやっていたと思います。[/st-kaiwa1]
[st-kaiwa2]それはまずいね。ちなみにそのような状況になった場合に影響を一番受けるのは誰だと思う?[/st-kaiwa2]
[st-kaiwa1]僕たちの上司ですか?[/st-kaiwa1]
[st-kaiwa2]それは違うよ。一番影響が出る人はエンドユーザーにサービスを提供しているお客さんだよ。[/st-kaiwa2]
[st-kaiwa1]たしかに・・・自分たちの勤務時間も増えるけど、それとは比べ物にならないくらいお客さんに迷惑をかけていました。[/st-kaiwa1]
[st-kaiwa2]そうそう。お金を払ってくれているお客さんに迷惑をかけないことが大事だからそれを肝に命じて、どうやったらこのような状況を抜け出せたか一緒に考えてみよう。[/st-kaiwa2]
今までのプロジェクトの問題点
- バージョン管理ツールは導入しているが、ルールが明確でない
- 仕様書・設計書の書き方/管理方法が案件によって異なる(昔の仕様書がないことがざらにある)
- テスト方法が担当者のローカル環境で目視で行われている
- 開発部隊が点在しているため、拠点間のコミュニケーションがうまく取れない
[st-kaiwa2]そのプロジェクトの主な問題点は↑の4つだね。これを解決するために以下のツールを導入して、一気に解決しちゃおう[/st-kaiwa2]
導入するツール
- GitHub(バージョン管理)
- redlmine(プロジェクト管理)
- slack(コミュニケーション)
- jenkins(CI/CD)
導入することのメリット
4つのツールは単独に利用する物ではなく、関連付けながら利用するものになります。
また、以下の手順で利用するとGood!
- 先方からの要望を整理し、redmine上で要望チケットを作成する。(no ticket,no workの精神で!)
- githubから現在の最新モジュールをcloneする。(githubの使い方はGitHub-flowを参照)
- 要望チケットを参考にローカル環境で開発を実施する。(この時にある程度仕様が固まっているようであれば、テスト駆動開発(TDD)を行うとBetter!)
- 開発完了後、ローカル環境での単体テスト/静的コードチェックを行う。
- jenkins経由で開発環境にデプロイ・テストを実施する。(jenkinsが全て実行。エラーが起きた際はslackで通知)
- 問題なければslackからgithub上にマージする。
余裕があったらやった方がいいこと
- 設計書・仕様書はテキスト形式(markdown等)にする
- テーブル構成(sqlファイル等)はプロジェクトの中で管理する
- コミュニケーションは積極的に取る(不安なことがあれば必ず共有すること)
上記の流れは最初の方で説明した書籍に詳しく書いてあるため、興味のある方は是非読んでみてくださいませ!
また、参考図書としてプロジェクトの要であるjenkinsの優良書籍も掲載しておきます!
少々値は張りますが、本の内容が理解できて実践できるようになれればjenkinsマスターとして活躍できること間違いなしです!!(私はまだ基本的な操作しか理解できてませんが・・(^^;)
最後に
社会人4年目が偉そうなことを書いてしまいすみません。もし間違っていることがあればどんな言い方でも構いませんのでご指摘いただけると幸いです!!
また今回のブログでお勧めした開発手法は現在において有効ですが、将来的にはどうなるか全くわかりませんのでご了承ください。
本業がIT系のため、たまにはこういった技術的な話題にも触れたいと思いますが、取り扱って欲しいツール等ご要望がございましたら、ブログでもTwitterでも構いませんのでご連絡ください!
Twitter:https://twitter.com/gyo36279287
Twitterでは転職/自己啓発/技術/投資を軸に情報発信をしておりますので、ご興味がございましたら是非フォローお願い致します。
最後までお読みいただきありがとうございました(^ ^)