工数の計算方法がわかる|かんたん計算問題


2020-03-04 更新
かんたん計算問題とは
この連載では、基本情報技術者試験で、多くの受験者が苦手意識を持っている「計算問題」に的を絞って、計算方法を詳しく説明します。苦手克服のポイントは、シンプルな具体例で、計算方法のイメージをつかむことです。
丸暗記ではなく、感覚的に理解してください。そうすれば、様々な問題に応用できます。

今回のテーマは、マネジメント系でよく出る「工数」です。工数の考え方と計算方法がわかったら、いくつか過去問題を解いてみましょう。

用語解説 工数の考え方

「工数(こうすう)」とは、プロジェクトの作業量のことであり、「人日(にんにち)」や「人月(にんげつ)」という単位で示されます。

1 人でこなすと 1 日かかる作業量を 1 人日と呼び、 1 人でこなすと 1 か月かかる作業量を 1 人月と呼びます。工数の計算では、「要員」と「期間」という言葉も出てきます。

要員とは、プロジェクトの作業者の人数です。
期間とは、プロジェクトを完了させるまでの日数や月数です。

 

例として、工数が 10 人月のプロジェクトがあるとしましょう。これを 1 人の要員でこなすと、当然ですが 10 か月の期間かかります。

それでは、2 人の要員でこなすとどうなるでしょう。実際には、そんな単純ではないかもしれませんが、工数の計算では、大雑把に「要員が 2 倍になったのだから期間は 1 / 2 になる」と考えます。

つまり、 10 人月のプロジェクトを 2 人の要員でこなした場合の期間は、以下のように「期間 = 工数 ÷ 要員」という計算で求められます。

期間 = 工数 ÷ 要員
= 10 人月 ÷ 2 人 = 5 か月

それでは、工数が 10 人月のプロジェクトを 2 か月の期間で完了させるためには、何人の要員が必要でしょうか。

感覚的に 5 人だとわかると思いますが、工数、要員、期間という言葉を使った計算式を見出してください。5 人は、 10人月 ÷ 2 か月で求められるので、以下のように「要員 = 工数 ÷ 期間」という計算になります。

要員 = 工数 ÷ 期間
= 10 人月 ÷ 2 か月 = 5 人

それでは、4 人の要員で 2.5 か月の期間がかかったプロジェクトの工数は、全部で何人月でしょう。

これも、感覚的に 10 人月だとわかると思いますが、工数、要員、期間という言葉を使った計算式を見出してください。 10 人月は、4 人 × 2.5 か月で求められるので、以下のように「工数 = 要員 × 期間」という計算になります。

工数 = 要員 × 期間
= 4 人 × 2.5 か月 = 10 人月

いかがでしょう。

シンプルな具体例で

「期間 = 工数 ÷ 要員」
「要員 = 工数 ÷ 期間」
「工数 = 要員 × 期間」

という計算方法を見出せました。

もしも、工数を計算する問題を解くときに「あれっ、どうやって計算するんだっけ?」と悩んだなら、その都度シンプルな具体例で計算方法を見出してください。

工数と期間から要員を求める問題

工数の考え方がわかったところで、過去問題を解いてみましょう。はじめは、工数と期間から要員を求める問題です。

問 54 (平成 31 年度 春期)

システムを構成するプログラムの本数とプログラム 1 本当たりのコーディング所要工数が表のとおりであるとき,システムを 95 日間で開発するには少なくとも何人の要員が必要か。ここで,システムの開発にはコーディングの他に,設計やテストの作業が必要であり,それらの作業の遂行にはコーディング所要工数の 8 倍の工数が掛かるものとする。

プログラムの本数 プログラム 1 本当たりの
コーディング所要工数( 人日)
入力処理 20 1
出力処理 10 3
計算処理 5 9

ア 8  イ 9  ウ 12  エ 13

「何人の要員が必要か」という問題なので、「要員 = 」という計算式を使います。

もしも計算方法に悩んだなら、この問題に示された数字ではなく、シンプルな具体例を想定してみましょう。

例えば、工数が 10 人月で、期間が 2 か月なら、要員は 10 人月 ÷ 2 か月 で 5 人です。これは「要員 = 工数 ÷ 期間」という計算方法です。

 

この計算方法を、問題に当てはめてみましょう。

プログラムの本数と、それぞれの 1 本当たりの工数が示されているので、以下のように計算して、コーディング(プログラムを作る作業)の工数は、95 人日になります。

入力処理の工数
= 20 本 × 1 人日
= 20 人日
出力処理の工数
= 10 本 × 3 人日
= 30 人日
計算処理の工数
= 5 本 × 9 人日
= 45 人日
コーディングの工数
= 入力処理の工数 + 出力処理の工数 + 計算処理の工数
= 20 人日 + 30 人日 + 45 人日
= 95 人日

