Rubyの行く末を見守っている

Rubyの行く末を見守っている

年収の高いプログラミング言語ランキングなど、毎年ネットを騒がせています。 長い目で何が良いかを見極めるのは難しいですが、ワタシはRubyの方向性を最も興味深く見守っています。

Ruby以外の言語

最近の動向

C#が登場したときは、Javaを真似た言語などと言われていましたが、ものすごい勢いで進化し続けています。 JavaScriptを思わせる自由度の高い記述で生産性を高めようとしているのでしょうか。

一方で真似されたはずのJavaが、今ではC#の後を追って自由度を高める方向に進化しているように見えます。 方向性が見えず、フラフラと後を追うことが目的になっているように見えるのはワタシだけでしょうか?

Webの火付け役になったPerlは5から6への転換に失敗し、コアなPerlファンは未だに5を使っているようです。 Perlより簡単にWebアプリが書けることで人気が出たPHPですが、6(5?)あたりから厳格な記述を目指し始めたのでしょうか? Javaの後追いをするも、当のJavaがC#の後追いでフラフラしているために、PHPはもはや何がしたいのか分からない状況です。

総じて固い言語は柔らかく、柔らかい言語は固くなる方向で進化を進めた結果、みんな中途半端なものになった気がします。

例外的な2つの言語

JavaScriptとPythonは上記の言語とは異なる道を辿りました。

Node.jsが登場し、JavaScriptはサーバ上で動く言語になりました。 サーバ上で動くだけにとどまらず、エコシステムを含めて進化を続けています。 正直、進化が速すぎてついていけません。

Pythonは第三次AIブームに乗っかって、急激に需要を伸ばしました。 元々、Cで記述された高速な処理を簡単にPythonモジュール化できる利点があり、Pythonの生産性と高速な行列計算があったため、AI言語としての地位を確立できたのだと思います。

Rubyの方向性

Rubyも他の言語と同様に、新機能を引っ提げてバージョンアップするのですが、方向性が独特です。 オープンソースとして公開しているため、経済環境に左右されない意思決定ができる、ということだけではないようです。

開発者のまつもとゆきひろさんはプログラミング言語オタクだそうで、過去数多のプログラミング言語に興味を持ち、実際にプログラミングされています。 プログラミング言語の歴史に精通し、過去から現在、そして未来を想像しながらRubyの方向性を思い描いているように感じます。

象徴的な話を2つご紹介します。

1つ目は最近リリースされたRuby3の型システムについて。 型を人間が指定するのは嫌いだし、コンピュータがチェックしてくれればいいじゃん、という発想です。

2つ目は「テディベアプログラミング」「ラバーダックデバッグ」などと言われる手法について。 自分の書いたプログラムを誰かに説明すると、問題が解決したり新たなひらめきが起こりやすいのですが、その相手は人間である必要はない、という話です。

  • まつもとゆきひろ氏「プログラミングコミュニティは終わらない文化祭」

    「よくあるのは、プログラミングをする人で、自分の席にテディベアを置いて、テディベアに話す人がいますね」とまつもと氏。「クマに説明しているうちに『ああ、わかった!』となるんですね。自分を客観化するというのがけっこう重要なので、そういうのを実践している人はけっこういます。ひらめいたらすぐに取り掛かりたいですからね」(まつもと氏)。

Ruby(2.3以降)ではエラーメッセージの中で「Did you mean? 候補のメソッド」と、プログラマの相談役になるべく提案してくれます。

年収の高いプログラミング言語

最初の話に戻りますが、プログラミング言語そのものはあまり年収に関係はなく、需給のバランスが大きく影響します。

例えばいにしえの言語COBOLは、エンジニアの供給不足で高単価なのだそうです。 大昔に作られたCOBOLの基幹システムがたくさん残っているのに、歴戦のコボラーは引退してしまい、メンテナンス要員が足りないのです。

今からエンジニアを目指すのであれば、流行りのAIエンジニア(Python)を目指すよりも遥かに好待遇で雇ってもらえると思います。 (恐らく手厚い教育も受けられると思いますし、学歴も重視されません)

また、年収を決めるのは言語よりも会社の売上です。 儲かっている会社が使っているプログラミング言語が高年収と言われているだけなのでは?と思います。

売上が大きい会社に転職すると、転職前と同じような仕事なのに年収が大きく変わることも珍しくありません。


謝辞
画像は Unsplash 様より使わせていただきました。