シニアエンジニアまたは若手エンジニアが、プログラム開発を進めるにあたり、
最初に携わると良いのが、何でしょうか?
最初に携わるのは?
旧来通りのウォーターフォール型の開発手法でしたら、先ずは、下記から進めると思います。
- 要件定義
- 基本設計
- 詳細設計
しかし、対応する案件に寄っては、要件定義や基本設計は、お客様(エンドユーザー)や
元請企業(SIベンダー)が対応されるケースが多いと思います。
お客様(エンドユーザー)から、直接、請け負うソフト開発会社の場合は、
開発チームのベテランエンジニアが携わる事も多いと思います。
では、シニアエンジニアまたは若手エンジニアが、要件定義や基本設計から
携わる事が出来るかと言うと、中々、難しいかもしれません。
プログラム開発
プログラマーの熱意や気持ちからすれば、お客様(エンドユーザー)から一番に
目に触れるUI(ユーザーインターフェース)の設計・開発に携わる方が、
アピールが出来るし、評価され易いと考えるのは、至極当然です。
また、旧来通りのウォーターフォール型の開発手法ではなく、現在、主流の
アジャイル型の開発手法だと、お客様(エンドユーザー)からのニーズや
レビュー後の変更を受け入れながら、短期間で開発を進める為、
要件定義や基本設計を省くケースも有ります。
フェーズの最終段階で、それまで対応したプログラムソースと一緒に
要件定義書や基本設計書、詳細設計書を作成して納品する事も有ります。
データを知ること
ウォーターフォール型であっても、アジャイル型の開発手法であっても、
データを扱う事が多いのが現状です。
開発手法からでなく、アプリケーションやシステムの観点から言えば、
チケット予約アプリや家計管理アプリ、スケジュール管理アプリ、
販売管理システム、各種ゲームを始め、多くのアプリやシステムが
データとは切り離せないのが、現状です。
データを扱う上で、データ蓄積しておく箱:データベース(DB)を知り、
設計・実装・操作が出来れば、様々なアプリやシステムの設計でも
開発でも、柔軟に対応が出来ます。
データベース(DB)とは?
シニアエンジニアには、業務系(COBOL、VB)や制御系(C/C++、アセンブラ)でも、
実勢に開発案件で、IBM社のDB2、Oracle社のOracleDB、Microsoft社のSQL Serverなど、
熱かった事があるかもしれません。
また、若手エンジニアには、先輩エンジニアやOJT、各種情報処理技術者試験の学習で、
DBという名前を聞いた事が有るかもしれません。
ここで、DBに関して簡単におさらいしますね。
データベース(DB)の種類
データベースの種類は、大きく2つに分かれます。
- SQL データベース(リレーショナル)
- NoSQL データベース(非リレーショナル)
SQLデータベース(リレーショナル)
特徴:データの定義と操作に、構造化クエリ言語(SQL)を使用します。
※SQLは、Structured Query Languageの略です。
構造:テーブルベースの構造です。
データの関係をテーブルで表していて、 Excel のスプレッドシートのようなものです。
→ テーブルの行(横)は、ひとつのレコードを表し、テーブルの列(縦)は、
ひとつのカラムのグループを表しています。
レコード例:チケットの予約をした場合
予約番号:2531 – 便名:ANA903 – 搭乗日:2025/7/18 – 出発時間:10:30 – 経路:伊丹~羽田 – 予約シート:38D
のようなデータです。
カラム例:チケットの場合
便名:ANA903、JAL271、PEACH329…
製品:Oracle、MySQL、Microsoft SQL Server、PostgreSQL、IBM DB2
NoSQL データベース(非リレーショナル)
特徴:構造化されていないデータを扱います。
構造:ドキュメントベース、キー・バリューペア、グラフデータベース、または
ワイドカラムストアのいずれかの構造です。
- ドキュメントベース:従来の SQL データベースに最も似ていますが、スキーマと正規化はありません。 行と列はなく、なんらかのデータをまとめたコレクションを格納するだけです。
- キー・バリューペア:キーと値のペアを格納します。 値は自由であり、数値はもちろん、サブオブジェクトを含む複雑なオブジェクトも格納できます。
- グラフデータベース:用途が限定されたニッチなタイプで、Facebook や LinkedIn などのソーシャル Web サイトのように、友人の知り合いを提示する用途です。すべての人物がノードとして表現され、人物間の関係性がエッジとして表現されます。 友人の友人を探すには、適当なノードを始点として、エッジを “たどる” だけです。
- ワイドカラムストア:キー・バリューペアにやや似ていますが、キーが保持するのは単一の値ではなく、列へのアクセスです。値には数十億の列を含めることができ、動的に変更可能です。
製品:
- ドキュメントベース:MongoDB、DynamoDB、Couchbase、Firebase、Cosmos DB
- キー・バリューペア:Redis、Memcached、Cosmos DB
- グラフデータベース:Neo4j、ArangoDB、Cosmos DB
- ワイドカラムストア:Cassandra、HBase、Bigtable、Cosmos DB
まとめ
今回は、シニアエンジニアまたは若手エンジニアが、プログラム開発を進めるにあたり、
先ずは、データを扱う上で、データ蓄積しておく箱:データベース(DB)を知って、
興味を持って頂くのが主旨でした。
後日、実際のプログラム開発業務で採用される
- SQL データベース(リレーショナル)
における、正規化の概念、テーブル設計の記事を投稿します。
コメント