支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • プログラミング言語とコンピューター言

"

プログラミング言語とは?コンピューター言語との違いは?

そもそもプログラミング言語とはどのような言語のことを言うのでしょうか?プログラミングに使うための言語であることは、見れば何となく想像はつきますが、実際にどのようなものなのかが曖昧な理解をしているままという方もいらっしゃると思います。

端的に説明すると、プログラミング言語というのは「コンピューターに何らかの処理を行うように命令するために使う言語」です。分かりやすい例をあげると、日本人に何か指示を出して行動させる場合は日本語で指示を出すのが理想的です。日本人は日本語が母語なので、日本語で指示されれば理解できるからです。これがアメリカ人やイギリス人であれば英語になりますし、スペイン人であればスペイン語になります。

それと同じで、コンピューターにはコンピューターが理解できる言語というものがあるため、コンピューターに日本語や英語、スペイン語などで指示を出しても理解できません。コンピューターが命令や指示を理解できる言語はコンピューターが最も理解できる言語であるため、プログラミングを行って処理を実行させる場合には、コンピューターが理解できるようなプログラミングを行うために使うプログラミング言語を使う必要があります。したがって、コンピューター用の言語の1つがプログラミング言語なのです。

プログラミング言語の歴史

プログラミング言語というのは広い意味での「コンピューター言語の1つ」だということを紹介しました。コンピューター言語の1つとしてのプログラミング言語は、その名の通りコンピューターに司令を出すために人間が作り出した言語です。最初期のコンピューターは解析用に開発された「大型汎用機」と呼ばれたもので、なんと19世紀に発明されています。この機械に処理を行わせるために使われていたのは、現代でいうパンチカード(穴を開けて信号化したカード)でした。このパンチカードを作らなければ、人間は機械に命令を出すことができなかったのです。

このままでは大きな手間がかかってしまうため、多くの科学者達が長年の研究を行った結果、1954年にFORTRANという「手書き型のコンピューター言語」が開発されました。このFORTRANは「文字として書かれたものを人間が理解でき、複雑な内容の命令も記載した上で、コンピューターに理解させることができる」という画期的なものだったのです。

このように、人間が手書きした上でコンピューターに指示を出せる言語が開発されたことにより、プログラミング用の言語が次々と生まれるようになりました。COBOLやC言語はFORTRANの誕生からしばらく経過した1960年代〜70年代にかけて生まれた言語ですが、この2つのプログラミング言語は現代でもまだ使われているものです。プログラミング言語の開発はさらに加速し、1990年代に入るとJavaやPHPが生まれます。JavaやPHPなどに代表されるように、近年では「人間がそのまま読んでも理解しやすい文法」で記載されるプログラミング言語が増加しており、人間とコンピューターの間でかわされる言語コミュニケーションは大きな発展をし続けています。

プログラミング言語の考え方

プログラミング言語は、言語ごとにそれぞれ独自の「考え方」や「思想」が内包されています。これは主にその言語の開発者の思想が色濃く反映されているのですが、現代主流となっているプログラミング言語は大きく分けて2つの考え方に分かれていると言われています。それが「オブジェクト指向」と「手書き型」です。

オブジェクト指向

近年主流になりつつある考え方で、プログラム中で規定されている事象や人などを、独立した「オブジェクト」だと仮定して扱う考え方です。「オブジェクト」と言うと少しわかりにくですが「ボタンを押したらドアが開く」という事象そのものをひとかたまりとして扱う考え方だと言えば想像しやすいと思います。この「ボタンを押したらドアが開く」というのは変わらないため、「ボタンを押したらドアが開く」=Aだと名付けて部品のように扱うことで、同じような動作をまとめたオブジェクトを組み合わせることでプログラムを組むことができるようになります。オブジェクト指向の場合は「オブジェクトをまとめる概念」がわかれば、極端な言い方をするとオブジェクト同士を組み合わせることで全体をまとめていく作業になりますから、イメージとしては文章を書いていくのと似た感覚でプログラムを組んでいくことが可能だと言われています。

ただし、その反面覚えておくべき概念が多岐に渡る場合もあるので、習得までに必要な時間的コストが多くなる傾向が高くなります。

手書き型

