勉強するプログラミング言語の選び方 – ITエンジニアを目指す人へ

プログラム言語の選び方 IT企業へ
プログラム言語の選び方

パソコンにもっと詳しくなりたいと思う人や、将来IT企業へ就職したいと考えている人の中には、プログラミング言語を勉強したいけど、何の言語を勉強すればいいのかも分からず困っている人もいるでしょう。書店やネットの記事などでプログラミング言語について調べると、あまりの選択肢の多さに驚く人もいるかもしれません。

プログラミング言語はITエンジニアの中でも特にプログラマーという職種で使われますが、その他の職種においても知識が役に立つことが多いです。熟練のエンジニアにはプログラマー経験者は多く、IT業界で働くことを考えるのであれば、勉強して損のない分野です。今回の記事では、私自身がIT企業の開発現場や新卒採用で面接担当していた経験等を活かしながら、プログラミング言語の選び方について紹介していますので、是非参考にしてみてください。

  1. プログラミング言語の基礎知識
    1. プログラミング言語を扱う代表的な職種
      1. プログラマー
      2. ネットワークやデータベースのエンジニア
      3. IT以外の企業における情報システム部門
    2. プログラミング言語と勘違いしやすい「その他の言語」
      1. スクリプト言語
      2. マークアップ言語
  2. プログラミング言語選びの考え方
    1. IT企業の現場での判断基準
    2. 「作るソフトウェアの種類」で決めるのが基本
  3. 分野によって異なるプログラミング言語
    1. Web
      1. インタプリタ言語とコンパイル言語
      2. インタプリタ言語はお手軽で開発効率も高い
      3. コンパイル言語は別分野の開発も容易
    2. スマホアプリ・ゲーム
      1. iOS – Swift
      2. Android – Java
      3. 日本だけ異常な「スマートフォン市場」
    3. 大規模な業務系ソフトウェア
      1. 就職前にできるプログラミング学習の方向性
    4. IoT/電子機器への組み込み系
      1. OSのない世界でハードウェアを直接制御 – C/C++
    5. AIを活用した最新技術関係
      1. Python学習の危険性
  4. 複数のプログラミング言語習得 – エンジニアの進む道
      1. 複数のプログラミング言語の習得で上流工程へ
      2. 特化した学習はスペシャリストコース
  5. プログラミング言語学習と相性の良い技術分野
    1. ネットワーク – 地味だが将来安定
    2. データベース – 収益性と汎用性が高い
    3. サーバー – ひとりで全部構築可能に
    4. OS (Operating System) – 人と差がつく重要知識
    5. デザイン – 楽しいけど終わりのない世界
  6. 自分の描くエンジニア像をめざして勉強しよう

プログラミング言語の基礎知識

プログラミング言語とは「コンピューターに対して命令する」ための言語です。動作環境や用途によって、様々な種類のプログラミング言語があります。プログラミング言語で実際にプログラムすることをプログラミングと呼びます。近年ではプログラミングと表現することが多いですが、従来はプログラム言語と呼ばれており、今もその名称で呼ぶIT企業は多いです。

ここでは少しプログラミング言語について簡単に紹介します。

プログラミング言語を扱う代表的な職種

プログラミング言語は、IT社会と言われる現代においては様々な場面で利用されていますが、最も利用されているのはソフトウェアの制作現場で、IT企業では欠かすことができません。

どのような職種で利用されているのか、代表的な物を紹介します。

プログラマー

特に「プログラマー」という職種では、勤務時間のほとんどをプログラミングに割くことになるでしょう。プログラマーは、ソフトウェアで必要とされることを実現するために、プログラミング言語を使用して通訳するような作業を、建設業のように地道に積み上げていく、といった作業を行います。

近年のIT業界では、WindowsやLinux, AndroidやiOSといったコンピュータの基本制御をするソフトウェア : OS(Operating System)上で動作するプログラムを制作することが多くなっています。直接コンピュータを制御するプログラムとしては、IoTと呼ばれる電子機器の組み込み系などでは、小さく速く高機能といった高度なプログラムが追求され続けています。

募集の多いプログラマー採用について、採用企業側の視点からアドバイスを紹介している記事もありますので、プログラマーを目指している方は、是非こちらの記事も参考にしてみてください。

