×

基本設計とは?必要性と作り方などをご紹介

基本設計とは情報システムを作る工程の一つで、情報システム全体を機能単位に分割して、それぞれの機能がどういうものか、どういうことができるものか、機能同士がどうつながるのか決めていく作業です。 この記事では、基本的な設計、プロセス、およびその作成方法について簡単に学習します。

 2021年05月20日

基本設計とは情報システムを作る工程の一つで、情報システム全体を機能単位に分割して、それぞれの機能がどういうものか、どういうことができるものか、機能同士がどうつながるのか決めていく作業です。 この記事では、基本的な設計、プロセス、およびその作成方法について簡単に学習します。

基本設計とは情報システムを作る工程の一つで、情報システム全体を機能単位に分割して、それぞれの機能がどういうものか、どういうことができるものか、機能同士がどうつながるのか決めていく作業です。基本設計を行うタイミングは、要件定義の後、詳細設計の前になります。

今回記事では、基本設計とはどういうものかを、プロセス、およびその作成方法について簡単に学習します。

 

1. 基本設計とは



基本設計とは、製品の基本的な設計。また、製品開発において基本的な設計を策定する工程。構成や仕様、機能などの概要をまとめたものを意味する場合と、中枢や基盤の設計を意味する場合があります。

システム開発の基本設計、情報システムやソフトウェアの受託開発の場合は、要件定義と詳細設計の中間で、対象物の機能や構成などの大枠や基本的な仕様を決める工程を意味します。

顧客が必要としている事項をまとめた要件定義書などを元に、どのようなシステムを開発すればこれを満たすことが出来るかを検討し、機器やソフトウェアの構成、実装すべき機能、画面や帳票など操作や入出力に関する事項、生成・保管されるデータの概要など、システムの基礎的な仕様をまとめます。

成果物として基本設計書などの文書や図版などが一式作成されることが多く、これを元に各部の詳細や実装方式などを策定する詳細設計などを行います。

 

2. 基本設計の必要性


基本設計にはアイデアと現実の間の架け橋です。 ブループリントは、オペレーターがジョブまたは構造の構造を実行するために必要な手順を知るのに役立ちます。 タスクを実行する前に、基本的な設計を行う必要があります。それは、ほぼプロジェクトの設計、つまりアクションです。

システムを家と比較すると、基本設計は基礎を構築する段階であり、レイアウトを作成します。基礎は確実であり、新しい家は将来しっかりと持続可能な方法で構築できます。

初期の基本設計は、方向性を形成し、詳細な設計手順と実際のアプリケーションのためにタスクと物事を一般化するのに役立ちます。

 

3. 基本設計に必要な視点とは?


要件定義を経て、基本設計フェーズに入っていきます。ここではどういった視点を持つべきなのでしょうか。

3.1. 要件定義との整合性

基本設計で決めた事柄は、その後の全フェーズに絡んできます。

完成品が要件定義の内容とかけ離れていては本末転倒となってしまうでしょう。

詳細設計に入る前の基本設計で、「要件定義の項目を満たしているか」を注意深くチェックする必要があります。

3.2. 実現可能なシステムとなっているか?

要件定義でヒアリングした内容を設計書に落とし込んでいくのが基本設計フェーズです。

クライアントにとっての「理想」を明確にできても、実際のシステム開発でそれを「現実」にできなくては意味がありません。

クライアントの希望はできる限り盛り込むべきですが、システムとして実現できるかどうかの線引きはしっかりと行うべきでしょう。

仕様書を作成する段階から、この点について意識しておくことが大切です。

3.3. クライアントにとって分かりやすくなっているか?

基本設計はシステム開発の根幹を固めていく作業であるため、クライアント側も気になるところです。

開発工程がかなり進んだ後で「自分たちの希望とかけ離れている」と指摘した場合、修正にはかなりの手間が掛かってしまいます。

開発側だけでなく、顧客側にも大きな損害が出てしまうことでしょう。

基本設計フェーズの段階でも、クライアントと綿密な意思疎通を図っていくことが大切です。

無料見積もりはこちらから▶

4. 基本設計の主な項目


