プログラミング言語人気ランキング

現在 バックエンドにおいて素のPHPの案件は減少傾向にあるらしいですが、PHP系フレームワークの「CakePHP」は人気があるらしいです(「CakePHP」は「Ruby on Rails」の概念を取り入れているらしいので、それが人気の秘訣だと思われる)。

なお WordPressで当然 PHPを使いますが、これはフロントエンドの話です。


参考


CakePHPとは?基礎知識とできることをわかりやすく解説

https://hnavi.co.jp/knowledge/blog/cakephp/


>PHPのプログラム言語で使用するフレームワークは、機能の拡張性に優れるLaravel(ララベル)や、処理速度の速さに定評のあるCodeigniter(コードイグナイター)など、バリエーションに富んだフレームワークが数多く存在します。令和の現代においては、Laravelがシェアを伸ばしつつありますが、国内人気や汎用性の高さに関しては、CakePHPが依然として人気を集めています。


ネットでは「Laravel」が1番 人気があるなどと書かれていますが、それはアマチュアの世界の話しで、Web系(のプロの世界)では「CakePHP」が1番 人気が有るようです。

なお「CakePHP」だけでは不安なら「Laravel」も勉強すると良いでしょう。



Web系は即戦力が求められます。

(Web系は即戦力が求められるので)Web系では資格は意味無いらしいです(他のIT系では資格が評価される場合も有るようですが)。

Web系はフリーランスが基本で、奇跡でも起こらない限り就職は無理と思って下さい。



3DゲームにおいてはUnity(3Dゲームエンジン)がメジャーです。

Unityはプログラミング言語ではなく、ザックリと言うとライブラリです。

ゲームに必要な当たり判定や衝突した場合の反射などの処理が簡単にできるらしいです。

Unity用の開発言語はC#らしいので、Unityを使いたいならC#が必須になります。



プログラミング言語利用実態調査2023

https://xtech.nikkei.com/atcl/nxt/column/18/02670/112900001/

プログラミング言語利用実態調査2022

https://xtech.nikkei.com/atcl/nxt/column/18/02246/110200002/



(本来 PythonはAI専用言語ではありませんが)Pythonの主な案件はWebスクレイピングなので、AIの知識は必要ですし、CSSセレクタに関する深い知識も必要のようです(「Webスクレイピング」はググって下さい)。

Webスクレイピング以外でも大半はAI系(画像認識も含む)だと思われるので、PythonはAIの知識は必須だと思って下さい

Web系はフリーランスが基本です。

つまりAIに興味がないなら(AIを勉強する気がないなら)Pythonを勉強する必要はないでしょう。

Python本体の機能は貧弱らしいですが、ライブラリーで補強できるので問題ないと思われます(AIライブラリだけでなく数学ライブラリも豊富らしいです)。

下記はWebスクレイピングを勉強している人からの質問です。

(最低限)当方のCSSセレクタに関する回答やクイズが理解できるレベルが推奨されます。


https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13260657988


もっと具体的に言うなら下記の高度なCSSが自分で組めるレベルが推奨されます。


CSSデモ集(-)

http://pleiades.vs.land.to/utf8/smt.cgi?r+twilight/&bid+0000025C&tsn+0000025C&bts+2021/12/01%2006%3A41%3A07&


つまりAIの場合は、AI自体の勉強と、その分野の勉強も必要になります。

例えばAIで"経済"を予測するなら"経済"の勉強も必要になると言う事です。



JavaはWeb系ではイマイチ人気は無いような感じです(皆無と言う事ではありませんが)、基幹系ベンダーならJavaを使うと思いますが、(Web系に比べ)基幹系ベンダーは可成り数が少ないと思われるので、就職の難易度は高いと思われます(絶対に不可能と言うことでは無いのでトライしてみるのも良いでしょう)。

Androidなら需要はあるようです(Android系はフリーランスが基本で、奇跡でも起こらない限り就職は無理と思って下さい)、ただしKotlin(コトリン)は日本のプロの世界ではイマイチ人気が無いので推奨しません。

基礎なら素のJavaで勉強しても良いですが、素のJavaとAndroid JavaはGUI APIは別物ですし、またAppletをメッチャ高度化したようなActivityと言うライフ・サイクルの理解も必要になります(なおActivityのstaticフィールドは意図せず初期化されることが有るので要注意)。

機種によって解像度が違うので特定の解像度に依存しないプログラミングが必要とか、機種によって挙動が違うとか、それなりのスキルが要求されます、3Dのスキルがあると更に良いでしょう。

なおAndroidエミュレータでは無く、実機デバッグを強く推奨します。



「Android端末を購入する場合の注意点」

勉強する場合は、意図的に解像度が全く違う機種を2台用意してみると良いでしょう、中古なら1万円前後で買えます、(見た目のグレードはB以上を推奨)。