ネットワークやデータベースのエンジニア

IT企業では、プログラマー以外の職種でもプログラミング言語を扱う機会はあります。ネットワークエンジニアやデータベースエンジニアなど、ソフトウェアを支える技術者の仕事の中でも、簡単なソフトウェアを制作してテストに活用したり、プログラム制作の作業のうち、ネットワークやデータベース等の部分的な仕事を任される場合もあります。

プログラマーと同じソフトウェアのプログラムを作成していても役割は異なり、通常は担当するモジュールで業務を分割するなど、責任範囲を明確にして共同作業が行われます。

IT以外の企業における情報システム部門

プログラミング言語は、IT企業以外でもITを扱う職種の一部では利用されます。業種が異なっていても、現在はどの企業もITを活用した業務効率化を推進する傾向にあり、大きな企業ほどIT推進課や情報システム部のようなITを専門的に扱う部署を設けていたりします。そういった部署に社内SEといった職種などで配属すると、小さな案件であれば部署内でプログラムを作って対応することもあるでしょう。社内対応が難しい技術的に困難な案件や、規模が大きな案件はIT企業へ発注するという業務の流れはよくあります。プログラム(ソフトウェア)を作ることを主目的とするIT企業との大きな違いは、主目的は問題の解決や業務改善であって、プログラム自体は手段の一つにしか過ぎないという点です。

プログラミング言語と勘違いしやすい「その他の言語」

プログラミング言語に詳しくない人は、コンピュータに言語を打ち込むものはプログラミング言語とよく勘違いしてしまいます。本職プログラマーの人やIT企業の面接などで勘違いした発言をしてしまうと恥ずかしい思いをするかもしれないので、少し紹介しておきます。

スクリプト言語

インターネットのWebサイトなどで広く使われるJavaScriptや、Linuxなどで使われるShellScriptなどは、厳密にはプログラミング言語ではありません。これらはスクリプト言語に分類されます。プログラミング言語との決定的な違いは「コンピュータの制御ができない」点です。コンピュータの上で動いているソフトウェア上での限定的な動作を制御するための言語で、それ以上の事ができない点で大きく異なります。

JavaScriptは世界的に広く使われるようになっていて、現在のIT業界では欠かせない技術の一つですが、他のソフトウェア(ブラウザなど)がなければ動かすこともできないという位置付けの言語です。一方で同じWeb業界で使われる言語でも、PHPのように言語自体の能力としてはコンピュータの制御も行えるというものもあり、それらはプログラミング言語として明確に区別されます。

マークアップ言語

XML(Extensible Markup Language)やHTML(Hyper Text Markup Language)といったマークアップ言語もプログラミング言語とは異なります。これらはコンピュータ上で利用される独特な言語ではありますが、構造化された文書といった位置づけで、プログラムとデータで区分けすると「データに該当する部品」となります。またHTMLは、IT企業での仕事としてプログラマーとデザイナーに振り分ける場合にはデザイナーが担当することになる分野になります。(プログラマーとしても、デザイナーからHTMLを受け取って必要な処理を施すという作業分担はよく行われます)

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

プログラミング言語に多くの種類がある事が分かっても、実際何を選んで勉強を始めればよいのか悩んでしまうこともあるでしょう。また、有識者や経験者に相談しても適切な回答を得られなかったり、就職した後で勉強した言語の知識を活かせないという事例もよく耳にします。

ここではプログラミング言語の選び方について紹介していますので、是非参考にしてみてください。

IT企業の現場での判断基準

まず最初に、ソフトウェア制作を実際に行うIT企業ではどのようにしてプログラミング言語を選んでいるのかを紹介します。

プログラミング言語には様々な種類のものがありますが、「コンピュータに命令する」という能力では共通しています。IT企業で制作するソフトウェアが決まると、チーム編成やスケジュールなど必要な事を決めていった後で、規模にもよりますが、製作チームで「どの言語」で「どういう体制」で製作していくのかといったことを決めていきます。決める方法は話し合いだったり、チームの編成から自然と決まる場合や、リーダーの一声で決まるなど、状況によって異なります。

判断基準は、「対象となるソフトウェア」「動作環境」が最優先で、次に「作れる人」「作った経験」といったあたりになります。

