MiddleField

menu
松田 昇子

松田 昇子

MEMBERS BLOG

【CTO監修】採用広報担当者がエンジニアの募集要項を読み解けるようになるまで~2日目、プログラミング言語について学ぶ~

こんにちは!クルマ×ITのスタートアップ、MiddleField広報の松田です!

採用広報を担当している私が、CTO監修のもと、エンジニアの募集要項を読み解けるようになるために書き始めたこのnote。

前回の記事では、エンジニアの職種についてまとめました。

【CTO監修】採用広報担当者がエンジニアの募集要項を読み解けるようになるまで~1日目、エンジニアの職種について学ぶ~

前回の記事を読んだ方から「スキ」をいただいたり、「分かりやすかったです!」などのご感想をいただいたりして嬉しい限りです!

今回は、引き続きエンジニアの募集要項を読み解くべく、「絶対に募集要項に書いてある」と言っても過言ではないプログラミング言語についてまとめていきたいと思います!

目次

プログラミング言語とは?

そもそもプログラミング言語とは何なのか、ということで、まずは辞書で意味を引いてみました!

コンピュータに解釈できるようにつくられた人工言語。コンピュータへの指令であるプログラムを書くのに使われるためプログラム言語あるいはプログラミング言語といわれる。初期にはコンピュータが直接解読して作動することができる機械語が用いられたが,人の使う自然言語とあまりにもかけ離れプログラムの作成効率が悪いため,より自然言語に近くなるようにアセンブラ言語や,人間に理解しやすい記号や代数表現を用いて書ける高級言語が開発された。
(出典 ブリタニカ国際大百科事典 小項目事典)

これだけではピンとこない方も多いと思うので、もう少し詳しく解説していきます。

簡単に言うと、プログラミング言語とは「人間の指示をコンピューターに分かるように翻訳した言葉」です。外国の方に伝えたいことを話すときに外国語を使うように、コンピュータに伝えたいことを伝えるためにはコンピュータに通じる言葉で話す必要があります。

皆さんが使っているスマートフォンやPCの中には「プロセッサ」というハードウェアが入っています。プロセッサは、データや命令の処理や計算などを行っています。そして、プロセッサに指示を伝えることで、スマートフォンやPCが正しく動作してくれます。

しかし、プロセッサが理解できる言語は「機械語」しかありません。機械語は「00101000」のように、2進数で構成されています。プログラミングを行うたびに、エンジニアが数字で指示を書き込むのは非常に手間ですし、不便です。

また、機械語はプロセッサごとに記述方法が異なります。例えば、PCによく搭載されているインテルの”Core i7’というプロセッサと、iPhone11以降の機種に搭載されている”Apple A13 Bionic”というプロセッサでは、全く違う記述をしなければなりません。その為、機械語で汎用的なシステムを開発するのは現実的ではありません。

そこで、人間にとって分かりやすい英単語や記号を使って記述できるようにしたものが「アセンブリ言語」です。アセンブリ言語は機械語と1:1で対応し、機械語に近いプログラミングができます。

しかし、アセンブリ言語もプロセッサごとに記述方法が異なります。そこで、汎用性を高める為に開発された言語が「高水準言語」と呼ばれる言語です。反対に、アセンブリ言語等の機械語に近い言語のことを「低水準言語」と呼びます。

よくWEBエンジニアの募集要項に出てくる言語は、ほとんどがこの「高水準言語」です。具体的な例としては、Java,C言語,Ruby, Python, JavaScript, PHPなどが挙げられます。その他にも、プログラミング言語は非常にたくさんの種類があり、開発目的や開発スタイルによって使い分けられています。

プログラミング言語の種類とライブラリ/フレームワーク

言語の種類について解説する前に、もう1つ採用要綱によく出てくるワードを解説していきます。それは、「ライブラリ」と「フレームワーク」です。どちらも、プログラムを1から書かなくても良いようにしてくれるもので、近年ではこの2つの境界線はかなり曖昧になっているようです。

ライブラリとは、多くの人が開発で使うような、汎用性の高いプログラムの部品を取り出して、まとめたものを指します。エンジニアは、ライブラリの中から必要なプログラムを探し出して、自分が開発しているプログラムの中で使います。

一方でフレームワークとは、アプリケーションに必要な機能があらかじめ実装された枠組みです。エンジニアは、あらかじめ決められた枠組みの中でプログラミングをすることになります。

ライブラリとフレームワークの違いについては、『採用・人事担当者のためのITエンジニアリングの基本が分かる本』内にとても分かりやすい例えがありましたので、引用させていただきます!

ライブラリを下処理した具材とすれば、フレームワークはレシピや料理キットのようなイメージです。(作るもの・作る人・作り方から学ぶ 採用・人事担当者のためのITエンジニアリングの基本がわかる本 P.58より)