プロも出来るだけシェアを大きく取りたいので「Android OS 4.4=API Level 19」以降対応とかで作ることも有るので、最新の端末である必要は有りません。

とりあえず「Android OS 6系=API Level 23」以降で良いです(6以降でパーミッション係が大幅に変更されているので)。

ただしAndroid OS 6系端末はメモリーをガバガバ喰うクソ端末なのでストレージは32GByte以上が必須、Android OS 7以降の端末ならストレージは16GByte以上あれば良いですが、Android OS 7系端末は発売当初バグが頻発した(一部の端末でハードウエアを破壊するような深刻なバグも発生した)ために非常に評判が悪かったです。

最新のパッチ済みOSがインストールされていれば問題ないですが、最新のパッチ済みOSの配布サービスが終了している場合はOSをアップデートできないので注意が必要です。

とりあえずAndroid OS 8以降の端末にすると良いでしょう。

Android OS 6未満の端末も勉強したいなら、とりあえずAndroid OS 4系のAndroid OS 4.4以降を1台買っておくと良いでしょう。

Android OS 5系だとOSが6系にアップデートされている危険が有るので注意が必要です、稀にAndroid OS 4系でもOSが6系にアップデートされている可能性も有り得るので、買う前にとりあえずWikipediaで対象の端末の最大バージョンを確認しておきましょう(Wikipediaが不正確な場合も有りますが)。

中華端末はバックドアが仕込まれている可能性があるので要注意です、表面的に中華端末で無くても新品で格安端末なら ほぼ中華製と考えて良いでしょう。

例えばSHARPは中華系に買収されたので、SHARP端末も要注意です。



超ザックリと言うと「C、C++」は高級アセンブラのようなモノなので、それが「C、C++」が難しいと言われる ゆえんです。



C#は内部的にJavaだと揶揄されており、「C、C++」より習得が容易だとされています(Javaレベルの難易度だと言われている)。

C#は内部的にJavaなので、当然パフォーマンス的には「C、C++」より劣ります。



Rust(ラスト)言語はメモリーセーフで、(メモリーアンセーフな)「C、C++」に代わる言語として非常に有望視されています(ただし日本ではまだまだマイナー)。


プログラミング言語 栄枯盛衰?

http://pleiades.vs.land.to/utf8/smt.cgi?r+twilight/&bid+000001B1&tsn+000001B1&bts+2021/08/09%2005%3A27%3A39&



(バックエンド)「Ruby on Rails」(フリーランス)の案件は「Ruby on Rails」の実務経験が2~3年以上必要なので、基本的に無理と思って下さい。

なお(正社員として)就職できた場合は「Ruby on Rails」をやる可能性は有るようですが。



SQL(データベース言語)は「バックエント、基幹系」を目指すなら必須です。



参考


勉強のために「訓練校、大学」などに行っても良いですが、「訓練校、大学」などに行く前に授業に付いていけるレべルまで独学が必要です(教科書を全て消化できないと先生の評価は下がるので、生徒が理解できるかよりも教科書を全て消化することが優先されますから、授業に付いて行けない人は普通に居ますのでね)。

なおスクールは生徒のことなど、カモネギぐらいにしか思って無いので推奨しません。

教本がシッカリしているなら、それは生徒側の気分の問題ですが。


「バックエンド、基幹系」などを目指すなら、「HTML、CSS」の基礎は常識レベルです、「正規表現、SQL、JavaScript(Ajaxも組める程度)」程度の知識は必要になると思われます(基幹系は高度なCSSの知識も必要だと思われます)。

現在、世界的にjQueryは着実にシェアを減らしており、もうオワコンでしょ、などと囁かれているので、基本的にVanilla JSで良いでしょう。

(Androidなど)動きのあるゲームでは「スレッド、排他制御、最適化の抑制」の知識は必要になります。

(データベースは別として)現在 データ書式として世界的にJSON書式がデファクトスタンダードになっているので、「JSON書式 入門」でググってみると良いでしょう。

アルゴリズム本を1冊買っておくと良いでしょう、ただし特定のアルゴリズムに特化しているので、アルゴリズム本で勉強しても応用は効かないと思われるので、アルゴリズム本は辞書的に使うだけにすると良いでしょう。


外資系企業だと「オブジェクト指向プログラミング、総称型(Generics)」ぐらい出来ないと無能と評価されます。

日本企業(大企業)も外資に買収されている場合が有るので要注意です(役員に外国人が入っていれば確定的)。

面接で「オブジェクト指向プログラミングは分かりますか?」と聞かれる場合が有るようです(多態性(ポリモーフィズム)がオブジェクト指向プログラミングの肝なので、多態性(ポリモーフィズム)が分からない場合は「分かりません」と回答しないと、あとで「オブジェクト指向プログラミングが分かってないだろ」と文句を言われるでしょう)。

