ああムジョ―

かのした といいます。農学部からのIT業界。作ったWebアプリの紹介とか、IT転職のこととか、将来どうやってお金を得ていくかとか、そんなことを記事にしていきます。

ちなみにTwitterやってます↓

IT就職・転職に強いプログラミング言語② サーバーサイド編

f:id:zyohnbike:20170717184057p:plain

こんにちは。かのしたです。

 今回は前回の【必須編】に引き続き、サーバーサイド編をお送りします。前回も冒頭で述べたように、エンタメ・業務系など分野に限らず、Webベースで開発をしている企業へ入るという前提でお話しします。

 

Web関連技術は潰しが利きますし、お金に直結しやすいので、コンピュータ―サイエンスに強い思い入れがあるとか、これからはIT業界でエンジニアとして生きていく以外考えられないとか、そういう信念が特にないのであれば、この路線でひとまずOKです。

 

なお、組み込み系や、IT以外の深い専門知識を生かした方面(データサイエンティスト、ITを使ったアート系の分野など)に行きたい人向けの内容については、後日扱えればと思います。

 

 

サーバーサイド(Web)とは

  サーバーサイド、何それ?という方もいらっしゃると思うので補足をしておきます。【サーバーサイド】というのはそのままの意味で、【サーバー側】ということです・・・はい、サーバーとは何か説明します(既知の方は読み飛ばし推奨。長くなりました)。

 

さて少し立ち戻って、僕は以前よりWebベース、Webベースと繰り返し書いていますが、これが具体的にどういうものを示しているのか。ざっくり示したものが↓の図になります。

 

f:id:zyohnbike:20170717152959p:plain

 

即興で作ったので、あまりカッコよくなくてすいません。クライアント側ではHTML, CSS, javascriptのデータからWebページを表示している。サーバー側ではサーバーサイドプログラムが常駐している。ユーザーのブラウザ操作によって発生する要求に応じて、クライアント~サーバー間で通信がなされている。このような関係が作られているものをWebベースと呼んでいました。

 

今回ご紹介するのは、このサーバーサイドを形成するプログラミング言語です。具体的には上述のように、サーバーサイドに常駐し、クライアント側の要求に応じて、データを返すプログラムを作成することができます。

 

例えば、皆さんはリンクを踏みますよね。このページであれば、【必須編】とか、もっというとアフェリエイト広告とか踏んで頂けると死ぬほど助かるんですけど。実はリンクを踏んだ瞬間、リンク先のサーバーに対して「お前のWebサイトの情報をくれ」という要求が飛びます。

 

そうするとサーバー側のプログラムは「お前のWebサイトの情報をくれ」という要求を読み取って、応答として自分のHTML, CSS, javascriptやらをクライアントに送信します。受け取ったクライアント側のブラウザは、そのデータを解析して、Webサイトとして表示するわけですね。

 

また、アマゾンで購入確定ボタンを押した時にも、サーバー側に対して「○○を□□個買ってやったぜ畜生!!」というデータが送られています。するとサーバー側のプログラムが、嬉々としてその商品の発注処理を行ってくれているというわけです。Webの仕組みとサーバーサイドの意味について、ザックリとご理解頂だけたでしょうか。。。

 

 

おすすめのサーバーサイドのプログラミング言語4選

 前回の【必須編】でお話ししたHTML, CSS, javascriptは、すべてクライントサイドの技術です。エンジニアとして実務で活躍、あるいは自分でWebアプリを作りたいとなると、クライアント~サーバーサイドの一通りの知識が必須です。

 

そこで以下に、サーバーサイドを構築できるプログラミング言語のうち、特に潰しが利きやすいもの、外れがないものをご紹介します。このうちどれかを習得、何かしらの制作をして、その言語を扱っている会社に就職・転職すると良いでしょう。また、今回は相対的な習得難易度、人気、案件数、給与などを比較しながら書いていきます。

 

1. Java