いくら経験値の高いプログラミング言語があったとしても、対象ソフトウェアの動作環境で動くソフトウェアを制作できない、または適さないという場合は、残念ながら選択肢から除外せざるを得ません。

特殊な環境で動作する機器(新製品の電子機器や、新発売されるゲーム機等)の場合は、完全に新しい環境でまったく未経験のプログラミング言語での作業を余儀なくされるといったことも珍しくありません。

「作るソフトウェアの種類」で決めるのが基本

就職などを目標にしてプログラミング言語の勉強を始めたいと考えている場合は、自分が就職したいと思っている「会社が作っているソフトウェア」の種類や、自分が「どのようなソフトウェアを作る仕事をしたい」と思っているかで選びましょう。

IT企業で働いている人に「どのプログラミング言語を勉強したらいいか」と聞いても、適切な回答を得ることが難しいのは、プログラミング言語の選択においては「あなたは何を作りたいのか」が最も重要な出発点だからです。

私が同様の質問をよく知らない人から漠然と聞かれた場合は、とりあえず「C言語」と答えるかもしれません。しかし、近年C言語でソフトウェアを制作する機会はあまり多くなく、生産性も高いとは言えないため、多くの場合習得した技術を直接活かせる機会は少ないでしょう。具体的な目標を添えて質問されれば、その人にあった適切なアドバイスができるでしょう。

C言語は、学習するのが大変な言語ではありますが、現在広く利用されているプログラミング言語の「設計思想の原点」のような優れた言語です。C言語を理解できれば他の言語を習得するのは比較的容易ですが、その逆はそうとは限りません。ここまで高度に発展した情報産業の中においても、今もなおC言語やC++といった大変な言語を使って、精密機器の制御ソフトウェア製造などで活躍しているエンジニアには本当に頭が下がります。

分野によって異なるプログラミング言語

勉強を始めるプログラミング言語を選択したいという方のために、分野ごとにどのような言語が選択されているかを紹介します。実際には企業やプロジェクトのリーダーの判断など、様々な要因で異なる言語が選択されることもありますが、近い言語を習得しておけば、きっとその知識は役に立ちます。

プログラミング言語イメージ

Web

現在の情報化社会で外すことができない分野の一つが「Web」です。一言でWebといっても、Amazonのような世界規模の巨大インフラから、小さな企業のホームページまで様々です。意外と知られていないかもしれませんが、スマートフォンのアプリなどでも、通信機能などでWebの技術を使って制作されているものも少なくありません。

執筆時点(2024年)ではWebの仕事は山積みで、驚くほど技術者が多く、技術者のスキルレベルの高低の幅が凄まじい業界・分野です。デザインとも密接なソフトウェアが多く、SNSやYoutubeなど流行に非常に近いソフトウェアを扱う分野である反面、技術やデザインの流行など盛衰の流れが速く、習得した技術が数年で使われなくなるといったことも起きる業界でもあります。IT業界の中でもデザイン性が重視されることもあるためか、業界内でも特に女性が多く活躍している分野でもあります。

インタプリタ言語とコンパイル言語

プログラミング言語としては、PHPRubyのようなインタプリタ言語が選ばれることも多いですが、JavaC#のようなコンパイル言語も選ばれます。

この判断は、前者はプログラムがそのまま実行されるため手軽な反面、プログラムの改変の危険性や実行速度の問題などがあるため、大規模なシステムなどでは、プログラムが改変できない状態になるコンパイル言語を選択するといった基準で行われたりします。

インタプリタ言語はお手軽で開発効率も高い

PHPは既存システムの拡張などの仕事も多く企業では必要とされる場面も多く、Rubyは開発効率を重視する企業などで積極的に採用が進められているようで、どちらもWeb業界を支える重要な技術です。

コンパイル言語の開発環境は、手順が多いこともあって複雑で大規模になりがちですが、PHPやRubyのようなインタプリタ言語の開発環境は非常にコンパクトでお手軽です。作成したソフトウェアを一般公開する手順などもシンプルで、問題発生時などはサーバー上のファイルを変更して暫定対処することも可能という取り回しの良さは魅力的です。