基本設計は、実際にシステムの仕様を決定する段階です。要件定義で決定したシステムの機能要件や非機能要件、制約条件、外部とのやり取りなどをより具体的な仕様にすることで、実際にプログラム可能な形にします。基本設計は五つの主な項目に分かれています。

4.1. 要件定義

要件定義のフェーズでは、発注元であるクライアントの希望をまとめていきます。

どういう機能を持った新システムを求めているのか」をヒアリングするため、コミュニケーション能力が大事になってくるのが特徴です。

4.2. 基本設計

要件定義で決まった内容を振り返りつつ、開発するシステムの全体像・概要についてまとめていくフェーズです。

顧客の目で見える部分の工程を設定していくことから、「外部設計」とも呼ばれます。

プログラムをどのように配置するかを検討する段階」と捉えても良いでしょう。

4.3. 詳細設計

基本設計では、システムをモジュール単位で分割し、各モジュールや使用するデータベースの設計を行います。具体的には、データの入出力、データベース同士のデータの受け渡し、ユーザーによる操作、帳票の出力などです。

また、画面のレイアウト、操作方法、帳票類の書式など、システムの使いやすさやユーザー満足度につながるインターフェース部分の仕様を決めるのも機能設計の役割です。

4.4. プログラム実装・単体テスト

基本設計詳細設計で生まれた設計書(ドキュメント)をもとに、エンジニアがプログラム作成を行なっていきます。

上の設計フェーズで生産された設計書通りに実装されていくため、設計書の質はとても重要です。

全ての完成を待ってからのテストだと細かい修正に対応できないため、実装と並行して「単体テスト」も適宜行われます。

4.5. 結合テスト

単体テストがクリアできたら、設計書通りにプログラムが組まれているかを検証します。

不備のあった箇所は適宜修正していくことになります。

結合テストの後に「受入テスト」を行い、問題点がなければクライアントに納品して完了です。

 

5. 基本設計の作り方


5.1. 業務フローの明確化

クライアント(ユーザー)が実際に行う業務内容を想定し、その流れを図で表現していきます。

縦軸に管轄部署・横軸に時間を設け、1つずつ流れに沿って記述していきます。

例えば商品発注システムのフローを説明する場合、「申込情報を取得」→「得た情報を入力」→「内容の確認」→「発注」といった具合です。

業務フローはシンプル・明確であることが望ましいとされています。複雑化しすぎるとクライアントが理解しにくいだけでなく、システムとしての実現も難易度は高くなってしまいます。

5.2. システム構成図を作る

システムの構造がパーツで構成され、それらが互いにどのように関連しているかを説明します。

まず、システムにおける、ハードウェア・ソフトウェア・ネットワークなどの構成図をそれぞれ作成する必要があります。

ソフトウェア構成では使用OSやミドルウェアの詳細等、ハードウェア構成ではルータやスイッチ等を明確に記述していきます。 

5.3. 機能一覧表の作成

機能一覧とは、システム化の対象を明確に表す資料です。プロジェクトの初期段階では機能の洗い出しが完璧にはできませんが、全体ボリュームを把握する必要があるので、作成する必要があります。

満たすべき機能要件を一覧化することで、開発担当のエンジニアが作業内容を把握しやすくなります。

見積範囲の明確化や、契約時には開発範囲の明確化にも利用できます。また、機能ごとの進捗管理を行う場合な活用されますどにも。

5.4. 非機能要件もまとめる

クライアントの業務内容に直接は影響しない非機能要件についても、基本設計書でまとめていきます。

そのシステムを継続的に使用することになる側にとっては、セキュリティ面・スピード面なども大切な要素です。

無料見積もりはこちらから▶

 

6. 基本設計書の必要なポイント


 

6.1. ドキュメントは作りすぎない

基本設計によって「基本設計書」が作られますが、ドキュメントを生産し過ぎてしまうことにも注意が必要です。全ての書類がしっかりとメンテナンスされているなら問題ありませんが、誤った情報が含まれていると開発フローに支障を来します。

そのため、求められるのはドキュメントの質であり、量ではありません。どの程度生産するかはクライアントとの折衝で判断していくべきでしょう。

6.2. 図表や数式表現をうまく使う

基本設計書は、顧客・エンジニア問わず多くの関係者が目にすることになるドキュメントです。文章ばかりだと理解に苦労するほか、仕様に誤解が生じてしまうことも考えられます。

