コラム

ITエンジニア基礎用語集 プロジェクト編

ITエンジニアの業界では特有の用語が飛び交います。今回は、プロジェクトに携わる上で登場する用語を中心にご紹介していきます。※企業や現場により固有名詞の若干の相違があります。予めご了承ください。

ウォーターフォール開発とスクラム開発

プロジェクトに採用する開発手法です。他にも色々な手法が存在しますが、昨今はこのどちらかを採用している現場が多いです。どちらの手法を採用しているかは、各現場により異なるので、打ち合わせの際に確認しましょう。

ウォーターフォール開発

システム開発を各工程に分解して段階を追って進めていく開発手法です。原則として前工程が終わらないと次工程に進みません。水が上流から下流に流れ、反対には戻らないことに例えられウォーターフォールと呼ばれています。

スクラム開発

スクラムはアジャイル開発手法の1つで、反復的に開発のサイクルを実行する手法です。ウォーターフォールが長期的で後戻りをしない手法であることに対し、スクラムはタイミングごとに作業を見直し、軌道修正を繰り返しながら製品を完成に近づけていく開発手法です。

ウォーターフォール開発に関連する用語

[ウォーターフォール開発]要件定義→外部設計→内部設計→プログラム設計→製造→単体試験→結合試験→総合試験 バグ曲線

要件定義

ウォーターフォールの最初の工程です。まず、RFP要求仕様書と呼ばれるものが、開発の発注者から提示されます。これを最初の資料として、発注側と開発側で、開発全体に対する大枠を決めていきます。作るもの、目的、納期、進め方、優先順位などが決定されます。

開発側はプロジェクトマネージャーと呼ばれる開発の取りまとめ役がこの工程を行うことが多いです。ここで決定されたことは要件定義書というドキュメントにまとめられ、次の工程に渡されます。

外部設計

基本設計とも呼ばれます。要件定義書を元に、開発の発注者からも見える部分の設計を行います。具体的には、機能設計、画面設計、データベース設計などが行われます。これにより、機能設計書、画面定義書、データベース仕様書などの成果物が出来上がり、次の工程に渡されます。

内部設計

システム内部の設計を行います。発注者から見えない部分の設計を行うため、外部設計に対して内部設計と呼ばれます。外部設計で決められた機能を、内部でどのようなモジュール単位に分割するか、データのフローはどうするか、などを決めます。この後は製造に入ることが多いですが、より細かくプログラム分割を行ったり、プログラム内を一度日本語で書き起こしたりする詳細設計を行う場合もあります。

製造

実装、コーディングなどとも呼ばれます。内部設計で決められた設計書に従って、プログラムを記述します。SE、プログラマーと言う単語からイメージされるのが主にこの工程で、システム開発と言えばずっとプログラムを書いていると思いがちですが、実はプロジェクト全体の中では、あまり時間的に大きな割合ではありません。

単体試験

試験はテストとも呼ばれ、関数単位、処理単位など、プログラムの小さな固まりが仕様どおり動作するかを確認します。ここでは、内部の分岐を全て通すホワイトボックスと呼ばれる試験手法が採用されることが多いです。関数など単体で動かないプログラムに対しては、ドライバーやスタブなどを別途用意して試験を行います。最近では、色々な言語でユニットテストツールと呼ばれる“試験を行うためのツール”が充実してきていて、試験のためのプログラムを記述し、そのプログラムを実行することにより試験を実行します。

結合試験

プログラムをいくつか組み合わせ、試験を行います。単体試験では問題なかったプログラムも他と組み合わせることにより、仕様と違った動きをする場合があるので、そのような不具合を発見します。結合試験からはプログラムの内部の処理を全部通すのではなく、予め決められたインタフェースの仕様に従って、それらの入出力が正しいかを確認するブラックボックスと言われる試験の手法が使われることが多いです。これらの試験の手法に関しては、現場によりケースバイケースです。

総合試験

システム全体を組み上げて、要件定義で決められた仕様が満たされているかを試験します。実際のシステム運用を想定したシナリオ試験などもここで行われます。この試験を通過すれば、システムとして稼働させることができます。

バグ曲線

バグ曲線は、試験項目の消化率に対する、バグの発生件数をグラフに表したものです。この曲線が収束していくことにより、バグが正常に消化されていくことを表します。

システムを作っていると、各工程においてバグは必ず発生します。発注者は「バグ」という言葉に過剰に反応してしまいがちですが、逆に試験工程でバグが発生しないシステムは、本番稼働が開始されてから致命的な不具合が発生する恐れがあります。各試験工程においてバグが見つかることは、本番で安定的に稼働させるために大事なことになります。

スクラム開発に関する用語

チーム

ある目的を持ったプロダクトを開発するために集まった人の集合です。メンバーは発注者、開発者、デザイナー、運用者など各役割の人たちが1つのチームとして集められます。チーム全員が「プロダクトリリース」という1つの目的に向かって、協力し、自分たちの力で問題解決を行なっていくことがスクラムを成功させるために重要なこととされています。

プロダクトオーナー

スクラム開発における製品の総責任者です。製品のビジネス面に問題が無いことを保証する役目があります。また、スクラム開発はバックログと呼ばれる課題を消化していくことで進みますが、そのバックログに対して優先順位付けを行うのもオーナーの仕事になります。