その反面、ファイルを変更されてサイトの内容を書き換えられてしまうなどの危険性もあるため、セキュリティーについては十分な配慮が必要になります。納品したソフトウェアから、IT企業の技術を盗まれる危険性もあるため、機密性の高いシステムの製作には不向きという特徴もあります。

コンパイル言語は別分野の開発も容易

JavaやC#といったコンパイル言語は、Web以外の分野でも使われる言語なのがとても強く、JavaならAndroid、C#ならWindowsのソフトウェアといった別分野の開発を容易に行えます。通常業務では別の分野で活躍しているエンジニアが、教育などで大きな負担・期間を必要とせずWeb開発のプロジェクトに携われることもあり、IT企業側でもメリットが多いプログラミング言語と言えます。

複数環境への対応だけでいうと、Javaはプログラミング言語自体が環境に依らない言語として設計されていることもあり、その点においては最強と評価しても良い程です。ただし、環境を吸収する中間レイヤー(VM)のせいで成果物の速度が若干遅いという欠点があり、選択肢から外されてしまうこともあります。

スマホアプリ・ゲーム

多くの人が生活に必要不可欠と感じる程に普及したスマートフォンですが、スマートフォン上で動作するアプリやゲームなども当然プログラミング言語で作られています。スマートフォン用のアプリ開発をする会社に就職したい人や、個人でアプリを販売して収益を得たいと考えている人は、迷わずスマートフォン開発で利用されているプログラミング言語を勉強しましょう。

今のスマートフォンは、概ねiPhoneとAndroidの二強状態です。iPhoneはiPadなどもあって紛らわしいので、IT業界ではiOSと呼称されることの方が多いかもしれません。例外はありますが、近年は「スマートフォン開発」というと、iPadのようなタブレットも込みで扱われるようになっています。

iOS – Swift

iOSの開発は独特で、現在はSwiftという比較的新しいプログラミング言語が利用されます。もちろん他の言語で製作する手段もありますが、SwiftはNative環境/言語と呼ばれ、OS提供側(Apple)の想定している開発言語です。当然最速で最新の機能を利用できるため、IT企業では概ねこれらの言語で製作が進められます。

Swiftはスマートフォンアプリだけでなく、Mac用アプリケーションやApple Watchなどの開発にも利用されるプログラミング言語です。SwiftはAppleが2014年に電撃発表したプログラミング言語で、IT企業は従来使われていたプログラミング言語のObjective-Cからの移行や技術者の育成に追われることになりました。

Appleは大企業で日本での製品人気は高いですが、これまで何度も技術の入れ替えをしてエンジニアのノウハウを泥に変えてきた歴史があるので、勉強を始める場合は、ある程度は愛で苦しみを乗り越える覚悟を決めておきましょう。

Android – Java

Androidの開発はJavaで行うのが主流です。

iOS同様Java以外の他のプログラミング言語での開発も可能ですが、AndroidのNative言語はJavaのため、IT企業の多くはJavaを使っていることが多いです。低コストで複数プラットフォーム展開をする場合など、特殊な条件下では他の言語が選ばれることもあります。

JavaはIT業界ではWebを含めて広い分野で利用されているプログラミング言語で、世界的な技術者の数も非常に多いのが特徴です。これからプログラミング言語の勉強を始めようと考えている人は、まずはJavaでのスマートフォンアプリから勉強を始めて、その後Web分野へ勉強の範囲を広げていくといった勉強の進め方も良いでしょう。

日本だけ異常な「スマートフォン市場」

スマートフォンの環境は日本市場はかなり特殊で、iOSが半分以上占めているので、日本向けのアプリやゲーム開発に携わる場合は、iOS,Androidどちらを勉強していてもよいと思います。

逆に世界的にはiOSは高額で敬遠されていることもあり、シェアは低下傾向で、今は30%を切っている状況です。海外を視野に入れてスマートフォンソフトウェアの制作を志すのであれば、日本と違ってAndroidが優勢なので、勉強するプログラミング言語の選択は慎重に行いましょう。

出典 : https://gs.statcounter.com/os-market-share/mobile/worldwide#monthly-202308-202308-bar

大規模な業務系ソフトウェア

販売管理システムや企業の基幹システムなど、大規模なソフトウェアを扱う企業への就職を考えているのなら、Javaなどの汎用性の高い言語を学ぶのが無駄がないですが、Windowsに絞るならC#なども選択肢にはいるでしょう。