開発を担うエンジニアにとっては、テキストよりも数式表現を使ったほうが作業する上でも負担が減るでしょう。

6.3. 設計する側にも技術力は求められる

基本設計書は、後工程のエンジニアが実装を行なう際に欠かせない書類です。なので、技術者がそれを利用するという前提で作成していくことになります。設計側にもある程度の技術力は必要です。上流工程を担うのは主にSEですが、SEも社内研修でIT技術の習得を行なう場合が殆どです。要件定義をメインに行うエンジニアはある意味「コンサル 」といえるものの、エンジニア要素もやはり関係してくることになります。

 

7. さいごに


基本設計は、情報システムのあるべき姿をベンダの言葉で作り上げてまとめる、とても大事な工程です。基本設計がお客様と合意されれば、お客様はそれが実現されるものと期待しながら、情報システムが出来上がるのを待ちます。基本設計は、お客様とベンダとの間での最後の約束ごとだと言ってもいいでしょう。

基本設計が上手くいくかは、基本設計を行う担当者の実力とスキルと意識の持ち方次第です。方法論はそれを補うものでしかありません。基本設計のレビューを行うチームやプロジェクトやベンダの総合力も問われます。また、基本設計ができる要員がいるかどうかが、情報システム構築の成否を分けるのです。

現在、私たちハチネット企業のエンジニアは、高い技術を持つだけでなく、お客様と日本語で直接にコミュニケーションをとることができます。そのため、書類面やお客様の希望で100%日本語をドキュメントの処理ができます。

私たちハチネットは、常に品質製品と顧客の満足度を重視している。ハチネットのサービスを選択すれば、製品が実装されてから納品されるまで安心できると信じます。



オフショア開発をご検討されている方々はぜひ一度ご相談ください。

※以下通り弊社の連絡先

アカウントマネージャー: クアン(日本語・英語対応可)

電話番号: (+84)2462 900 388

メール:  konnichiwa@hachinet.com

お電話でのご相談/お申し込み等、お気軽にご連絡くださいませ。

いずれかのサービスについてアドバイスが必要な場合は、お問い合わせください。
  • オフショア開発
  • エンジニア人材派遣
  • ラボ開発
  • ソフトウェアテスト
※以下通り弊社の連絡先
電話番号: (+84)2462 900 388
メール: contact@hachinet.com
お電話でのご相談/お申し込み等、お気軽にご連絡くださいませ。
無料見積もりはこちらから

Tags

ご質問がある場合、またはハチネットに協力する場合
こちらに情報を残してください。折り返しご連絡いたします。

 Message is sending ...

関連記事

 2026年02月05日

Dartはなぜ「書かされている感」が強いのか──Flutter・Web・Serverに共通する設計拘束の正体

Web Dart 入門としてDartに触れた多くの人が、「書けるが、自分で設計している感じがしない」という感覚を持ちます。サンプル通りに書けば動く、しかし少し構造を変えた瞬間に全体が崩れる。この現象は学習者の理解不足ではなく、Dartという言語が設計段階で強い制約を内包していることに起因します。本記事では、Dartがどのようにコードの形を縛り、なぜその縛りがFlutter・Web・Serverすべてで同じ問題を引き起こすのかを、実装視点で掘り下げます。

 2026年02月03日

Dartを学び始める前に理解しておくべき前提モデルと学習の限界点

「Dart 入門」という言葉は、Dartが初心者でも気軽に扱える言語であるかのような印象を与えますが、実際のDartは、現代的なアプリケーション開発で前提とされるプログラミングモデルを理解していることを前提に設計された言語です。文法自体は比較的素直であっても、状態管理、非同期処理、型による制約といった考え方を理解しないまま学習を進めると、「動くが理由が分からないコード」が増え、小さな変更で全体が破綻する段階に必ず到達します。本記事では、Dart学習で頻発するつまずきを起点に、学習前にどのレベルの理解が求められるのかを、曖昧な励ましや精神論を排して整理します。

 2026年02月02日

Dartとは何か ― 言語仕様・ランタイム・制約条件から見る設計の実像

