プログラミング言語は多すぎて悩むけど…何が仕事になってこれから必要なのか?…を考えてみました

ITぶつぶつ
Yossy
Yossy
プログラミング言語にはたくさんあってすべての言語を知っているわけではないので、正確な情報とは言えませんが、日々うけるエンジニア募集の情報や、現在私が携わっているお付き合いの中から私なりに感じていることです。

 

C, C++

起源

C言語
C言語は、1972年にアメリカのAT&Tベル研究所のデニス・リッチーによって開発された言語です。C言語の開発は、UNIXオペレーティングシステムをより効率的に再実装するために始まりまり、C言語は、その前身であるB言語から発展し、より多くの型検査と機能を持つプログラミング言語として設計されました。

C言語の特徴は、低レベルのメモリアクセス、システムレベルのタスク、そしてポータブルなプログラミングが可能であることです。これにより、様々なコンピュータアーキテクチャ上でUNIX OSが動作できるようになりました。

C++言語
C++は、C言語の直接の拡張として、1980年代初頭にベル研究所のビャーネ・ストロヴストルップによって開発され多言語です。C++は当初「C with Classes」と呼ばれており、オブジェクト指向プログラミングの概念をC言語に導入することを目的としていました。

C++は、クラス、継承、多態性、カプセル化などの新しい概念を導入し、ソフトウェアの再利用性と保守性を高めることができました。1983年に「C++」と改名され、それ以降、テンプレート、例外処理、名前空間などの機能が追加され、C++はより強力で柔軟な言語となっていきました。

C++は、C言語の効率性と直接性を保ちつつ、より高度なプログラミング技術を可能にするための拡張を提供しています。

行方

CやC++は根本的なプログラミングの基礎として不滅の存在であることは確かです。そのため、この言語をマスターすることは、今後どの分野に進む場合でも大きな財産となります。

そのため、私の会社においても必ずこの言語のマスターから始めています。私的にはIT技術の根本ではないか?と思っています。

2024年現在、通信部分の制御やアプリケーションのデータ処理、組込みシステムなど見えない部分での利用が多いのが現状です。どちらかというと裏部隊、縁の下の力持ち的な存在です。しかし、先にも書きましたように、組み込み系はころからまだまだ広がることを予想するなら、まちがえなくこの言語の技術は必要です。

特にIoT、自動運転、航空機、ドローンなどの分野では、CやC++の需要が根強く続いています。…というかそれが全てと言っても過言ではありません。

ですのでこの言語はこれからのIT業界でも消えることはなく、むしろ特殊専門分野に特化していくでしょうし、絶対にくいっぱぐれのない技術であることは確かです。

C#

起源と特徴

C#は、マイクロソフトによって開発されたプログラミング言語で、2000年に公式にリリースされました。この言語の主な開発者はアンダース・ヘルスバーグで、彼は以前デルファイ言語の開発にも関わっていました。C#は、マイクロソフトの.NETフレームワークの重要な部分として設計され、Java言語の強力な競合として位置づけられています。

設計の目的
C#の設計目的は、現代的で安全かつ簡単に使用できるオブジェクト指向言語を提供することにありました。開発者たちは、JavaやC++の良い点を取り入れつつ、それらの言語の複雑さや安全性の問題を改善したかったのです。C#は強い型付け、自動メモリ管理(ガベージコレクション)、そして豊富なクラスライブラリを備えており、これにより開発の生産性と保守性が向上しています。

主な特徴
・オブジェクト指向
 クラスベースのオブジェクト指向アプローチを採用しています。
・型安全性
 プログラムの安全性と実行時の安定性を強化する強い型付けを提供します。
・インターオペラビリティ
 他の言語との連携を容易にするための.NETフレームワークとの高度な互換性を有します。
・モダンな構造
 例外処理、デリゲート、イベント、属性など、現代的なプログラミングのニーズに応える機能が組み込まれています。

開発の進化

C#はその後、数多くのバージョンアップを経て、ラムダ式、LINQ(言語統合クエリ)、非同期プログラミングといった高度なプログラミング概念を取り入れ、現代の開発者が直面する多くの課題に対応してきました。これにより、デスクトップアプリケーション、ウェブアプリケーション、モバイルアプリケーション、クラウドベースのサービス開発など、広範囲にわたる用途で利用されるようになっています。

行方

C#の開発と普及は、マイクロソフトの.NETエコシステムの拡大とともに進んでおり、業界全体に多大な影響を与えています。

C#は、私の周りでは現在、画面やユーザーインターフェイス周り、スタンドアローン型アプリケーションの開発に多く利用されています。2024年ころより、WPFを使った開発が進み、下回りの制御をCやC++で処理し、上位の部分をC#で作るケースが増えています。が…WPFを好む技術者があまりいないのも本音のところで、その技術を持ってお仕事がどうか?は、私の小さな経験と世界ではあまり見えておりません。