ただ、この規模のプログラムということになると、新卒のプログラマーを簡単に制作・実装へ参加させるようなことはなく、恐らく一定期間の教育実習などを終えてから、徐々に実作業が始まってくるということになると思われます。また、大規模システムとなると、開発を効率よく安全に進めるために、パッケージライブラリといった既存の製品群を持ち込むことも多く、自社のパッケージがあれば積極的に活用していきます。そうなると、プログラミング言語の知識よりも、パッケージやライブラリの知識の方が重要になり、それらの多くは社外秘の技術なので就職してからしか学ぶことができません。

就職前にできるプログラミング学習の方向性

事前にプログラミング言語の勉強をする上では、言語の文法や仕組みと共に、ライブラリフレームワークといった既存資産の活用や、複数人でのチーム開発を経験するといったことが、就職活動をする上では役に立つことも多いかもしれませんので、可能な範囲で検討してみましょう。

C#についてもう少し補足すると、C#はWindowsアプリケーションの開発でよく利用されるプログラミング言語で、非常に生産性が高く、開発環境も優れています。個人で所有しているWindowsのパソコン上で動作するソフトウェアを制作できるため、勉強のやりがいもあるでしょう。C#はWindowsアプリケーションだけではなくWeb制作も可能なプログラミング言語ではありますが、Windows Serverを利用してのWeb開発は初期費用が高いこともあって業界では選択肢から外れることも多く、就職する企業にもよりますが、Windows開発程には仕事が多くないことには留意しておきましょう。

IoT/電子機器への組み込み系

今は身近な電子機器にもソフトウェア技術が必要な時代になっています。冷蔵庫や電子レンジのような家電製品から、体重計や腕時計のような小さな機器にもソフトウェアが搭載されています。近年では機器がインターネットと繋がって多くの機能を提供することも多く、総称してIoT(Internet of Things)と呼ばれます。こういった機器のソフトウェアを制作する技術者を「組み込み系エンジニア」と呼び、現在のIT業界において、「最もコンピュータに近く、人間から遠い低級言語を操る難しい仕事」と言えるでしょう。

組み込み系の世界では、一部Android搭載機などもありますが、WindowsやMacといったいわゆるOSがないことも多いです。通常プログラマーは、OSが提供してくれる機能を呼び出すことで様々なソフトウェアを生み出すのですが、それらが一切ないため、直接ハードウェアを制御しなくてはなりません。中には電気信号的な0と1の羅列を処理するといった細かなプログラムも含まれてきます。

OSのない世界でハードウェアを直接制御 – C/C++

ハードウェアを直接制御する細かなプログラムを制作する現場では、C/C++といったプログラミング言語が活躍します。最終手段は機械を直接制御するアセンブラ(アセンブル)言語が使われることもあるかもしれない世界です。アセンブラはかつての情報処理技術者試験でのCASLのような言語です。C++言語などは機器と近い部分での処理を実現することができることもあって、デバイスドライバなどの開発でも利用されることも多いですが、手続きが多く制作に時間がかかりすぎてしまうため、Webやスマートフォンなど人間に近いソフトウェアの開発には不向きで、ほとんど選ばれることはありません。

組み込み系のエンジニアは難しいと表現してきましたが、難しいの方向性が異なるだけで、プロのエンジニアはどの分野でも難しい部分はあります。組み込み系においてOSがないことをデメリットのように記載しましたが、逆に言うと「出来ることが少ない」とも言え、それは技術者にとっては覚えることが少なくて済むメリットともいえるでしょう。限られた小さな世界でできるだけ大きなことを実現する技術力が要求される反面、Webやスマートフォンのような分厚いドキュメントやマニュアルを読み解く必要性が少ないといった側面もあります。

AIを活用した最新技術関係

Pythonというプログラミング言語を耳にしたことがある人も多いかもしれません。IT業界ではこの5年10年ほどで急速に注目され、利用されることも徐々に増えてきている言語です。PythonはAIの研究や開発で利用されてきた経緯があり、AI関連のライブラリやドキュメントなどはPythonで提供されているものが多く、今後AIを取り入れようとする企業はPython技術者の採用や教育に追われているのがここ数年の動きです。