スクラムマスター

スクラムが正しく適用されるよう、ファシリテーションを行う役割の人です。プロジェクトマネージャーがこの役割を行うことが多いですが、ウォーターフォールのプロジェクトマネージャーとは意味合いが違うため、年長者や経験値が多い人がこの役割をするとは限りません。

スプリント

スプリントは、開発、まとめ、レビューで構成される1工程のことです。スクラム開発はスプリントと呼ばれる小さな開発の工程を繰り返しプロダクトの精度を高めていく開発です。1つのスプリント期間は2週間から1ヶ月ほどです。スプリント期間はプロジェクトの最も初期で決められ、プロジェクト終了までその期間が変更されることはありません。

バックログ

スクラム開発での課題、開発したい項目などをバックログという場所にまとめておきます。このバックログにプロダクトオーナーが優先順位を付け、スプリントプランニングと呼ばれる会議で開発する項目を決定します。

デイリースクラム

デイリースクラムはチームが毎日決まった時間に集まり行う、15分から30分ほどの短いミーティングです。スクラム開発で重要なことは、チーム内の密なコミュニケーションです。そのために、デイリースクラムを行い、お互いの進捗や困り事などを共有します。朝に行うと朝会、夕方に行うと夕会などと呼ばれています。

プロジェクトの進行に使われるツールの名称

ガントチャート

主にウォーターフォール型の開発で使われる、工程管理のための表です。棒グラフの1種で、プロジェクトの各段階を作業単位まで分解した横棒を工程順に置いていき、進捗状況を記入します。各工程には、作業開始予定、作業終了予定、担当者、依存する前後工程が記入されることが多いです。次の工程に移る前に終わらせておかなければいけない工程を、視覚的に認識することができます。

バックログ管理ツール

主にスクラム開発で使われる、バックログを登録しておくためのツールです。JIRAが有名ですが、最近はこのあと登場するソースコード管理ツールの中に内包されていることも多いです。課題を1つずつ登録することができ、それぞれ担当者と対応予定のスプリントを記入しておきます。また、最近はカンバン方式の運用を行えるようになっているツールも多く、視覚的にどの課題に対応しているのかを素早く確認することができます。

ソースコード管理ツール

開発者が作ったプログラムを管理しておくためのツールです。SubversionやGitなどの種類があります。サーバーサイドアプリケーションとして用意され、開発者はチェックイン、チェックアウト、コミット、プッシュ、フェッチなどの操作でチームのソースコードを管理します。複数人で開発をする場合、ソースコードの競合やデグレーションが発生することがよくあるため、それらを防止するための仕組みが用意されています。

開発に使われるツールの名称

特に利用される代表的なツールの名称をご紹介します。

IDE

プログラムを記述するためのエディタとそれらのソースコードを管理するための機能がついたツールで、統合開発環境とも呼ばれます。最近ではPluginで機能追加をすることができたり、Gitリポジトリを操作するための機能がついているツールも存在します。

エディタ

プログラムを記述するためのツールです。WindowsやMacに標準でインストールされているメモ帳とは違い、プログラムの命令ごとに色分けして表示してくれるスニペット機能や、関数名を途中まで打つと保管してくれる機能がついているものが多いです。IDEに比べて動作が軽快なことが特徴です。

コンパイラ

プログラムを機械語に変換するためのツールです。C/C++やJavaなどコンパイルが必要な言語を選択した際に利用します。
対象的に、プログラム言語を逐次解釈しながら実行するプログラムのことをインタプリタと呼びます。

端末クライアント

元々は通信ネットワークの末端に接続されて、ネットワークに対して通信を行う機器のことを指していましたが、開発の現場においては各個人のパソコンやスマートフォンなどを指し示すことも多いです。

仮想環境

端末のホストOSの中に仮想的にインストールされた別OSのことです。例えば、WindowsOSでLinux向けのアプリケーションを開発したいときなどに利用します。VirtualBox、Paralles、VMWareなどが有名な仮想環境構築のためのソフトウェアです。

その他開発の現場で登場する用語について

データベース

データを保存しておくためのソフトウェアです。表組みで保存しておく仕組みのリレーショナルデータベース、Key-Value型で登録しておくNoSQLデータベースなどがあります。

バッチ

UIが存在しない処理の単位です。定期的に実行されたり、何かのきっかけで実行されるようなものがあります。

開発環境

主に開発者向けに用意されたシステムの実行環境のことを指します。
開発者が動作確認を行うために利用されます。

ステージング環境

発注者にシステムの動作を確認してもらうための環境です。
開発環境で構築したシステムを定期的にステージング環境に反映し、動作が仕様どおりになっているかを確認してもらいます。

本番環境

リリース環境とも呼ばれます。ステージング環境で確認され、最終出荷前の試験をクリアしたシステムを配置する環境です。

デプロイ

システムを利用可能な状態にすることです。開発環境からステージング環境にデプロイ、ステージング環境から本番環境にデプロイ、などという使い方をします。

今回は、基礎的なものを中心にご紹介しました。実際の現場では、これら以外にも数多くの用語や、その現場・会社特有の用語も多く登場します。しかし、本日ご紹介した用語の基礎知識があれば、それら応用的な用語が登場しても対応できるようになるでしょう。ぜひこれからの現場で活用してみてください。

  • mixiチェック