コンピュータに何かをしてもらうには、Apple製品のSiriなどに「話しかける」方法もありますが理解できる言葉は限られていて、何でも思いどおり指示はできません。
Siriに話しかける代わりにできることは何でしょうか。コンピュータの能力をすみずみまで引き出すには物事を順序立てて考え、論理的・体系的にとらえる思考方法を身につけるとともにコンピュータが指示を理解できるプログラミング言語が役立ちます。
Contents
プログラミングとは
プログラミングとはコンピュータにさせたい仕事を具体化しインプットする行為です。
コンピュータはいろいろな能力を備えていますが、ハードウェアだけでは「白紙の状態」です。生まれたばかりの赤ん坊が自分で食事できないように、コンピュータが何かをするにはプログラミングで指示する必要があります。
例えば、自転車に乗ったことがない子どもにいきなり「自転車に乗って公園に行こう」と誘っても子供はどうすれば自転車に乗れるのかわからずに混乱するでしょう。まずは自転車の乗り方を伝え、練習するところから始めます。例えば「ブレーキをかけるにはハンドルを握る」などの知識や「最初は地面に足をつけたままで歩いてみる」「ペダルへの足の置き方」「大人がうしろを持った状態でペダルのこぎ方を練習する」など段階を踏んで徐々に「自転車に乗る」当初の目的に近づけていきます。
子供が相手でしたら言葉や身振り手振りで伝えられますが、コンピュータに対して指示する場合におこなうのがプログラミングです。子供と違ってコンピュータは勘が働くことなく次にすべきことを考えられないので、プログラミングでは仕事の手順を一つ一つ指示する必要があります。
コンピュータは一度指示すれば複雑な手順でも難なくこなします。人間が長い時間や努力を費やしてきた知的なタスクや正確さが必要な作業などをプログラミングによって高速かつ何度でも実施できるようになりました。
プログラミング言語とは
プログラミング言語とは、コンピュータに指示を出すとき使う言語です。
コンピュータは日本語などの指示を直接は理解できません。 コンピュータが直に理解できるのは機械語と呼ばれる「0」「1」などの数字を並べた「101000」のような言葉です。コンピュータの登場したばかりの時代には人間にとってわかりづらい機械語でプログラミングしていたケースもありましたが、のちに人間が指示しやすい言葉が望まれ現代のプログラミング言語が登場しました。
プログラミング言語は、現在200種類以上あるといわれ、文法や見た目の印象はさまざまです。いろいろなプログラミング言語が登場したのは、言葉の向き不向きがあるためです。例えば人間同士でも、大量の計算をする仕事と、絵を描く仕事では、担当者同士の会話は異なってくるでしょう。計算をする仕事なら計算の手順・計算結果は小数点以下何桁まで、などの話題を、絵を描く仕事ならカンバスの材質・構図・色使いなどを話すことになり、使う単語の種類や手短に伝える言い方などが変わってきます。
プログラミング言語も利用用途・分野によって効率よく指示のできる言語があり、言語ごとに書き方や学習難易度が違ってくるため、言語を選ぶ段階では考慮が必要です。
プログラミングの歴史
コンピュータが誕生した当初は性能が低かったため、人間の側が努力してコンピュータが直接理解できる言葉を使ってプログラミングしていました。
人間にとって使いやすいプログラミング言語が生まれたのは1950年前後といわれ、今でも使用される言語の一つFORTRANは1954年に発明されました。FORTRANは現在でもスーパーコンピュータなどの高速計算分野で使用されています。他にもBASIC、LISP、Logoなどのプログラミング言語が1950年代に生まれました。
1960年から1970年代には、プログラム内容を明確にする手法やプログラミング品質向上の議論がなされました。現在でもメジャーなプログラミング言語となるC言語が1972年に誕生し、他にもPascalやSQLなどの言語が生まれました。
1980年代には大規模なシステムを作れるような文法を持つ言語が登場しました。「オブジェクト指向」と呼ばれる手法でプログラミングできるC++言語やObjective-Cが登場し、短く手軽なプログラムに向いた「スクリプト言語」の一種Perlも登場しています。
1990年代になるとインターネットの普及がプログラミング言語にも影響を与えました。Webブラウザーで動作する言語としてJavaScriptが誕生し、Webサーバーでアプリケーションを動かすためPHPなどの言語が登場しました。また、JavaやVisual Basicが過去の言語を発展させプログラマーの生産性を高める言語として登場したほか、関数型言語が普及し始め、Ruby・Python・Rなどのスクリプト言語が生まれました。
そして、2000年以降もプログラミング言語は急速に進展するネットワーク化と高性能化するハードウェアの能力に対応するべく進化し続けています。
プログラミングの需要は高まるばかり
経済産業省によれば、国内のIT人材の需要はAIなど新技術の登場で今後も増え続ける予想となっているのに対し、少子化などの影響でIT人材の人数は徐々に減っていくとのことです。 経済産業省の試算では2030年に最大79万人ものIT人材が不足すると予想しています。
日本にデジタル庁が誕生し、社会のなかでデジタルをうまく活用して、企業・自治体・教育などのコミュニティのあり方、家族・友人などパーソナルなことまで効率的に便利にしていこうと、未来に向けた取り組みが加速しています。
デジタルトランスフォーメーション(DX)推進やマイナンバーの導入などデジタル化の波は今までITと関わりの薄かった業種や業界、日々の暮らしにまで及んでおり、プログラミングできる人イコールIT業界の人、などの狭いイメージは過去のものとなりつつあります。現代ではあらゆる業種や組織でプログラミングのスキルを活用できる人材が求められています。
プログラミングを学ぶメリット
需要が高まっている以外にもプログラミングを学ぶことでいろいろなメリットがあります。詳しく見ていきましょう。
コンピューターリテラシーが向上する
スマートフォンやタブレットなどのデジタル機器が普及し、総務省の2016年調査では10代・20代で平日に1日3時間スマートフォンでインターネットを利用しています。日々の生活になくてはならないインターネットですが利用者が多いだけにコンピュータに詳しくない人を狙った犯罪やトラブルに巻き込まれるケースも多くなります。
プログラミングを学ぶには、コンピュータを高度に操作しインターネットとコンピュータを活用する必要があるため、コンピュータを使いこなすセンスが鍛えられコンピューターリテラシーの向上につながります。
転職に有利に働く
経済産業省のレポートによると2030年には最大79万人のIT人材が不足すると予想されています。IT業界では将来にわたって人材不足が続くためプログラミングのできる優秀な人材は常に需要があります。将来にわたって安定的に求められるスキルを身につけるにはプログラミングを学ぶとよいでしょう。
収入が上がる可能性が高まる
プログラミングを習得してエンジニアとなり、専門知識や開発経験を積むことで収入アップが期待できます。
大手企業が抱えている古いシステムを見直さなければ2025年から約12兆円もの損失が生じるとする「2025年の崖」と呼ばれる経済産業省の報告書があります。古いシステムを刷新していくためには新たなIT技術を身につけた人材が必要となります。大きな企業ほど影響が大きいため人材への投資が増える可能性があります。
弊社テックリーチの求人単価相場を見ると収入の中央値は月額70万円(年収換算840万円)となっています。
業種や分野によって収入の相場は異なりますが、エンジニアが不足している分野で収入アップを狙えるでしょう。
自分に合った働き方を選べる
プログラミングの仕事は、インターネットとパソコンがあれば場所を選びません。何か特別な設備を用意する必要はないので、オフィス以外でも仕事を進められます。リモートワークもしやすいのでプログラミングで仕事するようになるといろいろな働き方を選べます。
また、プログラミング言語は世界共通です。例えばPython言語が使える日本のプログラマーと欧米のプログラマーとが一緒に仕事をできるため海外の企業で働く選択肢もあります。海外の企業からすれば、日本市場に参入する場合に日本語ができてプログラミングもできる人材が必要とされます。
論理的思考が身につく
小学校でのプログラミング教育が必修化され、小さな頃から物事を順序立てて考える思考を身につけるようになります。背景には、今後すべての人に必要となる、創造性と論理的に考える思考力を育てていく目的があります。
プログラミングを学ぶと、コンピュータの動きを深く理解しプログラムの文法など表面的な形だけでなく、背後にある論理的思考や順序だった考え方を学べるので、プログラミングを職業としない場合でもIT技術やアプリなどを目的に応じて組み合わせ、社会にとって価値あるものを生み出していく考え方が身につきます。
プログラミングでできること
プログラミングを使って実現できることの事例、プログラミングが活かせる分野をご紹介します。
Web制作
インターネット上で表示されるいろいろなWebサイトのコンテンツにはプログラミング言語が関わっています。
Webサイトのコンテンツには絵や文章など中身の部分や、ボタンを押してからの反応などといった動きの部分があります。
絵や文章などの中身はHTMLなどマークアップ言語と呼ばれるもので作成し、ボタンなど利用者の操作に対してリアクションするような部分はJavaScriptなどのプログラミング言語で作成できます。
アプリ開発
若い世代のスマートフォン利用率は高く、今も増え続けています。ピューリサーチセンターの2021年のレポートによると、米国では10代の95%がスマートフォンにアクセスし、45%がほぼいつでもオンラインだと答えています。同様の傾向は、他の国でも見られます。例えばイギリスでは、2020年の調査で、16~24歳の97%がスマートフォンを所有しており、1日平均4時間使用していることが判明しています。
スマートフォンのアプリを作るためには、アイデアやデザインを実際の動きとして定義し利用者の操作に対してどう反応するか、データをどう処理するかなどのプログラミングが欠かせません。スマートフォンのアプリケーション開発では主にKotlin、 Java、 Objective-C、 Swiftなどのプログラミング言語が使われます。
ゲーム制作
eスポーツが話題となり日本のeスポーツファンは2020年時点で680万人との調査結果もあります。世界的にもゲーム市場は今後の継続的な成長が見込まれておりGrand View Research社のレポートによると、世界のゲーム市場は2020年に20兆9千億円となり、2028年には25兆7千億円に達すると予測されています。
ゲームの登場キャラクターや武器などの動きをコントロールしたり、ステージやマップのつながり、戦闘時のダメージ計算などゲームのルールを実現するためにプログラミングが使用されます。
スマートフォンはもちろん、PlayStation・Nintendo Switch・Xboxなどの家庭用ゲーム機やWindowsで遊べるゲームソフトの制作ではC++言語やC#言語などのプログラミング言語が使われる傾向にあります。近年ではゲーム制作に特化したツールとしてUnityやUnreal Engineなどのゲームエンジンと呼ばれるツールが流通しており、個人や小規模の開発チームでも3Dなどの高度な技術を使ったゲームを作れるようになっています。
システム開発
個人や企業が日々の業務で使用するアプリから企業全体の経営を効率化したり大量の取引をおこなうなどコンピュータを使ってさまざまな課題を解決し個人や企業の活動を支えるソフトウェア製品(システム)を作るのもプログラミングが社会に対して貢献できることの一つです。
こうしたシステム開発では、課題を解決するため、プログラミングをおこなう前に分析が欠かせません。システム開発の最初の段階では、企業や個人が抱えている課題を洗い出し、使用できる予算やシステムを操作する人の能力など多くの要素を統合してシステム導入がもたらす効果が最大となるようにデザインしていきます。
システムを使って解決する課題は何か、どう解決するのかをシステムを利用する人の協力を得ながら紐解いていくプロセスが重要です。課題とシステムをうまくつなげるには、課題となる業務内容を理解するだけでなく、プログラミングの仕組みを理解した開発者の存在が欠かせません。
自動処理ツール作成
プログラミングができると、日々のちょっとした雑務を自動化できるようになります。何らかのルールが設定でき、アウトプットの形がメール送信やファイル作成などデジタルで完結する業務ならプログラミングできる可能性があります。
例えば、請求書の作成や給与計算など定型的な計算はプログラミングすれば複雑な条件がある場合でも何度でも計算できます。また、インターネットを利用して天気予報で高温注意報が出ていたら自動で発注量を調節できます。
こうした業務の自動化には、PythonやVisual Basic for Applications、Google App Scriptなどの言語が使用されます。
ロボット開発
ペットロボットや人の姿をしたコミュニケーションロボットなど、身の回りにあるロボットですが、ロボットの動作にもプログラミングは欠かせません。
ロボットに組み込まれたモーターなどのパーツをどう動かすのか制御するのはもちろん、実際に機械としてロボットを組み立てる前に設計段階ではプログラミングによってロボットの構造をシミュレーションできます。実際に組み立てる前にロボットの動きや制御方法を試し、改良していくことができます。改良した結果をシミュレーションに反映させていくことで何個も試作品を作るのに比べて大幅にコストや時間を節約できます。
AI(人工知能)開発
スマートフォンやスピーカーなどに搭載されているAIアシスタントに話しかけると電気を点けたりタイマーを設定するなどいろいろなタスクを簡単におこなえます。
人が話しかけた言葉を音として拾い、何を言っているかコンピュータの理解できる形に翻訳する音声認識にはAIの技術が使われており、言われた内容に対してどうリアクションするかを判断するのにもAIが使用されています。
国内では将棋や囲碁に強いAIが話題になったのを目にしたことがあるかもしれません。
AI(人工知能)の開発は世界中で盛りあがりを見せている分野です。盛んに論文が発表され、理論を実際に動かせるようプログラミングする個人や企業が増えています。AI(人工知能)のプログラミングでよく使用されるのはPython言語です。
プログラミングを生かした職業を紹介
プログラミングを学ぶとどういった職種で活躍できるのでしょうか。主な職種をご紹介します。
プログラマー(PG)
プログラマーとは、ユーザーやプロジェクトの目的を嚙み砕いてコンピュータに理解できる形でプログラミングし、動きを指示する職種です。
プログラマーの手腕によって同じ目的を実行するにもかかる時間やコストなどが影響を受けます。
例えば、カーナビアプリの道案内で目的地までのルートを検索する場合、計算方法もいろいろあるため、プログラミングの方法によってルート検索の結果が出るまで1秒以下のこともあれば何十秒もかかってしまうケースも起こりえます。プログラマーは目的にたいして効率よく処理する手順や実現方法を考えるスキルが求められます。
システムエンジニア(SE)
システムエンジニアは、顧客がかなえたい目標を理解し顧客企業の業務を分析してシステムをどういう形で組み立てれば顧客の要望を効率的に実現できるかを提言しプロジェクトを進行していく職種です。
参考記事:システムエンジニアとは
プログラミングやシステムへの理解だけでなく、顧客が本当に求めている内容をヒアリングしプログラマーにシステムの全体像を伝える橋渡し役として経験豊富なプログラマーがシステムエンジニアにキャリアアップするケースも見られます。
Webデザイナー
Webデザイナーは、Webサイトの企画・デザインコンセプトの作成・提案からプロジェクトに関わり実施にHTML・CSS・JavaScriptなどを使用してWebサイトに訪れる利用者が目にするいろいろな動きやコンテンツの内容を作りあげていく職種です。
参考記事:Webデザイナーとは
個人から企業・団体まで、Webサイトをオープンする人々の目的やニーズは多岐にわたります。いろいろなニーズをくみ取り、Webサイトを訪れる人々にとって使いやすくわかりやすいWebサイトをデザインするには幅広い知識と経験、そして見た目のセンスも重要となります。
テクノロジーだけでなくクリエイティビティが求められる職種です。
データサイエンティスト
データサイエンティストは、プログラミングのスキルと統計学を組み合わせて、科学的にデータを分析して企業のいろいろな問題を解決していく職種です。
企業が取引をおこなうと、帳票やWebサイトのアクセス履歴などさまざまなデータが記録されていきます。企業活動から生まれる大量のデータを科学的手法や統計分析の手法を使って分析し、データの傾向や関係性に法則を見いだしていき、データに基づいて企業の意思決定を支援します。
トレンドの予測や、広告戦略、などデータに基づいた判断はさまざまな企業活動に欠かせないものとなっており、大手企業だけでなく政府機関や非営利団体などでもデータサイエンティストは求められています。
データサイエンティストは近年急速に注目を浴びている職種であり、科学的手法やプログラミングのスキルだけでなく機械学習などのAIに関する知識や意思決定への理解、データの解釈をコミュニケーションする方法などへの理解が求められます。
主要なプログラミング言語
プログラミング言語にはいろいろな種類があります。現在よく利用されているプログラミング言語の特徴を見ていきましょう。
HTML(エイチティーエムエル)
HTML(ハイパーテキストマークアップランゲージ)は、Webページを作成するために使用されます。
HTMLではタグと呼ばれる文字を使って、文章や画像などのコンテンツをグルーピングしていき、リンクや見出しなど役割・機能を指定してWebブラウザで表示されるコンテンツを作成します。
CSS(シーエスエス)
CSS(カスケーディングスタイルシート)はWebページのスタイルと視覚的なフォーマットに使用されます。
HTMLがコンテンツの前後関係・親子関係・リンクなど構成を指示していくのに対してCSSではコンテンツの各所の見た目や配置がどうなるなど主に視覚的な側面からデザインしていきます。
例えば、同じページをスマートフォンの縦長な画面でもパソコンの横に広い画面でも見やすく表示できるようコンテンツの幅や文字サイズなどをアレンジしていきます。
Python(パイソン)
見た目が整然としているため他の人が書いたプログラムが読みやすく、Web開発、科学計算、データ解析、AI(人工知能)など、さまざまな用途で使用されます。
近年急速に普及したAIのプログラミングで使われることが多い言語です。
PHP(ピーエイチピー)
主にWeb開発で使用されサーバーサイドで動くスクリプト言語です。HTMLやCSSと組み合わせて、動的なWebサイト構築に使用されます。
世界のWebサイトの4割以上を支えているブログソフトのWordPress(ワードプレス)もPHP言語で開発されています。他にもメール送信やフォームの処理などPHPがWebサイトで活躍する場面は多彩です。
Ruby(ルビー)
まつもとゆきひろ氏が開発し1995年に公開されたプログラミング言語です。
読みやすさと洗練された構文が特徴の言語で主にWeb開発や自動化などに利用されます。
企業によって管理されない新たなSNS(ミニブログ)として話題となったmastdonの開発でもRubyが使用されています。
Java(ジャバ)
企業向けアプリケーションの開発に広く使われているオブジェクト指向のプログラミング言語で、JVM(Java Virtual Machine)と呼ばれる仮想のコンピュータで動くように設計されています。JVMはパソコンや家電など多くの環境に移植されており、多くのプラットフォームでJavaのプログラムを動かせます。1995年にサン・マイクロシステムズにより開発され、特定のOSに限定されないアプリケーションを開発できることで広く普及しました。
JavaScript(ジャバスクリプト)
動的でインタラクティブなWebサイトを作成するための言語として開発されました。
当初はWebブラウザで実行できるフロントエンドのWeb開発で使用されましたが、今ではサーバーサイドでも利用が広がっています。名前はJavaと似ていますが、別のプログラミング言語です。
TypeScript(タイプスクリプト)
JavaScriptと比べてプログラミングでエラーの原因となりやすい記述ルールを厳格化し、誤解が少なく効率的に実行できるプログラミング言語です。
JavaScriptの上位互換となる言語で、静的型付けなどの機能が追加されています。最終的にJavaScriptに翻訳して実行できるためWebブラウザで動く言語の一つとして使えます。
Swift(スイフト)
Apple社が開発した汎用的で高速なプログラミング言語です。iOSやmacOSのアプリ開発に使用されます。
従来Apple製品で使用されていたObjective-C言語と比べると簡潔で理解しやすい文法になっており、初めてApple製品向けのプログラミングを始めるのに適しています。
Kotlin(コトリン)
元々さまざまなプログラミング言語を便利に使うツールを提供していた企業により2011年に発表され、Javaと同様に幅広い環境で動くアプリケーションを開発できるクロスプラットフォームな静的型付け汎用プログラミング言語です。
2012年にオープンソース化され、Androidのアプリ開発にも利用できるようになりました。
Scala(スカラ)
幅広い環境で動作するソフトウェアを作成できる高水準プログラミング言語。関数型言語とオブジェクト指向のプログラミングを組み合わせており、簡潔な文法でモダンなプログラミング言語です。
ビッグデータを高速に処理したり、AI(人工知能)の開発にも利用されています。
プログラミングが向いている人
プログラミングをするのに向いている人の特徴は何でしょうか。一般的にプログラマーに重要な特性として挙げられるのは、
- 論理的思考力がある。
- 自発的に学び続けることができる。
- チームで物事を進めるための協調性がある。
- 集中力がある。
などの特徴です。順番に見ていきましょう。
論理的思考力
優れたプログラミングをするには論理的・体系的に問題を分析し、複雑な問題を小さく管理しやすい部分に分割します。複雑なシステムを理解しパターンや関係性を見いだす能力はプログラミングにとって重要です。
自発的に学び続ける
プログラミングの分野は常に進歩し変化を続けています。優れたプログラマーは新しい技術やプログラミング言語、開発手法などを継続的に学ぶ意欲を持っていることが大切です。
チームで物事を進めるための協調性
プログラミングはプロジェクトチームでおこなうことが多く、チームメンバーと効果的にやりとりしながら働き方を調整していく能力が重要になってきます。コミュニケーションし、チームメンバーなどのアイデアに耳を傾けつつ自分の知識をアップデートしていく姿勢が重要です。
集中力
優れたプログラミングをおこなうには、集中し細部にまで思考をこらす能力が求められます。難しい問題にぶつかっても集中力を保ち、冷静な対処が大切です。
他にも、クリエイティブな思考力や問題解決能力があることや好奇心を持ち物事の仕組みに興味があり、テクノロジーに対する情熱を持っている人はプログラミングが向いています。
プログラミングの勉強法を紹介
プログラミングを学ぶには、いくつかの方法があり、方法ごとに長所が異なります。プログラミングの勉強法をご紹介していきます。
独学
独学でプログラミングを学ぶ場合は、書籍を読む・学習サイトを使うなどの方法があります。
プログラミングに関する書籍は多数出版されており、特定のプログラミング言語を解説している書籍が多いです。書籍で学ぶメリットは、基本的に1ページ目から順番に読み進めることで読み終えることで断片的でなくまとまった知識を学べることです。
学習サイトを使う場合は、単元毎のコンテンツを順番に進めていく形式が多いです。動画なども用意されているため最初に概要を把握する使い方もできます。いくつかのサイトをご紹介します(有料のコースも含みます)
・CODEPREPはWebで使用される技術を中心に穴埋め形式で実際にコードを書き学習できるサイトです。
・ドットインストールはWebサイト作成やいろいろなプログラミング言語、デザインなどを動画で学べるサイトです。無料でアクセスできるレッスンもあります。
・Progate[プロゲート]はWebで使われる言語を中心としてJavaやデータベースなどの単元をスライドを見ながらブラウザでコードを動かして学べます。無料で受けられるレッスンもあります。
・Udemyはプログラミング以外にもいろいろな授業を動画で学べるオンライン学習サイトです。基本的にはコース毎の買い切りとなります。
・コードガールこれくしょんはポピュラーなプログラミング言語を動画で学べるサイトで、ゲーム感覚で学習できます。
プログラミングスクール
スクールに通って学ぶ方法は、プロの講師から学べるため、学習の進め方の相談や独学では解決が難しいバグに出会った場合なども講師に質問できたりするためプログラミングを効率的に学べますが、費用は高額です。
メンター
メンターとは、信頼できる相談相手として頼れる存在で、身近にプログラミングを相談できる知り合いがいない場合は特に有効です。
独学では難しいと感じていても何かあればメンターにピンポイントで相談できプログラミングスクールほど高額ではなく利用できるのでつまづかずに学習を進められます。
メンターはプログラミングを学ぶ方にとって心強い存在ですが、個人のメンターには相性などもあるためまずは低額なプランを試してみるなど上手に利用しましょう。
まとめ
プログラミングの基本から詳細に取り上げてきました。
- プログラミングでWebサイトやゲーム、アプリ開発、ロボットや人工知能の開発ができる
- プログラミングが活かせる職業にはプログラマーやSE、データサイエンティストなどがある
- プログラミングを学ぶ方法は独学、スクール、メンターの利用など
- プログラミングを学ぶと、今の時代に合った思考力が身につき、転職や収入の面で有利になる
プログラミングのスキルを発揮すると、アプリやAIなど多くの人の暮らしを便利にできるだけでなく企業の収益アップや日々のちょっとした雑務を自動化などもできます。
転職や就職でも優秀なプログラミングスキルは有利になるので、ぜひプログラミングに触れてみてはいかがでしょうか。
フリーランスの案件をお探しの方はTechReachにご相談ください。
TechReachを運営する株式会社アールストーンはIT・Web業界特化で15年以上の実績がございます。
そのため、高単価・高品質な数多くの案件紹介が可能です。
また一人のコンサルタントが企業と求職者様の担当を行う「両面型エージェント」を採用しているため、あなたの希望に合う案件がきっと見つかるはずです。
TechReachを活用して、理想の案件を見つけましょう!