僕が新卒で入社したシステム開発会社の入社初日に思ったことです。当時大学を卒業して間もない僕は、エンジニアとして入社したものの、恥ずかしながらシステム開発では具体的に何をしているかよく分かっていませんでした。それから5年ほどエンジニアとしてキャリアを積む中で数十万円規模の小規模なシステム数億円単位の大規模システムウォーターフォール開発からアジャイル開発リリースが2年遅れの炎上案件など、一通りのシステム開発の手法、プロジェクトを経験してきました。そんな中で気づいたことが一つあります。「システム開発は全体像を把握すれば上手くいく」ということです。システム開発には大きく分けて2つの手法があります。「ウォールフォール開発」と「アジャイル開発」の2つです。この2つがそれぞれどんなプロセスを経て開発を進めているか、いつまでに何が出来上がってくるかを把握していればプロジェクトは上手く回ります。炎上する案件は大抵、プロジェクトマネージャーまたはクライアントがプロジェクトの全体像を理解していません。6ヶ月後に納品のプロジェクトの設計フェーズが5ヶ月後に終わったり、要件定義を延々と続け、納期前にそのしわ寄せがエンジニアに来たり、全体像を把握しないまま進んだプロジェクトは大抵炎上します。そこで、ここでは初めてシステム開発を外注するor管理する人プロジェクトマネージャーになったばかりの人システム開発の経験の浅いエンジニアを対象にシステム開発の全行程をご紹介します。これらの開発工程をしっかりと把握し、何をいつまでにやらないといけないか、を把握することでプロジェクトの成功率は飛躍的にアップするでしょう。これらを知って、炎上しない平和なシステム開発を実現してください。システム開発にはウォーターフォール型開発とアジャイル型開発があるシステム開発のメジャーな手法は大きく分けて「ウォーターフォール型開発」と「アジャイル型開発」の2つがあります。※「アジャイル型開発」は厳密には更に細かく手法が分かれますが、ここでは最も主流な「スクラム開発」=「アジャイル開発」としてご説明します。ウォーターフォール型開発とはウォーターフォール型開発とは「要件を決めるステップ」「実装のステップ」「テストのステップ」など開発を複数のステップにわけ、それらを上から順に作業していく手法です。ガントチャートという管理表用いて、各ステップの工程を洗い出し、メンバーをアサインしていきます。※引用:https://www.nec-nexs.com/bizsupli/useful/excel/36.htmlやるべきことが明確なため、進捗の管理がしやすいのが特徴です。原則ステップが逆戻りすることはりません。実装後に要件を決め直す、といったことはありません。そのため、手戻りや想定外の事象が起きた場合に上のステップからやり直しになるため、手戻りによるコストが大きくなるというデメリットがあります。各スプリント内で少しずつ機能を積み重ねていきます。スプリントを重ねることで、システムの方向性を微調整しながら理想のシステムに近づけていく手法です。開発を進めながらシステムの方向性を微調整していくため、手戻りのリスクが少ないのが特徴です。手戻りによる無駄なコストを抑え、低コスト、短納期で理想のシステムを目指すための手法です。toC系のWebサービス開発などでは主流の開発手法です。ウォーターフォール型開発の全行程と各工程のポイントウォーターフォール型開発には次の工程があります。1要件定義2外部設計3内部設計4プログラミング5単体テスト6結合テスト7システムテスト8運用テスト9システム移行10運用・保守これの開発を理解することで、何がいつまでにどのような状態になっていなければを理解することができます。成果物:Androidアプリをストアに公開というスマホアプリ開発の場合を例に説明していきます。上記の開発をウォーターフォール型開発で進めるとこのような感じのスケジュール感になります。それぞれの工程を詳細に解説していきますので、1つずつ確認していきましょう。要件定義(2週間〜1ヶ月)要件定義では「何を満たすシステムか」を定義し、それに伴う技術やセキュリティの項目を定義する工程です。具体的には決めるのは次の通りです。外部設計(2週間〜1ヶ月)外部設計は主に画面のデザインやインターフェースを確定する工程です。ここでは画面遷移図や、各画面の表示項目一覧を作成し、必要な機能を洗い出します。内部設計(2週間〜1ヶ月、開発側のみの作業)内部設計は主に目に見えないプログラミング実装の設計を行います。この工程は基本的には開発側が行うため、発注者側で行う作業は特にありません。プログラミング(1~2ヶ月、開発側のみの作業)ここではJavaやRubyなどのプログラミング言語を用いてソースコードを書いていきます。この工程は基本的には開発ベンダーが行うため、発注者側で行う作業は特にありません。単体テスト(2〜1ヶ月、開発側のみの作業)実装された機能単位でテストを行います。お問い合わせ画面の機能であれば、お問い合わせ機能だけのテストを行います。お問い合わせから管理画面でお問い合わせの内容が表示されること、といったテストは次の結合テストで実施します。結合テスト(2週間、開発側のみの作業)結合テストでは機能同士の一連の動作のフローでテストをおないます。お問い合わせから管理画面でお問い合わせの内容が表示される、といったテストを行います。システムテスト(1週間、開発側のみの作業)システムテスト段階では、本番環境に近い状態ですべての機能の動作が正常であることをテストします。毎日10時に動く処理は正常に動作するか、仕様書通りに動作するか、といったテストを行います。(1週間)開発者側のテストが一通り完了すると、最終的に発注者がシステムを本番環境で実際に動作を確認刷るテストを行います。ここでは実際の本番環境でシステムが正常に動作することを確認します。システム移行(1日)この工程ではいよいよシステムを本番稼働させることになります。toC系のサービスであれば一般公開されることになります。Storeに公開します。運用・保守システムをリリースが動作に問題ないか等を監視する工程です。契約の内容によっては保守は発注者自身が行う場合もあります。アジャイル型開発の全行程と各工程のポイントアジャイル型開発には次の工程があります。成果物:Androidアプリをストアに公開というスマホアプリ開発の場合を例に説明していきます。上記の開発をアジャイル型開発で進めるとこのような感じのスケジュール感になります。アジャイル開発の考え方は少し難しいですが、1つ1つ丁寧に説明していきますね。リリースプランニング(2週間)この工程ではやることは以下の通りです。)システム開発の優先順位付け(最優先は一覧機能など)アジャイルは計画が変わることを前提としているため、あとから機能が追加される、または機能が削られることになっても問題ありません。この段階で洗い出されたタスクの一覧をプロダクトバックログと言います。横文字で難しく感じますが、簡単に言うと「やることリスト」です。実際の開発現場で「プロダクトバックログ」や「バックログ」という単語が出てきた場合は「あれは『やることリスト』のことを言ってるんだな」と解釈して問題ありません。スプリント(2週間×5セット)この工程ではプロダクトバックログ(やることリスト)の中から1~4週間の開発期間(スプリントと呼ばれる)の中で作る機能を定めます。※見出しの例は2週間を1スプリントと設定していますスプリントは更に次の工程に分割することができます。スプリント計画(スプリントプランニング)設計〜プログラミング〜テストふり返り(スプリントレビュー)朝会(デイリースクラム)※毎日行うスプリント計画(スプリントプランニング)この工程ではスプリントバックログで設定された機能の中から今回のスプリントで開発を行う機能を定めます。ここで洗い出された機能の一覧をスプリントバックログと言います。スプリントバックログは簡単に言うと「そのスプリントの中で行うやることリスト」です。スプリント内に機能をリリースするところまでが作業内容になります。設計〜プログラミング〜テストスプリント計画で設定された機能を開発していきます。この工程では設計からプログラミング、テストまですべてを行います。ふり返り(スプリントレビュー)イテレーションが終わると、必ずスプリント内での課題を振り返ります。機能の実装に想定外に時間がかかった場合などは、今後のタスクの見積もり基準を修正したり、リリースされたプロダクトの方向性を確認してきます。1つのスプリントが終わると、また次のスプリント計画に移り、そのスプリントが終わると、また次のスプリント計画を行い、というように継続的にシステム開発を続けていくのがアジャイル開発の手法です。朝会(デイリースクラム)※毎日行う日本では朝会と呼ばれることが多いです。この朝会ではメンバーの進捗状況などをチーム内に周知します。朝会は毎朝10分程度の時間で行われ、メンバー間のコミュニケーションと状況理解を促します。まとめいかがでしたか?最後にもう一度ポイントを振り返りましょう。・ウォーターフォール型開発とはウォーターフォール型開発とは「要件を決めるステップ」「実装のステップ」「テストのステップ」など開発を複数のステップにわけ、それらを上から順に作業していく手法。要件が明確な既存のシステムのリプレイス(作り直し)案件などアジャイル型開発とはアジャイル型開発とはスプリントと呼ばれる1~4週間程度の間隔で開発期間を分割し、各スプリント内で少しずつ機能を積み重ねていきます。スプリントを重ねることで、システムの方向性を微調整しながら理想のシステムに近づけていく手法。数カ月後にどのような機能がある状態かを把握するのが難しい。※複数セットプロジェクトの全体像を把握し、何をいつまでにやるかを意識して進めることでプロジェクトの成功率は格段にアップします。システム開発の工程を理解し、より良いシステム開発になるよう願っております。参入ハードルの低いビジネスモデルです。実際にサービスを始めてみると紹介者は多いけどなかなかマッチングまで発展しないリピーターが増えない毎月数件マッチングするけど全然儲からないそんな問題に直面するケースがほとんど。過去には「500万円かけて作ったマッチングサイトが1件も売れずに撤退した」というケースもあります。進悟マッチングサイト専門の受託開発ベンチャー「株式会社ロボラボ」のCEO兼CTOこれまで登録したマッチングサイトは300件以上、費やしたお金は300万以上。Eatsで頼むマッチングサイトオタク。マッチングサイト愛が行き過ぎた結果、マッチングサイト専門の受託開発ベンチャーを立ち上げてしまう。「最高の出会いが最善の人生を作る」をモットーに最高のマッチングサイト開発に拘り続ける。得意分野はマッチングサイトの高速開発。・スマホアプリ開発など、30件以上のサービス開発に携わり、2件のバイアウトされた案件に関与する。日々の日課はマッチングサイトの情報収集。嫁にメルカリの使用感を質問しまくり、嫌な顔をされる。reserved.検索:Menuマッチングスタートアップシステム開発マッチングハックについてお問い合わせ。