
SEとして必要最低限の知識をつけたい!

本記事では、システム開発で必要になる知識をまとめて紹介するよ〜!ざっくりイメージを掴んでください。
本記事ではSEとして知っておきべき基本的なプログラミング言語その他の技術を中心に基礎知識を紹介していきます。
本記事は1つのシステムの構成の全体像を掴むこと目的としています。
そのため、各章で詳しく専門的な説明はしていません。
専門的な知識が知りたい方は、参考記事も貼ってますのでそちらを参考にしてください。
ざっくりとこの全体像は上図になります。
それでは各構成を説明していきます。
プログラミング言語
プログラミング言語とはなんでしょうか?
簡単に言えば、機械(PC)が理解できる言葉と言い換えることができます。
プログラミング言語と聞くと難しく考えがちですが、私たちが英語を扱うことと変わりありません。プログラミング言語にも、単語があり、文法があるのでプログラミング言語のルールを覚えるだけです。
ではプログラミング言語にはどのような種類があるのでしょうか?
今主流になっているプログラミング言語は以下の通りです。
- アセンブラ言語
- C
- C++
- C#
- COBOL
- CSS
- CSS3
- FORTRAN
- Go
- HTML
- HTML5
- Java
- JavaScript
- jQuery
- JSP
- Kotlin
- MATLAB
- ObjectiveC
- Swift
- Perl
- PHP
- PL/SQL
- Python
- Ruby
- R
- Scala
- SQL
- VBA
- VBScript
- VB.NET
- Visual Basic
- XML

かなりたくさんの種類があるなぁ…
プログラミング言語の良し悪しの基準を簡単に説明すると以下の3つです。
- バグが少ない
- 可読性が高い
- 拡張性が高い
詳しい内容が知りたい方は 質の良いプログラムとは? をご参照ください。
それでは各プログラミング言語の紹介をしていきます。
アセンブラ言語
プログミング言語には大きく分けて『低水準言語』と『高水準言語』に分けられます。
低水準言語とは、コンピュータが理解できるプログラミング言語になります。
高水準言語とは、人間が理解できるプログラミング言語になります。
アセンブラ言語は低水準言語にあたります。知識のない人が見てもなんのこっちゃわかりません。
※本記事で紹介しているアセンブラ以外のプログラミング言語は高水準言語にあたります。
アセンブラ言語はマシン語と1対1に対応する言語になります。
アセンブラ | 機械語 |
PUSHBP | 55 |
MOV BP, SP | 8B EC |
SUB SP, 4 | 83 EC 04 |
このような命令文がアセンブラになります。参考:日経XTECH
1対1で対応しているため、PCの処理の流れがしっかりと理解できます。
C
プログラミング言語の中でも最も知名度の高い言語のひとつがC言語です。

