システム開発上、必要となる情報は多数あります。
その中でも大切な概要記事です。
下記に目を通して頂くと、システムの理解がより深まります。
よろしければご覧ください。
システムとプログラムについて
システムとプログラムは、正確には同じ意味ではありません。
下記でシステムとプログラムの違いを説明いたします。
システム
特定の目的を達成するための仕組みや装置です。
コンピュータでは、ハードウェアとソフトウェアを含めた全体の仕組みを指します。
具体例
・生徒の名簿管理システム
・写真編集システム
・ネットワークシステム
プログラム
システムを動かすための機能です。
システムの一部でもあり、コンピュータを動かす命令文を指します。
具体例: 生徒の名簿管理システムの場合
・生徒の情報登録、変更、削除、表示プログラム
・一斉メール連絡プログラム
・成績管理プログラム
おさらい
システム→ある目的を達成するための仕組み
プログラム→システムの一部。コンピュータを動かす命令文
プログラミングとコーディング
プログラムを作成する行為を、「プログラミング」、もしくは「コーディング」といいます。
どちらも似ていますが、正確には意味が違います。
プログラミング
プログラムを作成する作業全般を指します。
ソースコードの作成(コーディング)、設計を行います。
具体例: 生徒の名簿管理システムの場合
・プログラムの設計書作成
・プログラムのコードを書く(コーディング)
コーディング
ソースコードの作成行為だけを指します。
プログラミングの一部分の作業で、プログラム言語を用いてコーディングします。
具体例: 生徒の名簿管理システムの場合
・プログラムのコードを書く
おさらい
・プログラミング→設計書、ソースコード作成などプログラム作成の作業全般
・コーディング→プログラミングの一部。ソースコードを作成する
プログラム言語とは
簡単にいうと、人間とコンピュータが意思疎通するための言語です。
私達人間は、「氏名」や「住所」、「年齢」などを人の情報として理解できます。
しかし、コンピュータには伝わりません。
コンピュータが理解できるのは「0」と「1」といった機械語だけです。
機械語とは、コンピュータが理解・実行できる命令の言語です。
とはいえ、記号や数字だけでは人間には理解できないよ……
お互い意思疎通する必要がありますね
そこで、プログラミング言語の出番です
図で表すと、下記の動きをしています
データと情報の違い
・データ→コンピュータが認識できる、記号や数字の羅列 例) 0100 1101
・情報→人間が認識できる、意味を持ったモノ 例) 「山田 太郎」、「12才」、「栃木県」
プログラミング言語がたくさんあるのは何故か
言語によって得意、不得意があるからです。
開発したいシステムによって、プログラム言語を選んだり、組み合わせて使います。
特徴の例
言語の名称 | 特徴 | メリット | デメリット |
---|---|---|---|
Java | オブジェクト指向コンパイラ型 | OS非依存 | 技術が難しい |
Python | AIに強いインタプリタ型 | コードが簡潔実行が速い | 実行速度が遅い |
HTML | Webサイト作成向け | Webサイトの画面が作成できる | 汎用システム作成向けではない |
プログラムを動かすまで
人間が書いたプログラムは、一旦機械語に翻訳されてから実行されます。
翻訳方法には2種類あります。
それが、インタプリタとコンパイラです。
コンパイラ型→プログラムを全て機械語に変換してから、実行する
インタプリタ型→プログラムを1行ずつ機械語に変換しながら、実行する
プログラムの動き方
プログラムはスタート地点から始まり、上から下へコードを実行していきます。
つまり、実行にも順番が決定されているのです。
そのスタート地点を、大半の言語ではメインメソッドと呼びます。
クラス
簡単にいうと、データとメソッドをまとめて扱える様にしたモノです。
オブジェクト指向における設計図ともいわれています。
- オブジェクト指向とは?
-
プログラムを作るための考え方です。
ざっくりいうと、処理をパーツ化してそのバーツを集めて1つのプログラムを作成する概念です。
詳細はオブジェクト指向の記事で説明します。
メソッド
簡単にいうと、クラスの中にあるパーツです。
基本的にメソッドの中に、実行したい機能(コード)を書いていきます。
Javaでの具体例: 生徒の名簿管理システムの場合
目的: 「本田 たかし」をコンソールのメッセージで表示したい
プログラムの例(Java)
/** 生徒の名簿管理メインクラス **/
public class Students_List_Main{
// メインメソッド(スタート地点)
public static void main(String[] args) {
// 「本田 たかし」と表示
System.out.println( “本田 たかし” ) ;
}
}
プログラム中の記号、「//」はコメントといいます。
コードを書いた人が、他の人のため、後の自分のために説明する手段です。
プログラム言語では認識されません。
プログラムを解説すると、概要ではなく「プログラミングの詳細」になるため別記事にしています。
ソフトウェア品質
ソフトウェアの品質を守るための、6つの定義があります。
外部品質(画面の品質)、内部品質(プログラムの品質)を評価するために役立ちます。
ソフトウェア品質の6定義
- 機能性→システムの目的に対する機能が動作しているか
- 信頼性→故障が起こりにくいか
- 使用性→画面や、操作感に問題はないか
- 効率性→機能の処理速度は想定内か
- 保守性→後々、修正や保守を行うことは簡単か
- 移植性→システムを別の環境に移した場合、問題ないか
システム構築について
システムにはたくさんのクラスがあります。
基礎概念を身に着けてから、システムを構築すれば便利です。
編集、参照、削除したいシステムが全部適当な名前、場所で保存されていたらすぐに理解できるでしょうか?
何のクラスがどこにあるか見やすくないと後々不便ですよね。
そのためにもシステム構築、クラスやメソッドの作成を行う前に大事な概念をご説明します。
CRUD
どのシステムも、基本はCRUDで構成されています。
DBや生徒の名簿管理システムも、根本的には同じ機能です。
Create: 作成。新規データの追加
Read: 参照。既存データの表示、閲覧などの参照
Update: 更新。既存データの内容を変更
Delete: 削除。既存データを削除
MVC
Webシステムでよく使用される、システム開発を行うための設計モデルです。
機能を分類化することで、保守性や可読性などを高める効果があります。
Model: システムの本機能
View: 画面
Controller: 画面と機能の橋渡し。システムの制御部分
MVCの詳細、イラスト解説は下記をご覧ください。
SOLID
オブジェクト指向で用いられる、5つの原則の頭文字です。
クラスを作成するときのお決まりです。
内容は少々難しいので、最初は流し見程度で大丈夫です。
ざっくりいうとシステム開発を行うときは、各機能を独立させる、分類するというルールです。
S 単一責任の原則: 各クラスはそれぞれ1つだけの役割を持つ
正式名称: Single-responsibility principle
O 開放閉鎖の原則: 新機能を追加する場合は、今までのコードを変更しない。新しいコードを追加する
正式名称: Open/Closed principle
L リコスフの置換原則: 『親クラスのインスタンス』を『子クラスのインスタンス』で置き換えても、問題なく動く構造にする
正式名称: Liskov substitution principle
I インターフェース分離の原則: インターフェースは各機能で分離させる。不要なメソッドに依存させない
正式名称: Interface segregation principle
D 依存性逆転の原則: プログラムの核部分を他機能に依存させない
正式名称: dependency inversion principle
システムの開発は基本4つの機能で構成されているんだな
追加、参照、変更、削除ですね
あとは、クラスは役割ごとに分けるんだね
はい。上記がわかれば十分です
最後に
違うプログラミング言語でも、類似の処理をします。
基礎的な部分を理解すれば、他の言語も楽に取得できます。
複数の言語を学びたい方は、1つのプログラミング言語を取得してから新しく挑戦することを推奨します。
忘れてはいけないのが、プログラムは後に修正や追加を行います。
それも、十人十色の開発者が関わるケースが大半です。
自分だけではなく、他の人も理解できる説明や仕様をおすすめします。
だからこそ最初からクラスの役割を分けて見やすい、修正や追加をしやすいプログラミングを目指しましょう。
コメント