私的に感じるのは、一般的なアプリケーションは、ほぼほぼWEBに移っていくのではないかと思っていますので、C#を使った特殊インターフェースアプリは、将来的には特殊な用途に特化する可能性があるのではと感じています。ゲームや業務用アプリケーションもほぼほぼWEBに移ってきているため、本当に特殊な業界専用アプリ…例えばある会社の装置操作プログラムなどに使われるのではないかと思われます。

いずれにしても、すたれないが大きく一般的に求められるものに必要かどうかは?です。ただ、2006年、アメリカ・中国を回ったころは、WEB開発にはC#を使うという傾向があり、最近、WEBシステム屋さんではJAVAとC#のエンジニアを求めることも多いことから….

VB (Visual Basic)

起源と特徴

VBの開発背景
Visual Basicは、マイクロソフトによって開発され、1991年にリリースされました。この言語の設計は、よりアクセスしやすく、使いやすいプログラミング環境を提供することを目的としていました。VBは、特に非プログラマーや初心者プログラマーが容易にWindowsアプリケーションを開発できるようにするために設計されました。

設計の目的と特徴
VBの主な特徴は、その視覚的開発環境です。ドラッグアンドドロップ式のGUI(グラフィカルユーザーインターフェイス)ビルディングツールとイベント駆動型プログラミングモデルを組み合わせることで、開発者は視覚的にアプリケーションを構築でき、コードの記述が少なくて済むようになっています。このアプローチは、プログラミングの敷居を大幅に下げ、多くの初心者にとっての入門ツールとなりました。

VBの進化
Visual Basicは、その初期のバージョンから数多くのアップデートを経て、より強力なプログラミング言語に進化してきました。VB.NETの導入により、VBは完全なオブジェクト指向言語へと変貌を遂げ、.NETフレームワークの一部として再設計されました。これにより、より高度なプログラミング概念と.NETのライブラリを利用することが可能になり、その用途と機能が大幅に拡張されました。

VBの影響
Visual Basicは、プログラミングの世界に大きな影響を与えました。その使いやすさにより、多くの人々がプログラミングを学ぶきっかけとなり、ビジネスアプリケーションの開発を大きく加速させました。また、教育現場や小規模ビジネスにおけるソフトウェア開発にも広く採用されています。

行方

VBの開発は、プログラミング技術をより多くの人々にとってアクセスしやすくするというマイクロソフトの取り組みを象徴しており、今日の多くの開発環境に影響を与えたと言えるでしょう。

しかし、Visual Basicは事務系システム開発に多く使用されてきましたが、需要は縮小傾向にあるようです。

マイクロソフトも現状維持を続けると発表しているものの進化についてはないようなことを言っています。今後は保守や改修作業での利用が中心となるではないでしょうか?手軽でとっつきやすいのはいいのですが業界ではVBよりC#の方が需要が多いと感じています。

またC#もVBもそうですが、過去に作ったシステムの改修が多く目立ってきました。

Windowsバージョンアップに伴うアプリの見直しなのですが、厄介なことに、サードパーティーの作ったコンポーネントに悩まされるケースが多く見かけられます。

OSが変わったとたん表示が乱れたり、OS仕様でコンポーネントの扱いが変わったり…結構やらなくてもいいような無駄な作業が多く、相変わらず、Windowsのわがままに世界は振り回されている感は否めません。

マイクロソフトは2020年にVisual Basic言語をこれ以上進化させる予定はないと発表しました。特に、.NET 5以降の開発ではVisual Basicの新しい機能追加や言語の進化は行われず、既存の.NET Frameworkおよび.NET Coreとの互換性と安定性に焦点を当てることになります。ただし、Visual Basicは依然としてサポートされ、セキュリティパッチや修正は引き続き提供される予定です​

この決定は、Visual Basicが新しい技術やワークロードに拡張されることはなく、「消費のみ」のアプローチを採るというもので、これによりC#や.NETランタイムが新しい機能を取得した場合、Visual Basicはそれを利用するだけという形になります。これはVisual Basicの将来において大きな方針転換を意味し、マイクロソフトは他の言語、特にC#やF#の開発に注力していくことになります。

Python

起源

Pythonは、ギド・ヴァン・ロッサムによって開発されたプログラミング言語で、1980年代の末に設計が開始され、1991年に初めて公開されました。Pythonの設計の主な目的は、読みやすく、効率的で、解釈可能なスクリプト言語を提供することでした。ヴァン・ロッサムはこの言語を開発する際に、ABC言語からの影響を受けており、Pythonはシンプルでありながらも、例外処理、モジュール、そして堅牢性を備えた言語として開発されました。

