https://findy-code.io/engineer-lab/github-programming-language-ranking 3 / クリップ 3 / クリップ 5, 回答 とはいえ、これも今では他の言語も当たり前のようにできているので、今なら特に優位性ではないのかもしれません。が、発展してくるまでの歴史の上では大きいものがあったと思っています。, 日本人は、国産のものを低く見て、欧米のものを高く見る傾向があります。 2019/2のTIOBE Index(プログラミング言語のランキング)は以下のようになってます。 時々大きく動くときもありますが、だいたいは、じわじわと上がったり下がったりといった感じです。ここ一年だとGroovyが49位から19位へと大幅にランクアップしてますね。 10年くらいのスパンで見ると大きく動いたのはObjective-C、Swift、Goです。 Objective-CとSwiftはAppleの、Go言語はGoogleのゴリ推し言語なので、例外的なラン … やはりスクリプト言語やるならPythonだしょ っていう感じなのか . 「編集」ボタンから編集を行い、質問の意図や解決したい課題を明確に記述していただくと回答が得られやすくなります。, (情報開示:私は公私ともにRubyの活動を行なっていているため、見解に偏りがあります。), あー、このGitHubのデータはちょっとRubyに不利なように見えてしまうんですよね。 どんな言語でも対応(適応)できる知識をつけることのほうが大事だとおもいますよ によると お好きな言語を学んでどうぞ. 2018年12月14日、品川シーズンテラスカンファレンスにてRubyアソシエーションが主催するイベント「Ruby Business Users Conference 2018 Winter」が開催されました。すでにRubyを活用しているユーザーや、これからRubyをビジネスに活用しようと考えている人が集い、情報交換を行いました。 CとかJavaが上位にあるまま, それともRubyになにか欠点がある????? Twitter, Pythonは海外で流行ってるのに日本ではRuby人気が高い(開発者が日本人のため), Javaのフレームワークが日本では未だにStrutsが使われてるけど、海外ではSpringやPlay、Java EEに移っている, 静的型言語であるTypeScriptからJavaScriptへ変換(トランスパイル)する技術, GoやScala、Kotlinのような「静的型言語だけど、簡潔な書き方ができる言語」, 2019年4月からOracle Javaの無償利用は、非商用、非本番利用のみ(データ処理、業務利用も除く)に制限されている。, Oracleがビルドした公式のOpen JDKもあるが、無償サポート期間が半年しかないため、商用では使いづらい, Open JDKをベースとした様々なディストリビューションがあり、長期に渡る無償アップデートの独自提供を表明しているもの(, ユーザー数が多い → CPUやメモリの使用効率が良い言語を使えばサーバ数を削減できる, 大規模なコードへの対応 → 静的型付け、メモリ安全性、ガベージコレクションがあると良い, サーバが多いのでデプロイしやすいほうがいい → Goならコンパイルしたバイナリを配置するだけでOK. 2, 回答 けど Rubyはオワコンまっしぐら Rubyがオワコンだと言われている4つの理由 TIOBE人気言語ランキングの低迷. Rubyも同じではないでしょうか。 2 / クリップ 逆に古臭いと感じてた 具体的に、誰がどういう判断でPythonではなくRubyを選んだか、というのは人それぞれだとは思います。が、少なくとも、「学習コスト」というのは、フレームワーク選択の中では無視はできないけど、どこまで重要かと言われると疑問があります。, Railsについては、一番の発明はBundlerだったと思います(※個人の見解です)。RubyGems的なものは他の言語にもありましたが、それを各アプリケーション内部に全部バージョン管理して取り込める、アプリ用のディレクトリを複数用意するとまったく違うバージョンのライブラリ群を管理しても相互に影響なく動かせる、というのを環境構築ができたのは大きかったです。 しかし、人気がないと情報が見つかりません。 0, JavaでWEB上にファイルをアップロードするには必ずServletを使わないといけないんですか?, 回答 IT業界がオワコンと呼ばれるのには、明確な理由があります。 この記事では、その理由を説明します。 ちなみに、先に言っておくと、IT業界でもWeb業界はオワコンではありません。 オワコンなのはSier(エスアイアー)業界です。 だから私は、Rubyよりpythonを選びました。, トレンドの言語を追いかけるのも大事だと思いますが、 ネットでは「○○(言語名)はオワコン」みたいなことがよく言われていますが、そこで挙げられた言語は今もなお使われ続けています。よく非難されているのはJava、PHP、Ruby、Perlですよね。, 2020/8のTIOBE Index(プログラミング言語のランキング)は以下のようになってます。, 時々大きく動くときもありますが、だいたいは、じわじわと上がったり下がったりといった感じです。ここ一年だとRが20位から8位へ、Rustが28位と20位へ大幅にランクアップしてますね。, 10年くらいのスパンで見ると大きく動いたのはObjective-C、Swift、Goです。, Objective-CとSwiftはAppleの、Go言語はGoogleのゴリ推し言語なので、例外的なランク変動だと考えるとプログラミング言語の人気って急激に変わるものではないようですね。, 長きに渡ってJava、C、C++のC言語ファミリーの言語が1位から3位を占めていたので、Pythonの3位は快挙です。, Pythonは機械学習や人工知能関連の分野での需要爆発によって着実に人気を伸ばしています。, プログラミング言語といえばC言語ファミリー(C/C++/C#, Java/JavaScript)でしたが、少しずつ時代は変わりつつあることが伺えます。, なんとなく、最近コードを書いていて、C言語系の構文が古臭く感じる人も多いんじゃないかなと。末尾にセミコロン打ったり、if文にカッコをつけるのとかって、RubyやPythonのコードを書いた直後だと、冗長に感じたりもします。, まぁ、日本が必ずしも世界の潮流を追う必要はないですし、日本がこのような状況なのにも理由があります。, Rubyは文法が洗練されていて書いていて楽しい言語だし、Javaの古いフレームワークが使われ続けているのも、業務システム開発では技術革新よりも安定した品質でシステムを開発・運用していくことの優先度が高いですからね。, Pythonについては日本でもAIブームによってユーザー数が爆増してるので状況は変わってきています。, っといってもJavaScriptは元から持ってた仕組みなんですけどね。例えば高階関数って以下のようなものです。, calculate関数がoperationFunctionという関数を引数として受け取っている所がポイントです。これが高階関数です。, addという足し算する関数を渡すと足した結果が返ってきて、divideという割り算する関数を渡すと割った結果が返ってきます。, 渡された関数を実行する前後でログ出力をしています。 Ruby. (さすがにRubyがPHPの2倍くらいユーザがいた時期なんて、当時のGitHubみたいに特殊な場所じゃないとありえないわけですよ…), とはいえ、ここ数年の停滞(よく言えば安定)は事実で、それはRailsというか、Webサーバサイドアプリケーションの開発が最先端ではなくなった、というのがあります。開発の活発なところがフロントエンドやスマホアプリに移ったり、データサイエンス・機械学習的な分野が興隆してきたのも大きいです。サーバサイドにしても、サーバレスだったりマイクロサービスだったりという分野では、Rubyの存在はいまいち目立っていません。, で、実際のRubyが活用される場面としては、やはりRailsですよね。Rails自体は特にオワコンということもなく、順調に更新されています。用途としては、元々スタートアップ方面で使われていたという経緯もあり、少人数でWebのサービスを立ち上げるのであれば、やはりRailsは最有力候補になるかと思います。, 実際にRailsを使っていて感じるのは、本体を更新すると使っていたライブラリが動かなくなってて辛いこともありますが、それでも移行パスが検索すれば分かることが多いというのが大変ありがたいですね。全部捨ててやり直し、みたいなことにはならないので。使い捨てのWebアプリではなく、長期運用しつつも適宜新しい機能も使っていくようなWebアプリを作れるという意味では、Rails使っててよかったと思うことは多いです。, そんなことはまったくない、と思います。Djangoをちゃんと使ったことはないので詳しくは知らないのですが、いくらなんでも駄目ってことはないでしょう。 More than 1 year has passed since last update. なぜならGitHubは早い時期からRubyのレポジトリには大々的に活用されていたのですが、GitHubが普及するに連れて他の言語も広まってきた、という経緯から、GitHubにおける割合という意味では一気に減ってきてしまうのでした。 結局言語なんて要件によって選ぶことが大半ですので。, まぁ今最新の言語を学んでも10年後にはオワコンになってるので、 やっぱrubyつかえねー web系でruby使ってて、 teratailを一緒に作りたいエンジニア, Ruby と Pythonの違いを説明しているとても分かりやすいサイトが有るので共有します。, 正直私はpythonもrubyも使っての開発経験はございません。わたしの普段の開発環境はプロフィールに詳しく記載してるので御覧ください。. ?」みたいな話になります。, 私が所属してる会社で、松江(市)にネットワーク応用通信研究所という会社があるんですけど、そこのエンジニアも何分の1かがCOBOL技術者です。, レセプトのソフトを作ってるんですが、医療関係で元オフコンみたいなシステムではわりとCOBOLが生き残っておりまして、保険の点数の計算のロジックなんかは、まだCOBOLでやってる人たちがいる。そういうふうにいうと、みなさんの知らない世界でCOBOLはまだ元気に動き続けているわけです。, 例えば金融機関とか、あるいは大企業の中のシステムとかには、メインフレーム+COBOLみたいなものが意外と残っていたりする。知らないだけなんです。, とはいうものの、死んだように見えるという点では、何十年か前に一世を風靡した「プログラミング言語といえばFORTRAN」みたいな雰囲気とか、あるいは大学でプログラミング実習といえばFORTRANという時代もあったわけですけど、そういう空気はもうなくなっている。, 大学生が「プログラミングを勉強します」というときに出てくる言語がFORTRANであることはもうなくて、JavaだったりCだったり、あるいはRubyとかPythonを使うところも増えてますね。そういう、ファーストチョイスにならないという意味では、旧世代の言語というか、しばらく前の言語の凋落は明らかです。FORTRANとかCOBOLの絶頂は30年とか40年前で、今やだんだん凋落している言語であると。, 「Rubyはどうか?」という話ですけど、Rubyはよく「死んだ」って言われる言語です(笑)。まぁ、いろんなことがあったわけです。例えばTwitterは、もともと、2007年に始まったときはRuby on Railsのアプリケーションだったんですが、何年か経って、彼らの増え続けるユーザーやトラフィックを扱うときにRubyでは難しいということで、Java Technology……具体的にいうとScalaという言語で、コアの部分を書き直したんですね。, Twitterみたいな規模のものがRubyから移行したということで「Rubyは死んだ」みたいに言われることが増えたり。, あるいは、オランダの会社で、 TIOBEという会社が毎月プログラミング言語の人気ランキングみたいなものを公開してるんですね。インターネットでどのぐらいその言語が検索されたかとか、そういう指標から出しているらしいんですが。, これも上がったり下がったりするのですが、Ruby on Railsが非常に話題になっていた頃には、8位とか7位とか、それぐらいまでRubyは上がってたんですけど、最近ちょっと下がり気味なんですね。つい一昨日だかに今月分、2018年12月分が発表されたんですが、確か17位だったかな、だいぶ下がっているという話です。, これをもってして「Rubyは死んだ」みたいなことを言う人がいて「またかよ?」という感じなんですけど、そういう意味でいうと「Rubyは凋落している」と見られているところもあると思うんです。, あるいは、静的なプログラミング言語と動的なプログラミング言語の間で、トレンドが振り子のように変わったりするわけですが、2010年代のプログラミング言語は静的な言語が多いんですね。, 最近出てきた言語は、昔と違って、けっこう静的型のついたプログラミング言語が多い。例えばGo。これ、出たのは2009年ですが、静的型の言語です。Swiftにしても、Rustにしても。それから、JavaScriptに対して型をつけたTypeScriptみたいな言語があったり。, 式、変数、引数、戻り値といったものに静的に型を宣言することによって、コンパイル時により多くの型をチェックする、より多くのエラーを見つけるというようなことが流行っている時代ですね。, そういう意味だと、2010年代もだいぶ終わりが近づいてきましたが「2010年代のプログラミング言語は静的に傾いている」と言ってもいいんじゃないかと思います。, これはなぜかという理由を考えると、現代のプログラミング言語が「スケール」という問題に直面しているというところがかなり大きいんじゃないかと思います。, スケール問題とは、つまり、昔は牧歌的だったので、例えば「Web作ります」「Webサービスを作ります」「Webアプリケーションを作ります」といったときに、集まるところのユーザーがすごく少なかった。例えば、Windows 95が出た1995年はインターネットを使っている人なんてすごく珍しかったので、サービスを作っても、集まるユーザーは数百人とか、毎秒アクセス2とかで、パフォーマンスについて問題が起きることは特になかったわけです。動くかどうかだけが問題だった。, ところが現代は、すごい数の人たちがインターネットにアクセスするためのデバイスを持つようになったんですね。具体的にいうとスマートフォンです。そうすると、なにかがバズると数百万、数千万アクセス集まることがぜんぜん珍しくないようになってきたわけです。, そういう人たちがてんでバラバラにアクセスすると、例えば毎秒アクセス数千とか、かなりのトラフィックの、昔だったらハイトラフィックな、日本を代表するWebサイトじゃないとありえなかった状況が、ごく普通のサービスでも起きることがあった。そういった「データが集まる」「トラフィックが集まる」という意味でのスケーラビリティが問題になりはじめました。, さらに、いろんなものがWebで実装されるようになったので、Webアプリケーションに求められる機能がどんどん増えていくわけです。「あんな機能も提供しよう」「こんな機能も提供しよう」となると、Webアプリケーションがどんどん複雑化する。, そうすると、スケールといってもいろんな意味のスケールがあって、トラフィックあるいはデータ量という意味だったり、それからコードの複雑さ、あるいはチームのメンバーの数という意味でのスケーラビリティもあるわけです。, そういう問題に対処する手段の1つとして「プログラミング言語に静的な型をつける」ことが最近ホットになっているというわけです。, ソフトウェアを開発するということは、そういった概念を(実際に)動くソフトウェアに持っていくということでもあります。「こんなことをするソフトが欲しい」と頭の中でぼんやり思ってるだけではソフトウェアは動かないので、「欲しいものがいったいどういうことか」をこと細かに定義して、それをだんだん動くソフトウェア、そしてその背景になるロジックを記述してコンピュータにわかるように教えてやるという過程がソフトウェア開発なわけです。, そうすると、頭の中にあるぼんやりとしたイメージをどんどん段階的に具体化していって、コードに書いていく必要があるんですね。「このソフトウェアはいったいなにをするのか?」ということが初めから詳細にわかっているなら、まず仕様を書いて、その仕様のとおりソフトウェアを開発すればいいんですけど、現代におけるソフトウェア開発では、そういうことはむしろ少ない。, 頭の中にぼんやりイメージがあっても、ぼんやりとあるだけなので、細部が定義されていないんですね。その細部を定義していって、やってみて、動かしてみて「あれ? イメージと違う」って軌道修正していくという開発手段がほとんどになってきています。具体化してロジックしてコードに直したときに、頭の中にある「こうあるべきだ」というイメージとのズレを途中で軌道修正してやらないと、いいものができない。, そうすると、俊敏な開発というんですか、途中で軌道修正するときに、俊敏あるいは柔軟に開発できることがけっこう重要になってくる。, 一方、そうやってソフトウェアを開発していくと、どんどん機能が増えていきますし、ビジネスが成功していくにつれてチームメンバーもどんどん増えて、コードも複雑化するので、それらとソフトウェア開発におけるソフトウェアの成長段階とどのように戦っていくかが大きなチャレンジになってくるわけです。, ソフトウェア開発者は、そういうさまざまな問題を解決するためにどんどん出てくる新しいテクノロジーを、学んでいくことが必要なんですね。本当に、日々勉強を続けないといけない職業です。だから、自分の抱えている問題を解決する新しいテクノロジーを探し求めること自体が、ある程度趣味みたいな人がけっこうたくさんいます。, そうすると、例えば、PythonとDjango、あるいはPythonとFlaskみたいに、Pythonという言語とWebアプリケーションフレームワークを組み合わせましょうとか。あるいはElixirという言語とPhoenixというWebアプリケーションフレームワークを組み合わせましょうとか。あるいはCrystalという言語と、AmberやAmethystやLuckyを組み合わせたり。Crystalはまだ定番のWebアプリケーションフレームワークがないので、いろいろありますけど。, これらの言語にはRubyとは違う特質があるので、それを使って自分たちの生産性をより高めたいと思う方はたくさんいらっしゃるわけです。さっきは挙げませんでしたけど、例えばRust、あるいはGoを使って、「自分のプログラミングの性能を改善しよう」「生産性を高めよう」という人たちもたくさんいらっしゃいます。, そういうふうに、新しいテクノロジーをどんどん求めている人がいる。というのは、RubyもRuby on Railsも定番の技術になっていて、出てからもう10年以上経つので、いろんな道具は揃っているにしても、劇的に新しいことはあんまり起きないわけです。, そうすると、ブレークスルーを求めて、極端に生産性を上げる方法はないだろうかとほかのテクノロジーを見にいきたくなるのは、人間の……人間というと主語が大きいですけど、技術者の本能みたいなものだと思うんです。, じゃあ、その「自分のアプリケーションを新しい技術・言語・新しいフレームワークでやってみよう」という人に話を聞いてみると「プロトタイプはそれでやってみました」「いくつか試してみたけど、結局Rubyに戻ってきました」という人が、けっこういるんです。, 新しい言語、新しいやり方はすごくおもしろいけど、例えば「〇〇するライブラリがなくて自分で作らなくちゃいけなかった」「情報が少なくて、Webを探し回ってもあまり見つからない」「ソースコードを読まないといけなくてつらかった」と。, 安定性とか安心感、あるいはビジネス上の価値。結局(今まで)問題だと思ってた部分は新しい技術によって対応されたけど、それ以外の問題がどんどん発生して、トータルのビジネス上の価値としてはどうなの? ということが起きがちなんです。そうすると、場合によっては信頼と実績のRubyとRuby on Railsに戻ってくるということが、よくあるわけです。, RubyとかRuby on Railsだと、簡単なWebアプリケーションをすぐ作ったり、あるいは、さまざまなジャンルで実際の適用例があるので、なにか困ったとき同じ問題に直面した人を探せたり、あるいはその問題を解決するRubyGemsを見つけられる。そういう点でいうと、トータルの生産性はかなり高いことがあるんですね。, なので、テクノロジーとしては、2010年代にどんどん新しく出てきた言語が持ってるあの機能がないとかこの機能がないとか、そういうカタログスペック上の欠点があるように思えても、トータルの生産性あるいは効率のよさを考えると、Ruby on Railsのビジネス上の価値は、実はそんなに下がっていないと思うんです。, 先ほどのTIOBE Indexみたいなランキングは、技術者が新しいことを学ぶときに探すところで順位がついているので、ホットなトピックというんですか、新しく出てきて話題になっているものが上に来がちなんですよね。, だから、実際に仕事として、あるいは自分のプロダクトを作るときに、どんな言語を選択してどういうふうに開発したらいいのかを考えると、Rubyの持っているビジネス上の価値はそんなに下がっていないと思います。たとえ順位が下がって、表面上Rubyの人気が凋落したように見えても、ある意味「まだまだ大丈夫」が1つの見識だと思います。, ただ、全員がこうやって安心してても、それはそれで困るわけで。「それ、ホントかな?」と。, 実際に明日、ソフトウェア開発者として、自分たちのチームがWebアプリケーションを作るとします。言語を選択するとき、さっきの「まだまだ大丈夫」は真実ではありますが、非常に長期的に見たとき「いつまでもこれで本当に大丈夫か?」と考えると、ちょっと危機感を持ったほうがいいと思う。, 人間には「恒常性バイアス」というものがあって「今日が大丈夫だったから明日も大丈夫」と思いがちなんですね。本当は危ないのに、なんとなく「明日も大丈夫だろう」って思い込む、そういう心理的・認知的な癖がある。なので、先んじて不満をキャッチすることが必要なんです。, 実際、例えば東日本大震災のとき「津波が来ます」と言われているのに「この間来た津波は大したことなかったから、今回もきっと大丈夫だろう」と言って逃げなくて、巻き込まれた人がすごくたくさんいるんですね。恒常性バイアスが悪いほうに出たわけです。, なので、Rubyが凋落したと言われたとき、論理的に考えてもまだだいぶ大丈夫なんだけど、いつまでも本当に大丈夫と思ってていいかどうかは、また別に考えないといけない。とくに、Rubyそのものを作っている人は。, Rubyの話をしているときに、未来に対しての不満や課題で一番出てくる話題は、やっぱりパフォーマンスと、それからエラー検出なんですね。結局はスケーラビリティにつながるわけですが。, つまり「トラフィックが増えました」、あるいは「ユーザーが増えました」「データ量が増えました」といったときに、パフォーマンスの問題がある。, もしRubyのパフォーマンスがもっと高ければ、データセンターから借りているマシンの数が3分の2で済むかもしれない。そうすると、サービスを提供するときの固定費が30パーセント削減できるわけです。サービスが大きくなればなるほど、その30パーセントの金額は大きくなる。ですから実は、パフォーマンスは、お金に直結するかなり重要な問題でもあります。, それから、ソフトウェアの規模が大きくなったときに、より早く、よりたくさん、より網羅的にバグ・間違い・エラーを見つけられれば、ソフトウェア開発のスピードをさらに高められるわけです。そうすれば、より大きなソフトウェア、より複雑なソフトウェアをハンドルできて、よりたくさんの機能を提供できる。それもまた、求められていることではあるんですね。, Rubyを使っていると、エコシステムは揃っているし、いろんなライブラリを自分で開発しなくても済むけど、自分のロジックにおいてエラーの発見が遅れてちょっと不安なところがあるとか、あるいはデータセンターのマシンをよりたくさん用意しなくちゃいけないのでコストの面で不安があるとか、そういう話はたまに聞くんです。, Rubyそのものを提供している側としては、そういうユーザーの持っている不満に対するアンテナを高く掲げなければいけません。そこでなにをしようかという話ですが、パフォーマンスもさらに改善しないといけないと思っています。, Ruby Business Users Conferenceに関する記事をまとめています。コミュニティをフォローすることで、Ruby Business Users Conferenceに関する新着記事が公開された際に、通知を受け取ることができます。, Ruby3が目指すのは“3倍速” まつもとゆきひろ氏が語る「プログラミング言語サバイバル」とRubyの未来 - Part2, iOSはSwiftで、AndroidはKotlinで 「LINEマンガ」のアプリを支える開発言語たち, 大企業にはさまざまな問題解決の機会がある メガベンチャーの地方開発拠点で働くという選択肢, Kubernetesトラブル原因特定を容易にするロギング強化機能 富士通のエンジニアが考えたその課題と解決策, 分散学習にはHorovodを使う 文献から学ぶクラウド機械学習のベストプラクティス, 食べログの基盤をいかに安全に運用するか VM運用からKubernetes運用に安全に移行する方法, フィギュアスケートのジャンプ回転不足を判定してみる スポーツにおける映像分析の難しさ, 大規模ならではの課題とチャレンジがある LINEが求めるサービスネットワークエンジニアとは, 企画から分析まで、ほぼ毎日デプロイ LINEのAd Network & Performance 開発室では1から100まですべて担当できる, 大企業なのに大企業らしくない 僕らがLINEでフロントエンドエンジニアとして働こうと思った理由, あらゆるモノが安全につながれば世界は変わる ビットキーの認証認可プラットフォームが目指すシームレスにつながる社会, なぜ、Rubyを変えるのか––まつもとゆきひろ氏がRubyKaigi 2019で語ったこと - Part3, Rubyのパフォーマンスをいかにして改善するか まつもとゆきひろ氏がRubyKaigi 2019で語ったこと - Part2, Ruby3で導入される静的型チェッカーのしくみ まつもとゆきひろ氏がRubyKaigi 2019で語ったこと - Part1, なぜ開発言語にRubyを選んだのか? SmartHRが明かす、成長の軌跡と技術選定 - Part1, Ruby Business Users Conference 2018 Winter.