はじめに
ちょっと前に(元の情報が見つからなかったので引用できませぬが)「スクールがRailsを教えるのはそれしか教えられないから」のような話題が出ていて、しばらくしてから、下記の内容が出てました。
働く業界によって学ぶべき言語が変わる、というのは目からウロコだった。
— 特命任務ヒツジ (@sheepWebiOS) 2018年6月14日
スタートアップで働きたいのだったらRubyだし、モバイルアプリ作りたかったら、SwiftやらJava。
安定して確実にお金をもらうのなら、体質は古いが、長く続いてる企業の言語COBOLかJavaか?
この内容の出元はおそらく私だと思います。弊社のiOSメンタリングの最中に挟んだ雑談の内容が元だと思うのですが、若干ニュアンスが違うところもありそうなのと(極端に見える)「就活をしている時にこういう内容が知りたかった」と仰っていたのもあり、改めて文章にしてみます。
前提やスタンス
以下の文章は私個人が見えたり聞けたりしたものから推察しているものなので、特に統計を取ったり確約できるような情報があるものではありません。また、もしも私なんかより確からしいことを知っている方がいたら(人材系のお仕事の方とか詳しいですか?)、情報出していただけると皆にとってプラスになると思います。私もそういう情報を拝見してみたいです。まず自分の理解を出してみようと思いました。
「ここは今は違うよ」とか「実際はこうだよ」とか指摘あったらブログなりで是非いただけると嬉しいです。確からしい情報をできれば手に入れたいです。
会社作る前(7年以上前)のフリーランス時代の体験と、その後の会社を作ってからの体験の組み合わせでしかないので偏っている可能性をご理解ください。また私がシステム開発の分野で仕事をし続けているので、クリエイティブな分野やゲームの分野などについてはノータッチにしています。
言語や使われている業界などについて私目線の話
Ruby(Ruby on Rails)
言語で言うとRubyですが、WEBの開発になるとほぼRuby on Rails一択になっていると思います。なので以下Railsについて記します。
特徴として「素早く顧客に価値を提供できる」というものがあったので(最近は他のフレームワークも追いついてきていると思いますが、当初の売り文句がそうだったし、そういう歴史を重ねているはずです)、スタートアップや新規事業で用いられることが多いと思います。以前より割合が多くなった印象もあります。
そのため、最近の求職で「自社でサービスをやっている会社」という風に調べていくとRailsを利用している会社が多くヒットするのではないでしょうか。
PHP
多分大きくいくつかのタイプに別れると思います。
OSS利用の制作案件中心(Wordpressなど)
いわゆる「ホームーページを作ります」のような案件でよくWordpressのようなCMSが利用されてきた流れがあったので、それを踏襲しているものです。場合によってはECCubeなども組み合わせたりとかあったようですが、どちらにしてもOSSで提供されているものをカスタマイズして納品していく比較的小規模な受託ビジネスや、フリーランスさんの案件で傾向の多い内容だと思います。Lancersさんのようなクラウドソーシングを探ると一時期こういう案件がかなり大量にヒットしました(現在はよく知りません)。
システムとしての難しさよりも、お客様の望む見た目のサイトを作ることになるので、利用しているOSSのカスタマイズのコツやHTML/CSS側で見た目を整えることが望まれるはずです。
古くからの開発会社(Zend Framework、CakePHP2などのフレームワーク利用)
システム開発を古くから続けている会社さんだと、以前流行ったフレームワークで納品し、そのまま使い続けている場合があると思います。Zend、Cake は以前よく使われていたはずなので、これを使い続けているところは比較的安定したお客さんを抱えて保守運用などを続けているのではないかと推察します(システムが稼働し続けているのはその表れかと)。その意味でビジネスとしては安定しているかもしれませんが、流行りの仕事をやったりするのは難しいのかもしれません。
通常の転職市場だとこのあたりは結構出てくるんじゃないかと想像していますが実情どうなのか気になります。
その他(Laravel)
結構前から海外ではLaravelがよく使われるようになってきているらしいのですが、最近国内でも Laravelを推す方がよくいらっしゃる気がします。こういう方々はおそらく上記の2つのパターンとは違う業務をされている気がして(あくまで気がして)、別に分けた方が良いのではないかと思いました。Laravelでスタートアップとか増えているのでしょうか(知りたい)。
Java
サーバーサイド(J2EE)
J2EEで一緒くたにしてしまいましたが、多分概ねこのくくりでいけるんじゃないかと思っています。15年くらい前はこの界隈で技術者をしていました。例えば銀行さんみたいなカッチリ作って計算が間違うと困るような業務システムでよく使われていると思います。今でも比較的大きめの会社内のシステムはJavaで作られているのではないかと想像しています。
システムの規模感としてはかなり大きい場合が多いでしょう。
モバイル(Android)
同じJavaを使っていながらも、こちらはちょっと別口になります。サーバーサイドは重厚なシステム開発になると思いますが、モバイルアプリはよりライトに仕上げていくことが可能でしょう。最近だとKotlin が公式で認められたので新規で開発する際にJavaは減っていくのでしょうね。
Python
この界隈詳しくないのですが勉強したことをちょっぴり書いておくと、機械学習をするためのライブラリが豊富なのでその方面でよく用いられているそうです。以前はGoogleがPython推しだったのでGoogleのソリューションを使う際にSDKが早めに提供されていたなどがあったはずです(初期のGoogleAppEngineとかね。あの頃面白かった)。最近はあまりよくわかってません。ごめんなさい。
JavaScript
システム開発においてはサーバーサイド言語で出力したWEBにちょっとした演出をするくらいのイメージで、それが時代とともに変化している最中です。 単体でJSを推してくる会社やプロジェクトはおそらくSPAを進めようとしていてReactやVueなどをどんどん導入していきたいか、node.jsでのシステム開発をしているかのどちらかではないかと推察します。ただ、どちらも多くはないのではないか、というのが所感です。
以前よりはSPAを求められるケースは増え続けていると思うのですが、バキバキにやりこむレベルで必要なシステムがそうそう無いのではないかなと推察しています。結果としてJS力を求めるところはとても高いレベルを求めていて、そうでないところはさほどでもないという、中間があまり求められない存在になっている気がします。
そのほか
あんまり詳しくなくて書けなさそう。
おしまいに
私が趣味でプログラミングを学んだウン十年前と違って、今は「就職のためにプログラミングを学ぶ」みたいな方も増えてきました。そして簡単に調べようとすると声の大きい情報しか目につかず、結果的に自身の向かう方向に合致しない内容を学習してしまって遠回り(長期目線では遠回りだと私は思いませんが当事者としてそう感じるのはわからなくないです)になってしまうことがある様子です。
また、就職のためだとすると何か就職サイトでどの会社がどんな言語で人材募集しているかをリサーチしてみるのは方針を決める一つの情報になるのではないでしょうか。
この文章は少なくとも私の目線でこう考えていて、誰かに聞かれた際にこんな感じに答えていますよ、というのを纏めています。
蛇足ですが、2014年あたりに当時一人株式会社だった私がちょっと生きの良い若い人たちとやったワークショップも参考になるかもしれません。この頃はそれほどRailsがワイワイしていなかったのかもしれませんね。今はスクールのおかげもあってか名前をよく見るようになったと思います。 qiita.com
謝辞
実はこの文章いきなり公開するの怖くて何人かの知り合いに見てもらって意見もらったりしました。特に活発に意見くれた Developers.jp - 優しいエンジニアのための オンラインコミュニティ の皆さんに感謝。元「プログラミングを学び合うシェアハウス」の住人もThanks!。
後日談
公開後の話などこちらに書いたので参考にしてください。