最新技術が好きな人や、AIの未来に夢を抱いているような人は、是非Pythonを選択してみてください。これからのIT業界ではAIは避けて通ることはできない分野で、Pythonの技術はきっと役に立つでしょう。

Python学習の危険性

ただし、Pythonに注目が集まったのはここ数年で、AI以外の分野への活用が模索され始めたのもごく最近の話であることには注意が必要です。既存の製品は他の言語で製作されたプログラムが多く、Pythonに求められるのはAIやその周辺技術というのが現状です。

今後広がることが予想される分野であっても、現状Pythonだけしかできない技術者は、よほどの大企業でない限り採用に踏み切るのが難しいかもしれません。IT企業の多くはPythonの資産を多くは持っていないため、コストを抑えるためにPythonが選択肢にすら入らないことが多いことを理解しておきましょう。

可能であれば、メインのプログラミング言語 + PythonといったITの現場に合わせた勉強を検討してみましょう。Python一本に絞るくらい熱意があるのであれば、自分で起業して「最先端技術を他社に提供する」というのも一つの選択肢かもしれません。

複数のプログラミング言語習得 – エンジニアの進む道

IT業界で働くプログラマーにはいろいろな人がいるわけですが、プログラミング言語についての考え方に違いがあって、概ね2種類の人に分かれます。

  • 一つのプログラミング言語に特化する
  • 複数のプログラミング言語を使いこなす

どちらの方が多いかは企業によって様々です。請負が主流の企業では営業方針にも影響されますし、自社製品を制作する企業の場合、企画や企業のブランディング方針などにも影響されます。どちらが正しいとか優れているということではありませんが、両者はそれぞれエンジニアとして進む道が異なってきます。

ここでは、これからプログラミング言語の勉強を始めようと考えている初心者の人たちに向けて、複数言語を習得していくことでエンジニアの将来にどのような影響があるのか簡単に紹介します。

複数のプログラミング言語の習得で上流工程へ

複数のプログラミング言語を習得するということは、特化して経験を積んでいるエンジニアと比較して、それぞれの言語についての経験値が低くなるのは避けられません。各言語の仕様も日々変化している状況でもあり、特化していても追いかけ続けるのが大変なこともあり、差は開く一方です。

それでも受託開発などの関係で、経験のないプログラミング言語での開発を余儀なくされることは、IT企業で働くプログラマーにはよくあることです。それでも期日までに要求されているものを仕上げなければならないため、大変な思いをすることになりますが、知識や経験と共に、幅広い視野が得られることでしょう。

こういった経験を積み重ねていくと、細かな文法など知らないことはあるものの、概ねその環境での開発にかかる大変さ・コストなどが推測できるようになり、徐々に管理面の仕事もこなせるようになっていきます。SE(システムエンジニア)PM(プロジェクトマネージャ)といった上流工程を担当するエンジニアの中には、驚くような数のプログラミング言語の開発経験があることも多いです。そういった人たちの多くは、新しいプログラミング言語を学ぶというより利用するといった感覚で、触れたことのない環境に臨んでいるでしょう。

複数の環境やプログラミング言語の経験から、上流工程のエンジニアとして制作指揮やプロジェクトの進捗管理などで活躍するのに必要な、広い視野や考え方が培われ、他者からも評価されます。

特化した学習はスペシャリストコース

単一のプログラミング言語を勉強し続け、最新技術を追い求め続ける人もIT業界にはたくさん存在します。その分野においては絶対に負けたくないという思いと、この分野なら自分に任せて欲しいという強い思いがある人が多く、SEやPMといった上流工程のエンジニアから特に頼りにされる存在です。

自分の慣れた分野で、誰よりも早く品質の良いソフトウェアを生み出し、信頼されて評価も高くなるという一方で、他の分野の仕事には手が出せないという企業内での取り回しの悪さがあり、この道を貫けるかどうかは企業内の人員の採用や教育方針に依るところが多い部分にもなります。

ただ、得意な部分と苦手な部分が明確になるので、転職などでのキャリアアップを視野に入れると、自分も企業もお互いに選びやすいというメリットもあります。複数の言語を習得していく場合でも、一つ得意なプログラミング言語や環境があると、エンジニアとして有利になる場面は多くあります。