そのような企業は選らばないと言うのも1つの手です。


参考


Javaデモ:オブジェクト指向プログラミング

http://pleiades.vs.land.to/utf8/smt.cgi?r+rpr/&bid+00000007&tsn+00000007&bts+2023/02/09%2022%3A47%3A18&



チャットなどでは参加者数が多くなると、サーバーに負荷が掛かると言う問題がありましたが、Comet(+Ajax)で処理を軽くできるらしいです。

プロを目指すなら、Comet(+Ajax)処理のチャットを実際に作ってみると良いでしょう。

例えば クライアント-サーバー間のデータ書式としてJSON書式を使ってみるのも良いでしょう。


参考


第2回 Comet---プッシュ型のWebアプリケーションを作る

https://xtech.nikkei.com/it/article/COLUMN/20080220/294242/


CometとAjaxを利用したチャットサーバの実装

https://codezine.jp/article/detail/733


リアルタイムなwebアプリを実現する方法(ポーリング、Comet、Server Sent Events、WebSocket)

https://www.kimullaa.com/entry/2016/01/17/231359


EventSource

https://developer.mozilla.org/ja/docs/Web/API/EventSource


Webブラウザの画面にページが表示(レンダリング)される前にJavaScriptを実行したい - DOMContentLoaded イベントの利用 (JavaScript プログラミング)

https://www.ipentec.com/document/javascript-using-dom-content-loaded



Androidアプリのポートフォリオは、2D系ゲーム、タイマー、アラーム、リマインダーなのどポートフォリオを作ってみると良いでしょう、できれば3D系ゲームも。

ゲーム系なら画面をカラフルにしても良いです。


下記は当方が作成したAndroidテトリスのキャプチャ動画です。

https://youtu.be/Mf49zmHEaI0

↑これは2D系ゲームの範疇になります。



(バックエンド系の)ポートフォリオの注意点

例えばスクールの卒業生は面接にECサイトのポートフォリオを持って来るので、そのレベルの難易度が推奨されます(つまりECサイトを作れるレベルがプロの最低ラインと思って良いです)が、テックキャンプの卒業生の粗製乱造により、ECサイトを作るとテックキャンプのヤッツケ課題だと勘違いされるのでヤメたほうが良いと言われているようです。

なおスパゲティーだと、当然 評価は下がるので、コードは1度書いたら終わりでは無く、どうしたら読みやすいコードになるか、何度も見直すと良いでしょう


(プロを目指すなら)とりあえずベンダーに自分の実力をアピールすることが重要なので 、ポートフォリオをいくつか作ってみると良いでしょう。


「HTML、CSS」のレベルはデザインセンスは必要ないですが、デバッグで確認しやすいように配慮する。

高度なレイアウトはフロントエンドの担当なので、通常はバックエンドは高度なレイアウトは必要ないでしょう。

「HTML、CSS」は基本的にform、input、textarea、select、button、submit、div、span、table、tableセルの縦・横の結合、全要素指定"*"、border、インラインブロック、フレックスボックス、width、height、min-width、min-height、autoぐらい分かってれば良いでしょう。

それぐらいの基本的な「HTML、CSS」ならググればなんとかなります。

borderを指定すれば目視で要素サイズを確認できるので、レイアウトが思うように組めない場合は、borderを指定してみると良いでしょう(一時的にborderを全要素指定"*"してみるのも良いでしょう)。


業務の場合は基本的なレイアウトの仕様は決まっていると思われますが、仕様書に要素のサイズが明記されて無い場合は、基本的には内因性サイジングを意図しているので、基本的には要素のサイズは指定しなくて良いですが、明らかにレイアウトが変なら要素のサイズを指定すれば良いでしょう。

ブロックレベル要素は横幅が100%に広がるので、もし横幅も内因性サイジングにしたい場合は、インライン要素では無くインラインブロック要素がオススメです(インライン要素だとCSSの設定が効かない場合がある)。

なお画像などはサイズの指定が必要になると思われます。



(バックエンド系の場合)難易度としてはECサイト・レベルを想定するとなるとTwitterとか良いかもしれません。

以前のTwitterは本質的にはチャットであり、リアルタイム的に記事が更新されていました(現在はリアルタイム的に記事が更新されませんが)。

以前のTwitter仕様で作成したいならチャットを作れば良いでしょう(Ajax(JavaScript)が必用)。

プログラムに「SQL、正規表現、JSON書式」を組み込んで、「それらの知識は有りますよ」とアピールすると良いでしょう(もしそれらが使われて無いと、それらの知識が無いと判断されますので)。


Twitterの主な機能は下記のようになります。

一気に全部 作る必要は無いです、1つ1つ徐々に機能を追加して行くと良いでしょう(自分で優先順位を付けて下さい)。


