救世主はCIとJenkins!~正確に言うとJenkinsを使ってCIを行う~
「どのようにして短期開発やQCDが達成するか」の救世主は、ずはり、CIとJenkinsです。正確に言うと「Jenkinsを使ってCI(継続的インテグレーション)を実行する」です。ほかにもいろいろな解決策はあると思いますが、昨今のシステム開発業界では、CIを実行しなければ短期開発やQCD達成は不可能とも言われています。皆さんの中には「CIってぼんやりしかわからない」「Jenkins、名前は聞きたことあるけど、何をするものかは知らない」という方もいると思います。「CIとはなんなのか」「Jenkinsとは何なのか」はUdemyの「Jenkins入門」で説明しています。
短期での機能追加・改善ができない4つの阻害要因~チームメンバが「機能追加なんかしたくない」と思う理由は?~
私が考える「短期での機能追加・改善ができない4つの阻害要因」をご紹介します。
一つ目は「リファクタリングに対する恐怖」です。短期開発に備えて、機能追加がしやすいプログラムにリファクタリングしたいけど、デグレが怖くリファタリングできないケースです。
二つ目は「バグに怯える」です。メンバはいつもバグに怯えていて、機能追加に慎重になっているケースです。慎重となっている結果、見積もり段階での影響範囲の検討やテスト想定が広範囲になってしまい、短期での機能追加・改善を受けることができないことがあります。そもそも「バグに怯える」ことは精神衛生上、よいことではありません。
三つ目は「報告書作成」です。ビルドやテストの結果を、チームリーダがプロジェクトリーダに伝えるための資料作成に、時間がかかるケースです。短期開発では少しでも管理稼動は効率化すべきです。有スキル者であるチームリーダが管理稼動に時間をとられることは、得策ではありません。メンバからの技術的な相談やレビューに、十分な時間を確保すべきです。
四つ目は「創造的な作業に集中できない」です。テストやビルド、ツール実行などの反復作業が多く、設計やプログラミングなどの創造的な作業に集中できないケースです。メンバは「短期間で顧客に喜ばれる機能追加や改善をしよう」といった、前向きな感情がわかなくなってくることでしょう。
以上「短期での機能追加・改善ができない4つの阻害要因」について、ご紹介いたしました。
短期間での機能追加・改善が求められる昨今のソフトウェア開発、そしてQCDの達成は必須条件
皆さんの中には「いまどきのソフトウェア開発は短期間での機能追加・改善が求められる」ことを、身をもって感じている方が多いと思います。。そして、当然のことですが、QCDの達成は必須条件です。
QCDをちょっとおさらいしましょう。
- QCDのQは「クオリティ」すなわち「ソフトウェアの品質」です。短期間の開発であっても、バグがあったり、使い勝手のよくないソフトウェアでは、顧客や利用者から受け入れてもらえません。
- QCDのCは「コスト」すなわち「費用」です。費用が高ければ、そもそも受注も難しいでしょうし、利益もでません。短期間だからといって、多くの人員をかけて人件費をはね上げてもいいというわけではないのです。
- QCDのDは「デリバリー」すなわち「納期」です。納期が長いと、そもそも注文をもらうこともできないでしょう。また、約束した期限までに仕上げて納品しなければ、信頼が低下し、次の受注の機会も逃してしまうでしょう。
それでは、短期間でのソフトウェア開発において、どのようなケースが発生した場合に、QCDが達成できなのでしょうか?
その答えはUdemyのJenkins入門で。
オンライン学習のUdemyで「『Jenkins入門』〜速習!2時間で習得する短期開発とQCDを達成する方法〜」をリリースしました。
みなさんこんにちは。Jenkins入門コース担当の小野宏司です。この記事ではコースの概要と特徴について解説していきたいと思います。
私は30年以上にわたって通信キャリアでシステム開発に従事し、フルスタックエンジニアとして多くのWeb開発を行ってきました。JavaやRuby, Python など、多くのプログラミング言語に精通しています。
このコースは、短期開発とQCDの達成に悩んでいるエンジニアが、Jenkinsを使用した継続的インテグレーション(CI)を学ぶことによって、たった2時間で悩みを解決する手段を習得するコースです。
このコースがどのような受講生を対象にしているかをお話します。
- まずは「短期開発やQCDの達成に悩んでいるエンジニア」
- それから「ソフトウェア開発の効率化や自動化を考えているエンジニア」
- そして「継続的インテグレーション(CI)に興味を持っているエンジニア」
- 「Jenkinsの具体的な使い方を学びたいエンジニア」
などの受講生を対象としています。
このコースで受講生が何を達成できるか、またどのようなスキルが身に付くかを説明します。このコースを完了した受講生は
- 短期開発やQCDを達成する手段がわかります
- それから「バグに怯えず、想像的な作業に集中する毎日が送れます」
- それから「リポジトリに登録したタイミングでビルド、テスト、カバレッジ測定、インスペクション、コードステップ数のカウントを自動で行う手段が身に付きます」
- それから「デグレの発生をJenkinsを使ってすばやく検知する手段が身に付きます」
- それから「テスト観点の漏れをJenkinsを使ってすばやく検知する手段が身に付きます」
- そして「プログラムの規約違反や誤動作の発生をJenkinsを使って全てのプログラムをチェックする手段が身に付きます」
このコースでは、
- まずセクション1で、なぜ短期開発やQCDが達成できないかを、15の具体的な阻害要因でお話しします。セクション1は以下のレクチャーで構成されています。
- 短期間での機能追加・改善が求められる昨今のソフトウェア開発、そしてQCDの達成は必須条件
- QCDのQ:品質を達成できない4つの阻害要因
- QCDのC:コストを達成できない4つの阻害要因
- QCDのD:納期を達成できない3つの阻害要因
- 短期での機能追加・改善ができない4つの阻害要因
- 〔まとめ〕なぜ短期開発やQCDが達成できないのか
- 次にセクション2で、短期開発やQCDが達成できる方法とは何かをお話します。具体的には、Jenkinsを使って継続的インテグレーション(CI)を実行し15の阻害要因が解決可能であることを説明します。セクション2は以下のレクチャーで構成されています。
- 救世主はCIとJenkins!
- 継続的インテグレーション(CI)とは?
- Jenkinsとは何か?
- Jenkinsを使って何をすれば短期開発やQCDが達成できるのか?
- Jenkinsによりビルドを自動化する効果
- Jenkinsによりテストを自動化する効果
- Jenkinsによりカバレッジ測定を自動化する効果
- Jenkinsによりソースコードのインスペクションを自動化する効果
- Jenkinsによりプログラムコードのコードステップ数のカウントを自動化する効果
- JenkinsによるCIを導入することの効果は絶大
- 最後にセクション3で、Jenkinsを使って継続的インテグレーション(CI)を実行する具体的方法を説明します。Jenkinsの設定やジョブの実行をスクリーンキャストを使って動画でお伝えします。セクション3は以下のレクチャーで構成されています。
このコースの特徴は、私も経験したことがある「15の阻害要因~開発現場あるある~」を共有することです。それから、15の阻害要因を継続的インテグレーション(CI)がどのように解決するのかを十分に説明します。それから、15の阻害要因の解決をJenkins操作でお見せすることです。さらに二時間弱という短い時間でグッと凝縮して習得可能であるということです。最後になりますが、このコースは、コース収録の現時点でUdemyで唯一、初の日本語Jenkinsコースであるということです。
このコースを受講するにあたってどのような知識やツールが必要かを、ご説明します。
- Javaの基本的な知識
- JUnitの基本的な知識、またはテストケース開発の経験や知識
- PCの基本的な知識
- ソフトウェア開発工程の基本的な知識
- PC(WindowsまたはMac)
- JDK8(Java Development Kit 8)
- Javaビルドツール「Maven」
- Gitツール
- GitHubアカウント
なお、JDK8, Maven, Git, GitHubアカウントをお持ちでない方に対してはコース内にインストール方法やアカウント登録方法を記載したリソースを用意しました。ご利用ください。
それでは皆さまとコース内でお会いできることを楽しみにしています。
以上「Jenkin入門〜速習!2時間で習得する短期開発とQCDを達成する方法〜」の紹介でした。