手書き型プログラミングにおける最大の特徴は、コンピューターに実行させたい処理一つ一つを、それぞれの「手続き」として扱う考え方です。例えば「ボタンを押したらドアが開く」という事象を「(1)ボタンを見つける」「(2)ボタンを押す」「(3)押されたボタンが作動する」「(4)ドアが開く」という4つの手続きが順番に行われることによって実現する、というのが手書き型プログラミングにおける考え方です。1つの処理が実行されるまでに経ることになる手続きの順番は決まっていて、その順番通りに手続が行われたときに処理が実行されるという考え方であるため、順を追って読んでいくことでプログラムの全体像がつかみやすいという特徴があります。また、一つ一つの手続きが内包する概念そのものは比較的コンパクトにまとまっているため、細分化して覚えやすい=学習における時間的コストが短くて済む、というメリットがあります。

手書き型プログラミングの場合は各手続きを順に実装していくことで全体のプログラムを組むことになるため、変更や修正が発生する場合は他の手続きに支障がでないかどうかを慎重にチェックしてからでないと、予期しない形で全体に影響が出てしまうこともあり得るため、注意が必要です。

プログラミング言語を使ってできること

そもそもプログラミング言語とは何をするためのもので、プログラミング言語を使うとどんなことができるのでしょうか?記事の冒頭でもご説明したように、人間がコンピューターにして欲しい指令を、コンピューターにわかる形式で記述し、実行してもらうために使うのがプログラミング言語です。

「コンピューターにして欲しいこと」というのは例えばどのようなものがあるでしょうか?代表的なものとしてデータの処理や計算処理などがあります。増える一方の顧客データなどを短時間で一定のルールに基づいてまとめてくれるプログラムがあれば誰もが助かります。

Web上やスマートフォンにインストールすることで使用可能になる様々なアプリケーションを作成する時にも、プログラミング言語が使用されます。他にもWebサイトを構築したり、大量の要求を振り分けて情報をまとめる、などの作業は全てプログラミング言語を使ってシステムにすることが可能です。

プログラミング言語の種類

プログラミング言語にはいくつもの種類があり、目的によって使う言語は異なります。いくつかプログラミング言語についてご紹介します。

Java

実際にエンジニアとして働いている人達に向けたアンケートを行うと「もっとも利用している言語」の上位に必ずランクインする言語がJavaです。利用されているケースが多いのは理由があり、Javaは「Webシステム開発」や「業務システム開発」から、「PC用アプリ開発」や「Androidアプリ開発」まで、非常に幅広い範囲と分野で使用することができる言語なのです。そのため、Javaが使えるだけで関わることができる開発案件が飛躍的に多くなりますので、必然的に実践の場に多く携わることができます。現場経験が多ければ多いほど、様々な開発現場から求められるケースも増えますので、更に経験や知識が蓄積されていき、エンジニアとしてのキャリアが成長していくという好循環を生むことになります。

実際にJavaは大規模案件であればあるほど使われることが多く、それだけ汎用性の高いプログラミング言語だと言われています。求人数も他の言語と比べて非常に多いのですが、その一方でソースコードの記載量が非常に多いという特徴があるため、初心者や未経験者が習得するためには時間的にも労力的にも少しハードルが高い可能性があるという指摘もされています。しかし身につければ実績を積むチャンスがたくさんあるため、チャレンジする価値は十分にある言語だと言えるでしょう。

C言語

コンピューターに言語で指令を出すというプログラミングが始まった初期から存在するC言語は、エンジニアが最初に学ぶプログラミング言語として選ばれることも多いものです。電子機器の制御を行うようなプログラムの開発や、ロボット制御に関わるプログラムの開発。そして現代で言えばIoTの分野になる家電の制御やPC用OSなどのソフトウェア開発までを幅広くカバーできる汎用性の高さが特徴です。

C言語は前述のように機械やPCなどを制御するためのプログラム開発に利用されることが多い言語です。C言語もプログラミング黎明期に開発された言語であるため、アセンブラや、より「機械語」に近い記述が必要とされる言語です。そのため、初心者にとっては他のプログラミング言語と比べて学習のハードルがやや上がりがちです。しかし、家電の制御にも使われることがここ最近では増えているため、今後ますます需要が高まるIoTの分野でさらに求められることが増加するだろうとも言われています。

PHP

ここ数年で流行しているWebアプリケーションやグループウェア、CMSなどの開発に使われることが多いのがPHPです。中でもWebアプリケーションの開発現場で採用されることが多く、理由として「文法がわかりやすい」ということがあげられます。そのため学習する上で、未経験者や初心者にとっても学びやすいと言われており、習得へのハードルが他の言語と比べてやや低めだと考えられます。

