Photo by Daniel Cukier
コーディング転職サイトpaizaを運営している関係上、「Webサービスを作りたいけど、プログラミング言語をどこから学んだらよいか?」という質問をよく受けることがあります。今回はプログラマ視点でプログラミングを学ぶときにつまずやすいポイントと、プログラミング言語の基礎を簡単に楽しく学べるサイトをまとめてみました。
最近はオンラインでプログラミングを勉強できるWebサービスが多数登場してきているので、以前よりプログラムを学ぶコストはぐっと下がっています!!
目次
・プログラミング言語を学ぶときに躓くポイント
・学ぶ言語を選ぶのに役立つサイト
・すぐ書きはじめられるプログラミング学習サイト
・講義型のプログラミング学習サイト
・少しコードに慣れてきてからお勧めのサイト
・さらにスキルアップするのに最適なサイト
・基礎文法をマスターしたいなら(おまけ)
・英語が得意ならおすすめのプログラミング学習サービス(おまけ)
・各言語のリファレンス
◆プログラミング言語を学ぶときにつまずくポイント
「実行環境構築するので疲れてしまい、コードを書くに至らない」
プログラミングをする際に、実際にプログラムを手元のPCで動かすための、ローカル環境を構築するところでつまずいてしまう人が非常に多いので、今回は、ブラウザ上でプログラミングがすぐ始められる「オンライン実行環境」があるサイトを中心に、楽しく、簡単に始めることができる学習サイトを紹介します。
まずは実際にコードを書くところから始めて、ある程度書けるようになってから実行環境を作っても遅くありません。
◆学ぶ言語を選ぶのに役立つサイト
・プログラミング言語人気TOP10の簡易解説
http://www.mwsoft.jp/column/program_top10.html
プログラミング言語を始める際には、必ず何の言語を学ぼうか悩むもの。こちらのサイトではそれぞれの言語の「特徴」、「長所、短所」、「たれが学ぶべきなのか」、「参考図書」という構成になっているので非常にわかりやすいです。
◆すぐ書きはじめられるプログラミング学習サイト
【CODEPREP】
おすすめ度:★★★★★
対応言語:JavaScript、Ruby、PHP、Python、Ruby、HTML、CSS
http://codeprep.jp/ja
プログラムの要所を穴埋め式で記述+ヒントが示される形で学習ができます。疑似実行環境が用意されており、実行結果がすぐに出るので実行環境を用意せずに手軽に始められます。実際にコードを書く感覚を掴むのにもってこいです。
【paiza動画ラーニング】
おすすめ度:★★★★★
対応言語:Ruby、PHP
https://paiza.jp/learning
3分程度の動画と、自由にプログラミング可能なオンライン実行環境、練習問題を組み合わせた学習サービスです。Codeprepと比較するとこちらは本当にプログラムを実行しているので、指示された以外のプログラムを書くこともできる自由度の高い学習環境が用意されています。Ruby入門編、PHP入門編の全47回は全て無料で、演習問題や学習系ゲームが充実しており、アドバイザーに質問できる機能もついているのでオススメです。
【Codecademy】(一部英語)
おすすめ度:★★★★☆
対応言語:JavaScript、PHP、Python、Ruby、HTML
http://www.codecademy.com/
一部日本語化されていますが、基本的に英語です。。CODEPREPに比べると若干難易度が高いので、CODEPREPに慣れてからCodecademyを試してみるといいでしょう。
【CodeStudy(JEEK)】
おすすめ度:★★★☆☆
対応言語:JavaScript
http://jeek.jp/study/exp
就活サイトの1コーナーですがJavaScriptの実行環境が提供されており、課題に従って画面上でコードを書きながらJavaScriptが覚えられるつくりになっています。コードのエラーが日本語で表示されるので、ライトにJavascriptを書きながら学ぶのには良いサービスです。
【code.9leap.net】
おすすめ度:★★★☆☆
対応言語:JavaScript(enchant.js)、HTML
http://code.9leap.net/
JavaScriptをベースにしたゲームエンジン「enchant.js」を使った学習サイトです。オンラインエディタ、オンライン実行環境が用意されており、ブラウザだけで学習が可能です。サイト上でゲームを作ってコンテストに投稿することも可能です。ゲームを作りたいという方にはオススメの学習サイトです。
【プログラミン】
おすすめ度:★☆☆☆☆
対応言語:独自のビジュアル言語
http://www.mext.go.jp/programin/
文部科学省が運営している子ども向けのプログラミングサイト。ドラッグ&ドロップでビジュアル的にプログラミングができます。プログラミングとはどういうものか概念学ぶのには良いかもしれません。ただWebサービスに直接使えるプログラミング技術は覚えられないので、本格的にプログラミングに取り組む前の練習としてやってみるといいでしょう。
◆講義型のプログラミング学習サイト
【ドットインストール】
おすすめ度:★★★★★
対応言語:JavaScript、PHP、Ruby、Python、Java、Perl、C、Node.js、HTML、CSS
http://dotinstall.com/
動画でプログラムの書き方や、ローカル実行環境の作りかた、サーバ構築の仕方など、Webサービスを作るための1から10までを動画で公開してあります。まず最初にこちらで「手軽にプログラミングができるJavaScriptを覚えよう」、「Webサービスが作れるPHPを勉強してみよう」などを見てプログラミングについての全体感をつかむといいでしょう。自分の周りにもこれを見てプログラミング始めた方がいます。
【スクー】
おすすめ度:★☆☆☆☆
対応言語:JavaScript(2014/4現在)
http://schoo.jp/guest
プログラミングに限らず、さまざまなジャンルの動画授業を扱っている学習サイトです。
ノンプログラマーでも明日から使えるJavaScript簡単プログラム
【ShareWis】
おすすめ度:★☆☆☆☆
対応言語:PHP、JavaScript、HTML、CSS(2014/4現在)
http://share-wis.com/
動画投稿型の学習サイト。動画、理解度チェックの選択問題、という流れでライトに勉強ができます。ただ、実際にコードを書くことはないので流れをつかむレベルで考えておいたほうがいいでしょう。
◆少しプログラミングに慣れてきてからお勧めのサイト
【Rubyがミニツク】
おすすめ度:★★☆☆☆
対応言語:Ruby
http://www.minituku.net/
自分でRubyのローカル実行環境を作ってあることが前提となっているのでハードルが高めです。Rubyをやってみようという人がドットインストール、CODEPREPで学んだ後にこちらで学ぶとよりレベルアップできるでしょう。
◆さらにスキルアップするのに最適なサイト
【paiza】
おすすめ度:★★★★★
対応言語:Java、PHP、Ruby、Python、Perl、C、C++、C#、node.js
http://paiza.jp
用意された問題を解くことで、プログラミングスキルを6段階に評価するサービスです。評価に応じて書類選考なしで面接に行けるコーディング転職サイトではありますが、プログラミング実行環境が用意されているので、すぐにプログラミングすることが可能です。学んできたことのスキルチェックや、スキルアップとしてコーディングスキルチェックを受けてみてはいかがでしょうか。
会員登録せずにプログラミング問題にチャレンジ、その場で採点されるオンラインハッカソンもお手軽に試せるのでお勧めです。最近はマンガ形式で、物語の途中でプログラミング問題が出る形になっております。
paizaオンラインハッカソンVol.5「マンガ版 俺の許嫁と幼なじみが修羅場すぎる」
paizaオンラインハッカソンVol.4「マンガ版 エンジニアでも恋がしたい」
【CODECOMBAT】 日本語版あり
おすすめ度:★★★★★
対応言語:JS
http://codecombat.com/
JavaScriptをゲームで学ぶサービスです。魔導士になって兵士を操作してゲームを進めていく、という内容になっており、RPGを楽しむ感覚でJavaScriptを学ぶことができるのが素晴らしいです。
【AIZU ONLINE JUDGE】(会津オンラインジャッジ)
おすすめ度:★★★☆☆
対応言語:C、C++, Java
http://judge.u-aizu.ac.jp/onlinejudge/index.jsp?lang=ja
会津大学が提供しているプログラミング問題サイトです。お題に対して問題を解いていく形式で、提出したプログラムをオンラインで採点してくれます。若干とっつきにくいですが、解いた問題によりランキング表示などもされるので、スキルアップ、実力チェックに良いサイトです。
【Codeeval】 英語
おすすめ度:★★★☆☆
対応言語:Bash、C、C#、C++、Clojure、Go、Haskell、Java、JavaScript、Lua、Objective-C、Perl、PHP、Python、Ruby、Scala、Tcl
https://www.codeeval.com/
約150問程度のプログラミング問題(初級、中級、上級)が掲載されており、点数が良いと海外の企業からスカウトが来るサービスです。非常に多くの言語に対応しており、スキルアップにちょうどいいサイトです。
【Check iO】 英語
おすすめ度:★★★☆☆
対応言語:Python
http://www.checkio.org/
ゲーム感覚でPythonを学ぶことのできるサービスです。ただ、新規登録時に簡単なPythonの問題が出題されたりするので、ある程度書けるようになってからやるのがいいでしょう。ゲーム作りやWeb開発に役立つ知識を得られる問題が出題されるので、Pythonで本格的にWebサービスを作ろうとしているならおすすめのサービスです。
【TopCoder】 英語
おすすめ度:★★★☆☆
対応言語:Java, C++, C#, VB
http://www.topcoder.com/
世界中のプログラミング猛者が集う競技系プログラミングサイト。「プログラミングはマスターしたな」と思ったらチャレンジしてみても面白いかもしれません。問題によっては賞金がつく場合も有ります。
◆基礎文法をマスターしたいなら(おまけ)
一時期プログラマーブロガーの間ではやった、プログラミング言語の文法をまとめた最速基礎文法マスターシリーズ。
このあたりになってきたら、自分で何か簡単なプログラムを組んでみるといいでしょう。
JavaScript基礎文法最速マスター
http://gifnksm.hatenablog.jp/entry/20100131/1264934942
PHP基礎文法最速マスター
http://www.1x1.jp/blog/2010/01/php-basic-syntax.html
Ruby基礎文法最速マスター
http://route477.net/d/?date=20100125
Perl基礎文法最速マスター
http://d.hatena.ne.jp/perlcodesample/20091226/1264257759
Python基礎文法最速マスター
http://d.hatena.ne.jp/dplusplus/20100126/p1
Java基礎文法最速マスター
http://d.hatena.ne.jp/nattou_curry_2/20100130/1264821094
Objective-C 最速基礎文法マスター
http://d.hatena.ne.jp/fn7/20100203/1265207098
上記以外の言語の基礎文法一覧
http://gifnksm.hatenablog.jp/entry/20100202/1265105961
◆英語が得意ならおすすめのプログラミング学習サービス(おまけ)
【Dash】 英語
対応言語:JavaScript、HTML/CSS
https://dash.generalassemb.ly/
架空の依頼人と対話式でWebプログラミングを学習するサイトです。
日本語記事:架空の依頼人と対話式でWebプログラミングを学習する「Dash」が抜群に分かりやすい!
【Code School】 英語
対応言語:JavaScript、Ruby、Objective-C、HTML/CSS
https://www.codeschool.com/
ブラウザ内でコーディングできるオンライン実行環境を提供しており、Codecademyのように自由度の高いプログラミング環境で学習ができます。無料版だけでなく実用性を重視した内容の有料版もあります。
【TREE House】 英語
対応言語:Objective-C、HTML/CSS
http://teamtreehouse.com/
動画+小テストによるWebサイト作成プロセスが学べるサービスです。一部無料ですが、基本は有料コースとなっています。
【LearnStreet】 英語
対応言語:Java,JS,Ruby,Python
https://www.learnstreet.com/lessons/languages/
ふつうの人が最新のWeb技術を学んで実際にアプリを作れるようになることを目指して作られたサイト。ブラウザ上の実行環境+動画、課題演習からなる学習プログラムとなっており充実しています。
【Udemy】 英語
対応言語:Java、PHP、Pyhton、JavaScript、Objective-C(2014/4現在)
https://www.udemy.com/courses/search/?q=programming&view=grid&price=free
有料の動画学習サイトです。プログラミングに限らず幅広いジャンルの学習コンテンツが提供されています。
【KHAN ACADEMY】 英語
対応言語:JavaScript(2014/4現在)
https://www.khanacademy.org/computing/cs
無料で、英語で小学校の算数から大学教育レベルのファイナンス、化学、生物、歴史、美術、プログラミングまで学べる動画学習サイトです。
◆各言語のリファレンス
ある程度書けるようになってきたら、各言語のリファレンス、マニュアルをみて作業するのがいいでしょう。
JavaScript
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference
PHP
http://www.php.net/manual/ja/
Ruby
https://www.ruby-lang.org/ja/documentation/
Perl
http://d.hatena.ne.jp/perlcodesample/20100808/1278596435
Python
http://docs.python.jp/3.3/
■まとめ
プログラミングを0から始めるならば、ブラウザのみで環境構築の必要なく始められるJavaScriptがおすすめです。JavaScript対応の学習サイトも数多くあるため一番とっつきやすい言語と言えるでしょう。ただしJavaScriptだけだとWebサービスを作るのは難しいので、Webサービスを作りたいのであればPHPがとっつきやすいといえます。PHPは大抵のレンタルサーバであれば動き、学習サイトもPHP対応が多く、かつ日本語の情報も多くあるため最初に覚えるにはいい言語です。
最後に一つ、4ヶ月でWebサービス作った方の話です。やる気さえ有れば半年足らずでWebサービスが作れるという事に勇気づけられると思います。
自分でWEBサービスを作りたいと思っている人へ
プログラミングは講義を聞くだけではなく、手を動かしてコードを書くことが重要です。今回はオンラインで実際にコードを書いて動かせる学習サイトを中心紹介しました。是非プログラミング学習にお役立てください!(そして基礎が身に付いたら、ぜひ我々が運営するpaizaでプログラミングのスキルを測ってみてください!)
paizaは、技術を追い続けることが仕事につながり、スキルのある人がきちんと評価される場を作ることで、日本のITエンジニアの地位向上を目指したいと考えています。
自分のスキルを磨いていきたいと考えている方におすすめなのが「paizaラーニング」。オンラインでプログラミングしながらスキルアップできる入門学習コンテンツです。初心者でも楽しくプログラミングの基本を学ぶことができます。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。