<比較表>

 学習難易度: ★★★★★

 案件数  : ★★★★★

 将来性  : ★★★★☆

 給料   : ★★☆☆☆

 汎用性  : ★★★★☆

 

<解説>

 言わずと知れたプログラミング言語の代表格。プログラミングをしてみたい、と思った人ならば、一度は聞いたことがあるんじゃないでしょうか。IT企業の新人研修で扱うプログラミング言語として選択されることも多いです。

 

Javaの最大の特徴は、球数の多さでしょう。世界中の無数の企業、無数のWebサービスJavaが使われています。そのためひとまずJavaを習得すれば、AIによる全自動プログラミングが始まらない限り、食いっぱぐれることはないでしょう。

 

球数の多さ故、開発者が多くて平均的な給与水準は低いものの、優秀であれば非常に重宝されるので、最高額もトップクラスです。Androidアプリ開発にも利用できるので、活躍の幅は広いです。

 

最大のネックは学習難易度の高さです。しばしばネット上において「JavaはCやC++よりも遥かに簡単である」といったようなことを言われますが、はっきり言って独学による習得難易度は非情に高いです。

 

しかしJavaがしっかりと書ければ、PHP等のスクリプト言語が必要となった際に、すんなりと学習に入れるでしょう。また、Javaをベースとした生産性の高いScaleやKotlinといった新たな言語も誕生していますが、Javaが身についているのであれば、習得のハードルはそれほど高くないでしょう。

 

おすすめ書籍は以下。これが入門の定番になっています。とにかく超入門から入ってくれる本を選ぶべきです。挫折します。

 

2. PHP

<比較表>

 学習難易度: ★★☆☆☆

 案件数  : ★★★★★

 将来性  : ★★★☆☆

 給料   : ★★☆☆☆

 汎用性  : ★★☆☆☆

 

<解説>

 これもまた誰もが一度は耳にしたことのある言語です。PHPの特徴もやはり球数。プログラミング言語としての出来が疑問視されており、新規開発などの将来性はやや不透明ですが、球数はJavaに次いで多いため、それほど心配する必要は無いでしょう。

 

そして学習難易度も屈指の低さです。簡易導入パッケージ的なものを利用すれば、数分で開発環境を整えられますし、便利な関数(標準搭載のプログラム部品)が揃っているので、とりあえず何かを作るということに向いています。

 

簡単である・書き方の自由度が高い(滅茶苦茶に見えるコードを書いても動いてしまう)故に、PHPから入ると他の言語を学び始めたときに辛さを感じるかもしれません。しかしそれを補うほどの取っつきやすさは魅力的です。

 

給与水準としてはJavaと同様低め。しかし習得が簡単な割に最高給与はJava同様トップクラスです。また、Webサーバー上でしか動作しないため、Webシステムを構築する以外の用途で使用することはほぼありません。

 

おすすめ書籍は以下。実践に必要な範囲を網羅しており、わかりやすいです。これで足りない部分はググればいいでしょう。似た関数の微妙な違いについても取り扱ってくれています。

  

3. Python

<比較表>

 学習難易度: ★★★☆☆

 案件数  : ★★☆☆☆

 将来性  : ★★★★☆

 給料   : ★★★★☆

 汎用性  : ★★★★☆

 

<解説>

 みんな大好きPythonです。Pythonの特徴は、やはり近年のアツさ、つまり人気でしょう。近年はAIブームもあって、統計解析や機会学習といった分野が取り沙汰されています。そういった分野に強いのがPythonです。よって勉強しておくと後々美味しいかもしれません。

 

もちろんWeb開発においても有効な言語で、GoogleFacebookなどの名だたる企業でも主力言語として利用されています。誰が書いても読みやすいコードになるよう設計されており、開発者に優しい言語です。将来性に対する期待は非常に高いと言えます。 

 

分かりやすいコードとなるよう設計されているだけあって、ルールがやや厳格な面もあり、雑に書いて動くようなタイプの言語ではありません。また、オブジェクト志向という開発の概念のようなものを学ぶ必要もあるでしょう。

 