特にWebアプリケーションや、世界中の多くのWebサイトで使用されているCMSの1つであるWordPressはPHPで作成されているため、PHPを身につけておけばこのようなWebアプリケーション関連、WebサイトやCMS関連の業務経験を得やすくなると言えるでしょう。

JavaScript

Web系のプログラミング言語として安定した需要があるのがJavaScriptです。主に「Webサイトに動的な効果を与える」という目的で使われることが多い言語です。Webサイトに動きを与える、という表現以外には「サーバーとの非同期通信を可能にする」という紹介のされ方もしています。イメージが難しい場合は、Google Mapなどのオンライン地図アプリを思い浮かべてください。画面の縮尺を変えたりスクロールしたりする際に、読み込み画面に切り替わること無く地図の縮尺が変更されていくはずです。Web上で使用するオンライン地図は、通常の場合サーバーにあるデータをPCやスマホなどのデバイスで読み込みながら使用します。そのため、本来であればサーバーからデータを読み込む時間がかかるのですが、JavaScriptの場合は読み込む瞬間の動きをユーザーに見せない形で使用することができます。この状態を非同期通信と呼ぶのです。

特に現在ではスマホやタブレットの普及に伴い、この非同期通信を軸にユーザー体験を考える需要が非常に多いため、これからWebアプリやスマホアプリなどを開発する場合にはJavaScriptを使った開発需要がさらに高まるだろうと言われています。

Python

Pythonも近年人気が上昇しているプログラミング言語の1つです。Pythonでできることとしては「Webアプリケーションの開発」「データ収集」「ブロックチェーン技術の開発」そして「AIの開発」があげられますが、このうち特に「ブロックチェーン技術の開発」と「AIの開発」という2つの分野における需要が急増しています。

記述方式そのものがさほど複雑ではないため習得のハードルが比較的低めだということと、前述した「AI分野」での需要が高まっていることから、今後さらに必要とされるケースが増えると考えられています。近年では様々な場面でAIが搭載された家電やアプリケーション、デバイスが増えており、一昔前と比べて私達の生活にAIが関わる場面が飛躍的に増加しています。企業もAIを搭載した製品開発を進めることが増えているため、Pythonを身につけておけばAI関連の開発経験を積むことができるチャンスに巡り会える確率は高まるでしょう。

Swift

Appleが開発し、MacOS、iOS、iPadOS、WatchOSを搭載するデバイス向けのアプリ開発に使用されるのSwiftです。この記事でもご紹介した「オブジェクト指向」に基づいたプログラミングを行うための代表格とも言われるプログラミング言語で、他の言語と比較して直感的な記述ができるという点でも人気があります。Apple製のデバイスは主に先進国で人気が高く、その反面途上国などでは経済的な問題から一般には手に入らない価格であることも指摘されていますが、それでも先進国におけるApple製デバイスの人気は未だに高く、iPhoneやiPad用のアプリ販売を通じた売上はAppleの収益において柱の1つにもなっているほど重要なものとして位置づけられています。

Swiftを使ったアプリ開発はXcodeという専用のツールを使って行うことになりますが、このツールはMac専用です。Swiftを使ったプログラミング、アプリ開発には必然的にMacが必要となるため、Appleにとっては技術者や顧客の囲い込みにも効果をあげている言語だという評価になっています。Swiftは日本だとまださほど技術者の数が多くありませんが、オープンソースであることから海外の技術者の間で活発な意見交換などが行われていますので、言語的にも文化的にも多様な情報を習得することが可能です。

Ruby

Web関連の開発を行うプログラミング言語として人気があるものとしてRubyもよく知られています。Rubyは日本人技術者によって開発されたプログラミング言語で、特にWebアプリケーションやスマートフォンアプリケーション、そして機械学習系の開発によく使用されます。

人気の理由として、記述するための文法が他の言語よりも簡素化されていて、Webアプリケーション開発に用いられてている他の言語よりも少ないソースコードで同じ機能の実装ができると言われている点があげられます。つまり、少ない人的リソースでの開発に採用しやすいという特徴があるため、スタートアップ企業や少人数で開発を行う企業やプロジェクトチームに採用されることが多い言語です。だからといって何かが欠けているというわけではなく、Rubyで開発された多くのWebアプリケーションが世の中には存在していますので、今後も需要が激減することは少ないと予測できますし、むしろ需要は今後も増加していくだろうと言われています。