※ちなみにこちらの本、エンジニア採用に悩んでいる採用担当者向けに「採用に必要なプログラミングの知識」だけを分かりやすくまとめてあり、とても読みやすいのでおススメです。

さて、「フレームワーク」や「ライブラリ」という言葉の意味が理解できたところで、いよいよプログラミング言語の種類について解説していきます。

今回は、フロントエンドエンジニア/サーバサイドエンジニア/インフラエンジニアの3職種それぞれで、よく出てくる言語とフレームワーク、特長を一覧にまとめてみました。

【フロントエンドエンジニア】

無題のプレゼンテーション (10)

フロントエンドでよく出てくる言語は「HTML」「CSS」「JavaScript」です。HTMLとCSSは、それぞれ最新バージョンの番号をつけて「HTML5」「CSS3」と呼ばれる場合があります。

HTMLは、「この文章はタイトルです」「ここからここまでの文章が1つの段落です」「こ画像を表示します」「この文字にリンクを貼ります」というように、WEBページの構造を決めるものです。

CSSは、HTMLで書かれた構造に対して装飾をします。「タイトルの文字を赤の太字にする」「画像を右寄せで表示する」「背景を青にする」など、位置や色、大きさなどを決めます。

最後にJavaScriptは、WEBページに動きをつける言語です。「サイドメニューをクリックすると一覧が開く」などの動きを付けることができます。

この3つの言語は、ほとんどのWEBサービスにおいてセットで使われています。

【サーバサイドエンジニア】

無題のプレゼンテーション (11)

サーバサイドでは、さらに様々な言語が使われます。サーバーサイドで使われる言語は、フロントエンドとは異なり、言語ごとの役割ははっきりとは分かれていません。例えば、PHPでできることは、PythonやJavaでも行うことができます。

どの言語を使ってプログラミングを行うかどうかは、サービスやプロダクトの特性に合わせて選択されます。MiddleFieldのエンジニアチームも、上の表にある言語はほとんど全て使っており、プロダクトや開発目的によって使い分けているそうです。

【インフラエンジニア】

以前は「インフラエンジニアにはプログラミング言語は必要ない」と言われていたこともありました。サーバルーム内でのサーバの設定や障害対応、ケーブルの敷設を行うなど、プログラミングができなくても行える業務があったからです。

しかし、現在ではほとんどの企業が「AWS(アマゾンウェブサービス)」や「GCP(Google Cloud Platform)」などのクラウド環境でインフラ構築を行うようになり、自社で物理的なインフラ(サーバなど)を持たずにWEBサービスの開発を行っています。

それに伴い、クラウド環境でインフラを構築したり、自動化したりするために、インフラエンジニアにもPythonやRubyなどのプログラミング言語スキルが必要になっています。

さらに、近年では「Infrastructure as Code」という考え方が登場しています。この考え方は、名前の通り「インフラをソースコードとして表し、プログラミング言語によって構築を行ったり、構成を変えたりする」ということを表しています。

「Infrastructure as Code」を実践するためのツールが登場するなど、IT業界を中心にこの考え方がトレンドになっており、インフラエンジニアにとってプログラミング言語は必須の存在になったと言えます。

まとめ

・プログラミング言語とは「人間の指示をコンピューターに分かるように翻訳した言葉」
・ライブラリとは、多くの人が開発で使うような、汎用性の高いプログラムの部品を取り出して、まとめたもの。フレームワークとは、アプリケーションに必要な機能があらかじめ実装された枠組み。どちらもプログラムを0から書かなくても開発ができるようにしてくれる
・プログラミング言語は、エンジニアの職種や開発する対象によって使うものが異なる。

あとがき

という訳で今回は、エンジニアの採用要綱を読み解く上で絶対に登場する「プログラミング言語」について解説してみました。

エンジニアの募集要項は「横文字が多くて難しい…」と感じる方もいらっしゃると思いますが、まずは言語の名前や特長が分かっているだけで、だいぶ読み解けるようになるはずです!

MiddleFieldでも、今回解説した各職種のエンジニアを大募集しています!
ご興味をお持ちいただけましたら、ぜひお気軽にお問い合わせください!

【フロントエンドエンジニア】
https://www.wantedly.com/projects/451902

【サーバサイドエンジニア】
https://www.wantedly.com/projects/451890

【インフラエンジニア】
https://www.wantedly.com/projects/451907

このnoteや採用に関するお問い合わせはコチラから↓
Twitter:@shoko_m26
Facebook:shoko.matsuda.18

次回は「採用要綱によく出てくる用語集」をお届けしたいと思います!

それでは、今回も最後までお読みいただきありがとうございました!また次回のブログでお会いしましょうー!

CONTACT

  • お問い合わせ種別

  • お名前

  • メールアドレス

  • お問い合わせ内容