Pythonの名前は、イギリスのテレビ番組「モンティ・パイソンの空飛ぶサーカス」に由来しています。ヴァン・ロッサムはこの番組のファンで、プログラミングを楽しいものにしたいという彼の願いを反映して名付けられました。Pythonは初期からその使いやすさと高い可読性で人気を博し、科学計算、ウェブ開発、データ分析、人工知能など幅広い分野で使用されています。

Pythonはオープンソースプロジェクトとしても有名で、世界中の開発者によって機能が拡張され続けています。そのシンプルさと柔軟性が、多くの開発者や研究者に選ばれる理由の一つとなっています。

行方

Pythonは、AIやデータサイエンス、ロボティクスなどの先端技術分野で成長を続けています。

2024年現在、日本ではまだ民間企業での活用は少ないものの、大学や研究機関では積極的に利用されています。ただ、ここ最近利用が少しずつ多くなってきました。

ライブラリーが豊富なことと、便利な機能がたくさんあること、ソースコードのルールがしっかりしていて見やすいしメンテナンスがしやすいため不具合率が抑えられることもあり、使ってみるとかなり素敵な言語であることを実感します。

最近では組み込みの世界にも利用され始めていますので、今後の動向に期待をしています。

Java

起源

Javaの開発
Javaは、1991年にサン・マイクロシステムズ(現在のオラクル社)で「グリーン・プロジェクト」として始まりました。このプロジェクトの主導者であるジェームズ・ゴスリン、マイク・シェリダン、パトリック・ノートンらによって開発されました。元々は家電製品などの組み込みシステム用の言語として設計されていましたが、インターネットの急速な拡大とともに、ウェブ上で動作するアプリケーションを作成するプラットフォームとして再定義されました。

Javaの特徴
Javaは、「一度書けばどこでも動く(Write Once, Run Anywhere – WORA)」というコンセプトに基づいており、異なるプラットフォーム間での移植性が高いことが特徴です。このため、Javaは異なる種類のコンピュータ、オペレーティングシステム上で動作するソフトウェアの開発に適しています。Javaはオブジェクト指向プログラミング言語であり、セキュリティ、堅牢性、マルチスレッド処理といった特徴を持っています。

Javaの普及
1995年に公式にリリースされたJavaは、ウェブアプリケーションの開発、企業システムのバックエンド、モバイルアプリケーション(特にAndroid)、デスクトップアプリケーションなど、幅広い分野で採用されています。また、Javaは教育現場でもプログラミング言語として広く教えられており、プログラマーにとっての入門言語としても重要な位置を占めています。

Javaの開発とその影響力は、現代のプログラミングとソフトウェア開発における重要な柱の一つとなっています。

行方

Javaは正直言ってよくわかっていません。有料になってからは賛否両論あり他の言語に流れていったケースもあります。

OracleがJavaのライセンスモデルを変更し、有料化を導入したのは2019年です。この変更により、Oracle JDKのアップデートとサポートを続けるためにはサブスクリプションが必要となりました。具体的には、Java SE 8のアップデート211以降でこのモデルが導入され、商用利用にはサブスクリプションが必要とされるようになりました​。
Oracle Java License Changes,Oracle Licensing Experts

無料と有料の違いについては、OracleがJavaの特定のバージョン(例えば、Java 17以降)を「No-Fee Terms and Conditions (NFTC)」ライセンスの下で無料で提供している点が挙げられます。このライセンスでは、商用利用も含めて無料でJavaを使用できますが、セキュリティパッチなどは将来的にサブスクリプションが必要になる場合があります。一方で、Oracleのサブスクリプションモデルでは、従業員1人あたりの料金が課され、全従業員に対してライセンスが必要となるため、多くの従業員を抱える企業にとってはコストが大幅に増加する可能性があります​。
Oracle Java License Changes , Oracle Java License Changes

また、Oracle JDKの代わりとして無料で利用可能なOpenJDKもあります。このオープンソースの実装は、商用および非商用利用で無料であり、多くの同様の機能を提供していますが、Oracleの商用サポートやアップデートは含まれません。​
Oracle Licensing Experts

かつては大規模システムや金融システムでの利用が多かったためあいかわらず生命保険のシステムやその他の改造や改修案件の話は聞きますが、新規開発の案件は最近はあまり耳にしていません。いずれにしましても、末端の小さな会社に落ちてくるころには作業レベルのものが多いため、開発を夢見るエンジニアにとって最終的に面白いシステム開発がたんとうできるかどうかは疑問です。

私的には…あまりよくわかっていないのが現状で、わざわざJavaじゃなくてもできる言語はたくさん

PHP

起源

PHP、または「Personal Home Page Tools」として当初知られていた言語は、1994年にラスムス・ラードーフによって開発されました。PHPはもともと、ラードーフの個人的なウェブページのメンテナンスを簡素化するための小さなセットのPerlスクリプトとして始まりました。彼の主な目的は、訪問者のトラフィックを追跡し、彼の履歴書をオンラインで表示することでした。

