読者です 読者をやめる 読者になる 読者になる

文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

「Java は置き換えられる時期に来ているのか」を読んで

IBMが何やらjavaはcobolみたいに退場するよ、という記事を出したようです。


COBOL のように死んだ言語
業績低迷で死に体状態のIBMが、こんな事を書いています。

Java の置き換えとなりうる候補は無数挙げられており、.NET や Ruby、さらには Python まで、「Next Big Thing (次なる大きな潮流)」であると言われています。

私は特に言語ヲタでもないですし、凄腕エンジニアでも無いですが、現状の各種言語を取り巻く環境などを簡単にまとめてみようと思います。

トレンド

googleトレンドからいくつか見てみます。

ライトな言語

f:id:treeapps:20150531155835p:plain
予測チャートも含めると、大体の今後のトレンドが見えますね。

ruby 僅かな右肩上がり
python 緩やかな右肩上がり
PHP 危険な右肩下がり
perl 死ぬ寸前?
javascript 横ばい?

サーバサイド・ヘビーな言語

f:id:treeapps:20150531160228p:plain

もうjavaのシェアが大きすぎて、他の言語がよく見えません。ちょっと良く見えないのでjavaを除外してみます。
f:id:treeapps:20150531160831p:plain
.netの右肩下がりが目を引きます。どうみても泥船に見えてしまうのですがそれは・・・

各種言語雑感

python

個人的に、誰が書いても同じようなコードになる設計思想が非常に好きです。世界的なシェアも高く学習教材としても最適なので、衰退する兆候はあまり見えません。

しかし、v2からv3系になる際に互換性を捨てたためか、v3系への移行が進んでいないように見えます。

移行が進まない要因の一つとして、yumの存在もあるでしょう。yumはpython v2系で動きますが、yumの開発者は既に他界し、メンテが難しい状況になっています。それが原因でRHE・CentOS・Fedoraのデフォルトpythonのバージョンが未だに2系なのです。しかしこの状況を打開すべく、yumからフォークしたdnfが本格始動し始めたので、これからようやくRedhat系OSのpythonはv3系がデフォルトとなり、pythonは潮流に乗っていくと思われます。

ruby

rubyはRORで流行りこそしましたが、もはやどの言語もRORの設計思想を参考にしたFWは大量に出ており、特筆すべきアドバンテージは既に無くなったように思えます。主要なwebサービスを展開する企業がRORをやめているように、既にweb系の潮流から外れ、Vagrantやchefのレシピなど、web系以外での利用に追いやられているように思えます。

.net

.netは正直解りません。
May 2015 Web Server Survey | Netcraft
netcraftのwebサーバシェアを見ると、IISは35%くらいのシェアがあるそうです。IISは基本.netしか動かないので、IISのシェア=web系での.netのシェアなのだと思います。しかし昨今の活躍している会社が「.netで開発しました!」と発表しているのを全く聞かないので、日本以外でのシェアが高いだけか、華やかなwebサービス開発ではなく、古きよき?由緒正しい?業務系SIでよく使われるのかもしれません。

java

私はメインで使う言語はjavaなのですが、確かにもう終焉を迎えそう感をひしひしと感じています。メジャーバージョンアップしても大した機能追加もなく常に他の言語の後追いで、ラムダが実装されるまでに一体何年かかったのか・・・セキュリティパッチの配布も非常に遅いです。Oracleの腰が重すぎてここ数年で明らかに時代に取り残されている感を強く感じており、完全に沈みゆく泥船に乗っているような感覚に襲われます。

ただ、IDEとの親和性が他の言語とは比較にならない程に高く、javaの面倒臭さを大抵IDEが吸収してくれるので、実は「javaを使ってもそんなに困ってない」のが現状です。各種webフレームワークも、スーパーフルスタックで何でも揃ってるSpring、生産性が高いplayframeworkがあるので困らない。この2つのFWの存在も「javaで困ってない」要因の1つになっていると思います。既にあらゆる機能を網羅していて実績もあり、パフォーマンスも良好、冗長な部分を我慢しさえすれば、それ程困らない。

結局こんな感じで「javaで困ってない」人が沢山いるので、衰退はするが退場は有り得ないのでは?と私は思っています。しかしOracleの姿勢が気に食わない人が一杯いると思うので、そこは嫌ですね・・・

PHP

個人的にはPHPという言語が最も退場する危険性があり、cobol化するのでは?と思っています。いや、cobolより厄介でしょう。PHPを使う理由の大部分が「学習コストが低いからPHPを使う」のでしょうから、その学習コストが奪われたら、使う理由はあるのでしょうか。

PHPの「学習コストが低い」件ですが、node.jsが「サーバサイドまでjsで書けちゃううえ、パフォーマンスも高い」という特徴を持っているので、「学習コストが低い」点が奪われるのではないかと思っています。

著名なCMSが大体PHPで書かれているのでまだPHPは生き続けると思いますが、例えばWordPressが本当にnode.jsに対応(フォーク)しようものなら、PHPの存続が危ぶまれるかもしれませんね。唯一の拠り所であるCMSが奪われたりしたら、一体どうなってしまうのか。また、pythonやperlと違ってOSにデフォルトでインストールされている事もほぼ無いので、今後益々使う理由を問われるのではないでしょうか。

それらを考慮すると、即死する可能性を多分に孕んでおり、退場に最も近いのはPHPではないかと個人的に思っています。

では次の潮流は何なのか

個人的に今後の大きな潮流になりそうなのは

  • node.js
  • scala
  • golang

の3つだと思っています。

node.js(io.js)

この中で最も開発スピードが速く、あっという間にバージョンがアップしていきます。node本体だけでなく、ビルドやライブラリ周りの開発も非常に活発です。また、APサーバとしてのnodeのパフォーマンスも非常に高いです。webだけでなくエディタやIDEにも内蔵されるようになってきており、間違いなく大きな潮流になると思ってます。

欠点としては、開発速度が早すぎてついていけなくなるので、ついていくコストを払う覚悟が必要、とのことです。また、複雑なビジネスロジックを書こうとするとjavascript力が試されるので、カオスになり易いかもしれません。

現状シングルスレッドでCPUが使い切れない問題もありますが、開発が活発なのでそのうち解決されるでしょう。また、シングルプロセスによる障害への弱さもクラスター化で対応する等、徐々に弱点を克服している・していくと思われます。

scala

scalaはBetter Javaと言われるだけあって、javaが今後やろうとしている事は既に大体先取りしています。現状コンパイルが遅い問題があるようですが、これは時間が解決してくれるでしょう。

欠点は、開発者が少なすぎる点でしょうか。

golang

golangはC++等と競合する言語だと思いますが、CやC++より簡単で学習コストも低く、GCを備えてパフォーマンスも非常に高い、そしてgoogleが開発しているという安心感があります。Dockerがgolangで書かれていたりして、今後もっと増えていくと予想されます。

ただ、web系で使うには冗長過ぎるので、パフォーマンスが必要なバッチ処理等で活躍しそうです。

雑感

オブジェクト指向から関数型へのパラダイムシフトが起きていますが、そんなものとは一切無縁のブルーオーシャンがあります。


それは・・・



bash



凄いですbashは。zsh等もありますが、zshの利用は大体macユーザがローカル環境でzshを使うに留まる場合がほとんどで、競合がほぼいない状況です。
f:id:treeapps:20150531163431p:plain


見よこの圧倒的シェアを!!!

我が軍は圧倒的ではないか!!!

かかってこいよzsh!!!