開発言語とは(文系新入社員向けIT用語説明)

前置き

私の説明は、文系新入社員向けに、漏れなくダブりなく説明することでは”ありません”。7割の精度で素早く用語を理解することを目指しています。
そのため、敢えて間違った説明をしていきます。理由は単純。IT独自の用語が多すぎるし、時代とともに意味が変わるし、どんどん増えていくため、専門家を目指すのでなければ、ざっとした本質的な理解で十分です。特に新入社員は。

3秒理解:開発言語一言で言えば

人間が理解しやすい言葉でアプリの動作指示をするアプリです。

開発言語なのにアプリってなんで?と不思議に思われるかもしれません。
しかしアプリと考えた方がしっくりきます。

アプリが動くためには、色々な機械をうごかすために、パソコンの中にあるCPUという機械を通じて指示を行う必要があります。CPUという機械が理解できる言葉で人間が直接指示をするのは非常に困難です。みなさんもどうやって指示したらいいかなんて、わからないですよね?
そこで、人間が直接アプリの動作指示をしなくても、代わりに人間が言いたいことを理解して、機械に通訳してくれるやつがいたらいいじゃね?
っという発想から通訳者(コンパイラ)が生まれました。

この通訳者は、人間が比較的指示しやすい開発言語(指示規則)に基づいて記述された指示書(コード)を機械が理解出来る指示書(プログラム)に通訳してくれます。 つまり開発言語は主ではなく通訳者であるコンパイラというアプリが主なのです。

背景:なんで開発言語が沢山あるのか?

ただしコンパイラも全部が全部、自分で行っているのではなく、もともと似た役割をOSが果たしているので、通訳者はOSが理解できる指示書(プログラム)をつくり、OSという仲介者を通じて機械に指示を行っています。

昔はこのOSが乱立し、CPUというパソコンの中心となる機会もたくさん種類があったことと、より優秀な(高速かつ軽量なプログラムを作れる)通訳者(コンパイラ)を色々なアプリメーカーが作成したため、種類が多かった時代がありました。そこからOSを種類毎に通訳者(コンパイラ)を作成するのも大変なのでOSに依存しない通訳者が生み出され、この通訳者が理解出来る開発言語としてjavaが広く使われるようになりました。そしてコンピュータの高速化・大量化にともなって、いちいち指示書(コード)をOSが理解出来る指示書(プログラム)を作りださず、同時翻訳出来るんじゃね?という考えから、プログラムを生成せず通訳者(コンパイラ)自身が直接指示をするスクリプト言語という種類が生まれるようになりました。代表格の一つがpythonです。
このようにコンピュータの進化とともに多くの開発言語が生み出され、今はOSの種類ごとに主となる開発言語以外にも、OSの種類をまたがっても多言語通訳出来る通訳者が主につかう開発言語だったり、WEBに特化した開発言語だったりと用途毎に開発言語が爆発的に増えてきました。

概要:大雑把な開発言語の分類

たくさんありすぎるので、我が社で使う可能性のあるところに特化して分類しておきます。

  • オブジェクト思考型開発言語・・・人間様が理解する思考に合わせて記述出来る開発言語

  • WEBアプリケーション用開発言語・・・WEBサーバー側で動作することを前提とした開発言語

  • ブラウザ特化型開発言語・・・chrome,edge,safariなどブラウザで動作することを前提とした開発言語。ブラウザが同時通訳者の役割を果たす。

  • 多言語翻訳型開発言語・・・ios,androidなど他OSで動くアプリを同時に開発するための開発言語。

我が社で主で使うオブジェクト思考型言語はpythonです。機械学習系の受託開発が多いので、開発系に配属された場合はpythonを最初に学ぶことになります。インフラ部門に配属された場合も基本我が社では開発言語の習得は必須となっています。

そのためWEBアプリケーション言語は、pythonをWEBで利用しやすいDjangoという便利ツール(フレームワーク)を用いているので新たに学ぶ必要はありませんが、時たまphpを使う事があります。

ブラウザ特化型の開発言語としては、昔はjavascript一択でした。ただし現在はtypescriptがメインになっています。基本両方を学ぶ機会があります。

