技術

スキルマップ(システムの構成と基本用語)

これから SE になろうとプログラミングを学習する方はどのプログラムを学習するか、技術選定の際に、プログラミング言語や関連するソフトウェアの多さに驚くことでしょう。別の記事で、プロジェクトの工程中でプログラミングの占める割合が意外と低いことを述べていますが、プログラミングを行う際に、実際プログラミング言語を扱っている割合も 100%ではありません。

例えばシンプルな Web システムの構成は以下のようになります。

上記では Laravel と Vue で実装されたプログラムを AWS の EC2 上にインストールした Nginx にデプロイして、データは MySQL で操作しています。実際の動作としては、

  • ①Chrome からシステムの URL をリクエストする
  • ②インターネット経由で EC2 へアクセスし、Nginx が窓口となり PHP などのプログラムを起動し処理をリクエストする
  • ③プログラムが処理を実行し、必要に応じデータベースへアクセスする
  • ④処理した結果(文字列や HTML ファイル)をリクエスト元に返却する

となります。そして以下はこれを開発する担当者の環境例となります。

開発の流れとして、

  • ①GitHub からリポジトリをクローンし、以降資産を管理する
  • ②VSCode を使ってコーディングを行う
  • ③Chrome で動作を確認する
  • ④必要に応じてデータベースを構築し、プログラムからアクセスする

ということになります。

————————————————–

何を言ってるかわかりますか?僕にはわかりません。…いや、まあ、わからないということもないのですが、横文字の連打で辟易しませんか?わかります、慣れもあるのですが、やはりはじめは丸暗記せざるを得ないのは事実です。そこで各用語に分類をつけて覚えることを推奨します。

人によって考え方はありますが、僕が考える技術的な分類はざっとこんな感じです。

  • OS:Linux、Windows、MacOS、iOS など。
  • プログラム言語:C、C++、Java、PHP、Python、Ruby、HTML、JavaScript  など。
  • フレームワーク:Laravel(PHP)、Django(Python)、React(JavaScript)など。
  • データベース:MySQL、PostgreSQL、SQLServer、Oracle など。
  • Web サーバ:Apache、Nginx など。
  • クラウド:AWS、GCP、Azure など。
  • ブラウザ:Chrome、Safari、Edge など。

各分類の詳細はどこかで説明するとして、このように汎化させたものを上記の図に当てはめると以下のようになります。

はじめの画像に出てきた技術的な用語と比較してこちらでは幾分か種類が削減されていることがわかります。これだけだとあまり効果は少ないかもしれませんが、ほとんどのシステムが上記分類、特に OS、プログラム言語・フレームワーク、データベース、Web サーバ、ブラウザから選定された技術をひとつずつ(プログラム言語の場合は複数あり)使っているに過ぎません。そして同じ分類であれば多少の機能は違えど、用途はすべて同じです。

OS はソフトウェアを制御する、プログラム言語・フレームワークはプログラムを実装し動作する、データベースはデータを保存する、Web サーバはリクエストを受付けプログラムを動作させる、ブラウザは HTTP 通信を行い HTML を表示する、といった用途は同じです。各分類の中で利用される技術がシステムやプロジェクトによって変わるということです。

この分類をおさえておくだけでも、見知らぬ名前が出た際にどの分類か整理するだけでも理解が早くなるでしょう。例えば、Nginx 上でプログラムを動作させていたひとが別のプロジェクトに異動になって、そこでは Apache を使っていたとしても、Apache が Nginx と同じ Web サーバであることを知っておけば、あとは起動や設定などの使い方を学ぶだけで充分扱うことができる、ということです。

分類についてざっくり知ったところで Web システム開発を志す方がこれから何かを勉強しようと思うなら、上記のうち、プログラム言語、フレームワーク、データベースからピックアップして学習すると実務に応用しやすくなります。具体的には、

  • プログラム言語:HTML、JavaScript、PHP、Python
  • フレームワーク:Laravel(PHP)、Django(Python)
  • データベース:MySQL

