初心者のためのプログラミング言語ガイド
ソフトウェア開発において,プログラミングができることは,(基本的に)避けて通ることができないスキルです.もっとも,世の中には,たくさんのプログラミング言語があり,どれを学べばいいか迷ってしまうかもしれません.ここでは,これからプロのソフトウェア開発業界に入ろうと考えているみなさんに,うみのが,おすすめの言語をご案内します.
基本的な考え方
学校や趣味で使われるプログラミング言語は,教育的な効果が高い言語か,とか, 作っていて楽しめる言語か,とかいった基準で選ばれていると思います.
一方,プロのプログラマは,「ソフトウェアを作った対価で生活している人たち」です.したがって,プログラミング言語を選ぶ場合も「お金を稼げる言語か」を基準にすることになります.これは,プロとしてとても大切な視点です.また,プロのプログラマは,通常,複数のプログラミング言語でプログラムを書くことができます.したがって,どれかひとつの言語に習熟すれば終わりではなく,お金を稼げる言語であれば,なんであれ,継続的に複数の言語を習得していくことになります.
それでは,どのようなプログラミング言語が,お金を稼げるのでしょう.いくつかの視点がありますが,ここでは以下の2点で考えてみることにしましょう.
- 市場シェアを基準にして選ぶ
- 活動したい業界で使われている言語を選ぶ
市場シェアを基準にして選ぶ
まずは,市場シェアを基準にする方法です.これはつまり,「よく使われているプログラミング言語から優先的に習得していこう」という戦略です.市場シェアの高い言語(みんながよく使っている言語)は,お金を稼ぐ場面でもよく使われているだろう,と考えるわけです.
この点,世間で利用されているプログラミング言語が,どれほどの割合で使われているかを示す有名な指標に,TIOBE Index があります.これは,TIOBE 社が独自のレーティング方式で開発言語のシェアを推計したもので,毎月公開されています.
これによると,2023年1月の TIOBE Index は下記の通りでした.
順位 | 言語 | レーティング |
---|---|---|
1 | Python | 16.36% |
2 | C | 16.26% |
3 | C++ | 12.91% |
4 | Java | 12.21% |
5 | C# | 5.73% |
6 | Visual Basic | 4.64% |
7 | JavaScript | 2.87% |
8 | SQL | 2.50% |
9 | Assembly Language | 1.60% |
10 | PHP | 1.39% |
この結果をよく見ると,上位5番目までのプログラミング言語だけで,63.73%のシェアを持っていることが分かります.つまり,単純に考えて,世の中で書かれているプログラムのおよそ2/3は,Python から C# までのプログラミング言語で占められているということです.またさらに,上表にある上位10位までの言語シェアを積み上げると,全部で76.73%となります.
ちなみに,Python, C, C++, Java の4言語については,ここ数年,ほぼ一貫して上位4位にランクインしています.このランキングに従えば,習得すべき言語を選ぶ際のヒントになりそうです.
この点で,うみのは日頃,TIOBE Index の上位5位までのプログラミング言語を優先して習得するよう,後輩君に勧めています.習得する順番は好きな順で構いません.おおむね5年以内で終えることを目安にして,それぞれの言語の標準的なプログラム(マニアックな処理をしていないプログラム)を読み書きできるようになれば上出来だと思います.
おそらく,これを聞いた方の中には「自分がやりたい業界で使われていない言語も TIOBE Index にしたがって習得する意味があるのか」とか,「C言語がランクインしているけれど,今時習得する必要はないのでは」と考える方もいらっしゃるかもしれません.たしかに,業界によって,これらの言語を使用したりしなかったりすることは否めません.使わないのであれば,習得することが無駄に思えるのも理解できます.
しかし個人的に,この上位5位のプログラミング言語は「プログラマとしての基礎的な素養」だと考えています.つまり,直接使わなくても使えることが素養のひとつになるということです.
例えば,弁護士さんは普段,民法や刑法といった法律を使って仕事をしていて,日本国憲法を使った仕事はほとんどしていません.しかし,弁護士さんの中で,日本国憲法の内容を知らない人はほとんどいないでしょう.それは,日本国憲法を取り扱えることが,法律家としての基礎的な素養だからです.また,内科を専門にしているお医者さんが,簡単な傷を縫うこと(外科的な処置)ができないかといったら,そんなこともないはずです.傷を縫えることは,医師としての基礎的な素養だからです.
同様に,これらの5言語は,プロのプログラマとしての基礎的な素養だと思うのです.これは,プログラマの基礎体力のようなものなので,できるだけ早いうちに身に付けておくことをお勧めしています.
活動したい業界で使われている言語を選ぶ
ところで,基礎体力は重要ですが,体力ばかりつけていても,自分が活動したい業界でその言語が使われていなければ,体力がつく前にお金がなくなってしまいます.
そこで,自分が入りたい業界で使われているプログラミング言語を基準にして,身に付ける言語を検討することも考えてみましょう.つまり,手っとり早くお金になる言語も身に付けよう,ということです.
例えば,私うみのは,普段仕事でプロプラエタリな(版権のある)パッケージソフトを書いていますが,ここではほとんどC言語か C++ 言語でプログラムを書いています.ときどき Java や C# を使うこともありますが,社内ツールを作る時でもなければ Python はまず使いません.なぜなら,Python のプログラムは,プロプラエタリなパッケージソフトの配布に向かないからです.
他方で,例えば,ウェブアプリケーションを作っている業界では,Python や Ruby,Java,PHP といった言語がバックエンドで使われ,フロントエンドでは JavaScript が使われていると思います.
また,ゲーム業界では,C# や Java,C++ が使われているでしょうし,組み込み業界では C言語や C++,アセンブリなどが主に使われます.さらに,データサイエンスの分野では,MATLAB や Python などが使われているようです.
このように,おなじソフトウェア業界でも,さらに中を見てみると,使われているプログラミング言語が大きく変わってくるわけです.ご自身がどの業界に進みたいか検討して,必要な言語から習得していくのも,一案だと思います.
参考までに,直近であまねに届いているジョブオファーの中から,各業界で使用されているとされる言語を紹介します(※SES は含みません).
開発対象 | 商流 | 業種 | 使用言語 |
---|---|---|---|
パッケージ | 販売 | 製造 | C, C++, Java, C# |
ウェブサービス | 受託 | 一般 | C++, Java, C#, PHP, Python, Ruby, Kotlin, Scala, Rust, Go, TypeScript, JavaScript |
ウェブサービス | 受託 | 金融 | C, Java, C#, PHP, COBOL |
ウェブサービス | 受託 | 一般 | PHP, JavaScript |
製造システム | 事業会社 | 機械 | C, C++, C# |
組み込み | 受託 | 電気 | C, C++, C# |
組み込み | 事業会社 | 電気 | C, C++, C#, Python, JavaScript, MATLAB, Simulink, SQL |
上表を見ると,業界によって様々なプログラミング言語が使われていることが分かると思います.私が普段 C/C++ で仕事をしているので,オファーの内容にバイアスがかかっていることは否めませんが(例えばゲーム業界などからはオファーがない),これを見ると,組み込みで PHP は使わなそうですし,金融システムをやるなら COBOL を得しといた方がよさそうです.また,少なくとも私へのオファーでは,Python の求人が少ないのも特徴です.“即戦力"になれると言われる Python ですが,必ずしもそうではないようです.
このような業界ごとの使用言語は,ソフトウェア開発の求人によく書かれています.自分が開発したい分野がどのようなプログラミング言語を使っているか調べれば,方針を立てやすそうです.
まとめ
ここでは,初心者のみなさんが身に付けるプログラミング言語の選び方として,市場シェアで選ぶ方法と,業界で使われている言語から選ぶ方法をお伝えしました.
このうち,両者のどちらを優先して選ぶかは,みなさんの時間的・金銭的余裕に依存するのではないかと思います.
例えば,学生さんのように,しばらくプロになる予定がなく,時間的に余裕のある方は,基礎体力をつけるために,市場シェアの高い順に習得していく戦略が考えられます.また他方,未経験からの転職などで,プロになるまで時間がない方は,まず業界でよく使われているプログラミング言語を優先して習得するといいのではないでしょうか.
両者に共通するところでは,Java と C#,それに Python は,シェアもあり,実際によく使われている言語でもあるので,おすすめです.
また,C言語は,よく難しいと言われますが,実は言語仕様が小さく習熟期間が短い言語だったりします.実際,うみのは,会社で新人君にC言語のプログラミングを教えていますが,IT パスポート試験だけを持って入社した方(非情報系)も,3ヶ月弱でC言語のプログラムを書けるようになりました.彼は,業務時間の8時間全てを練習に使っていることと,プロが指導についていることから,習熟が早いともいえます.しかし,難しいといっても,C言語の学習量はその程度なので,初めに学習するプログラミング言語として,見劣りするわけではないと思います.
さて,プログラミング案内も,今日のところはこれでおしまいです.この文章が,少しでもプログラミング言語を選ぶ手助けになれば嬉しいです.