WEBアプリケーション構築の要になるのが、サーバサイドプログラミングです。
ここでは、各種サーバサイドプログラミング言語について、概要を説明したいと思います。
Lightweight Language(LL)
WEB開発に使われる言語にはさまざまなものがあります。
その中で大別すると、コンパイルが必要な非LLと、コンパイルが不要なLL(インタプリタ言語)があります。
両者の違いとしては以下となります。
非LL(コンパイル言語)の特徴
- 対象の言語: C、C++、Objective C、Java、Scala
- 動作が速い
- Web用途としてはJavaが主流だが、動作させるためにコンパイルしなければならないため、開発や運用が手間
LLの特徴
- 対象の言語: PHP、Perl、Ruby、Python、Javascript
- コンパイル言語に比べて動作が遅い
- コンパイルせずに、ソースコードのままWebサーバ上で動作させられるため、開発や運用が楽
- LL≒インタプリタ言語≒スクリプト言語
また、WEB開発においてはLLが使われることが多くなっています。
理由としては、以下のようなものがあります。
WEB開発でLLがよく使われる理由
- 動作速度はWEBサーバ分散でカバーできる
- 開発とテストがしやすく、コストを抑えられる
- 結果としてスピーディなリリースサイクルを組める
学ぶべき言語
ここまでの内容ですとLLの方が有利に見えますが、必ずしもLLだけを学べばOKというわけでもありません。
こんどはそれぞれの言語について個別にご案内したいと思います。
★PHP
とりあえずWEBで何かを作ってみたい、ということでしたら、LLのPHPが一番お勧めです。
PHPはWEB開発のための設計された言語なだけあり、WEB開発にもっとも適した言語のひとつです。
流行などもいろいろありますが、実務での案件数や実績で考えても有力な選択肢です。
PHPで作られているサービスは、『facebook』『Yahoo』などがあります。
Ruby
ruby on railsをきっかけに人気爆発した国産LLです。
これから勉強をはじめるなら、お勧めのひとつです。
Ruby(Ruby on Rails)で作られているサービスは、『Twitter』『クックパッド』『Hulu』などがあります。
★Java
非LLではありますが、WEB用途でも多数の実績があります。
言語仕様が堅牢で信頼性が高いため、大規模な開発や業務システムの開発に用いられます。
そのためWEBのベンチャー企業というより、大きなシステム会社で使われるイメージです。
LLの習得に比べると、勉強時間がかかります。
しかし、Javaで使用するオブジェクト指向やエラー処理やその他もろもろの考え方は、他の言語でも流用できます。
そのため、JavaをきわめておけばLLはすぐに覚えられると思います。
Python
科学技術関連のライブラリが多く、研究や機械学習関連の開発などによく使われます。
WEB開発にも使えますがあまり見ません。
Javascript(Node.js)
Node.jsとは、Javascriptをサーバ側で動作させる技術です。
歴史が浅いため、実務志向でいくと特にお勧めはしません。
別の言語をきちんと学んだ上で、実験的に触る分にはいいと思います。
★シェルスクリプト
サーバ上で動作するスクリプト言語です。
サーバ管理をする場合は、非常にさまざまなケースで有用です。
データのバックアップをとったり、負荷を分析したり。
サーバ管理を自動化しようと常に意識していれば、自然と身についていくと思います。
★C
サーバミドルウェアは基本的にはC言語で書かれています。
そのため、チューニングや不具合調査を掘り下げていくと、稀にPHPやJAVAなどを実行するランタイム自体のソースコードを読まなければならなくなります。
apacheの動作などについても、不可解な部分があったらソースコードを検索してみると納得できたりします。
一定水準以上のエンジニアを目指すなら、C言語の基本は理解しておくことが必要だと思います。
また、C言語の理解が結果として、アーキテクチャの本質的な理解につながります。
ソースコードのバージョン管理
プログラム開発をしていると、ソースコードのバージョン管理が煩雑になってきます。
そこで一般には、GitやSVNなどのツールを使って管理します。
チーム開発では必須ですし、個人開発でもぜひ利用した方がよいツールです。
Windows用のクライアントとしては、『SourceTree』『TortoiseGit』や『TortoiseSVN』があります。
現在はGitが主流なので、ぜひGitを使ってみてください。
GitHubというGitリポジトリのホスティングサービスが便利です。
GitHubでは、『公開リポジトリの作成:無料』『チーム内での利用:有料』といったプランがあります。
まとめ
WEB系の就職ならPHPやRuby、大規模開発のSI指向ならJavaの学習をお勧めします。
プログラミング一本でやっていくなら、LLの流行を漁るよりも、C言語レベルのミドルウェアの理解がある方がいいと思います。