LABシステムエンジニア【インターン日記】システム開発における要件定義って何?toomura2014.12.22システムエンジニアこんにちは!ダイソンです。ンチャー企業を選ぶまでに至った理由に、引き続き、第二弾は要件定義です!要件定義とは、システム開発をする上で最初に行う不可欠な工程です。必要な機能の洗い出しシステムの仕様決め要件定義まとめ要件定義とは?何かを作るにあたって何故それを作るのか、これまでと比べてどれだけ便利になるのかということを定義することが必要ですよね!それを定義してからお客さんとの打ち合せなどをして掘り下げていって、どんな機能があったらよいか、またどんな技術やミドルウェアなどが必要なのかということをまとめていくのが要件定義です。後にわかりますがこの作業はこれからデータベース設計やコーディングを行っていく中でこの工程が必要不可欠となっています。具体例がないとわかりにくいかと思うので、今回作った端末管理システムにおける要件定義を具体例として挙げたいと思います。問題点の発見sonicmoovの社内では、スマホでもきちんと画面のレイアウトが整っているかどうかを確認するための端末(スマホやタブレット端末)が多数用意されています。今までこれらの社内端末を借りる時には、端末を自分のデスクへ持っていく前に端末棚の横のノートに自分の名前と端末名、借りた日時を書き、逆に返却するときには借りるときに書いたノートの記述を横線で消すという作業をしていました。6ノートに名前、借りる端末名、借りた日時を記入12345678<strong>借りる作業</strong>1端末棚まで行く2目的の端末があるか探す3「あった!」-&gt;6へ「ない。́Д`)~ハァーここからまず、現状の問題点を整理していきます。3面倒くさがってノートに書かない人が出てきたりすると、その端末が行方不明となり、誰が持っているのかを聞きに回るタスクが発生する1234<strong>■問題点の整理</strong>1端末を探す時にまず3Fと2Fにある端末棚を見に行き、その目的の端末があるかどうかを探す手間がある2端末が借りられている場合、誰が借りているかといったことがノートの記述をいちいち追わないとわからない3面倒くさがってノートに書かない人が出てきたりすると、その端末が行方不明となり、誰が持っているのかを聞きに回るタスクが発生するはい。̄Д)=3必要な機能の洗い出し上記のような問題点を打ち合わせで持ち寄ってどうすれば便利かということを話し合うのがまず要件定義をする上での前提となります。3上に挙げた機能が端末棚へ行かなくてもわかるようにする1234<strong>■必要な機能</strong>1どの端末が今どこにあるのか(3Fか2Fの端末棚)がひと目でわかる機能2その端末が借りられているのかといった情報をひと目でわかる機能3上に挙げた機能が端末棚へ行かなくてもわかるようにするわりとシンプルになりました(≧▽≦)ゞこれらの必要な機能から具体的な機能を検討し、文書に落としこんでいきます。必要な機能の1と2は端末を検索できれば解決できます。必要な機能の3はノートを用いずブラウザなどから端末一覧を見れれば自分のデスクから端末を探せるため解決できますよね。2「誰も借りてない!」-&gt;社員番号を入力し借りるボタンを押す。「◯◯さんが借りてる。3メールで交渉し、その人に端末を棚へ返してもらう。4端末棚へ行って端末ゲット!123456<strong>■借りる作業</strong>1自分のデスクからブラウザで借りたい端末を検索2「誰も借りてない!」-&gt;社員番号を入力し借りるボタンを押す。-&gt;4へ「◯◯さんが借りてる。」-&gt;その人にメールを飛ばすなりする3メールで交渉し、その人に端末を棚へ返してもらう。゚;)!?これだ!!!仕様を詳しく述べると端末を借りるときに社員番号を入力させ借りるボタンを押します。システムではその社員番号からユーザーの名前をとり、端末一覧画面に反映させることで誰がどの端末を借りているのかがわかります。端末名、スペック、ユーザー名、借りているか借りてないかなどで検索できるようにすると楽に端末を探すことができます。返すときは返すボタンを押して楽々返却できます(めんどくさくない!!)。これで仕様が決まりました。要件定義の最後はそのシステムを作るためにどんな技術、ミドルウェアが必要かまで行います。今回の端末管理システムは環境構築から自社で行うので、OS,Webサーバ、MySQL,PHPといったミドルウェアが必要であり、PHPでベタ書きするよりもフレームワークを用いたほうが可読性が上がるなど効率良く開発できるとのことから導入することにしました。要件定義まとめ端末管理サイトの要件定義のように問題を探し、そこから必要な機能を洗いだして、最後にその必要な機能を具体化して仕様を決める、といったプロセスを踏んで行くということで何か必要なシステムを作った時に、「この機能あればなぁ」というようなシステム上やはり必要であった機能を作っていなかったという抜けを減らすことができます。良いシステムを作るには良い要件定義が必要ってことです!!要件定義という行程は授業などではなかなかしないと思うので実務で得られた良い経験でした。次回は環境構築について述べていきたいと思います。公式XWeb制作・アプリ開発に関する、UI/UX情報、エンジニア向け情報、イラストテクニックをお届けしています。