機能

・「記事+メディア系(画像、音声、動画)」を投稿できる

・「記事の削除」が可能

・「@~」でユーザーの全記事を検索できる

・「#~」でキーワードを検索できる

・「@~#~」で特定のユーザーのキーワードを検索できる

・「通常のワード検索」

・「記事にコメント」が付けられる

・「コメントの削除」が可能

・「フォロー」

・「リツイート」


なおポートフォリオとして提出しないにしても、ECサイトを作ってみるのは勉強になるでしょう。

上記のような感じでECサイトもAmazonなどを参考に実際にどのような機能(売る側に必要な機能、買う側に必要な機能)が必要か考察してみて下さい。

チャットなどでは参加者数が多くなると、サーバーに負荷が掛かると言う問題がありましたが、Comet(+Ajax)で処理を軽くできるらしいので、その普通のTwitterができたらComet(+Ajax)にも挑戦してみると良いでしょう。


>Ajax(JavaScript)が必用


現在、世界的にjQueryは着実にシェアを減らしており、もうオワコンでしょ、などと囁かれており、通常はVanilla JSにしておけば良いでしょう。


参考


JavaScriptフレームワーク

http://pleiades.vs.land.to/utf8/smt.cgi?r+sara/&bid+00000325&tsn+00000325&bts+2020/05/25%2017%3A50%3A20&


参考

※下記でチャットの基本概念が分かるでしょう。

その「PHPデモ/チャット、Javaデモ/Servlet:チャット」の「Template.html」のコードは完全に同じだと言うことに注意して下さい。

なお、プロならファイルは使わないでしょうから、ファイル・ロックは そんなことも有るんだな~程度に読み流して良いです。


PHPデモ/「チャット:SPA(Single Page Application)」:「ファイル・ロック、AJAX、タイマー」(Ver.3)

http://pleiades.vs.land.to/utf8/smt.cgi?r+sara/&bid+00000743&tsn+00000747&bts+2023/07/12%2001%3A32%3A02&

Javaデモ/Servlet「チャット:SPA(Single Page Application)」:「ファイル入出力、ファイル・ロック、AJAX、タイマー」:「RandomAccessFile、FileChannel、Charset、ByteBuffer」(Ver.2)

http://pleiades.vs.land.to/utf8/smt.cgi?r+sara/&bid+00000746&tsn+00000748&bts+2023/07/13%2019%3A40%3A08&



担当者は大量のポートフォリオをチェックしているので、目にチカチカするようなカラフルな画面だと、ゲンナリします。

変にカラーを使うよりは(グレー系で)質素な雰囲気の方が良いでしょう。

モチロン目に優しければグレー系でなくても良いですが、グレー系が一番簡単です、とにかく目に優しい質素な雰囲気を目指して下さい。

つまりオリジナルの配色に囚われる必要は無いです。



バックエンドにおいての「HTML、CSS」のレベルは下記の2つの画像(恐らく中学生の課題だと思われますが)ぐらいできれば余裕だと思われます。

実務では、サイズの指定はほぼ無いと思われますが、腕試しとして(サイズを指定して)トライしてみると良いでしょう。

下記の課題はdiv、span、table、tableセルの縦・横の結合、全要素指定"*"、border、インラインブロック、フレックスボックス、width、height、min-width、min-height、auto、position、static、relative、absolute、top、bottom、left、right、ぐらい分かってれば良いでしょう。

それぐらいの基本的な「HTML、CSS」ならググればなんとかなります。


下記の注意点としては、positionは使わずに、「table、フレックスボックス」などで作成してみて下さい(その程度のレイアウトでpositionを使ってるようでは、いくらなんでもスキルが低すぎますので)。

tableのみ、フレックスボックスのみの2パターン作ってみるのも良いでしょう。


https://drive.google.com/file/d/1fUHVK3iy2w3Vtmo2CiMGkSTANFXJTst5/view?usp=sharing


下記の注意点としては、positionもバリバリ使って良いです。

濃い緑の枠はtableにすると良いでしょう。

黄色で囲われいる部分は中央配置です。

赤で囲われいる部分はギャップは明記されてませんが等間隔と考えて下さい。

等間隔ならフレックスボックスを使いますが、フレックスボックスは幅は100%に広げずに、赤で囲っているように内部の要素にピッタリ合わせるようにして下さい。


https://drive.google.com/file/d/17nqdLovxu8k5wJZumYsE6TgVIrW7tk9z/view?usp=sharing



(フリーランスの)案件によっては「フロント」が表記されている場合がありますが、「フロント」が表記されている場合は、ガチのフロントエンドのスキルが要求される可能性があるのでご注意下さい。

ガチのフロントエンドはマジに難易度が高いので、そう言う案件はヤメておいたほうが無難です。


コメント

このブログの人気の投稿