自分に合うプログラミング言語の選び方

ここまでご紹介してきたように、プログラミング言語には様々な種類がりそれぞれに目的や特徴が異なります。目的がはっきりしている場合は問題ありませんが、例えばこれからプログラミングを学んでみようと思っている場合、どのプログラミング言語を学ぶかをどうやって決めたらいいのでしょうか?

まず1つは、「自分がやりたい」と思えることが実現できる言語を選ぶことが大切です。なんとなく「Web上で動く何かを作りたい」と思っているのに、Webとは全く関係のない言語を学んでもWeb関連の開発には携われません。様々なアニメーションが動くWebサイトが作りたい、と思ったなら、Webサイトに動きを付与できる特徴を持ったプログラミング言語を学ぶ必要があります。

また、せっかく身につけても市場で使われなくなり始めている言語は案件の数も少ないため経験値を積むことが難しくなります。現在も将来的にも市場における需要が高い言語を身につけておく必要があるでしょう。需要があるかどうかは、プログラミング言語の名前をWeb上で検索することで見極めることができます。人気のある言語は検索結果も多く、更新日などが直近の日付であることが多いので、判断材料が豊富です。何より、需要が高い言語の場合は書籍やWeb上の記事など、資料や教材が豊富なので学習のハードルが低くなります。

やりたいことや需要以外の判断材料としては、学習がしやすいかどうかも判断する上で重要な要素でしょう。例えば目標として1年以内にはエンジニアとして仕事を始めたいと思っているのに、習得までに最低3年は必要、というような言語を学び始めるのは効率が悪いと言わざるを得ません。もちろん、最終的に習得できるまでの時間には個人差があるのは事実ですが、極端に習得までのハードルが高い言語を最初に選択するのは避けたほうが良いでしょう。

このように、どのプログラミング言語を学べば良いか?どれを選んだら良いかがわからない場合は様々な観点や角度から考えてみるのが良いでしょう。まずは自分が何をしたいか?何を目標としていて、それらを実現するために最適なものは何かを考えるのが近道です。

それでも選び方がわからないなら?

中には「細かいことは置いておいて、とにかく将来役に立つ言語が勉強したい」という方もいるかもしれません。

求人の多さ

求人数の多さで選ぶという選択肢もあります。せっかく身につけたプログラミングの知識を仕事にしようと思っても、身につけた言語の求人が少ない場合はチャンスを掴める可能性も低くなってしまいます。そうならないために、最初の段階で各言語の求人数をリサーチしておき、上位5番目までなどのプログラミング言語から興味が持てそうなものを選ぶというのも有効です。

シェアの高さ

求人数の多さと同様に、IT業界におけるシェアの高さで選ぶというのも選択肢の1つです。IT業界における開発案件には様々なトレンドがありますが、その中でも比較的使わる頻度が多い言語というのは限られてきます。そのため、自然と各プログラミング言語の中で、使われることが多い「シェアの高い」言語というものが発生します。当然のことながら、シェアの高い言語は案件の数も多く、必要とされているので単価も高いものが多い可能性があります。

挫折なくプログラミング言語を習得するには

せっかく学習するのであれば1つの言語を身につけられるまで続けられるのがベストです。しかし学習には様々な困難やハードルがありますから、途中でくじけてしまいそうになることもあるかもしれません。

どんな勉強でも同じですが、挫折せずに最後までやりきるためには様々なコツがあります。例えば一緒に勉強する同じ進捗度合いの仲間を作ったり、目標を細かく区切って学習し、達成感を得られやすくしておくなど、様々な方法があります。大切なのは挫折しないようにする、というように自分を追い込むばかりではなく、挫折しそうになることがあるということを前提にしておき、そうなったらどうするか、というリスク回避の方法を設定しておくことです。

まとめ

ここまで、プログラミング言語とはコンピューター言語の一種であるということ、プログラミング言語が生まれた背景やその歴史。そしてプログラミング言語には様々な種類があり、それぞれに特徴や得意な分野があるということを紹介してきました。また、合わせてプログラミング言語を学習するために、どの言語を選べばいいのかという選び方の事例もご紹介しました。この記事を参考にして、是非プログラミング言語の学習にチャレンジしてみてください。

"