問題には「システムの開発にはコーディングのほかに、設計及びテストの作業が必要であり、それらの作業にはコーディング所要工数の 8 倍の工数が掛かるものとする」と示されています。

したがって、以下のように計算して、システム全体の工数は、855 人日になります。

システム全体の工数
= コーディングの工数 + コーディングの工数の 8 倍の工数
= 95 人日 + 95 人日 × 8
= 855 人日

これで、「要員 = 工数 ÷ 期間」という計算方法を当てはめることができます。

工数は 855 人日で、期間は 95 日です。したがって、以下のように計算して、要員は 9 人(選択肢イ)です。

要員 = 工数 ÷ 期間
= 855 人日 ÷ 95 日 = 9 人

 

正解 イ

ピーク時の要員を求める問題

次は、 1 つ目の問題と同様に、工数と期間から要員を求める問題ですが、全体ではなく、ピーク時の要員を求めるという内容になっています。

問 54 (平成 29 年度 秋期)

開発期間 10 か月,開発工数 200 人月のプロジェクトを計画する。次の配分表を前提とすると,ピーク時の要員は何人か。ここで,各工程では開始から終了までの要員数は一定とする。

項目 \ 工程名 要件定義 設計 開発・テスト システムテスト
工数配分(%) 16 33 42 9
期間配分(%) 20 30 40 10

announcement 横にスクロールします

ア 18  イ 20  ウ 21  エ 22

ここでも、先ほどと同じ「要員 = 工数 ÷ 期間」という計算方法を使いますが、その前に、配分( % )で示されている工数と期間を「人月」と「か月」に置き換える必要があります。

全体の開発期間が 10 か月で、開発工数が 200 人月なので、それぞれの工程の工数(人月)と期間(か月)は、それぞれの配分から、以下のように計算できます。

項目 \ 工程名 要件定義 設計 開発・テスト システムテスト
工数(人月) 200 × 0.16 = 32 200 × 0.33 = 66 200 × 0.42 = 84 200 × 0.09 = 18
期間(か月) 10 × 0.20 = 2 10 × 0.30 = 3 10 × 0.40 = 4 10 × 0.10 = 1

announcement 横にスクロールします

工数と人月が求められたので、それぞれの工程の要員は、「要員 = 工数 ÷ 期間」という計算方法で、以下のように求めらます。

ピーク時(最も多くの要員を必要とする時)の要員は、「設計」の 22 人(選択肢エ)です。

項目 \ 工程名 要件定義 設計 開発・テスト システムテスト
工数(人月) 32 66 84 18
期間(か月) 2 3 4 1
要員(人) 32 ÷ 2 = 16 66 ÷ 3 = 22 84 ÷ 4 = 21 18 ÷ 1 = 18

announcement 横にスクロールします

 

正解 エ

追加する要員を求める問題

今度は、やはり要員を求める問題なのですが、全体やピーク時ではなく、追加する要員を求めるという内容になっています。かなりヒネリの入った問題です。

問 53 (平成 27 年度 秋期)

10 人が 0.5 k ステップ / 人日の生産性で作業するとき,30 日間を要するプログラミング作業がある。10 日目が終了した時点で作業が終了したステップ数は,10 人の 合計で 30 k ステップであった。予定の 30 日間でプログラミングを完了するためには,少なくとも何名の要員を追加すればよいか。ここで,追加する要員の生産性は,現在の要員と同じとする。

ア 2  イ 7  ウ 10  
エ 20

ここでも、これまでと同じ「要員 = 工数 ÷ 期間」という計算方法を使いますが、その前に、あれこれ計算しなければならないことがあります。計画時の生産性と、実際の生産性が違っていたからです。

この問題では、「ステップ / 人日」という単位で、生産性が示されています。これは、 1 人で 1 日あたり何ステップ(何行)のプログラムを作れるかを示しています。

 

まず、工数を求めてみましょう。

この問題では、はじめにステップ数(プログラムの行数)で工数を考えて、それを後で 人日単位に置き換えるとわかりやすいでしょう。

「 10 人が 0.5 k ステップ / 人日の生産性で作業するとき、30 日間を要するプログラミング作業」なのですから、ステップ数で示した工数は、以下のように計算して、 150 k ステップになります。

ステップ数で示した工数
= 10 人 ×( 0.5 k ステップ / 人日)× 30 日
= 150 k ステップ

計画通りの生産性があれば、 10 日目が終了した時点で作業が終了したステップは、以下のように計算して、50 k ステップになります。

