ZEPETOタスク分解のエクセル表の現在タスクの作業量を合計してみたところ305.9日分、月(30日)で換算すると約10.2ヵ月分。
ソーシャルアプリ開発の際の人月の平均が80万円なので、約820万円。
大規模アプリ開発は一億円程度かかると言われており、私もそのぐらいで考えていたのですが、ZEPETO本体を分解した残りのタスクは、既出のタスクの延長にあるものなので、せいぜい2倍から3倍が妥当な作業量だと考えており、想定額の半分程度しか使われないことになってしまいます。
確かに少ない予算で済むのはいいことなのですが、私の見積りが見当外れすぎている可能性も考えられます。
あと2、3日でpaizaのC#の内容をコンプリートできるかと思うので、再度分解したタスクのコードを検証し、作業時間が的外れすぎていないか確認してみようかと思います。
【私が間違えたC#コード集】
間違えたコードはミス要因と正解コードを保管して、自分の弱点集・ミスの癖一覧および別途開発時に困った時の辞書にできるようにしています。
①ミス要因「Split(',')の中身が","になっていた」
using System;
public class Hello{
public static void Main(){
var data = Console.ReadLine();
string [] team = data.Split(',');
data = Console.ReadLine();
string [] enemy = data.Split(',');
foreach(var str in enemy){
Console.WriteLine(str +"が現れた");
}
var num = enemy.Length;
Console.WriteLine("敵は" + num + "匹");
var random = new Random();
var rand = 0;
var attack = "";
foreach(var str in team){
rand = random.Next(num);
attack = enemy[rand];
Console.WriteLine(str + "の攻撃!");
Console.WriteLine(attack + "に会心の一撃!");
}
}
}
——————
勇者,戦士,忍者,俺
スライム,モンスター,魔王,かば
②ミス要因「Attackの戻り値がsumできちんと蓄積されない。新変数numを定義するのではなく、enemyHpをそのまま使えばよかった」
//RPGの攻撃シーンを作ろう
using System;
public class Program
{
public static void Main()
{
string[] players = { "勇者", "戦士", "魔法使い" };
var rand = new Random();
int enemyHp = int.Parse(Console.ReadLine());
foreach (var player in players)
{
var hit = rand.Next(1, 4) * 10;
Console.WriteLine(player + "はスライムを攻撃した");
// ここでAttackメソッドを呼び出して、返り値をenemyHpに代入する
enemyHp = Attack(enemyHp, hit);
Console.WriteLine("敵のHPは残り" + enemyHp + "です");
}
}
public static int Attack(int enemyHp, int hit)
{
enemyHp -= hit;
return enemyHp;
}
}
誤答
//RPGの攻撃シーンを作ろう
using System;
public class Program
{
public static void Main()
{
string[] players = { "勇者", "戦士", "魔法使い" };
var rand = new Random();
int enemyHp = int.Parse(Console.ReadLine());
foreach (var player in players)
{
var hit = rand.Next(1, 4) * 10;
Console.WriteLine(player + "はスライムを攻撃した");
// 下記にコードを追加する
var num = Attack(enemyHp,hit);
Console.WriteLine("敵のHPは残り" + num + "です");
}
}
public static int Attack(int enemyHp, int hit)
{
enemyHp = num - hit;
return enemyHp;
}
}