最近、プログラミングの勉強し始めたのだが、専門用語が多くて全然話の内容が理解できない。
最低限知っておいたほうがいいプログラミング用語を頭に入れておきたい。
上記のお悩みを解決します。
■本記事の内容
本記事で以下の内容をお伝えします。
- 知っておくといいプログラミング用語(大きく4つに分けて解説)
- プログラミング用語を学ぶコツ
■本記事の信頼性
今も現役のシステムエンジニアとして仕事をしています。
プログラミング初心者にとっては、たくさん専門用語が出てくると理解するのが相当大変だと思います。しかし、これらの用語の意味が理解できれば、仕事での会話や調べごとなどの効率があがります。
10年以上、この業界で仕事している私がよく会話にでてくる用語だったり、この用語を知らない相手だと説明に苦労するだろうなと思うプログラミング用語をまとめてみました。
大きく以下の4つの分類でまとめてみました。全部見ると大変かもしれないのでまず興味のある分野からでも見てもらえたらと思います。
- IT分野の基礎知識編
- プログラミング編
- WEBシステム開発編
- 仕事編
量が多くていきなり全部覚えるのは難しいかもしれません。
しかし、今は完璧に暗記しなくてもいいです。忘れたらまた調べればいいのです。
はじめにさらっと一読してみて頭の片隅に入れておくくらいの気持ちでいいです。
いつかその単語が出てきたときに昔その用語このページで見たなって思ってもらえればOKです。
またこのページに戻って確認すればよいだけなので。
プログラミング用語①:IT分野の基礎知識編
プログラミングの用語の前にIT分野の基礎的な用語を先に押さえておくほうがいいです。
よく耳にするものもあるかもしれませんが、どういったものか理解しておきましょう。
ハードウェア
ハードとだけ呼ぶこともあります。
実際の機械本体のことをハードウェアといいます。
ゲームでもハードとソフトみたいに分かれているのと同じで本体のことを指します。
ソフトウェア
こちらも省略してソフトと呼ぶことがあります。
上記、ハードでも説明しましたが、ゲームでいうソフトみたいなものでハードウェアがないとソフトウェアは動きません。パソコンの世界も同じです。
私たちプログラマーが作っているのはこのソフトウェアが該当します。
他にもアプリとかアプリケーションとも呼んだりします。
デスクトップPCやノートPCのことをハードウェアを指し、WordやExcelなどのPCの中で動いているのがソフトウェアになります。
ミドルウェア
OSとソフトウェアの間で動作するソフトウェアのことを指します。
あまり聞き覚えのない言葉だと思います。ゲームで例えたかったのですが、該当するものが思い浮かばないのが残念です。
今後、システム開発していく上でミドルウェアは用語として登場してきます。
例をあげるとWEBサーバやデータベースサーバのシステムのことを指します。
よくあるものですとApacheやTomcatなどが有名です。データベースだとMySQLやPostgreSQLなどが該当します。
ネットワーク
コンピュータ同士がつながる線というか網みたいなもので、電話でいうと電話線です。
今ではwifiなどが普及し無線で通信ができるようになりました。
ネットワークに属することでデータを送信したり取得できるようになります。
ネットワークにはローカルエリアネットワーク(LAN)とワイドエリアネットワーク(WAN)が存在します。
個人ではあまり意識することはないですが、会社だと社内にローカルネットワークが存在したりします。
ざっくり家の中がローカルネットワークで家の外をワイドエリアネットワークと思って頂ければいいでしょう。
インターネット
世界中とつながるネットワークになります。
先ほどお話したネットワークの全世界版だと思って頂ければいいかと思います。
インターネットのおかげで今皆さん見られるこのページなど、いろいろな情報を取得出来たりもしくは登録したりすることができます。
OS
オペレーティングシステムの略称です。オーエスと呼びます。
例をあげるWindowsやMacOSがこれにあたります。
スマホだとAndroidやiPhoneだとiOSのことを指します。
はじめにパソコンの電源を付けるとこのOSと呼ばれるシステムが起動します。
パソコンをいろいろ管理してくれるシステム程度で思って頂ければいいと思います。
メモリ
パソコン購入する際にメモリを目にしたことはあるのではないでしょうか。
人で例えると一時的に記憶できる脳みその容量だと思って頂ければいいかと思います。
このメモリが多いとたくさんの作業が来てもスムーズにパソコンが動作します。
逆に少ないとフリーズしたり重くなったりします。
たくさん作業がきて頭がパニックになるみたいな感じです。
CPU
人でいう脳みその部分になります。計算速度やパソコン自体の性能に大きく関わってきます。
CPUの値でよく表されるのがコア数とクロック数があります。
コア数は脳みその数で、クロック数は脳の回転の速さだと思って頂ければいいです。
どちらも高いほうが高性能になります。
オンプレミス
最近ではクラウドが流行りですが、このクラウドと対になるものとしてオンプレミスがあります。
省略してオンプレとも呼ばれます。
オンプレミスを簡単に説明すると自身でサーバ機器を購入してすべて自身でサーバを構築していく方式のことを指します。
クラウド
クラウドは、オンプレとは違い自身でサーバ機器を購入しなくてもいいです。
サーバとしてのサービスをクラウド業者(AWSなど)が提供してくれるので、使いたいものを使いたい時に使うことができます。
簡単に説明すると本来ならハードやネットワークなど、サーバ構築する上で必ず必要になってくる部分をあらかじめやってくれているイメージです。
プログラミング用語②:プログラミング編
プログラミングをしていく中でよく出てくる用語をまとめてみました。
ソースコード
プログラミングで出来上がったプログラムのことを指します。
ソースと呼ぶこともあります。またはコードとも呼ばれることもあります。
ロジック
プログラミングの処理内容のことを指します。
このロジックで実装したほうがいいといった感じに使います。
エディタ
一般的にテキストエディタと呼ばれるものをエディタと呼びます。
Windowsに元から入っているメモ帳みたいなもので、いろいろ機能が追加されている使いやすいメモ帳のようなものだと思って頂ければいいかと思います。
開発によってはこのテキストエディタでプログラミングをすることもあります。
有名どころだとサクラエディタや秀丸エディタなどがあります。
ビルド
プログラミングで作成したソースコードをコンピュータが実行できる機械語に変換することや配布するための専用ファイルを生成することを指します。
厳密に言うとコンパイルとリンクの一連の流れのことをビルドといいます。
コンパイルが作成した各種ソースコードを機械語に変換すること、各種変換したものを一つにまとめることをリンクと言います。
ビルドを行うと実行ファイルが出来上がります。よく目にするものだとexeファイルが実行ファイルにあたります。
デプロイ
簡単に言うとシステムのリリースと同じ意味合いです。
ビルドで作成した実行ファイルをサーバに上げてみんな使える状態にする作業のことをデプロイといいます。
バグ・不具合
プログラムの誤りや欠陥のことをバグまたは不具合と呼びます。
作成したら終わりではなく、いかにこのバグと言われるものを取り除いて品質を上げることが重要になってきます。
デバッグ
デバッグはバグの原因を調査し取り除く作業のことをいいます。
統合開発環境(IDE)
プログラミング開発で必要になるテキストエディタやビルドやデバッグなど一式揃った環境のことを統合開発環境といいます。
先ほどのテキストエディタにいろいろ開発するために必要になる機能が付与されたものだと思って頂ければいいかと思います。
Javaだとeclipseが有名です。
フレームワーク
あらかじめ必要になりそうな処理や部品を一式用意してくれている骨組みのことを指します。
フレームワークを使用することで生産性の向上やある一定の品質も担保することができます。
有名どころだとjavaの場合はSpring、javascriptであればAngularやReactなどがあります。
変数
読み書きできる記憶領域のことを指します。
数学でxとかyとか使って学生の頃計算していたかと思いますが、それと似たような感じです。
値を出し入れできる箱のようなイメージを持っていただけたらいいです。
定数
変数と似ていますが、変数とは違い定数は最初に設定した値から変更できません。
関数
プログラミングの処理のかたまりのようなものだと思って頂ければいいかと思います
ファンクションと呼んだりもします。
他でも利用できるように処理を分けたりします。分けることによって複数同じことをしている個所を何度も書かなくて済みます。
コメント
ソースコードの内容を理解しやすくするように補足を書くことができます。
基本的にプログラミングはプログラミング言語で記述していきますが、冒頭にある文字を記述することで注意書きのような形で記載することができます。日本語でも入力できます。
コメントのコードはプログラミング言語によって違いますが、だいたいスラッシュ2つ(//)のことが多いです。
部品
他のソースコードでも同じ処理をしたい場合にみんなが使用できる関数みたいなイメージです。
例えば日付のチェック処理など数字チェック処理などです。
共通部品と言われます。
プログラミング用語③:WEBシステム開発編
システム開発といってもたくさんありますが、その中でも案件が豊富なWEBシステム開発の用語についてまとめました。
サーバ
WEBシステムはクライアントサーバモデルといって、データなどを管理しているサーバとブラウザなどでデータを表示するクライアントといった形で役割が分かれています。
サーバはクライアントからの要求を受けてデータを保存したり、データを取得したり処理します。
クライアント
今皆さんが使われているパソコンやスマホがクライアントにあたります。
ブラウザなどで画面表示を主に行っている部分です。
それらの画面でボタン押したりすることで、入力したデータをサーバへ送信したり、またはサーバからデータの取得を要求します。
よくクライアントPCと呼んだりもします。
HTTP
URLのところにhttpがついているかと思いますがこれのことです。
通信プロトコルの一種で、いわゆる通信する上での決まり事の一つだと思って頂ければいいです。
基本的にクライアントとサーバ間はHTTPプロトコルで通信することがほとんどです。
例えるとはがきで送るか宅急便で送るかみたいな感じで、はがきで送る場合は切手を貼るなどのルールがあるかと思います。
これらは郵便局が指定したルールに従うことになるかと思いますが、これらのルールの総称だと思って頂ければいいです。はがきプロトコル(切手がいる、あれ先がいるなどのルール)みたいな感じです。
SSL
Secure Sockets Layerの略でデータ通信の暗号化の方式です。
よくhttpsというのを目にするかと思いますが、このsの部分がSSLしてますよっていう意味です。
最近ではSSLはほぼ必須になっています。ブラウザなどでもSSLなしの通信の場合、保護されていない通信ですといった感じに警告が上がってきます。
例えるとSSLなしのhttpははがきで送るイメージ(中身が見えてしまう)で、SSLありのhttpsは鍵付きの封筒で送るイメージ(中身が見えない)です。
データベース
データを格納しているところぐらいのイメージでデータベース知って頂けたらと思います。
略してDB(デービー)と呼んだりもします。
このデータベースのシステムを利用することにより、データの検索や蓄積が容易になります。
データはテーブルという単位で種類を表し、テーブルの中にレコードという単位でデータを格納します。
Excelで例えると分かりやすいので、Excelファイル自体がデータベースだとした場合、シートがテーブルで行がレコードになります。データベースも表形式のような形でデータを保持しています。
SQL
データベースからデータを取得したり登録したりするときに使用する問い合わせの言語のことをSQLといいます。
書き方は色々ありますが、SELECT・INSERT・UPDATE・DELETEといった形でプログラミングと似た文法があり、それらを利用することによってデータベースの操作を行うことが可能です。
コミット
ここでのコミットはデータベースとしての位置づけでお話します。
簡単に言うと「データの保存」することだと思って頂ければいいですが、上記SQLを利用してデータの更新を行った場合、基本的には仮保存状態になります。
この仮保存状態を確定して保存することをコミットといいます。
なぜ、こういうことをしているかというとデータ更新後に前の状態に戻したい場合があるからです。
例えば、銀行振込のシステムがあったとした場合、AさんがBさんへ1万円の振り込み処理をするとします。
ざっくりとしたデータの流れは以下の通りです。
①Aさんの口座から1万円減算
②Bさんの口座に1万円加算
もし②の処理でエラーが発生して、②の処理が正常に行われなかったとした場合、この状態で終わってしまうとAさんの口座から1万円引かれただけの状態になってしまいます。最終的には①の処理を無かったことにしないといけません。
これらの整合性を担保するための機能になります。この仮保存期間のことをトランザクションと呼びます。
ロールバック
コミットとは反対で仮保存状態を無かったことにすることをロールバックといいます。
元に戻すことを指します。
先ほど上記の「②Bさんの口座に1万円加算」の処理でエラーになった場合、「①Aさんの口座から1万円減算」の処理は無かったことにしないとつじつまが合わなくなります。
これらをもとに戻す処理でロールバックを使用するイメージです。
プログラミング用語④:仕事編
今までは技術よりの用語でしたが実際に仕事していく上での基本的な用語まとめています。
V字モデル
システム開発の一連の流れを表したものです。
ほとんどのシステム開発はこの流れに沿って作業が進んでいきます。
以下のような図で表されることが多いです。
左半分を上流工程、右半分を下流工程といいます。
要件定義
顧客よりどういったシステムを作りたいか、どういった作業をシステム化したかをヒアリングして、システム化する部分を具体的に決める工程になります。
機能要件と非機能要件と多く2つあり、機能要件は上記で書いたようなシステムとしてどういった機能を持たせるべきかを決めていきます。
非機能要件は、機能とは違いセキュリティや性能などの定義を指します。後は、障害が発生した場合の復旧時間だったり、そもそもの耐久性も決めたりもします。
少しややこしいかもしれませんが、システムの機能に関係しない部分も決める作業があるとだけ覚えて頂けたらと思います。
基本設計
要件定義で決めた内容に従って、システムの基本的な部分の設計のことを指します。
外部設計とも呼ばれたりします。
例えば、システムでどういったデータを管理するのかや、画面のイメージはどういったものなのかなどです。
上記を行うことでデータベース設計書や画面設計書など出来上がっていきます。
企業によって基本設計で何を設計するかは変わってきますが、だいたい似たような設計をしています。
詳細設計
基本設計で設計した内容に従って、実際にプログラミングを行うための設計になります。
内部設計とも呼ばれます。
プログラマー向けの設計書だと思って頂ければいいです。
具体的にどういったロジックでコーディングするかを記載していきます。
内容は企業によってバラバラだったりします。
文章で書かれていたり、もしくはフロー図で書かれたりもします。
しかし、本質的なところはどれも同じだと思います。
製造(コーディング)
実際のプログラミング作業のことを指します。
詳細設計書をもとにコードを書いていく作業です。
単体試験
詳細設計で決めた内容通りプログラムが動作しているか確認する作業のことを指します。
コーディングした内容がちゃんと仕様通りかどうかのテストになります。
基本的には、詳細設計書をもとに試験表を作成し実施します。いわゆるチェックリストの作成です。
このチェックリストのことをPCL(Program CheckList)と呼ぶこともあります。
結合試験
基本設計で決めた内容通りシステムが動作しているか確認する作業のことを指します。
単体試験では、対象のプログラムだけを焦点にあてた試験になりますが、結合試験は名前通りプログラム間の連携している部分をメインに確認していくことになります。
システムテスト
要件定義で決めた内容通りにシステムが動作しているか確認する作業のことを指します。
ここでのテストは本番環境と全く同じ状態で実施することがほとんどです。
ウォータフォール開発
開発の進め方として有名な手法になります。
先ほど紹介したV字モデルを上から順に行っていくスタイルです。
アジャイル開発
最近、この開発手法しているところが増えてきました。
ウォータフォールとは違い、ある機能ごとだったりの単位で小さいくV字モデルを繰り返して実装していく開発手法になります。
仕様
システムの動作を定義するルールみたいなものです。
先ほど記載した基本設計や詳細設計で決めた内容だと思って頂ければいいです。
構成管理
ソースの管理方法のことを指します。
有名なところで言いますとGitがそれにあたります。
複数名で作業していくとお互いのプログラムを共有したり、またはお互いが間違って上書きしてしまわないようになどソースコードを管理する必要が出てきます。
バグ管理
システム開発を行っているとバグが必ずといっていいほど出てきます。
これらのバグの管理のことを指します。
企業によって管理方法はさまざまです。Excelで管理することもあれば、ツールを使うこともあります。
有名なツールはRedmineなどがあります。
プログラミング用語を学ぶコツ
最後にプログラミング用語を学ぶ上でのコツを書いていきたいと思います。
勉強の仕方は人それぞれだとは思いますが、参考になればと思います。
無理に暗記しなくてもいい
はじめにすべて暗記をしなくてもいいです。おそらく挫折してしまいます。
はじめはさらっと用語の意味を軽く読む程度構いません。
実際にプログラミングや仕事しはじめたときなどで必要になったときに再度調べて理解すればいいです。
実際に使うか分からない用語を完璧に覚えるより、実際に必要になったときにちゃんと理解していくほうが、モチベーションも維持しやすいです。
完璧に理解しなくてもいい
上記と少し似ていますが、完璧に理解しなくていいです。こちらも心が折れて挫折します。
ざっくりこういったものなんだなぐらいではじめは大丈夫です。
専門用語ほどちゃんと理解するのが難しくなります。あれもこれも完璧にやろうとすると頭がパンクしてしまいます。
ある程度自分の中でざっくり落とし込めたのであれば、それだけでも意外と作業を進めていけます。
人に教えてもらう
やはり一番効率がいいのは人から教えてもらうになります。
自分が分からない部分のみ深く教えてもらえたり、わかりにくいところも噛み砕いて教えてくれたりするからです。
教えてくれる人にもよりますが、やはり自分の理解度にあわせて教えてくれる形になるので勉強する側は効率がよくなります。
ただ、教えてくれる人がいないとできない勉強方法になります。
もし、効率よく勉強していきたいのであれば、プログラミングスクールを検討してみるのもありだと思います。
以下、おすすめのプログラミングスクールをまとめた記事がありますので良ければ参考にしていただければと思います。
おすすめプログラミングスクール(現役SEが紹介)【2020年度】
最後に
はじめからすべて記憶したり理解するのは難しいと思います。
必要になったときにその都度調べればいいでしょう。
少しずつ勉強して理解していきましょう。
応援しています。
コメント