
//=get_the_excerpt();?>
ソフトウェア開発に踏み出そうと思っても、何から始めればいいのか、事前に何を知っておけばいいのか分からない方は少なくありません。本記事では、ソフトウェア開発の発注・受注の手順や種類、ソフトウェア開発に関わる職業なども徹底的に解説します。また、システム開発とプログラミングとの違いや、初心者から始める際の注意点も紹介しますのでぜひ参考にしてください。
目次
ソフトウェア開発とは?
ソフトウェア開発とは、コンピューター上で作動するシステムの開発のことです。たとえば、ソフトウェアには下記のようなものが存在します。
- デスクトップアプリ(ExcelやWord)
- Webシステム(Google ChromeやSafari)
- ゲームソフト
要するに、上記のようなアプリやシステムを開発し、市場へ提供するのがソフトウェア開発です。また、ソフトウェアの対義語をハードウェアと呼びます。ハードウェアは、パソコンやプリンターなど形として目に見える機器を指します。そのため、双方の違いについては下記のように覚えておくとよいでしょう。
- ソフトウェアはコンピューター上で作動し形がなく目に見えないもの
- ハードウェアは形があり目に見えるもの
ソフトウェア開発の種類
ソフトウェア開発も、大きく下記の3種類に分かれます。
- Webシステム開発
- アプリケーション開発
- 組み込みシステム開発
それぞれの業務内容を見ていきましょう。
Webシステム開発
インターネット上の仕組みを活用したシステムを作るのが、Webシステム開発です。代表的なWebシステムは下記が挙げられます。
- Google ChromeやSafari
- TwitterやInstagramなどのSNS
- Amazonや楽天などのECサイト
- ネットバンキング
これらはすべて、インターネット上の仕組みがあるからこそ開発されたWebシステムになります。オンライン同士で通信や取引が行えたり、サーバー内にデータを保管できたりするシステムがWebシステムと覚えておきましょう。
アプリケーション開発
特定の目的を持ったプログラムを作成するのが、アプリケーション開発です。非常に多くのアプリケーションが開発されていますが、下記が代表例です。
- Word
- Excel
- Skype
Wordは文書作成、Excelは表計算やデータ集計を目的に開発されました。Skypeは、オンラインでの会話を目的に開発されたアプリケーションになります。このように、アプリケーション開発ではユーザーの目的達成に特化したアプリを作成します。
組み込みシステム開発
たとえば、電化製品(テレビ、冷蔵庫など)に動きを制御するためのシステムを組み込むのが、組み込みシステム開発です。また、電化製品だけでなく、カーナビやロボットなどにもシステムが組み込まれています。基本的には、1つの機能に対して1つのシステムを組み込みます。
ソフトウェア開発に関わる職業
ソフトウェア開発を進めていくにあたって、その中のプロセスで関わる職業は次の3つです。
- プログラマー
- エンジニア
- 営業
それぞれの具体的な業務について解説します。
プログラマー
プログラマーはソフトウェアのプログラミングを主に担当します。目的に合わせてプログラミング言語やフレームワークを用い、コーディング作業をおこなっていきます。動作をテストしながら何度も修正をしていくことになるため、プログラミング言語の専門的な知識が必須です。
エンジニアが設計したソフトウェアの開発をおこなうのがプログラマーです。
ただし、プログラマーとエンジニアを兼業しているケースも増えているため、プログラミング言語を扱うことができる人を広くプログラマーと呼ぶこともあります。
エンジニア
エンジニア(ソフトウェアエンジニア)は、ソフトウェアの設計を主に担当します。場合によっては顧客からのヒアリングやソフトウェアの要件定義などの上流の工程を担当することもあります。
全体像を把握し、ユーザーの要望をソフトウェアに落とし込むスキルが必要になります。
営業
営業は、「パッケージ営業」や「受託開発営業」といった段階で活躍します。
パッケージ営業の場合、既存の自社ソフトウェア製品を顧客に営業します。製品の内容や魅力を顧客に伝えるための営業スキルが必要です。
受託開発営業では、顧客のニーズに合わせてシステム開発を請け負うため、顧客とエンジニアの橋渡しのような存在となります。顧客が求めるものと、システムで解決できることの折り合いをうまくつけながら、受注に繋げる必要があります。
ソフトウェア開発の流れ【受注してからの8つのステップ】
次はソフトウェア開発の流れを見ていきましょう。1つのソフトウェアを開発するまで、下記8つの工程が必要です。
- 顧客調査・ヒアリング
- 企画・提案
- 契約・受注
- 要件定義
- 設計
- 開発
- テスト
- 運用・保守
顧客調査・ヒアリング
ソフトウェア開発は顧客調査から始まります。顧客が現在行っている業務を参考に、効率化する方法や抱えている悩みを分析します。
調査結果をもとに、顧客が抱える課題や何を改善したいかを直接聞きます。ヒアリングは、ソフトウェア開発をスムーズに進行させる上で非常に重要であるため、顧客のニーズを徹底的に深掘りしましょう。
また予算や運用時期、競合他社のシステム状況についてもヒアリングを実施し、この後の工程に落とし込んでいきます。
企画・提案
企画・提案の段階では、解決策を本格的に検討していきます。
- どのようなシステムを導入するか?
- 費用はいくら必要か?
- 開発にどのくらいの期間がかかるか?
- どんな効果に期待できるか?
企画が完成したら、顧客にまずは提案として伝えます。その上で顧客の疑問点や問題点の解決と並行して、企画を修正していきましょう。
双方の認識ミスや金銭的トラブルを未然に防ぐためにも、ここでしっかり企画を練ることが大切であり、同時に顧客との信頼関係を築くチャンスです。
契約・受注
企画・提案後、契約・受注の手続きに入ります。ここでは、開発するソフトウェアの詳細などを提示します。
- 費用
- 期間
- 納期
顧客に承認をもらえれば契約・受注が完了です。
確実に契約・受注に繋げるためにも、顧客とコミュニケーションを取り信頼関係を築くよう努めましょう。
また、顧客によっては競合他社と比較している場合もあるため、費用の安さや品質の高さなど、自社と契約するメリットも伝えるのがポイントです。
要件定義
契約が成立したら、次は要件定義です。要件定義では、企画をもとに開発するソフトウェアに実装する機能を明確にしていきます。この要件定義こそ、プロジェクトが成功するか否かの明暗を分け、この後の工程にも影響を及ぼします。
最終的には「要件定義書」という書類に下記のような内容を記載します。
- 現在の業務フロー
- システム設計書
- 顧客との関係
- 解決策
設計
次はソフトウェアの設計です。設計は、具体的に下記2つに分かれ、基本設計とも呼ばれる外部設計では、ソフトウェアを外から見た際にどのように操作させるかを決めます。
- 外部設計
- 内部設計
その上で内部設計により、外部設計で決めた操作の詳細を決めることから、詳細設計とも呼ばれます。
簡単に言えば、外部設計はユーザー向けの操作画面や操作方法などの仕様を設計するイメージです。
一方の内部設計は、その名の通りソフトウェアの内部構造の設計を指しており、目に見えない部分を設計するイメージです。
ここの工程で、ソフトウェアの機能やデータベースの設計、プログラム完成までの作業工程が決まります。
開発
いよいよ開発の実行に向けて、設計書・仕様書に基づき、実際にプログラムを記述していきます。なお、ソフトウェア開発ではJavaやPython・C#などが多く使用されています。
テスト
開発が完了したら顧客に引き渡す前に、正常に動くかテストします。まずは、各パーツごとに単体テストを行い、その後にパーツを連携させ結合テストを行うのが一般的です。
単体、結合テストそれぞれがOKであれば、プログラムとハードウェアを合わせて全体のシステムテストを行います。
また、顧客にも運用テストをしてもらい、「目的を満たしているか?」「打ち合わせ内容と相違する部分はないか?」などの最終確認を行います。
運用・保守
テストが完了したら実際に顧客へ納品し、ソフトウェア開発は一旦完了です。しかし、ソフトウェア開発は、納品して終わりではありません。
運用中の不具合対応や、定期的なメンテナンスも業務の一環です。
また顧客からご要望があれば、さらに使いやすくするための機能を新規で追加する場合もあります。ソフトウェア開発は、この8つのステップで行われます。
ソフトウェア開発の流れ【発注までの4ステップ】
ソフトウェア開発を発注する場合は、以下の4つの工程が必要になります。複数の会社に開発の提案書を提出し、見積もりをもらってから依頼先を決める、というのが大まかな流れです。
- 依頼する会社の候補を複数出す
- RFP(提案依頼書)を作成する
- 候補の会社にオリエンテーションをおこなう
- 依頼先を決め、契約書を締結する
依頼する会社の候補を複数出す
Webサイトでの検索や展示会の参加などで、ソフトウェア開発の発注先候補を複数出します。費用や過去の実績、担当者との相性などを検討するため、最低でも3社は比較することをおすすめします。
発注先を選ぶ際は、必要としているソフトウェアと似たものを開発した経験がある会社をベースにするとよいでしょう。
RFP(提案依頼書)を作成する
RFP(提案依頼書)とは、自社の課題をまとめ、依頼したい内容や必要なシステムをまとめた書類です。このRFPを元に、各依頼先は見積もりを出すことになります。
具体的に記載すべき内容は、以下の通りです。
目的 | ソフトウェア開発の目的を記載します。 |
現在の課題 | 現在自社で抱えている課題を記載します。 |
現在のシステム構成 | 現在使用しているシステムの構成図やパッケージについて記載します。 |
希望の納期 | スケジュール感をイメージしやすいよう、希望納期を記載します。 |
予算 | 予算にあった提案をしてもらえるよう、ある程度の予算を記載します。 |
提案の提出期限 | 複数社の比較がしやすいよう、提案の期限を記載します。 |
候補の会社にオリエンテーションをおこなう
作成したRFPをもとに、発注先候補の会社に説明をおこないます。RFPだけで伝わり切らないことは口頭で補足します。
会社ごとの特性や違い、担当者の対応などは後から比較できるようにメモ書きなどで残しておきましょう。
依頼先を決め、契約書を締結する
各会社から見積もりが届いたら、内容や費用を考慮して発注先を決定します。開発や設計の範囲は依頼したものとズレていないか、仕様変更の際の追加費用はかかるか、契約内容が明確に記載されているかなどをチェックしましょう。
内容に問題がなければ、契約書を締結して開発に入っていきます。
初心者からソフトウェア開発を始めるには?
初心者からソフトウェア開発を始めるには、まずプログラミングの勉強から始めましょう。
プログラミング初心者は、下記3つのプログラミング言語から学ぶのがおすすめです。
- Java
- Python
- Ruby
設計したソフトウェアを実際に開発するには、プログラミングのスキルは必須になります。
その上で、プログラミングのスキル以外にも、
- 顧客の悩みをリサーチする
- 要望を満たす企画・提案をする
- 顧客と信頼関係を築き契約に繋げる
などのマーケティングスキルも必要ですが、プログラミングスキルがないと実際に顧客が求めるソフトウェアは作成できません。
つまり、プログラミングはあくまでソフトウェア開発の工程の1つですが、外せない重要な1ピースなのです。
そのため、初心者の方は参考書や学習サイトなどでプログラミングの勉強を始めてみましょう。また、必要に応じてプログラミングスクールに通うことも選択肢の1つになります。
ソフトウェア開発とシステム開発・プログラミングの違い
IT業界には、以下のようなソフトウェア開発と混同しがちな業種があります。
- システム開発
- プログラミング
上記2つと、ソフトウェア開発の違いについて悩む方は多いかもしれません。ここからは、それぞれの違いを説明します。
ソフトウェア開発とシステム開発の違い
システム開発は、IT技術を活用し、主に既存業務の効率化を図るための仕組みを作ることを指します。たとえば、IT技術を導入する前の飲食店では、お客様から注文を聞くのは従業員の仕事でした。
しかし、現在では大手飲食店を中心に、注文はタッチパネルで取る仕組みを導入したことで業務を効率化しています。他の業界でも従来はすべて手作業で行っていた業務をIT技術を駆使した仕組みにより、業務の効率化に成功しています。
つまり、ソフトウェア開発のように新しいものを作るのではなく、既存業務を効率化できる仕組みを作るのがシステム開発です。
ソフトウェア開発とプログラミングの違い
プログラミングは、コンピューターを命令通りに動作させるためのソースコードを作成します。結論から言うと、プログラミングはソフトウェア開発のプロセスの1つにすぎません。
ソフトウェア開発では、「どのような仕様にするか?」を顧客と打ち合わせしてから、設計書を作成していきます。その上で、ソフトが設計書通りに動くためのソースコードを作成するので、そこでプログラミングの出番になります。
プログラミングは、ソフトウェア開発の工程である顧客調査から始まり、顧客に引き渡すまでの工数の1つです。
まとめ
本記事では、ソフトウェア開発の概要を徹底的に解説しました。ソフトウェア開発は、コンピューター上で作動するシステムの開発を指します。ソフトウェア開発には、システムエンジニアやプログラミング、さらに営業など多くのスキルが活用されています。
ITが普及した現代で、業務の効率化を図る仕組みを構築するシステム開発の需要も、今後は伸びていくでしょう。なお、近畿システムサービスではさまざまな業務効率化システムをご提案しております。
業務効率化できるシステム開発に興味がある方は、お気軽に資料請求やお問い合わせください。