大規模アプリ

人型の置物とノートパソコン

まだ勉強を始めたばかりなので、記事にする題材がありません。一旦自分の仕事を振り返ってみようと思います。

ずっと一人でソフト(アプリ)を作ってきたため、チームで作成するアプリの規模感が良くわかりません。プロフィールや経歴書に「中・大規模データベースソフトを構築しました」などと書くのですが、本当に大規模?という疑問が湧いてきましたので検証(言い訳?)したいと思います。

そもそも大規模アプリとは何行(何ステップ)以上なのか? 検索してもはっきりとした定義が出てきません。よく企業の会計システムは100万行をこえるとか、大手銀行のシステムは1000万行以上あるとか、Windowsのコードが1億行をこえるとかは誰が聞いても大規模と思うでしょう。Googleのコードに至っては20億行をこえるそうです。行数もすごいですが、開発費用も想像できません。

それでは視点を現実的なレベルに落として考えてみます。
IPA(独立行政法人 情報処理推進機構)によると、大規模システムとは100名以上のプロジェクト構成要員が携わるプロジェクトと定義されている様です。

規模目安
小規模システム30名未満
中規模システム30名以上~100名未満
大規模システム100名以上

この定義のままでは一人で開発していると永遠に大規模にならないので、人月の最小単位を1か月として100人月と定義をすり替えます。100人月のアプリを一人で開発した場合は8年と4か月程度かかる計算になります。8年という期間は現実的ではないので、一人が1か月に書くことができるコード行数を考えてみます。

使用する言語にもよると思われますが、JavaやC#等の高級言語を使用した場合は1か月におよそ1000~2000行程度のコードを作成できるといわれている様です。

以上から
100人 × 2000行 = 200000(20万行)
となり、20万行をこえると大規模アプリと言えなくもないかもしれません。(実際に100人も必要なプロジェクトが1か月で終わるとは思えませんが…)

Visual Studio Codeエディタ用のプラグインに「VSCode Counter」というものがあります。これは指定フォルダ以下に含まれている色々なソースコードを集計してくれます。実際にやって見たところ以下の様な結果になりました。

ソースコード行数の画像

これにはテストケースや開発環境が自動で生成したコードも含まれていますので、それらのコードを考慮すると何とか20万行をこえている感じでしょうか。また、アプリの規模が大きくなると一般的に保守性も低下しますので、Visual Studioでコードメトリックス(保守容易性指数)といわれる指標も測定してみました。(一部画像をぼかしてあります。)

保守容易性の画像

保守容易性指数は0~100まであり、100に近いほうが良いとされています。すべて緑になっていますが、これは20以下になるまで色が変わらないので保守しやすいかどうかは、実際にコードを見てみないとわかりません。色が変わっている、特に赤(指数が0~9)になっている場合は、他の人がメンテナンスするのはほぼ不可能に近い状態になっているので、早急なリファクタリングが必要です。60以上あればなんとか保守できるレベルの様です。

余談ですが、これらのアプリはすべてVisual Basic (VB.NET) で書かれています。C#という選択もありますが、お客様がご自身でメンテナンスされたいというご要望であったため、VB.NETを選択しました。

この様なアプリを複数制作しましたので、合わせ技で大規模ということでご容赦ください。

Node.js

次の記事

Web Developer Bootcamp