あたりがニーズも多いのでオススメです。尚、プログラム言語を 3つあげていますが、HTML と JavaScript は基本的に避けれないと思ってください。まず間違いなく、どこでも使います。プログラム初心者はまずこの 2つから学習をはじめましょう。また、言語の習得の際には GitHub など Git ベースのサービスを利用することを推奨します。使ってないところの方が寧ろ少ないですからね。

また、すでに開発業務をされている方で、新しい技術を習得しようとしている方は、業務で必要なものを優先的に習得するのでよいと思います。但し、現在のプロジェクトの在籍期間が長く、プログラム言語についてすでに理解が深まっているような場合、上記分類のうち理解度が低いもの、特にデータベースについては 1種類詳しくなっておくと何かとつぶしが利くというか、どこでも重宝されます。

意外とここらへんをちゃんと理解している人って少ないんですよねぇ。

さて最後に、よく使われている技術についてリストアップしたものを以下に列記しておきます。重要度には需要が高いものの順にランク付け[1]S:必須、A+:分類中ひとつの習得がほぼ必須、A:需要が高い或いは今後需要が高まる、B:携わる業務によっては必須しているので今後の参照にしてみてください。

大分類 中分類 小分類 重要度 備考
OS Windows S or A+ Mac かいずれ必須
OS Linux S
OS MacOS S or A+ Windows かいずれ必須
OS iOS B アプリケーションエンジニアには必須
OS Android B アプリケーションエンジニアには必須
マークアップ言語 HTML S CSS とあわせて必須
プログラム言語 JavaScript S
プログラム言語 C B 組込みエンジニアには必須
プログラム言語 C++ B 組込みエンジニアには必須
プログラム言語 Java A
プログラム言語 PHP A+
プログラム言語 Python A+ AI エンジニアには必須
プログラム言語 Ruby A+
プログラム言語 Swift B アプリケーションエンジニアには必須
プログラム言語 Kotlin B アプリケーションエンジニアには必須
プログラム言語 Flutter B クロスプラットフォーム開発
フレームワーク Java Spring Framework A
フレームワーク PHP Laravel A
フレームワーク Python Django A
フレームワーク JavaScript React A
フレームワーク JavaScript Vue.js A
フレームワーク JavaScript Angular B
フレームワーク JavaScript jQuery A+ 厳密にはライブラリ。
Web サーバ Nginx A+
Web サーバ Apache A+
データベース RDB MySQL A+ AWS が推奨
データベース RDB PostgreSQL A
データベース RDB SQLServer A
データベース NoSQL MongoDB B
データベース NoSQL Redis B
クラウドサービス AWS A
クラウドサービス GCP A
クラウドサービス Azure A
ミドルウェア 構成管理ツール GitHub A+
ミドルウェア 構成管理ツール GitLab A+
ミドルウェア CI ツール Jenkins A+
ミドルウェア CI ツール Circle CI A
ミドルウェア 仮想化ツール Virtual Box A
ミドルウェア 仮想化ツール Hyper-V A
ミドルウェア 仮想化ツール Docker A DevOps では必須
開発ツール IDE VSCode A+
開発ツール IDE Xcode B iOS アプリでは必須
開発ツール IDE Atom B デザイナやフロント向き
開発ツール IDE InteliJ など JetBrain 社製各種 A

 

脚注

脚注
1 S:必須、A+:分類中ひとつの習得がほぼ必須、A:需要が高い或いは今後需要が高まる、B:携わる業務によっては必須
ABOUT ME
yo
フリーランス、システムエンジニア。

営業・販売、肉体労働などを経て 2007年から IT 業界に従事。文系出身かつ未経験者のため立上りに大変な時間と労力を要する。

新規システム開発を提案から設計・実装・保守・運用まですべての工程を担当する(実装は主にサーバサイド)。その傍ら、他業種・他職種の経験や上記立上りの経験を活かし、教育や業務標準化など、組織の育成に勤む。

私立大学現役合格、現役中退。基本情報・応用情報技術者取得、高度試験はモチベーション確保という観点から見送り。普通免許ゴールド保持者。

趣味は犬。