10人 ×( 0.5 k ステップ / 人日)× 10 日
= 50 k ステップ

ところが実際には、10 日目が終了した時点で作業が終了したステップは、30 k ステップなのですから、実際の生産性は、以下のように計算して、0.3 k ステップ/ 人日です。

実際の生産性
= 計画時の生産性 ×( 30 k ステップ / 50 k ステップ)
= 0.5 k ステップ / 人日 ×( 30 k ステップ / 50 k ステップ)
= 0.3 k ステップ / 人日

残りの工数をステップ単位で示すと、 150 k ステップのうち 30 k ステップの作業が終了しているので、

150 k ステップ – 30 k ステップ
= 120 k ステップ

です。

これを 0.3 k ステップ / 人日の生産性でこなすと、

120 k ステップ ÷ 0.3 k ステップ / 人日
= 400 人日

になります。

これで、工数の単位が人日になりました。

「要員 = 工数 ÷ 期間」という計算方法を当てはめてみましょう。

残りの期間は、30 日 – 10 日 = 20 日です。

400 人日の工数を 20 日でこなすのですから、以下のように計算して、20 人の要員が必要です。現状の要員は 10 人なので、あと 10 人(選択肢ウ)の要員追加が必要です。

要員 = 工数 ÷ 期間
= 400 人日 ÷ 20 日
= 20 人

 

正解 ウ

FP を工数に置き換える問題

問 54 (平成 26 年度 秋期)

ある新規システムの開発規模を見積もったところ,500FP (ファンクションポイント) であった。このシステムを構築するプロジェクトには,開発工数の他にシステムの導入や開発者教育の工数が 10 人月必要である。また,プロジェクト管理に,開発と導入・教育を合わせた工数の 10 % を要する。このプロジェクトに要する全工数は何人月か。ここで,開発の生産性は 1 人月当たり 10FP とする。

ア 51  イ 60  ウ 65  エ 66

最後は、「 FP(ファンクションポイント)」をからめた工数の計算問題です。

FP は、システムを構成する個々の機能(ファンクション)に得点(ポイント)を付けて、すべての得点を合計してシステムの開発規模を見積もるという技法です。

この FP を、人月単位の工数に置き換えるという内容になっています。

 

システムの開発規模が 500 FP であり、生産性が 1 人月当たり 10 FP なのですから、人月単位に置き換えた開発の工数は、以下のように計算して、50 人月になります。

開発の工数

= 500 FP ÷( 10 FP / 人月)
= 50 人月

ただし、この 50 人月が答えでは、あまりにも簡単すぎます。

そこで、問題文には

  • 「開発工数の他にシステムの導入や開発者教育の工数が 10 人月必要である」
  • 「プロジェクト管理に、開発と導入・教育を合わせた工数の 10 % を要する」

という但し書きがあります。

つまり、開発工数だけでなく、導入・教育の工数、およびプロジェクト管理の工数が必要であり、それらを全部合計した工数を答えよ、という問題なのです。

以下のように計算して、66 人月(選択肢エ)になります。

導入・教育の工数
= 10 人月
プロジェクト管理の工数
=(開発の工数 + 導入・教育の工数)× 0.1
=( 50 人月 + 10 人月)× 0.1
= 6 人月
プロジェクトの全工数
= 開発の工数 + 導入・教育の工数 + プロジェクト管理の工数
= 50 人月 + 10 人月 + 6 人月
= 66 人月

 

正解 エ

工数に関する計算問題の解き方を、ご理解いただけましたか。

計算が苦手な人は「公式として暗記したい」思うかもしれませんが、それはお勧めしません。

この記事で示したように、工数に関する計算問題は、様々なパターンで出題されるので、公式の暗記では対応しきれない場合があるからです。

公式ではなく、考え方を理解してください。シンプルな具体例で、計算方法を見出してください。

これは、他のテーマの計算問題でも同様です。それでは、またお会いしましょう!

 

label 関連タグ
実は、午前試験を『免除』できます 独習ゼミで午前免除試験を受けた 86% の方が、
午前分野を免除しています。
2021 年度 春期試験 向け
最大20%OFF!
2021年度 春期試験向け
最大20%OFF!

詳しく見てみるplay_circle_filled
label これまでの『苦手克服!かんたん計算問題』の連載一覧 label 著者

『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”

大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。

主な著作物

  • 「プログラムはなぜ動くのか」(日経BP)
  • 「コンピュータはなぜ動くのか」(日経BP)
  • 「出るとこだけ! 基本情報技術者」 (翔泳社)
  • 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
  • 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数

grade IPA認定
午前免除制度対応
eラーニング

人気記事

人気のタグ