PHPの機能が拡張されるにつれて、この言語は「PHP: Hypertext Preprocessor」という再帰的な頭字語に改名されました。これはPHPが動的なウェブページの生成に使用できることを示しています。PHPは、データベースとの対話、フォームデータの収集、および動的コンテンツの生成を行うためのサーバーサイドのスクリプト言語としてその役割を拡大しました。

PHPはそのアクセスの容易さ、オープンソースとしての利用の自由、そして広範なコミュニティサポートにより、急速に人気を集めました。その結果、ウェブ開発で広く採用されるようになり、多くのウェブサーバーとデータベースと統合される形で使用されています。今日では、ウェブベースのアプリケーションとサービスを構築するための主要なツールの一つとされています。

行方

PHPはWeb開発で根強い人気がある一方で、今後はノーコード・ローコードツールが主流になると予想されます。

PHPを利用した開発は短期間で行われることが多く、単価が安い傾向にあるので案件数はそれなりにあるものの余っているエンジニアも少なくないことも確かです。またPHPでの開発は、HTMLやCSSなどの知識に加えデータベースの知識も必ずセットになってきます。データベースは、MySQLが多くありますがそのほかポスグレなどもあるため、それなりの総合的な知識が必要です。

な….割には、案件はドカンとしたものを見かけていません。

ノーコード・ローコードツールはWebアプリケーション開発を簡素化しますが、外部サービスに依存するリスクがあるため、選択には注意が必要です。

PHPとノーコードのすみわけ

PHPとノーコードプラットフォームが直接競合するかどうかは、それぞれの使用目的や状況に大きく依存します。PHPは伝統的なコーディング言語であり、ウェブサーバーで動作するスクリプトを書くために広く使用されています。これに対して、ノーコードプラットフォームはプログラミング知識がない人でもアプリケーションを作成できるように設計されています。

PHPの利点:

  • カスタマイズ性: PHPは非常にカスタマイズが容易で、特定のニーズに合わせた詳細な機能を開発することができます。
  • コントロール: 開発者はコードの全体的なコントロールを保持し、複雑なシステムや特定の要求に応じたアプリケーションを作成できます。
  • コミュニティとサポート: PHPは広く使用されているため、豊富な学習資料やコミュニティのサポートがあります。

ノーコードプラットフォームの利点:

  • 迅速な開発: コードを書く必要がないため、アプリケーションの開発とデプロイが迅速に行えます。
  • 利用の容易さ: プログラミングスキルがなくても、ドラッグアンドドロップのインターフェースを使用してアプリケーションを構築できます。
  • コスト効率: 初期の開発コストが低く抑えられることが多く、小規模なプロジェクトやスタートアップに適しています。

競合状況:

ノーコードソリューションは、特に単純なアプリケーションや限られた機能を持つプロジェクトにおいては、従来のコーディングプラクティスに代わる選択肢となり得ます。しかし、より複雑でカスタマイズが必要なプロジェクトでは、PHPのような伝統的なプログラミング言語の柔軟性と制御のレベルが必要です。

最終的には、プロジェクトの要件や目的に応じて、PHPやノーコードプラットフォームのどちらを選択するかが決まります。ノーコードが一部のシナリオにおいて便利である一方で、PHPはその広範な用途と強力なカスタマイズ性により、引き続き多くの開発者にとって重要な選択肢となっています。

今後のITエンジニアに必要なスキルセット

組込み系C/C++でのデバイス制御スキル

IoTや自動運転、ロボティクスなどの分野で活用されるC/C++のスキルは、今後も重要です。Arduinoなどを使って基礎を学ぶと効果的です。

Pythonによるデータ分析、AI、ロボティクスのスキル

AIやデータサイエンス、ロボティクス分野での活用を見据え、Pythonを学ぶことは将来のキャリアに大きな武器となります。

WEBシステム開発のためのノーコード・ローコードツールとDB知識

ノーコード・ローコードツールの効率的な活用には、SQLやデータベースの基礎知識が不可欠です。このスキルを持つことで、幅広いプロジェクトで即戦力として活躍できます。

自分の強みを活かしつつ、需要を見据えた学習を

今回の内容は、私自身の経験に基づいた見解ですが、IT業界で稼げるエンジニアになるには、技術トレンドを見極めつつ、自分の強みを活かした分野に進むことが重要です。

特に、Pythonやノーコードツールは今後も拡大が見込まれる分野であり、CやC++のようなベース技術も高い価値を持っています。技術の発展に柔軟に対応し、目指す分野のスキルを磨き続けることが、長期的な成功の鍵となるでしょう。

最終的には、自分の好きな分野でスキルを積み上げ、需要を見据えた学習を続けることで、稼げるエンジニアとしての道を切り開いていきましょう。

コメント

タイトルとURLをコピーしました