大学のプログラミングの授業で最初に学んだのがC言語でした。
C言語がどのようなプログラミング言語かというと、
C言語は、人間にとって記述内容の解釈が容易な、いわゆる高級言語の一種である。しかし、他の現代的なプログラミング言語に比べると抽象度は低く、むしろC言語はアセンブリ言語に近いともいえる。コンパイルの結果として生成されたオブジェクトコードはコンパクトで、処理性能がよいとされる。引用:BINARY
C言語のプログラミング例は以下のようなものになります。
/* * C言語のサンプルプログラム - Webkaru * - 入力した2つの数値を交換 - */ #include int main(void) { /* 変数の宣言 */ int a, b, tmp; /* 2つの数値を入力 */ printf("a = "); scanf("%d", &a); printf("b = "); scanf("%d", &b); /* 数値の入れ替え */ tmp = b; b = a; a = tmp; printf("===== After =====\n"); printf("a = %d\n", a); printf("b = %d\n", b); return 0; }
参照:C言語入門
C言語で作れるものには、WEBアプリ、スマホアプリ、ロボットなどを制御するような組み込みアプリなどが様々です。
しかし、現状IT業界でC言語を使っているのは組み込み系の業務がほとんどです。
C++
C++とは、先ほど紹介したC言語を拡張したオブジェクト指向プログラミング言語です。
オブジェクト指向というのがとても重要な考え方になってきますので解説すると、
オブジェクト(モノ)同士を組み合わせてプログラムを動かす考え方です。
どういうこと?と思われるかもしれませんが、レゴブロックで例えると分かりやすいかと思います。
『車』『バイク』『船』を作る場合を考えてみましょう。
オブジェクト指向=レゴブロック
非オブジェクト指向=プラモデル
と考えてみてください。
レゴブロックで『車』『バイク』『船』を作る場合、「レゴブロック100ピースセット」みたいな商品1つを購入すれば、『車』『バイク』『船』を作ることができます。1つ1つのパーツがあってそれを組み合わせることで1つの作品を作るという感じです。
プラモデルで『車』『バイク』『船』を作る場合、それぞれ3つのプラモデルを購入しなければいけません。
オブジェクト指向のイメージをざっくりと説明するとこんな感じです。
C++のプログラミング例は以下になります。
#include using namespace std; int main() { int a; int b; a = 5; b = -3; int c; c = a + b; cout << "c=" << c << endl; }
C#
C#は先ほど説明したC++と同じオブジェクト指向プログラミング言語です。
特に、ゲームアプリケーションの開発に特化したプログラミング言語です。
C#のプログラミング例は以下になります。
using System; class Program { static void Main(string[] args) { // 初めてC#を学ぶ方々にご挨拶 Console.WriteLine("皆様、はじめまして"); } }
参考:未確認飛行 C
COBOL
COBOLとは、事務処理に最適な言語として開発され、国際的な標準化がおこなわれているプログラミング言語でもあります。
COBOLのソースコードは英語に近いので、比較的読みやすいことも特徴の1つです。
COBOLのプログラミング例は以下の通りです。
IDENTIFICATION DIVISION. PROGRAM-ID. SUBTRACT_SAMPLE01. ENVIRONMENT DIVISION. CONFIGURATION SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 WORK-AREA. 03 WORK-GROUP-1. 05 WORK-NUM PIC 9(3). 05 WORK-SUM PIC 9(3). PROCEDURE DIVISION. MAIN SECTION. *>値を設定する MOVE 100 TO WORK-NUM. MOVE 300 TO WORK-SUM. *>WORK-SUMに減算した結果を保存する SUBTRACT WORK-NUM FROM WORK-SUM. *>結果を出力する DISPLAY "結果: "WORK-SUM. STOP RUN.
COBOLは金融業界で使われることが多く、業務内容は『事務処理』『計算処理』『帳票』関係になります。
HTML
HTMLとはWebページを作成するための最も基本的はマークアップ言語の1つです。
マークアップとは、印をつけていくという意味ですが、HTMLを使用してタイトルや見出し、本文がどの箇所にあたるのかを指定していきます。
<>で囲まれたタグを使用して全体を設計していきます。
HTMLとCSSはセットで使用していきます。
特徴としては、文書の内容定義はHTMLで行い、デザインの定義は後ほど説明するCSSで作成する点です。
当ブログのHTMLのプログラムは以下になります。
マークアップ言語にはHTML以外にも以下の言語があります。
- SGML
- XML
- XHTML
HTML5
HTML5はHTMLの現在(2020/5)の最新バージョン(HTML5.2)です。
HTML4との違いは、以下の通りです。
- 新しい要素や属性が追加される
- HTML 4以前では使えた要素や属性のいくつかが廃止される
- より明確に文書構造を示すことができる
- フォームの入力補助やチェック機能などが充実している
- 動画や音声データをHTMLからシンプルに扱える
- 様々なAPIが追加される
現在、私たちが目にしているWebページのほとんどはHTML5になります。
CSS
CSS(Cascading Style Sheets、カスケーディング・スタイル・シート)とは、Webページのスタイルを指定するための言語です。
Webページのデザインを決めるためのプログラミング言語です。つまり、私たちがネットで目にしているWebページはCSSを使用しています。
CSSは先ほど説明したHTMLとセットで使用します。
当ブログのCSSを一部抜粋します。
.content-in { display: flex; justify-content: space-between; flex-wrap: wrap; } .main { width: 860px; padding: 20px 29px; border: 1px solid transparent; border-radius: 4px; position: relative; }
FORTRAN
FORTRANとは
FORTRANは科学技術計算に向いた手続き型プログラミング言語であり、その長い歴史の間に開発された非常に多くの数学関数やサブルーチンを数値解析ソフトウェアの形で持っている。また、並列計算の並列性を明示的に書くことができ最適化が行いやすく、そのため他の言語より高速である等の理由から、数値予報および気候モデル、構造力学における有限要素法、計算流体力学、計算物理学、計算機化学、計量経済学、動物と植物の品種改良などの大規模な計算を行う分野において、スーパーコンピュータで使われている。引用:wikipedia
FORTRANのプログラミング例は以下になります。
! メインルーチンは、program [プログラム名] という行で始まり、endで終わる program example ! 中身は二つのブロック(宣言部と実行部)から成る ! 宣言部:記号の定義、実行部:本体 ! implicit noneは、バグを発見しやすくするために常に記述 ! 書かないと、宣言していない変数が現れてもコンパイラがエラーを検出しないことがある implicit none ! 型宣言 real x, y integer i ! 定数は、parameter文で値を宣言しておく integer, parameter::IMAX=5 ! do 変数 = 初期値, 終値(, 増分) ~ enddo do i=1, IMAX !-- print文でカンマ後の文字列、変数をディスプレイに表示する print *, 'x=?' !-- read文で、キーボオードからの入力待ちとなる(xに入力値が代入される) read *, x !-- call文で、サブルーチンが呼び出されてyにf(x)の値が代入される call func(x, y) print *, 'f(x)=', y !-- if(~ endif)文で条件を記述 if (y > 0) then print *, 'f(x) is positive' elseif (y == 0) then print *, 'f(x) is equal to zero' else print *, 'f(x) is negative' endif enddo ! stop文でプログラムは実行を停止する stop end ! サブルーチンではreturn文で処理を終えてメインルーチンに戻る(注:stop文ではない) subroutine func(t, ft) implicit none real t, ft ft= t**2 - 1 return end
参照:Qiita
Go
Googleによって開発されたプログラミング言語です。
2009年にリリースされたので比較的新しいプログラミング言語になります。
Go言語の特徴は
- 実行速度が速い
- 並行処理に強い
- 拡張性が高い
- クロスプラットフォーム対応
- 消費リソースが少ない
- シンプルな言語構造
GOのプログラミング例は以下になります。
package main import "fmt" func main() { fmt.Println("hello world") }
参考:サンプルで学ぶGo言語
ソースコードを見て分かる通り、C言語やJavaの構文と似ているので比較的、学習しやすい言語かと思います。
Java
Javaは世界で最も使用されているプログラミング言語です。
Javaを使うメリットとしては以下のようなことが挙げられます。
- 処理速度が速い
- プラットフォームに依存しない
- オブジェクト指向である
Javaのプログラミング例は以下になります。
public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World!!"); } }
参考:エンジニアの入り口
JavaScript
Webサイトを表示するブラウザ上で動くプログラムで、JavaScriptを使用することで動的ページの作成が可能になります。
JavaScriptとJavaは全くの別物です。名前にJavaと入っているので紛らわしいですよね。
JavaScriptでできることといえば、主に動きのあるユーザーの画面を作るときに使われる。
例えばカーソルを当てるとメニューが開いたり、ボタンをクリックすると動き出すページには基本的にJavaScriptが使われている。
JavaScriptはHTMLの中に記述することもできるが、ほとんどは.jsファイルをHTMLが読み込む形でプログラムは実装されています。
function message() { document.getElementById("view_time").innerHTML = getNow(); } function getNow() { var now = new Date(); var year = now.getFullYear(); var mon = now.getMonth()+1; //1を足すこと var day = now.getDate(); var hour = now.getHours(); var min = now.getMinutes(); var sec = now.getSeconds(); //出力用 var s = year + "年" + mon + "月" + day + "日" + hour + "時" + min + "分" + sec + "秒"; return s; }
参照:Samurai Blog
jQuery
JavaScriptのライブラリがjQueryです。
ライブラリとは?
ITの分野では、ある特定の機能を持ったコンピュータプログラムを他のプログラムから呼び出して利用できるように部品化し、そのようなプログラム部品を複数集めて一つのファイルに収納したものをライブラリという。ライブラリ単体で単体で起動して実行することはできず、他の実行ファイルに連結されて利用される。引用:IT用語辞典
jQueryので実装できることは以下のようなものがあります。
- Webサイトを作成する
- Webアプリを開発する
Web系の業務を行う上でjQueryは必須技術と言えます。実際、70%のWebサイトでjQueryが使用されているという調査結果があります。
JSP
JSPは、サーブレットと同じくサーバ上で動作させるものです。
サーブレットはとは、Webサーバ上で動く、Javaで書かれたプログラムのことです。
JavaなのでHTML文書を作成する場合などとても不便でした。
そこで登場したのがJSPになります。
特徴としては、HMTLの中にJavaを埋め込むことができます。HTMLっぽいですがフロントエンドではなくバックエンドで動作します。
JSPのプログラミング例は以下になります。
<html> <head> <title>Hello, World!!</title> </head> <body> <% out.println(“<p>Hello,World!!</p>”); %> </body> </html>
参照:発注ラウンジ
Kotlin
Kotlinは最近に開発された言語で、Javaよりコード量が少なくて済むプログラミング言語です 。
Javaを簡潔にしたオブジェクト指向言語と言われ、Android開発かいわいで話題になっています。
特徴としては、以下の3つ。
- オブジェクト指向プログラミング言語
- Javaと相互利用ができる
- ヌルポを未然に防いでくれる
- Androidアプリ開発を公式がサポート
Kotlinのプログラミング例は以下になります。
fun main() { println("hello world") }

Javaと似ているので比較的学習ハードルが低い言語ですね。
ただ、新しい言語なだけにネットには情報は少ないです。
MATLAB
MATLABは、MathWorks社が開発している数値解析ソフトウェアで、その中で使う独自のプログラミング言語でもあります。
MATLABは以下の分野で使用されるプログラミング言語です。
- ディープラーニング
- AI
- 数値計算
- シミュレーション
- 信号処理
- グラフィックス
特徴は以下の通りです。
- 配列が基本データ型
- ベクトル、行列
- 対話式システム
MATLABのプログラミング例は以下になります。
function c = test1(a,b) c = a + b

プログラミング例を調べてみましたが、プログラミングというよりはツールの使い方を学ぶ感覚に近いですね。
ObjectiveC
C言語をベースにSmalltalk言語のオブジェクト指向を取り入れた言語が「Objective-C」
AppleのMac OS Xの公式開発言語として採用されたことで広く、認知されるようになりました。しかしそれでも知っている方はMac OS技術者かスティーブ・ジョブズファンぐらいのものです。
今からObjectiveCを学ぶ価値があるかどうかと言われると、あまりないように思えます。
理由としては、2014年に「Swift」が誕生しApple社もSwiftを推奨しているのでこれからのApple向けの開発はSwiftがスタンダードになっていくでしょう。
Objective-CはC言語をベースにオブジェクト指向を取りれているので『C++と同じようなものか』という疑問が出てきますが、それは全く異なる存在のようです。詳しくは Objective-Cとは? をご参照ください。
Objective-Cのプログラミング例は以下になります。
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSLog(@"Hello, world!\n"); printf("Hello, world!\n"); return 0; }
参考:livedoorBlog

Swift
先ほど説明したObjective-Cに代わる新たな言語として誕生したのがSwiftです。
RubyやPHPなど最新の設計思想を盛り込んでいて、スクリプト言語のように簡単にアプリを開発することができます。
Swiftの特徴は以下の通りです。
- 現代的なモダンプログラミング
- 迅速なパフォーマンス
- Objective-Cコードにも簡単に組み込むことできる
SwiftはApple社が推奨しているプログラミング言語ですので、Swiftを覚えておくだけでApple製品全ての開発に携わることができます。
将来性と安定性どちらも兼ね備えた覚えておくべきプログラミング言語だと言えます。
Swiftのプログラミング例は以下になります。
import UIKit class ViewController: UIViewController { override func viewDidLoad() { println("HelloWorld!") super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
参考:Qiita
Perl
Perlは、1987年に開発された歴史ある言語です。
昔のWebアプリケーションの開発といえば、Perl一択というほど使用されていた言語です。
今は、PHPに置き換えられつつあります。PHPについては後ほど説明します。
Perlのプログラミング例は以下になります。
print "Content-type: text; print "Hello World!\n";
参考:エンジニアの入り口
PHP
PHPは、1995年に開発された言語でHTMLに埋め込むことができるためWeb開発でよく使われているスプリクト言語です。
当初は、「Personal Home Page Tools」という名称で、個人の履歴書を公開する為の簡易ツールとして開発されました。その後、よりWebアプリケーションの開発に特化した言語と進化していきました。
理解しやすいという点から人気になり世の中のホームページの7割はPHPで作成されているという調査結果もあるほどです。
PHPのプログラミング例は以下になります。
<?php echo "Hello World"; ?>
参考:エンジニアの入り口
SQL
SQLはデータベースの定義や操作を行うことができるデータベース言語です。
SQLはプログラミング言語ではありません。
データベース言語とは
DBMSに求める処理を命令する制御言語で、宣言型言語(非手続き型言語)といいます。
主な命令は以下になります。
- CREATE:新しいデータベースやテーブルなどのオブジェクトを定義する
- SELECT:データベースを検索する
- INSERT:データを挿入する
- DELETE:データを削除する
- UPDATE:データを更新する
PL/SQL
PL/SQLとは
PL/SQLは米オラクルが開発した「SQL(Structured Query Language:非手続き型言語)」を“手続き型”言語として拡張したプログラミング言語です。Oracle Databaseにおいて、さまざまな手続き処理を行うために用います。引用:atmarkit

さっき説明したSQLをプログラミング言語化したものだと思ってくれたらいいよ。
特徴としては以下の4つです。
- パフォーマンスに優れている
- SQLとの親和性が高い
- 移植性に優れている
- プログラムをデータベースに格納して必要なときに呼び出せる
PL/SQLのプログラミング例は以下になります。
BEGIN FOR i IN 1..10 LOOP /* ループ処理の開始地点。「END LOOP」までの処理を10回繰り返す */ INSERT INTO test_tab VALUES(1); /* test_tab表に「1」を挿入 */ END LOOP; /* ループ処理の開始地点に戻る */ END;
参考:atmarkit
Python
Pythonとは1991年にオランダ人のグイド・ヴァンロッサムというプログラマーによって開発されたプログラミング言語です。
Pythonの特徴としては、分かりやすいということ。そのため、プログラミング初心者向けのプログラミング言語として優れています。
また、近年AI(人工知能)分野でPythonが使われていることもあり注目されています。
現在のプログラミング人気ランキングでは2位になっています。
出典:BizLearn
Pythonのプログラミング例は以下になります。
print("Hello World")
Mac OSには標準でPythonがインストールされているので、以上のソースを「.py」拡張子でファイル作成してターミナルで実行するだけです。

調べている中で、すごく分かりやすいし需要もあるので勉強しようと思いました。
Ruby
Rubyはまつもとひろゆき氏により開発されたオブジェクト指向スクリプト言語です。
RubyはWebサイトやWebの業務システムを作成することを得意としています。開発の際、Ruby on Railsというフレームワークを使うことができるので効率よく開発が可能です。
- アプリケーションサイト
- ショッピングサイト
- SNSサイト
上記を簡単に作成することができます。
プログラミング言語として共通する部分が多いものに先ほど説明したPythonがあります。違いは得意とする分野です。
RubyはWebサイトの開発を得意としていて、PythonはAI分野の開発を得意としています。
Rubyのプログラミング例は以下になります。
print "hello world!"
上記のソースコードを「.rb」拡張子でファイル作成して実行するだけです。
R
R言語は、1995年に開発されたプログラミング言語です。
データ解析・統計プログラミングとして開発されております。
機械学習といえばPythonが最も有名ですが、R言語も機械学習のプログラミング言語として有名です。
R言語とPythonどちらの方が学ぶ価値があるのか?という問題ですが、『習得の難易度』と『企業から求められているかどうか』という点からPythonの方が学ぶ価値が高いのかと私は考えています。
Scala
Scalaは2004年にリリースされたオブジェクト指向言語と関数型言語の特徴を統合したプログラミング言語です。
本記事では関数型言語というものを紹介するので一般的なJava(命令型)と比較して解説します。
プログラミングの違いとしては以下のようになります。
【Java(命令型)】
public int totalFoodsPrice(List itemList) { int totalPrice = 0; for (int i = 0; i < itemList.size(); i++) { Item item = itemList.get(i); if (Objects.equals(item.getCategory(), "Foods")) { totalPrice += item.getPrice(); } } return totalPrice; }
引用:TECHACADEMY
【Scala(関数型)】
def totalFoodsPrice(itemList: List[Item]): Int = itemList match { case Nil => 0 case Item("Foods", price) :: otherItems => price + totalFoodsPrice(otherItems) case _ :: otherItems => totalFoodsPrice(otherItems) }
引用:TECHACADEMY
関数型には、変数の初期化や代入といった命令文が存在しません。
状態をプログラミングの中で変化させていくことはプログラムの動作を分かりづらくさせたり、テストやデバックを困難にする原因となります。
特徴は以下の3つが挙げられます。
- JVM上で動作する
- 良いフレームワークがある
- 静的型付き言語である

注目度、メリットの多さから学ぶ価値は非常にあるプログラミング言語なのは分かりました。
しかし、オブジェクト指向と関数型、2つの理解が必要なので初心者が学ぶ言語としてはハードルが高いですね。
VBA
VBAとはMicrosoftが開発したプログラミング言語です。
使用用途しては、OfficeシリーズのExcelやWordでの作業の効率化を図ることができます。
実行環境であるVisual Basicの簡易版を用いてプログラムを作成します。
Excelなんかで、データ加工や、毎回同じ作業を行うことってありますよね?
そんな場面で繰り返しの処理をVBAでプログラミングして省略してしまおうということですね。
VBAのプログラミング例は以下になります。
Sub test1() Range(Cells(3, 2), Cells(2, 2).End(xlToRight).End(xlDown)).Select End Sub
引用:エクセルの神髄
VBScript
VBScriptとは、米マイクロソフト(Microsoft)社が同社のプログラミング言語Visual Basic(VB/ビジュアル・ベーシック)を元に開発したスクリプト言語。単体のプログラムファイルとして保存する場合の標準の拡張子は「.vbs」。引用:IT用語辞典
VBScriptはプログラミング言語ではなくスクリプト言語です。スクリプト言語はプログラミング言語を簡略化したものと考えてください。
初心者でもとっつきやすいですが、本格的なアプリケーションを作成するのは難しいです。
VBScriptのプログラミング例は以下になります。
Dim x x = "サンプル文字列" MsgBox x
引用:@IT
Visual Basic
Visual Basicとは、米マイクロソフト(Microsoft)社がBASIC言語を元に自社ソフトウェア製品向けに開発したプログラミング言語および言語処理系(開発・実行環境)。グラフィック表示やマウス操作を多用した独自の開発環境やシンプルな文法などで初心者が取っつきやすい言語と言われる。引用:IT用語辞典
Visual Basic は略してVBと言われていましたが、現在ではVisual BasicをバージョンアップさせたVB.NETのことを指します。後ほど説明します。
Visual Basicのプログラミング例は以下になります。
Dim X As Integer = 0 Dim Y As Integer = 1 If Y = 1 Then X = X + 10 ElseIF Y = 2 Then X = X + 20 Else X = X + 1 End If
引用:A-STAR
VB.NET
先ほど説明したVIsual BasicのバージョンアップしたものがVB.NET(VIsual Basic.NET)になります。
XML
XMLは、1998年にリリースされたマークアップ言語の一種です。HTMLと同じ種類のプログラミング言語になります。
特徴としては、主にデータのやり取りや管理を簡単にする目的があります。
XMLのプログラミング例は以下になります。
<?xml version="1.0" encoding="Shift_JIS" ?> <PAGE> <EMPLOYEES> <EMPLOYEE> <EMPNO>1</EMPNO> <ENAME>佐野力</ENAME> <JOB>President</JOB> <HIREDATE>1990-04-01</HIREDATE> <SAL>10000</SAL> <DEPTNO>10</DEPTNO> </EMPLOYEE> <EMPLOYEE> <EMPNO>50</EMPNO> <ENAME>高橋敦子</ENAME> <JOB>Director</JOB> <MGR>1</MGR> <HIREDATE>1991-04-01</HIREDATE> <SAL>6000</SAL> <DEPTNO>30</DEPTNO> </EMPLOYEE> <EMPLOYEE> <EMPNO>1401</EMPNO> <ENAME>小山尚彦</ENAME> <JOB>Analyst</JOB> <MGR>50</MGR> <HIREDATE>1999-09-01</HIREDATE> <SAL>3000</SAL> <DEPTNO>30</DEPTNO> </EMPLOYEE> </EMPLOYEES> </PAGE>
引用:@IT
プログラミングを学ぶなら
ざっくりとそれぞれのプログラミング言語がどのようなものかを紹介しましたが、イメージはつかめたかでしょうか?
プログラミングを習得する1番の近道は実践あるのみです。独学でも情報はネット上に山ほどあるので挑戦してみてください。
独学で挫折した人はプログラミングスクールもオススメです。プログラミングスクールも興味のかる方は 【無料で転職】プログラミングスクールおすすめ3社を比較 を読んでそれぞれのプログラミングスクールを比較して自分にあったスクールを選びましょう。
フレームワーク
フレームワークとは?
開発を行う際に、頻繁に必要とされる基礎的な機能をまとめて提供してくれるものです。
プログラミング言語とフレームワークの違いは、
プログラミング言語は、例えばコンピュータに「”おはようございます。”と表示しなさい」と、人間が命令するために使う文字や言葉と同じものです。日本語や英語など普段使用する言語に種類があるように、CやJavaなどコンピュータ言語もさまざまな種類があります。
対してフレームワークは、コンピュータ言語を使用して何か開発したいと考えたとき、その手助けをしてくれるツールの1つです。例えば、履歴書を作成するとき、市販されているような枠組みや記載項目が初めからあるものと、真っ白な紙に枠組みから書いていくのでは、作業量は全く違います。
フレームワークは「このように制作してください」と予めルール化されているので、利用することで開発するまでの作業量はグッと楽になります。引用:Samurai Blog

フレームワークって業務でも使い方だけ教えてもらって原理というか「なんぞや?」ってことまでは教えてくれないのでなかなか理解するのが難しいです。
フレームワークが開発を効率化するためのツールであることは理解できました。
そこで疑問になるのがライブラリとの違いってあるの?ということです。
ライブラリとの違いは、
フレームワークの場合には,アプリケーションの骨組みとなる部分が既にフレームワークの中に用意されています。骨組みとなる部分とは,アプリケーションをどのような役割のクラスを組み合わせて構成するか,といった設計作業のことです。つまり,フレームワークはアプリケーションの半完成品,テンプレートと言い換えられます。もっとも難しいアプリケーション設計上の決断が,フレームワーク開発者によってすでになされており,プログラマは単にそのひな型に肉付けをしていくだけになります。
一方のライブラリは,汎用的な機能を提供する再利用可能なクラス群です。数学関数を集めたライブラリ,プログラムの動作ログを記録するためのライブラリなど,どんなアプリケーションでも使われる機能が中心です。ライブラリをどういった順番で組み合わせて,どんなアプリケーションを構築するか,という設計上の判断はプログラマに委ねられています。
両者の違いは,プログラマが書いたユーザコードと再利用可能なコード(フレームワークやライブラリ)との間の関係の違いにはっきりと表れます。
引用:日経XTECH
主流なフレームワークは以下の通り。
- Struts/Struts2
- Symfony
- Apache Spark
- Apache Hadoop
- Spring
- intra-mart
- Turbine
それでは各フレームワークを紹介していきます。

フレームワークは概要を読んでも実際にどんな感じなのかイメージが掴みにくいです。実施に使ってみるのが近道かと思います。
Struts/Struts2
StrutsはMVCモデルを採用したフレームワークです。
一昔前は、最も使われていたフレームワークですが現在はあまり使われないフレームワークとなりました。
Symfony
SymfonyはWebアプリケーションの開発を最適化するために開発されたPHP上で動作するフレームワークです。
最初のバージョンは2005年にFabien Potencier (ファビアン・プゥトンシェ)によって公開されたました。
Apache Spark
Sparkはカリフォルニア大学バークレー校で2014年に開発されました。
Sparkはリアルタイム処理に対応可能でデータの格納場所を選択することもできます。
現在HadoopとSparkは共存関係にあり、「リアルタイムの高速処理が求められるデータはSparkで、メモリに乗り切る以上のサイズのデータを処理する場合はHadoopで」などと使い分けられています。引用:データの時間
Apache Hadoop
HadoopはDoug Cutting氏を中心として2006年に公開された分散処処理フレームワークです。
Web上のビックデータが増え続ける中で、サーバーの台数に比例して処理能力が高められるスケールアウトが可能なHadoopは拡張性と安定性が高いことが特徴です。
Spring
SpringはJavaのWebフレームワークです。
特徴としては、
- 変更に強い
- テストが簡単
- 拡張性が高い
- 保守性が高い
- 再利用性が高い
intra-mart
Intra-martは様々なJava業務コンポーネントとJ2EEフレームワークから構成されるフレームワークです。
Turbine
Turbineと同様のWebアプレケーションのフレームワークです。
Strutsがシンプルな構成なのに対し、Turbineはリッチな機能をもったフレームワークです。
統合開発環境(IDE)
「統合開発環境(Integrated Development Environment:略IDE)」とはプログラミングをする際に必要なソフトウェアを統合して、1つの画面で操作できるようにしたものです。
IDEで出来ることは以下の4つ
- コードを書くテキストエディタ
- プログラミング言語から機械語に変換するコンパイラ
- テストを支援してくれるデバッガ
- コードのバージョン管理
一昔前は、それぞれ別のソフトウェアを入手して別々で実行していたので非常に手間がかかっていたそうです。
主流なIDE、以下の4つを紹介していきます。
- Eclipse
- Xcode
- Android Studio
- Visual Studio
- Unity
それぞれ目的は開発効率の向上です。使い分けとしてはプログラミング言語やOSの違いによるところになります。
プロジェクトにあったIDEを使用しましょう。
Eclipse
統合開発環境の代表格と言える「Eclipse」は、多くの言語に対応できることが特徴です。もとはJavaの統合開発環境でしたが、プラグインを導入することで様々な言語で開発することが可能です。
日本語化することも勿論できますし、ユーザーが多いため使い方に関する情報が豊富なのも安心できるポイントです。
Xcode
iPhone、MacなどのApple製品のアプリを作成したいならXcodeの一択です。
Android Studio
Windows利用者で、C#やVBなどのMicrosoft系言語を学習、利用してみたいと考えているならMicrosoft社が開発した「Visual Studio」を使いましょう。
Visual Studio
androidアプリが作成したいなら「Android Studio」の一択です。
こちらはIntelliJ IDEAをベースに作られた、androidアプリ開発に特化したIDEです。
Unity
ゲームを作りたいならUnityがオススメです。
Unityは無料で使えるゲームエンジンです。
BI・データマイニング
BIとは?
そもそもBIとは、「Business Inteligence(ビジネス・インテリジェンス)」の略で、企業の各部署がそれぞれに蓄積している膨大なデータを、収集・蓄積・分析・加工し、経営戦略のための意志決定を支援することを指します。引用:BIトレンド
データマイニングとは?
データマイニング (Data mining)とは、大量のデータを統計学や人工知能などの分析手法を駆使して、「知識」を見出すための技術です。データマイニングという言葉の示す通り、情報(データ)から有益なものを採掘(マイニング)することができます。
データマイニングを行うことで得ることのできる知識とはどんなものなのでしょうか。情報は分類すると以下の4つに分けられます。
- データ(Data):整理されていない数値
- 情報(Information):「データ」を整理・カテゴライズしたもの
- 知識(Knowledge):「情報」から得られる傾向・知見
- 知恵(Wisdom):「知識」を利用して人が判断する力
それではBI・データマイニングに関するソフトウェアを紹介していきます。
SAS
SASとは、データ解析や統計分析、解析結果の可視化などを行うことができるパッケージソフトの一つ。米SASインスティテュート(SAS Institute)社が開発・販売している製品
参考:IT用語辞典
SPSS
SPSSソフトウェアは、IBM社が製造・販売している統計解析ソフトウェアです。
現在は、以下の3つのソフトウェアから構成されています。参照:SMART ANALYTICS
- 統計解析ソフトウェアのSPSS Statistics
- 共分散構造分析ソフトウェアのSPSS Amos
- データマイニングソフトウェアのSPSS Modeler
Business Objects
BusinessObjectsとは、独SAP社が開発・販売しているBIツール(Business Intelligence:ビジネスインテリジェンス)の製品ブランド名。参照:IT用語辞典
開発ツール
開発を行う際に必要になる、バグ管理、ソースコードのバージョン管理を行うソフトウェアを紹介していきます。
大規模プロジェクトになると必ず必要になるので、チェックしておきましょう。
- Redmine
- Git
- GitHub
- SVN
Redmine
Redmineはバグの管理を行うバグトラッキングシステム(BTS)です。
BTSツールの中ではかなり有名なRedmine。
オープンソースなので無料で使うこともでき、プロジェクトの概念、スケジュール管理もできるので大規模プロジェクトでは必須のツールになります。
Git
Gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムです。
Gitを使わない場合、編集を加えるファイルをコピーして、日付などを名前に入れてローカルで管理していたと思います。
そうすると、ファイルは多くなり管理が難しいといった問題がありました。
また、チーム単位で開発する場合、デグレが発生してしまう恐れもありました。
そこで登場したのがGitです。
Gitでは以下のことができます。
- ファイルの変更履歴が管理できる
- 過去のファイルに戻せる
- テキストファイル以外にもExcelなど、なんでもて管理できる
- チームで共有できる

チームでのリソース管理はGitを使うと便利だと覚えておきましょう。
GitHub
GitHubは先ほど説明したGitの仕組みを利用して、世界中の人々が自分の作品を保存、公開することができるWebサービスです。

Gitはバージョン管理システム!
GitHubはWebサービス!
と覚えておきましょう。
GitHubに自分の書いたソースコードを公開することのメリットは、他の優れた技術者が改善点を修正したり、意見してくれたりすることで品質が向上する点にあります。
また、自分のポートフォリオにもなるのでエンジニアの方は利用している方が多いです。
SVN
バージョン管理システムにはGit以外にもSVNがあります。
SVNとは、プログラムのソースコードなどの変更履歴を記録・追跡するための集中型バージョン管理システムです。
SVNをGitと比較して優れている点は以下の2つ
- 仕組みがシンプル
- リビジョン番号が分かりやすい
集中型なので1つのリポジトリでのバージョン管理になります。そのため仕組みがシンプルになり扱いやすく、リビジョン番号も明確になります。
しかし、SVNとGitでは近年、Gitの方が人気が高くなっています。
参照:tracpath
上の画像は日本のSubversion(青)とGit(赤)の人気度(Google検索数)を示すグラフです。
RDBMS
データベース(DB) について学んでいきましょう。※DBサーバー
RDBMSとはなんでしょうか?
RDBMSとは、リレーショナルデータベース(RDB)を管理するための専用のソフトウェアです。参照:IT用語辞典
特徴としては、行(row)と列(column)の表形式で複雑なデータや大規模データを管理します。
表形式で管理することで以下のようなメリットがあります。
- データの整合性を維持しやすい。
- 簡単にデータを参照・更新できるSQLという専門用語がある。
- 信頼性のある更新処理を実現するトランザクション機能がある。
- 障害発生時でも格納したデータが容易に失われない。
- セキュリティ・チューニングなど多くの周辺機能がある。
このようなメリットがあるため、RDBMSでデータ管理することが一般的となっています。
それでは主流なRDBMSを紹介していきます。
RDBMS | 会社 | 開発年 |
ASE | SPA | 1996年 |
DB2 | IBM | 1983年 |
Firebird | オープンソース | 2000年 |
HiRDB | HITACHI | 1994年 |
MySQL | オープンソース | 1998年 |
Oracle DB | Oracle | 1979年 |
PostgreSQL | オープンソース | 1989年 |
SQL Server | Microsoft | 1989年 |
Symfoware | 富士通 | 1995年 |
Webサーバー・アプリケーションサーバー
Webサーバーとアプリケーションサーバー(APサーバー)について学んでいきましょう。
Webサーバーとは?
クライアントからのリクエストに応じて静的コンテンツやAPサーバーに対して動的コンテンツを要求しクライアントに返ってきた結果を見せることが役割となります。引用:Thinkit
つまり、クライアントに対して処理結果を表示するサーバーです。
アプリケーションサーバー(APサーバー)とは?
Webサーバから受けたリクエストをもとにJavaやPHPなどで作成されたアプリケーションを実行して動的コンテンツを生成します。また、“必要であれば”DBサーバへリクエストを行い、返ってきたデータを加工して「動的コンテンツ」に埋め込みます。引用:Thinkit
つまり、WebサーバーとDBサーバーとの橋渡し役となるサーバです。
主なWebサーバーは以下になります。
- Apache
- IIS
- ZOPE
主なAPサーバーは以下になります。
- JBOSS
- Tomcat
- Oracle Application Server
- WebLogic
- WebSphere Application Server
まとめ
なんとなく開発する上で必要になる技術の概要はつかめたかでしょうか?
私も今後、経験を積んで行ったら具体的な経験や技術的補足を追加していきます。
本記事の内容は以上になります。
コメント