しかし細かい説明は省きますが、開発環境は非常に整えやすい他、対話式プログラミングができる、オープンソース(公開されている便利なプログラムの部品)が豊富などの理由もあり、習得難易度は低めであると言えます。

 

難点としては、まだまだ日本での活用が多くないこと。期待はされているが、普及度でいえばPHPJavaの方が上、といったところでしょうか。また、ほかの言語に比べて構文が簡素という特徴があります。基本的に悪いところが見当たらない言語です。

 

こちらのオススメ書籍は・・・すいません。僕は完全にネットで勉強しました。今度いい書籍があったら紹介させてください or 教えてください。一応↓を張っておきます。評価数が多い、評価が高い、入門的である、の三点を基準に選びました。

 

 

4. Ruby

<比較表>

 学習難易度: ★★★★☆

 案件数  : ★★★☆☆

 将来性  : ★★★☆☆

 給料   : ★★★★☆

 汎用性  : ★★★☆☆

 

<解説>

 日本のWeb界隈で一世を風靡した言語、Rubyです。最大の特徴は、日本で大人気であるということです。それもそのはず、開発者が日本人のまつもとひろゆき氏だからです。したがって日本人・日本語のコミュニティが充実しています。

 

そしてもう一つの大きな特徴はRuby on Rails(以降Rails)という超強力・超人気なWeb開発フレームワークの存在です。このフレームワークのおかげで、効率的なWeb開発が可能、つまり生産性が非常に高く、少人数のスタートアップ企業などで非常に好まれています。

 

そのため一時期は爆発的な人気を誇り、現在は少々落ち着いたものの、相変わらず球数は多いです。しばらくは需要も高いと思われます。給与水準も現時点でトップクラスです。

 

懸念すべき点としては、以前に比べると勢いが落ちていること、Railsというフレームワークが前提となる場面が多い(開発者個人のキャリアとしても、将来性という面でも懸念すべき)ことでしょう。

 

僕はRubyに詳しくないので深いところまでの言及は避けます。しかし強力なフレームワークが前提になるため、それに偏った知識になりがち。利便性のためにフレームワークが包み込んでいる(深い)部分を見れない。などの問題があります。

 

またフレームワークを覚えることが必要になるため、Ruby自体の学習コストはともかく、それに上乗せする形で別途コストがかかります。そしてそれがどれだけコストに見合うものなのか。そういった点を踏まえて選択した方がよさそうです。

 

とはいえGitHubオープンソースが集まる場所の一つ)は相変わらず賑わっている、給与水準が高い、日本発祥の言語である、という点を踏まえれば、やはり有用な言語のひとつであることは間違いありません。

 

何か一つ覚えて、何か一つ作ろう

 総括ということで。ぜひ今回紹介した言語を一つ習得して、クライアント~サーバーまで書いてみてください。さらっと言ってますが、1カ月程度のお話ではないことは覚悟しておいた方が良いでしょう。

 

しかし本気でIT就職・転職を考えるのであれば、入社後も勉強が必須です。これは無理だと思うのであれば、早めにギブアップするのも悪くない選択です(Javaから入ってギブアップしたなら、試しにPHPやってみてください)。

 

ある程度習得して一つ作品を作ったら(最悪作り切れなくてもいいです)、その意欲を元に転職エージェントに会ってみましょう。もちろん、勉強を始める前に合うのも良いでしょう。あなたが現在どの程度の価値があるのか知ることで、何をすればいいか明確になります。

 

もし学生の方であれば、もしIT就職しなくともやっておくことをオススメします。教養として、というのも勿論ですが、もしあなたがプログラミングに向いているのであれば、早めに気が付いた方がよいからです。

 

実のところ結構好き嫌い、適性は分かれます。それは僕がIT業界に就職して、何10人もの同期とともに研修を受けたときに分かったことです。自分を試すという意味でも、何か1つ作ってみてください。その時に「楽しい」、「出来そうだ」といった感覚を覚えるならば、ぜひIT業界へ飛び込んでみてください。