Dart 入門や Dartとは というキーワードで語られる内容の多くは、表層的な機能説明に留まっています。しかしDartは、流行に合わせて作られた軽量言語ではなく、明確な制約条件を起点に設計された結果として現在の形に落ち着いた言語です。本記事では、Dartを仕様・ランタイム・設計判断の連鎖として捉え、その必然性を整理します。

 2026年02月02日

アプリプログラミングで問われるITリテラシーとは何か──複数の言語が生む思考の断層

ITリテラシーがあるかどうかは、プログラミング言語を知っているかでは決まりません。本質は、なぜアプリプログラミングが複数の言語に分かれているのかを、構造として理解しているかです。この記事では、言語ごとに異なる役割と思考モデルを明確にし、非エンジニアが判断を誤る理由を技術構造から説明します。

 2026年01月30日

アプリプログラミングの深層から設計するアプリエンジニアのキャリア戦略|技術判断を持たない実装者が必ず行き詰まる理由

アプリプログラミングの経験年数が増えても、技術者としての評価が上がらないケースは珍しくありません。その多くは、アプリ開発を「作る仕事」として捉え続けていることに起因します。アプリエンジニアのキャリア戦略を考えるうえで重要なのは、実装スキルではなく、技術的な判断をどこまで担ってきたかです。本記事では、アプリプログラミングの深層にある設計・判断の観点から、キャリア形成の実態を整理します。

 2026年01月27日

パフォーマンス改善が失敗するアプリプログラミングの構造的欠陥

アプリが重くなるとき、表に出るのはスクロールのカクつきや起動遅延だ。しかしユーザーが離脱する原因は、その「見えている遅さ」ではない。アプリプログラミングの内部で、処理順序・責務分離・実行単位が崩れ始めていることに、誰も気づいていない点にある。

 2026年01月26日

リリース前に失敗は確定していた──アプリプログラミング現場で実際に破綻した5つの判断

アプリプログラミングの失敗は、実装が始まってから起きるものではありません。実際には、設計初期に下した数個の判断によって、後工程の選択肢が静かに消えていきます。本記事では、開発中は一見順調に見えたにもかかわらず、運用段階で破綻した事例をもとに、「どの判断が不可逆だったのか」を構造として整理します。

 2026年01月25日

アプリプログラミングの技術選定を構造で考える:iOS・Android・Flutter・React Nativeと言語の違い

アプリプログラミングの技術選定は、フレームワーク名だけを見ても判断できません。その背後には必ず「どの言語で書き、どこで実行され、何に依存しているか」という構造があります。本記事では、iOS、Android、Flutter、React Nativeに加え、関連するプログラミング言語にも触れながら、技術同士のつながりを整理します。

 2026年01月22日

生成AIはアプリプログラミングをどこまで変えたのか― Webアプリとモバイルアプリで異なるChatGPT・Copilotの実効性

生成AIがアプリ プログラミングに与えた影響は、Webとモバイルで同じではありません。「生成AIで開発が速くなった」という一言では片付けられない差が、実装工程・設計工程の随所に現れています。本記事では、アプリプログラミングを工程単位で分解した上で、ChatGPTやCopilotがWebアプリとモバイルアプリでどのように効き方を変えるのかを、現場エンジニアの視点で整理します。

 2026年01月20日

AI時代のアプリプログラミング──日本向け開発現場でのSwiftとFlutterの使い分け

AIの進化によって、アプリプログラミングの実装速度は大きく向上しました。SwiftやDartのコード生成、UIサンプルの自動作成により、短期間で動作するアプリを作ること自体は難しくありません。しかし、日本向けのアプリ開発現場では、「どの言語で作るか」よりも、「どの条件でその言語を選ぶか」が、これまで以上に重要になっています。本記事では、AI時代のアプリプログラミングにおいて、SwiftとFlutterをどのような基準で使い分けているのかを、現場視点で整理します。

 2026年01月18日

クラウド前提のJava開発でSpringが「設計標準」になった技術的必然

Springとは何かという問いは、もはや技術用語の定義ではなく、設計思想をどう捉えるかという話になっています。クラウド、コンテナ、CI/CDが前提となった現在、Javaで業務システムを構築する場合、Springは選択肢の一つというより、設計基準そのものとして扱われることが多くなりました。本記事では、その理由を機能ではなく構造の観点から掘り下げます。