noteのタイトル画像

「The ”稼げる”プログラミング言語」とは。これからのプログラミング言語の話をしよう

目次
・あなたはプログラムを組んで、稼ぎたいですか?
・昔はソフトウェアよりもハードウェアで売っていた
・コンピュータ、ソフト無ければただの箱
・どのプログラミング言語が稼げる?・AI, IoT時代の申し子
・全てのプログラミング言語なんて覚えきれん!どれか一つにして頂戴
・簡単なことから始めよう(誰でも初めの一歩はある)

●あなたはプログラムを組んで、稼ぎたいですか?

この記事を読んでいるってことは「YES」ですよね。

ガチでプログラムを組みたいとまでは思わなくても「ある程度理解しておいた方が有利?」くらいには思っているでしょう。

あまり気負う必要はありません。

車を購入して、車の分解修理まで出来る必要は無いですが、オイルを交換したり、空気圧をチェックしたり、車から発せられるいろんなシグナルの意味を少し知っておいた方が得であることに変わりはないと思います。

そして車と違ってソフトウェアを構築・保守する環境は、今の時代簡単に手に入るのです。
(自動車整備工場を持つことはちょっと無理ですよね)

●昔はソフトウェアよりもハードウェアで売っていた

昨今のソフトウェア業界は、IoT、AI、機械学習やクラウドだのと、めまぐるしく技術やプラットフォームが移り変わっています。
もう、すべての”もの”にコンピュータが組み込まれていると思ってもあながち間違いではない世の中です。

ノイマン式コンピュータがこの世に出現したのが1950年代であるからして、まだ100年も経っていないのに。
(紀元前から行われている建築業界に比べて、赤ん坊以下の年齢ですね)

私が初めてコンピュータというものを実感したのが中学生の時に手にした「ポケットコンピュータ」という電卓に毛の生えたような代物でした。
要は「電卓の成り上がり」だったわけですね。

日本でコンピュータのことを「電子計算機」と言ったのは、電卓の親玉みたいな存在からスタートしたせいでしょうか。
中国ではコンピュータのことを漢字で「電脳」と書きます。
昨今のAIブームを考えると、電脳の方が時代に即している気がするのは私だけでしょうかね?

中学生でポケットコンピュータ(ポケコンと呼んでいました。ポケモンではないですよw)を使い、高校生の頃にやっとまとも(?)なCPUを積んだ「ワンボードマイコン」が発売され、当時としては10万円弱というとてつもなく高額な値段のため購入を断念した記憶があります。
大学生になる頃には爆速で進化を遂げて、学校の研究室に一台以上のパソコン(パーソナルコンピュータ)が設置されました。

当時は、まだハードウェアの性能を競っていた時代です。
「どこそこのメーカのパソコンの方が計算が早い」とか、「こっちのグラフィックは256色も出る!」とか。
あまり「ソフトウェア」にフォーカスされていなかった時代です。

でも四半世紀以上経過した現在では、ハードウェアの優劣でコンピュータの優劣を語ることはほぼ無いと言ってもいいでしょう。

時代はもう「ソフトウェア」なのです。

●コンピュータ、ソフト無ければただの箱

そう、当時流行った「コンピュータ、ソフト無ければただの箱」という言葉は、当時以上に的を得ているのです。

ハードウェアが星の数ほどあるのと同じように、ソフトウェアも膨大な数があり、そのソフトウェアを構築するために考え出された「コンピュータを動かすためのプログラムを記述するための言語」もいくつも発表されました。

代表的なものは、C言語でしょう。
当時UNIXという OS(オペレーティングシステム)をこのC言語で記述したことで超絶有名になり、ちょっと法外な評価をもらって爆発的に拡散していきました。(少し筆者の私見が混じってますが)

C言語はかなり古い言語ですが、

古いとはいえ C言語が使えれば今でも立派に稼げます

C言語の前に登場していたアセンブラ(機械が理解しやすいように人間側が歩み寄った、非人道的な言語ですが)でさえ、まだまだ使いどころはあります。

何故か?

それは、まだまだ需要があるからです。
逆に昔の大学生の必須科目の一つだった「Fortran」。
もう、見るも無残ですね。

このように言語は時代によって廃れもすれば、脚光を浴びたりします。

●どのプログラミング言語が稼げる?

では、今、どんなコンピュータ言語が「稼げる」と言われているのでしょうか?

次のような調査結果があります。

一口に言って
・人気 = 高収入
・人気 = 使いやすい
という訳では必ずしもないですが、人気であればあるほど
・就職に有利
・仕事の案件が多い
のは確かでしょう。

上記の記事では人気の言語として
「動的プログラミング言語」では
 ・JavaScript (クライアントサイドもサーバサイドも)
 ・Ruby
 ・python
 ・PHP
「静的型付言語」では
 ・Java
 ・C/C++
 ・C#
 ・swift
をあげています。swiftが入っているのはiOS(iPhone関連)の事業が伸びているからでしょうね。

●AI, IoT時代の申し子

次のような調査もあります。