プログラミング言語学習と相性の良い技術分野

ここからは少し余談ではありますが、プログラミング言語の勉強を進めていく過程で、合わせて勉強しておくのにオススメな技術分野をいくつか紹介しています。

就職活動での面接などで、ただプログラムを勉強していたと漠然に自己アピールするのではなく、何々を扱うプログラムの制作について学んでいたというと、強烈なアピールになります。自分の目指す分野に近そうな技術を選んで、学ぶプログラミング言語からそれを扱う方法を勉強するといった流れで、並行して学んでいくと良いでしょう。

ネットワーク – 地味だが将来安定

今はインターネットを含め、ネットワークを扱わないソフトウェアが想像できない程に一般的になっています。利用者としては繋がる・繋がらない程度の感覚で使っているネットワークですが、その裏ではエンジニアの方々が制作した膨大な技術の結晶が動いています。

プログラマになるということは、今度はそういった技術を使ってソフトウェアを作り、利用者に提供する側になるという事です。プログラミング言語と並行して勉強を進める場合、ネットワークの原理を知り、環境を設定できるようになり、それをプログラムから利用するという一連の流れを学習していくと良いでしょう。

高度に発展した現代社会のITサービスでの利用シーンやソフトウェアの形態は様々ですが、ネットワークの技術はIT業界の中でも「かなり安定した古い技術で変化が少ない分野」です。一度学んでしまえば、よほどのことがない限りその知識が無駄になることがないので、とてもオススメです。

ただし、基本的には目に見えない部分の勉強でひたすら地味なので、モチベーション維持のためにも、勉強で作るプログラムは少し見た目に関係したものにすると良いかもしれません。

データベース – 収益性と汎用性が高い

情報化社会と言われる現代では、多くのものがデータ化された状態で管理されています。膨大な量のデータを扱うことに特化したソフトウェアはデータベースと呼ばれ、ネットワークと同じくらい利用頻度が高い技術分野です。

利用シーンとして想像しやすいのはAmazonのようなネットショッピング(EC)などの、商品の販売や売り上げの管理をするソフトウェアなどでしょう。見えにくいところでいうと、スマートフォンアプリのゲームのデータなどでも小型のデータベースが埋め込まれて利用されていることも多いです。

データベース技術は、エンジニアの力量がソフトウェアの品質やパフォーマンスに直接現れる分野でもあり、設計から利用まで独特な専門知識が必要になります。技術文書も多く、学ぶこと自体は比較的容易ではあるものの、学んだ知識を如何に活用していくかが腕の見せ所という、やりがいのある分野です。

技術的には安定してはいるものの、データベース自体も更新や流行が少なからず存在しているため、ある程度は知識のアップデートは要求されます。ネットワークはハードウェアに近く、データベースはソフトウェアに近いといった印象の技術で、ソフトウェア制作現場では、データベース技術者がプログラムの制作を部分的に行うといった場面はよくあります。

プログラミング言語と並行して勉強すると、想像以上に役立つソフトウェアが制作できることに驚くかもしれません。データの登録と集計を行うような単純なソフトウェアでも、内容によっては販売可能なレベルのものに仕上げることも夢ではない分野です。

データベース学習については、以下の記事でも詳しく解説していますので、興味のある方は是非ご覧ください。

サーバー – ひとりで全部構築可能に

一般の人から見えることがないサーバーという技術分野は、ネットワークと同様とても地味ではありますが、日常生活で私たちは頻繁に利用しています。代表的な所ではWebサービスを提供するWebサーバーで、このサイトで呼んでもらっている文書もWebサーバーから提供されています。インターネットを介してサービスを提供する場合、サーバーを準備してそこにプログラムを配置して利用者に届けるという形態がとられることが多く、サーバーはインフラとしての役割が強い分野です。

制作するソフトウェアによってサーバーに求められる役割が異なり、サーバーを構築する技術をもったエンジニアが適宜準備・メンテナンスすることでインフラが支えられています。Webサービスを作るプログラマを目指していても、サーバーについての技術力がなければ、その制作したプログラムを利用者へ提供することができないということになります。