多言語翻訳型の開発言語としては、google社が開発したdartがあります。Flutter x dartによって、ios,androidを含め様々なOS上で動くのアプリを一度に開発する事が可能です。

上記紹介した開発言語は、入社後2年以内に3、4種類ぐらいは触れる機会がありますが、まずはpythonから極めていってください。ただし開発言語だけでは極める事ができないので、極めるための書籍も後日紹介していきます。

失敗: バージョン(再び)

OSの記事でも同様のことを記載しましたが、開発言語のバージョンもおなじような問題がバージョン毎に発生します。通訳者(コンパイラ)は機械の仲介者たるOSを通じて指示をする際に、”汎用性の高いプログラム”をライブラリを利用しています。
このライブラリを活用することで一から詳細な指示書(コード)を書く必要がないので、大勢の開発者が利用していました。よく使われるものは、さらなる要望も集まるためどんどん機能が追加されたりしていくうちに、仕様が変更され、昔のアプリが動かなくなるということが多発するようになりました。

この問題を解決するための技術も開発されています。
ハードウェアとOSを含めてアプリ化する仮想化技術を使って上記の問題を解決していたりします。
皆さんがこれから触れる仮想化されたものは

  • ハードウェアを含めOSまるごと仮想化した仮想ホスト(VM)

  • ライブラリや窓口(インタフェース)のみ仮想したコンテナ

    • (有名なのがDocker)

  • pythonという開発言語に関するライブラリに特化して仮想化したanaconda(conda環境)

があります。どれにせよライブラリが意図せず書き換えられて動かなくなったり誤動作による影響を受けないようにするために生まれたものと思ってください。逆にそれがなければ仮想化は不要です。

行動: 文系思考で特徴を捉える(抽象化)

まずはpythonの開発環境を整えるためにVS Code , anaconda3 のインストールをお願いします。インストール手順については後日共有します。

オブジェクト思考型言語は人間が理解しやすい、自然界の事象を表現出来る
ので、文系出身者には最適な言語です。ただし一般的なpython入門という書籍を使って勉強しても本来のオブジェクト思考型の記述は出来ません。そのため多くの文系出身者が挫折するか、言葉汚く言えば3流プログラマになってしまいます。

そこで我が社では、別途pythonなどの開発言語を使わず、その中の事象の特徴をオブジェクトとして捉え、それを抽象化したクラス図というものを書く訓練を行い、オブジェクト指向の概念が理解出来るようにします。

また後日紹介しますが、先人の叡智を遺憾無くパクります。1流のプログラマーと同じぐらいの品質でコードを書くためのテクニックとして、デザインパターン、リーダブルコード、テストファーストと最新のAI活用(copilot)をする方法になどを学び、単にpython出来ますというなんちゃって開発者ではなく、1流の開発者をめざしてもらいます。

小ネタ: 指示をするだけでAIが開発する時代

すでに話題になっていますが、OpenAI社のchatgptや、Microsoftのcopilotでは、私たちが開発言語を理解してなくても、開発言語に翻訳してくれる機能が備わっているため、究極的に言えば開発言語を一切勉強していなくてもアプリを作れる時代が来るかもしれません。今はプログラマーは人気職種といわれいますが、実はAIが普及したら無くなる職種になっている可能性が非常に高い職種でもあります。これから開発言語を学ぼうという皆さんの心を折るような話ですいません。

ただし現段階の精度では、まだ完璧に使えるコードを生成が出来る訳ではないため、私たちが開発言語を理解し、オブジェクト指向に基づいてコード化されているか確認する必要があります。その上でも開発言語理解以上に重要なのが、オブジェクト思考でコードを記述出来る能力になります。

4月に、大学で情報系の研究員をされている方に講師となってもらい、オブジェクト指向についても学びますが、今からでもぜひ勉強をしておいてください。オブジェクト思考型でコードを書ける人は10人中1人程度です。
それだけでもみなさんの価値が爆上がりします。


この記事が気に入ったらサポートをしてみませんか?