【新人SE&学生さん向けコラム】目的・状況別。最初に習得したいプログラム言語
基幹業務システム(主に)の開発と新人プログラマのOJTに20年ほど関わった観点から
プログラミング未経験の方がどの言語を勉強すればよいかを紹介します。

- 1. 説明
- 1.1. 言語別おすすめ度表
- 1.2. 言語別詳細
- 1.2.1. 業務で使う言語:就職先で決まっているような状況では最優先
- 1.2.2. Scratch:子供の教育用だが、プログラミングの初体験には良い
- 1.2.3. Java・C#:難しいが汎用性が高く実務に活かしやすい
- 1.2.4. PHP:Webシステムの開発に関わりたいなら最適
- 1.2.5. Power Automate Desktop:扱いやすくExcelやメールとの連携がしやすい
- 1.2.6. JavaScript:習得しやすいが、癖が強く用途が限定的。PHPと並行なら非常に有効
- 1.2.7. Python:習得そのものはしやすいが推奨できる状況は限定的
- 1.2.8. COBOL:金融系を目指す場合には良い
- 2. 関連記事
説明
言語別おすすめ度表
上に書くほどおすすめ度が高いです。
ただし本人のやる気が最も重要なため、
どうしてもこの言語を習得したいというものがあれば
そのモチベーションを優先することを推奨します。
言語 | おすすめ度 | 習得のしやすさ | 備考 |
---|---|---|---|
業務で使う言語 | 高 | ? | 就職先で決まっているような場合は最優先 |
Scratch | 高 | 高 | 子供の教育用だが、プログラミングの初体験には良い |
Java・C# | 中 | 低 | 難しいが汎用性が高く実務に活かしやすい |
PHP | 中 | 中 | Webシステムの開発に関わりたいなら最適 |
Power Automate Desktop | 中 | 高 | 扱いやすくExcelやメールとの連携がしやすい |
JavaScript | 低 | 中 | 習得しやすいが、癖が強く用途が限定的。 PHPと並行なら非常に有効 |
Python | 低 | 中 | 習得そのものはしやすいが主な用途が人工知能なため実務に活かすのが難しい。 |
COBOL | 低 | 中 | 金融系を目指す場合には良い |
言語別詳細
業務で使う言語:就職先で決まっているような状況では最優先
内定した学生さんが就職先に「この言語を使います」と言われているようなケースでは
最優先で勉強する方が良いでしょう。
自社でサービスを持っている会社の場合は言語が決まっていることが多いですが、
受託開発の場合は入社後まで所属が決まらないケースが殆どのため、
使う言語が決まりません。よって教えてもらうことはありません。
(あっても入社後に変わるケースが多いです)
よって基本情報技術者試験やScratchのような汎用的な勉強の方が良いでしょう。
Scratch:子供の教育用だが、プログラミングの初体験には良い
Scratch(スクラッチ)はエディタでコードを書くタイプでなく
マウス操作で部品を置いていくタイプの言語です。
インストールするだけでよく(環境設定などが不要)、未経験からも始めやすく
子供の学習用のため非常に習得しやすいです。
ですがその反面、実務では用事がありません。
よって就職先でプログラミングをすることがわかっている、
またはシステムエンジニアを志望するがプログラミングの経験をしたいというような
時間に余裕がある段階で勉強するには最もおすすめで、
最初はScratchでプログラミングのイメージを掴んでから
目的に応じて他の言語を習得するのが理想形です。
この言語の場合、実践のプログラミングと言うよりも
プログラミングに慣れることを目的とするため
思いっきり子供向けの教材を新人さんに渡しています。
親子でかんたん スクラッチプログラミングの図鑑 (まなびのずかん)
Java・C#:難しいが汎用性が高く実務に活かしやすい
Java(ジャバ)・C#(シーシャープ)企業の基幹業務システムによく使われる言語で実務で多く使われます。
少し習得が難しいため、とりあえずプログラムを身に着けたい人が
Scratch習得後に学ぶか、実務に直結するものでないとやる気が出ない場合向けです。
この二つの言語は特化した言語には劣りますが、
Webシステムやモバイル、人工知能などにも幅広く適応しているため
どんなシステムがよいかをイメージできない人にもお勧めです。
JavaとC#は性質が似ていますが、
どちらかを選択する場合の指標として違いを挙げるとこのような感じになります。
(あくまでJavaとC#での比較です)
項目 | Java | C# |
---|---|---|
案件 | 多い | 少ない |
利用する組織 | 小規模(無料) | 大規模(企業は有料) |
習得のしやすさ | 難 | 易 |
一般的に使われるのはJavaです。
ただここは1990年代~2000年代にJavaが流行しすぎたことと
無料で利用できる手軽さがあるためで(C#も個人で利用するなら無料)
両方の経験があるエンジニアからはC#の方が開発しやすいと聞くことが多いです。
教材は文系の人にはスッキリわかるJava入門、Visual C# パーフェクトマスターを。
PHP:Webシステムの開発に関わりたいなら最適
PHP(ピー・エイチ・ピー)はWebシステム開発で使われる言語の主流の一つのため
Webシステムに関わりたい場合におすすめです。
また自動化ツールを手軽に作りたい場合に使われることもあります。
この言語はScratchほどではないですが、習得しやすく環境準備も簡単な部類で、
言語の癖が少ないため、他の言語を習得する場合の踏み台にもなります。
教材は文系の人にはいきなりはじめるPHP~ワクワク・ドキドキの入門教室を。
理系の人にはPHP本格入門[上] ~プログラミングとオブジェクト指向の基礎からデータベース連携までを
勝って渡しています。
Power Automate Desktop:扱いやすくExcelやメールとの連携がしやすい
Power Automate Desktop(パワーオートメートデスクトップ)は
Scratchのようにマウス操作で部品を置いていくタイプの言語で
Microsoftのアカウントがあれば無料でインストールするだけで利用可能できます。
開発案件で遭遇するケースは基本的にありませんが、
何かしら自動化を行う際には強力なツールです。
またシステムエンジニア以外が使うことを想定しているため、
プログラミング初心者でも利用しやすくなっています。
Excelやメール送信が非常に実現しやすいため
そのあたりで何か自動化したいテーマがある場合には選択肢として有効です。
教材は殆ど存在しないので拙著を利用します(笑)

JavaScript:習得しやすいが、癖が強く用途が限定的。PHPと並行なら非常に有効
JavaScript(ジャバスクリプト)はPHP同様、Web開発で利用される言語です。
(名前が似ていますが、Javaとは別物です)
PHPはサーバ上で動作する言語ですが、
JavaScriptは主にブラウザ上(クライアントサイド)で動作する言語です。
(この違いを理解するためにPHPと同時に習得するのは非常に有効)
Web開発では重要な要素(動きを付けたり、入力フォームの制御など)でありつつも
ブラウザ上という制限のため用途は限定的です。
更に癖が強い部分が多く、他の言語も利用していると不自然な部分が目立ちます。
ブラウザがあれば開発できるため習得はしやすい部類ですが、
綜合的に考えると初心者が勉強した方が良いかは微妙な部分が多いです。
PHPなどのサーバサイドでよく使われる言語と共に身につけると
Webシステムへの理解が深まるため、そういうケースでは非常に有効です。
教材は文系の人には確かな力が身につくJavaScript「超」入門、
理系の人はJavaScript逆引きレシピを渡しています。
Python:習得そのものはしやすいが推奨できる状況は限定的
Python(パイソン)自体は習得しやすく(小学生がラズベリーパイで身につけるほどに)、
Webシステムへの需要も幾らかありますが、
主な用途が人工知能やビッグデータのため、数学や統計学も知識も同時に必要です。
更に言語の文法が一般的に使われる言語からすると独特です。
よって習得しやすいものの、一般的にはお勧めはしません。
逆に数学や統計学を納めている方にはお勧めです。
(とはいえ、そういう方はPythonやR言語等を習得していることが多いかもしれませんが)
或いはラズベリーパイでロボットプログラミングにも使われるため、
そういう領域に興味があれば習得してみるのも有効です。
人工知能やビッグデータは専門外のため勧める教材はありませんが
Python+ラズベリーパイであればやさしくはじめるラズベリー・パイ ~電子工作で簡易ロボット&ガジェットを作ってみようを利用しました。
COBOL:金融系を目指す場合には良い
COBOL(コボル)は機能の少ない古代語のため言語としては簡単ですが、
一般的に使われる言語ではありません。
更に、この言語だけに慣れすぎると新しい言語が身につけにくくなり、
COBOLerと呼ばれて印象もはっきり言って悪いです(化石や老害扱い)。
よって一般的には推奨しませんが、
システムエンジニアとして金融系に進みたい場合には推奨です。
何故なら金融機関にはCOBOLで作られたシステムが大量に残っていながらも
若い人には印象が悪いためメンテナンスのための技術継承が危惧されているためです。
(世代交代に失敗するとCOBOLシステムが維持できなくなる)
とはいえCOBOLだけ良いかと言われるとそうでもなく、
COBOLから新しい言語へリプレイス(置き換え)する案件もあるため
他の言語(JavaやC#など)も身に着けておくべきでしょう。
若い世代にはCOBOLのシステムから仕様を抽出して(リバースエンジニアリング)
新しい他の言語に書き換えるという役目も期待されます。
古代語だけに教材が殆どなくて難しいのですが、
はじめてのCOBOLプログラミングを最初に呼んで次に標準COBOLプログラミングという感じです。