自分の制作するプログラムでサーバーが必要だと気づいたときからでも、是非サーバー技術についても学んでみてください。きっと勉強の過程で視野が広がり、プログラムについても理解が深まり、プログラマーとしての成長にもつながるはずです。プログラミング言語とサーバー構築技術が備わっていれば、自分一人でサービスを構築して提供することも可能となり、就職だけでなく起業も視野に入ってくるでしょう。

OS (Operating System) – 人と差がつく重要知識

意外と見落としてしまいがちですが、利用しているOSについての理解を深めておくことも重要です。特にWindowsのアプリケーション開発や、スマートフォンの開発を目指している場合には、他のプログラマとの差をつけるのに役立つ知識です。

具体的には、スマートフォンの場合だと、最新OSで提供されたカメラの機能を制御する方法だったり、Windowsの場合でも表面的なものではなく、例えばFirewallやユーザー権限など、少し難易度の高い分野について知識があると、自分の価値や評価を高めることに役立つでしょう。

特に企業で最新技術の活用方法を率先して習得すると、顧客の興味を惹くことができるため営業部門に喜ばれます。そういった最新技術について興味をもって触れていく習慣をつけておくと、就職した後にもきっと役立ちます。何より実践していて楽しい世界なので、折角プログラムを勉強してくのであれば、是非挑戦してみましょう。

プログラミング言語の勉強を進めていると、気づいたらOSの機能を利用しているということもよくあります。最初のうちは、何がプログラミング言語の機能で、何がOSの機能なのか判断が難しいかもしれません。Windowsとスマートフォンのように複数のOSに触れてみることができれば、理解に役立つでしょう。

単純な例を挙げると、プログラムからファイルを操作するといった処理を行う場合、ファイルの入出力はOSの機能なので、OSが変わるとプログラムの書き方が変ったり、呼び出した後の挙動が変ったりします。そういったことを「意識して」勉強していくことが、プログラマとしての実力を高めることに繋がるでしょう。

デザイン – 楽しいけど終わりのない世界

これはエンジニアにとって避けることができない分野なのに、技術と違って明確な答えがない世界のため、プログラマの中には学ぶことを嫌っている人もいるような分野でしょう。ですが、人の目につく部分があるソフトウェアの場合は、必ずプログラムとデザインが接する部分が存在します。

重要なのは、どのようなデザインが美しいとか流行しているといったことではなく、デザインを扱う方法だったり、デザイナーとの連携に必要となる技術的な知識です。具体的な例では、顧客がデザイン的に「画面の要素を動かしてほしい」という要件を提示してきた際に、デザイナーでは技術的に対応が不可能といったことがIT現場では頻発します。それをプログラマがプログラムによって実現しなければならないといった流れは、Web制作の過程では日常茶飯事ともいえるでしょう。

プログラムでデザインの制御プログラムが求められることは少なくないので、大体どのようにして作るのかを、プログラムの勉強をしながら少しでも触れるようにすると良いでしょう。見た目に結果が出てくるので勉強自体は楽しく取り組めるでしょう。ただし、デザインの世界はプログラムと違って明確な終わりがないため、あまりこだわりすぎると時間だけが費やされてしまうので、目的意識をしっかりもって取り組みましょう。

プログラミング言語と並行して勉強する場合に限りませんが、世の中にある既存のソフトウェアやサービスを「技術者視点で見る事」も大事です。単純に見えるボタンの配置であっても、ユーザーの操作導線や視点の移動などを考慮して配置されていることが多く、自分で画面設計する場合に良い意味で「真似る」方法を覚えると役に立ちます。何故そのデザインやUI(User Interface)になっているのかを常に考えるようにすると、自然と利用者に配慮した良い画面が作れるエンジニアになっていくことでしょう。

自分の描くエンジニア像をめざして勉強しよう

プログラミング言語には様々な種類があり、同じプログラマーという職種でも企業によって業務の内容は様々です。

プログラミング言語の選び方で重要となってくるのは、自分がどのようなプログラマー・エンジニアになりたいかといったイメージや、具体的にどういったプログラムを作るのかといった目的意識に他なりません。目的を達成するための手段の一つとして、できるだけ自分の将来に最適な物を選んで勉強を進めていきましょう。

またプログラミング言語学習のコツをまとめた以下の記事も参考になる部分があると思いますので、是非あわせてご覧ください。