昨今の急激なAI, IoTブームのせいもあってか、Scala、pythonなどが使えるAI、機械学習、深層学習エンジニアの獲得競争のせいで単価は上がっているようです。
ですが、scalaやpythonエンジニアであれば誰でも言い訳ではありません。
AI、機械学習などの高度な知識をもったエンジニアの単価が高いのです。
分野としてこれから有望な市場ですので、若いエンジニアはこぞって参加して欲しいものです。

では、そこまでガチで学習するわけではなく、効果的に効率よく稼ぐには?

フロントエンド(画面)もサーバサイド(ロジック)もそれなりに構築できること

が筆者は重要だと考えています。(異論があることは承知の上)

昨今はwebページを持っていない企業は無いですよね?
REST APIを公開していないビットコインの取引所と取引したくないですよね?(そもそも自動プログラムで自動売買ができないし)

フロントエンドからサーバサイドまで幅広くサポートし、なおかつ「ただいま絶賛爆速で進化中」な言語が「JavaScript」なんです。

JavaScriptは実は結構古い言語です。
そんなJavaScriptにも、かなり不遇な時期がありました。
ブラウザ上で実行される言語として採用されたのは良いのですが、当時のセキュリティの甘さから「言語自体がウイルスだ」とか「JavaScriptを有効にしているとウイルス招き放題」なんて言われて、デフォルトでオフにされそうな勢いでした。

その待遇が一気に改善されるきっかけは「Ajax」という仕組みの台頭です。
皆さんもgoogle mapのお世話になったことはありますよね?
あれだけの情報量の地図が瞬時に画面に現れて、スムースに動くなんて、当時を知る私には魔法のようで信じ難かったです。
これもJavaScriptの有効利用をGoogleさんが開発してくれたからですね。

そしてフロントエンドでは JavaScript は見事に復権を果たしました。

で?サーバサイドは?
当時はまだサーバサイドはJavaやC#のような他の言語でガチでロジックを組むことが主流でした。
しかし、ここでまたGoogleさんがやってくれます。

「フロントエンドと同じ言語でサーバサイドも実装できれば、楽じゃね?」

そう。それがNode.jsの始まりです。

●全てのプログラミング言語なんて覚えきれん!どれか一つにして頂戴

フロントエンド(Web画面)からサーバサイド(REST APIサーバ)まですべて「JavaScript」で書いちまえば良いじゃないか!

バックに巨大パトロンをかかえる Node.jsはもの凄い勢いで進化したのです。そしてJavaScriptは当時のような「ちゃちい(失礼)言語」ではなく、「めちゃ使える言語」に昇格していきました。いまも絶賛進化中です。

webサイトを立ち上げようと思った時に利用できるフレームワークは山ほどあります。世界中のエンジニアが新しいモジュールを日々開発しています。
探せばまず当たります。(犬の周りに棒だらけ)

逆に、pythonやRubyではフレームワークの選択肢が限られます。
(もっともpythonには統計分析や科学技術計算のモジュールで1日の長がありますから、そっちは優位でしょう)

クラウド化の波も JavaScriptに追い風でした。
以前のnoteでも語ったことがありますが、Node.jsの苦手とすることにスケールアウトがあります。要は「リクエストがたくさん来ても、分身の術が使えないので一人で頑張る」しかなかったのです。
ただ、その障壁はクラウドの台頭で簡単に解消されました。
(もっとも、自動売買プログラムが外部からの膨大なリクエストを受けてスケールアウトする必要性を感じませんが)

ファンクション指向のプログラミングスタイルの台頭もNode.jsなどのスクリプト系言語に追い風です。
今の時代はスピード時代。サービスを日々改善していき、1日に何十回もプログラムを改修することが一般的になりつつあります。
サクサクとファンクションを記述できるスクリプト系言語の優位なところです。

もちろん、動的言語ゆえのデメリットもありますが、今の時代は、そのデメリットを勘案してもメリットの方が多いと考えている風潮はあります。

●簡単なことから始めよう(誰でも初めの一歩はある)

ここで皆さんの中で

俺はプログラムを他者から買って来て、動かすだけで良い

と思っている方は、これからの私のnoteに興味は湧かないかもしれません。
でも、買って来たプログラムが永久に保守される保証はありません。
何か問題があっても開発者のところでは問題が再現できないため「動かないプログラム」となってお蔵入りになってしまう可能性もあります。

筆者はアセンブラから始まり、C言語は当然として、C++, C#, Java, python, Ruby, Scala, R, JavaScript を使って業務をこなして来ました。
私はこれから

皆さんが、誰かから買ってきたプログラムを単に動かすだけでなく「稼げるプログラミング言語」を習得して、「オレ流Bot」化できて、他者と差別化出来るまで技術を伝授していければと願っています。

twitter: @o_matsuo
note: https://note.mu/o_matsuo
もフォローしてくださると、喜びます。
今後ともよろしくお願いいたします。

謝辞:
本noteを執筆するにあたって、色々と貴重なアドバイスをいただいた
コンドウ様にお礼を申し上げます。




ソフトウェア・エンジニアを40年以上やってます。 「Botを作りたいけど敷居が高い」と思われている方にも「わかる」「できる」を感じてもらえるように頑張ります。 よろしくお願い致します。