This post is also available in: English-US (英語)
本記事を書いている本人は元々webマーケティングを専門にし、会社として製品開発していくうちにプログラミング(javascript/PHP/Python/ruby/C#)使うようになり、機械学習まで扱うようになった感じです。
小さな会社なので少数でなんとかする必要があり、その中でプログラミングも自然とやらざるを得なかったというのが本当のところです。
最初はjavascriptもまともに書けない状況でした。
しかし、時代の流れは変わり、マーケティング担当だからといってプログラミング言語を知らなくていいという時代ではなくなってきました。
また、少数精鋭で起業する場合や、マーケティング担当として働く場合もプログラミング言語の基礎だけでも知っていれば、大きなアドバンテージとなります。
本記事はプログラミング言語を勉強し始めようと思う時に気になる、web系においてプログラミング言語の難易度とか将来性、使いどころについて書いています。
web系以外には組み込み系とか、基幹系とかありますが、それはまたプログラミング言語の優先順位が別となりますので、別のサイトを参考にしてください。
一つのプログラミング言語をある程度使えるようになれば、他のプログラミング言語を習得するのはあまり苦にはなりませんが、どうせ学習の時間を使うのなら将来性のあるプログラミング言語を学びたいと思いますよね。
Contents
おすすめのプログラミング言語の難易度とランキング
このランキングは職業ニーズ的に見た場合の、主にWeb系の仕事をする時に勉強したらいいよってランキングです。複数の言語を使い分けるプログラマーも、仕事で主に使う言語はおおよそ3つくらいが平均らしいです。
プログラミング言語を勉強するのならば、まず1つメインで使っていく言語を決めてしっかりと使いこなして、その後2~3個ほかの言語を勉強するのが良いと思います。
一般的に「プログラミング言語」と呼ばれているものは以下の3つに分けられます。
HTMLとかCSSは厳密にはプログラミング言語とは言いません。
・プログラミング言語
・スクリプト言語
・マークアップ言語とスタイルシート言語
流行のプログラミング言語について学びたいという方は 世界最大級のオンライン学習サイトUdemy をおすすめします。
1位 HTML/CSS
webプログラミングで仕事をしたいと思うのならHTML/CSSは最低限勉強する必要があります。今時は趣味で無料ブログをカスタマイズするのにもHTML/CSSが必要なくらいです。
HTMLは今読んでいるこのブログの文章とかを表示するための言語です。
CSS(カスケード・スタイル・シート)は文章の色を変えたり、サイトのレイアウトをしたりするための言語で、知っているとデザインのカスタマイズをすることができます。
最近はhtml5とCSS3とかを勉強するのが良いのではないでしょうか。
ジャンル:HTMLはマークアップ言語、CSSはスタイルシート言語
難易度:どのプログラミング言語よりも一番簡単
2位 javascript
javascriptは最近になって勢いを増してきた、スクリプト言語です。
web系の仕事をするのでとりあえずプログラミング言語を勉強したいという場合には、javascriptから勉強するのがいいです。
javascriptは例えばブラウザでGoogleマップのようにリアルタイムに動作(Ajaxとか呼ばれている)するのに使われています。また、身近な例としては、iPhoneやAndroidのアプリケーションを開発(Cordova,Phonegap)するのにも使われたりしています。
またサーバー側のシステムとしてNode.jsとかもjavascriptで動くことで有名です。
また、UI(ユーザーインターフェース)デザイナーやフロントエンドエンジニアにおいては、javascriptは必須でしょう。AngularJSとかBackbone.js、React.jsなどなど...javascriptフレームワークは勢いがあります。
将来的にもjavascriptが使われる機会はますます増えてくると思いますので、勉強しておいて損はないと思います。
jacascriptについては過去記事javascript入門+αのためのおすすめサイトと本で紹介していますので、参考にしてみてください。
ジャンル:スクリプト言語
難易度:手軽に使うだけなら簡単だが、深く勉強するとC言語とかJAVA並みに難しい。php/perl/rubyと同じくらいの難易度。
3位 PHP
サーバー(データベース)と連携するようなプログラミングをする時に必要となります。まだまだ現役です。
ちょっと前に流行った、モバゲーやグリーなどが開発しているソーシャルアプリゲームなどは、ほとんどPHPで開発されています。
また、有名なブログシステムのwordpressなどもphpで動いており、カスタマイズする時にphpを知っていると便利です。
PHPの得意分野はサHTMLとサーバー、データベース(MYSQLとか)と連携することなので、PHPを勉強するとその周辺の知識も自然と勉強することができます。
PHPをある程度使えるようになると、CakePHP,FuelPHPなどのフルスタックフレームワークでWEBアプリとかが作れるようになります。
ジャンル:スクリプト言語
難易度:C言語やJAVAよりかは簡単。手軽に扱った場合のjavascriptよりは難しい。perl/rubyよりかは簡単。
web系で仕事をする時に優先順位が低いであろうプログラミング言語
ランキングの続きとして書いていきますが、以下はweb系で仕事をするのに「急いで勉強する必要のない」プログラミング言語です。
しかし、web系の企業でRuby(Ruby on Rails)のみで受託開発している会社もあったりとか、また、やろうと思えばどのプログラミング言語でもWEBと連携してアプリケーションやプログラムを作る事は可能ですので、あくまで目安として参考にしていただければ幸いです。
ちなみに、次の項目で紹介しているRubyとPythonは、WEBアプリケーションを開発する際のメジャーなフレームワークであるRuby on Rails(Ruby)とDjango(Python)を将来的に使うかどうか?という問題も合わせて考えると効率よく勉強できるのではないかと思います。
Ruby on Rails(Ruby)とDjango(Python)のメリットデメリットの比較については、過去の記事「個人的なDjangoとRuby on Railsの比較・メリット・デメリットなど」を参考にしてみてください。
Ruby
日本人のまつもとゆきひろさんという方が開発したこともあって、日本語での参考文献が多く、日本語コミュニティも活発なプログラミング言語。
他のプログラミング言語は、英語でGoogleさんに聞く必要が頻繫にありますが、Rubyは日本語でもそこそこ探したい情報が見つかる感覚があります。
Ruby on RailsというWebアプリケーションを開発するためのメジャーなフルスタックフレームワークがあり、初期のTwitterなども以前はRuby on Railsで開発されていました。最近だと、CookpadやnanapiなどもRuby on Railsで開発されていたりします。
イケてるベンチャーやスタートアップはRuby on Railsを使うという、なんとなくの流れがありますので、ベンチャーやスタートアップを考えている方はrubyから入ってみるのも良いかもしれません。
Ruby単体のプログラミング言語としては初心者の人がプログラミング言語を学ぶのによく勧められる言語のひとつです。
ジャンル:スクリプト言語
難易度:C言語やJAVAよりかは簡単。phpよりかは難しい。
Python
日本ではあんまり普及していないけれども、プログラミング言語を学ぶのにおすすめの言語のひとつ。
文法が厳格なのでコードの見た目が綺麗で内容が把握しやすいのがその理由です。
なぜだか、ハッカーが使うプログラミング言語はPythonという都市伝説もあります。
DropBoxなどがPythonで開発されていて、非常に実用的でもあります。
しかし、日本でPythonを使って開発している企業は少ないだろうと思います。
追記:Python使い始めました
流行の統計的手法によるデータ分析や機械学習(人工知能/AI)のカテゴリにおいてPythonは非常に使い勝手が良いです。
web系の仕事をするのに必要か?と言われると微妙ですが、時代の流れはデータ分析や機械学習が重視される方向に向かっているので興味がある場合には遊んでみてもいいかもしれません。
別記事「pythonで機械学習系のライブラリをインストールして環境構築する手順(windows7-32bit)」で環境の作り方について書いているので参考にしてみてください。
ジャンル:スクリプト言語
難易度:C言語やJAVAよりかは簡単。
Objective-C
iPhoneが大好きとかiPhoneのアプリを作りたいと思うのなら、Objective-Cを学んでもいいかもしれません。
iPhoneアプリで高速な動きを求められるネイティブアプリを作りたいのなら、Objective-Cのみの一択です。
C言語の兄弟みたいなものなので、学習コストはC言語と同等かそれ以上が求められます。
ジャンル:プログラミング言語
難易度:C言語と同等。
C#(シーシャープ)
windowsの開発元であるマイクロソフトの息のかかったプログラミング言語なので、windowsのソフトウェア(フリーソフトとか)作りたいのならば、おすすめです。
しかし最近は3DゲームエンジンのUnityでC#が使えたり、Xamarinと連携してiphoneやAndroidのスマホアプリを作れたりと勢いを増してきています。
基礎だからC言語勉強しろっていうのは分かるけど、将来性あるの?…と考えてる方は、C#を勉強してみてはいかがでしょうか。
言語仕様がかなりキッチリしているので、融通は利きませんがプログラミングの勉強には最適です。
ジャンル:プログラミング言語
難易度:C言語よりかはちょっとだけ簡単。php/perl/rubyとかと同じくらいの難易度。
JAVA
身近な例では、AndroidがJAVAベース(大元はLinuxってやつですが)で開発されています。
いろいろなプラットフォームで動くことが得意なプログラミング言語で、企業の業務系のシステムなどに使われています。小規模開発よりかは大規模開発向けの言語です。
また、業務システムや基幹系システムを扱っていて創業から年数の経っている会社では、Java Servletを使って開発している会社が多いです。
その場合にはStruts,Spring Frameworkなどのフレームワークを使う機会が多いのではないかと思います。
あと、AndroidのアプリはJAVAでしか開発できませんでしたが今は色々な言語で開発できるようになっているので、Androidアプリを作るためにJAVAを勉強するのはおすすめしません。
将来的に大規模なシステム開発したいなどの場合には知っておいても良いかもしれません。大企業のシステム開発とかはJAVAが主流だったりします。
助長で融通の利かないお役所みたいな言語なので、一番最初にしっかりとプログラミングを勉強するのには向いています。
私も昔にjavascirptの概念を把握するのに、JAVAの勉強が非常に役に立ちました。
ジャンル:プログラミング言語
難易度:C言語よりちょっとだけ簡単。Rubyやjavascriptよりかは若干難しい。
Dart
Googleが開発したプログラミング言語のひとつ。
サーバー側とクライアント側が同じプログラミング言語で開発できるという、素晴らしい可能性を持った言語。javascriptでもNode.jsとか使って、無理してできないこともないようですが。
今のところあんまり普及していませんが、将来的にDartはjavascriptに取って代わるかもしれないと言われています。
ジャンル:プログラミング言語
難易度:C言語やJAVAよりかは簡単。
perl
僕はperlは試したことがないので、調べた結果だけのメモとなります。
mixiとかはperlで開発されているようですので、ある程度のものは作ることができます。
メリットは一昔前まではユーザーが多かったので、ライブラリや参考文献が充実していることです。
ですが、perlは非常に自由な言語なので同じ目的で書かれたコードでも、書く人によってかなり違ったコードとなっています。
その点で、初心者向けではありません。
ジャンル:スクリプト言語
難易度:C言語やJAVAよりかは簡単。Ruby,Pythonよりかは若干難しい。
web系で仕事をする時に、たぶん使わないプログラミング言語
c言語/c++
C言語の拡張版がC++で、兄弟みたいなものです。
プログラミングを勉強するならまずC言語から……というのが鉄板ですがあんまり楽しくないので、ある程度C言語で勉強して、その後スクリプト言語で遊びながら覚える方法をおすすめします。もしくは、C言語の代わりにC#(C#は2015年現在、イケてる言語の中に食い込んできそう)から勉強するとか。
C言語で基本的な勉強をする時に知っておいたほうがいいのは、「ポインタ」「ポインタのポインタ」の段階くらいまで。それから「アルゴリズムとデータ構造」のあたりをC言語で勉強したら、他の言語で書かれたコードはある程度読むことができます。
PHPとかRuby,Pythonなどのプログラミング言語も、結局バックグラウンドでC言語が処理しています。なので、プログラミング言語を勉強していくと、必ずC言語と向かい合わなければいけない日がやってきます。
どの言語を最初に勉強したらいいのかというのは、性格(嫌いな食べ物は最初に食べるか?...みたいな)にもよりますし、何を作りたいかによって変わってきます。
作りたい製品・製品の目的・チームの知識などによって、最適なプログラミング言語を使い分けるというのが良いのではないかと思います。