ムカデノワラジ

ムカデノワラジ

ガジェット・Webサービス・プログラミング・エンタメについて書く雑記ブログ

MENU

独学でプログラミングを始める&続けるのにオススメなプログラミング言語

プログラミングをやったことのない人はまず何を始めればいいのかわからないものです。プログラミング言語一つをとっても無数に選択肢があります。

そこで、この記事では独学でプログラミングを始めるのにオススメなプログラミング言語を紹介します。

特にここでは初心者がプログラミングを始めて、何らかの成果物、つまりwebサービスやアプリ、なんらかの機能をつくることにフォーカスして紹介します。

独学だと結局何のためにプログラミングをやっているのかわからなくなりがちです。とくに基本的な文法を覚えているときはそうなりがちです。

しかし、ウェブアプリケーション機械学習を利用したボットなどを作った経験があれば「プログラミングは想像するほど難しくない」「プログラミングで〇〇ができる」という実感がもちやすいです。

 

以下の点に焦点を置いて紹介していきます。

  • はじめやすさ
  • わかりやすさ
  • 情報量
  • 難易度
  • できるようになること・できないこと
  • 仕事になるか(稼げるか)

ちなみに先に結論をいっておくと

 

Web アプリケーション/ウェブサイトをつくるなら

Ruby×Rails

はじめやすさ: やや始めにくい

 

Windowsではエラーが起こりやすく開発環境構築に時間をとられます。Macの場合は最初から入っていますが、バージョンを指定して使うときには新しく設定が必要です。

バージョンや依存関係の管理に手間がかかるのはちょっとしたデメリットです。

環境構築を乗り越えればあとは簡単です。

Railsチュートリアルというチュートリアルサイトが充実しているので初めてプログラミングをする人でも、そのチュートリアルを一通りこなせば簡単なWebアプリケーションを作ることができます。

その点でプログラミングをはじめて、品質を保ちつつ成果物をかたちにするのが一番簡単なのはRuby on Rails です。

またHTMLテンプレートエンジンの使い勝手がいいです。hamlやslimを使うとview部分のHTMLをPythonのようなインデント形式でかなり簡潔に表記できます。

慣れるまでは少し面倒ですが、慣れればviewファイルの記述量が目に見えて減ります。

 

PythonにもJinja2というHTMLテンプレートエンジンがありますが、Ruby のものと比べてHTMLは冗長なままですし、変数やPythonの式が使える以外の便利さが少ないように思えます。

 

わかりやすさ: そこそこ

Rubyは人間がわかりやすいシンプルな記法で書くことができます。慣れればかなり直感的に書けるので初心者に優しいです。

 

しかし、Rubyを使っていると同じ内容でも複数の記法あるので注意が必要です。英語でいうとifを使うかwhetherをつかうか、みたいな感じです。

たとえばRuby( on Rails)にはHashというものがあり、これには複数の省略記法があります。以下の3つはほとんど同じことをあらわします

{ "name"=>"namae", "age"=>"nennrei" }

{ :name=>"namae", :age=>"nennrei" }

{ name: "namae", age:"nennrei" }

 

参考はこの記事です。

qiita.com

 

Ruby on Railsは記法のルールは緩く、開発のルールは厳しい印象です。

 

情報量: 多い

Rubyのコミュニティは大きく、日本語・英語両方でたくさんの情報にアクセスできます。初心者が躓く大半のエラーはグーグル検索をすればほぼ一発で解決できます。

日本語の情報が多いのも強みです。英語が苦手な人は、読むのに時間がかかってしまい

本質的でない部分で労力がかかります。そのコストを削減できるメリットは大きいです。

 

難易度: 簡単(注意点アリ)

RubyRailsをつかって開発をする場合、必要なコードの一部は自動で生成されます。そのため決められたルートに従って開発する場合は非常に簡単です。最初のうちは「なぜこうなるの?」とは考えずにやり方を覚えましょう。英語を学習するときも「なぜ?」といちいち考えるよりも、一通り学び終わってから疑問がある部分を振り返るほうが効率がいいですよね。

 

とはいえ「おまじない」の部分が多いのはデメリットでもあります。「なぜだかわからないけどできる」部分が多いのでエラーが起きた時やちょっと仕様を変えたい時にどうしたらいいかわからず初めは戸惑います。

※これは少しずつ慣れていけばエラーの対処法もわかるので大丈夫です。

 

できるようになること: 基本的なプログラミング・MVC・インフラ・各種開発管理

Ruby on Railsをある程度勉強すれば簡単なウェブアプリケーション、たとえばツイッターや質問箱のようなシステムを作ることができます。

それを作る過程でif(条件分岐)やfor(繰り返し)の実践的な使い方、ClassやModuleの使い方、MVCという考え方や、gitやHerokuなどのPaasの使い方を学べます。

またRubyは配列の処理が得意なのでかなりシンプルな表現で繰り返しを処理したり配列の全要素を処理したりできます。

 

できないこと: SQL文の学習・大規模な機械学習

Ruby on Railsを使っていると、データベースを操作するSQLという文を書く必要がないのでそれを覚えることができません。(これはPython×Djangoも同様です。)

また、RubyにはPythonと違ってC言語を利用して高速計算する機能がなかったり、機械学習系のライブラリが充実していなかったりするので大規模な機械学習プロジェクトには不向きです。

しかし巷で大人気の機械学習が必要になる場面は実はそれほど多くありません。また、機械学習する機能を自分で作らなくても外部サービスを利用すれば同じことができます。

仕事になるか(稼げるか):どちらかといえばYES

 プログラミング言語ランキングではやや落ち目ですが、日本でも海外でもRailsの求人はたくさんあります。特にアメリカではRuby on Railsの人気は安定しています。

PHPと比べエンジニアの数が少ないので給与もある程度期待できます。

また、Rubyはプログラミング(MVCオブジェクト指向)を教えるときに教材として使いやすいのでエンジニアだけでなく教師としての需要もあります。

ただ、やや動作が遅かったり、機械学習ライブラリがそろっていなかったりと最近の機械学習ブームに乗るには少し物足りないことは否定できません。

最初に見るべきサイト 

railstutorial.jp

Ruby on Railsを使って実際にサービスを作ってみる

www.sendai-freelance.com

 

 

Python×Django

はじめやすさ: そこそこはじめやすい

Pythonwindowsでも環境構築をするときのエラーが起こりにくいです。

Macなら初めからパソコンに入っているのでいきなり使えます。

アナコンダという統合開発環境を導入すれば機械学習のための環境も簡単にセッティングできます。ひとまとまりのサービスを作るのは大変ですが、計算処理やグラフ描画などを簡単に実装できるので数理系の研究に活躍します。

Pythonは、どちらかというと書き捨てのコードを素早く書いたり、計算量の多い問題を素早く解くために使うイメージです。

実際調べてみればわかりますが、Ruby on Railsを使ったウェブアプリケーションの開発と比べ、PythonDjangoを使ったウェブアプリケーションの開発に関する記事は少ないです。

とはいえ、ウェブアプリケーションを作るのはRuby on Railsと比べたらわかりにくいですが、そこまで難しくありません。(Rubyが楽すぎるだけだと思います。)

 

わかりやすさ: わかりやすい

Pythonは人間がわかりやすいシンプルな記法で書くことができます。インデントを利用した記法は最初は戸惑うかもしれませんが、慣れれば簡潔かつ簡単に書けるので初心者に優しいです。

 

Rubyと違ってPythonには省略記法や変則的な書き方が少ないです。同じことをするのはいつも同じコードになるので混乱が起きにくいです。

 

しかし、Pythonは暗黙的に様々な処理をしてくれるRubyとちがって、自分で書かなければならない部分が多いのでそれを理解するのに時間がかかります。

Rubyの場合はプログラミング言語が人間に近づき、Pythonの場合は人間がプログラミング言語に歩み寄る印象です。

情報量: 多い (日本語は比較的少ない)

Pythonのコミュニティは大きく英語の文献は充実していますが、日本語の文献は少ないです。英語が苦手な人にとってはすこしめんどくさいでしょう。

とはいえ今後もプログラミングと付き合っていくならある程度の英語力は必要になります。内容はそこまで難しくないことも多いので苦手意識を捨てて取り組みましょう。

難易度: 簡単

ほぼRubyとおなじか、やや難しい程度なので簡単です。

Python Djangoをつかってweb開発をする場合、必要なコードの一部は自動で生成されます。そのため決められたルールに従って開発する場合は非常に簡単です。最初のうちは「なぜこうなるの?」とは考えずにやり方を覚えましょう。英語を学習するときも「なぜ?」といちいち考えるよりも、一通り学び終わってから疑問がある部分を振り返るほうが効率がいいですよね。

とはいえ「おまじない」の部分が多いのはデメリットでもあります。「なぜだかわからないけどできる」部分が多いのでエラーが起きた時やちょっと仕様を変えたい時にどうしたらいいかわからず初めは戸惑います。

しかしPythonRubyと比べれば明示的にコードを書くので暗黙の了解部分が少なくエラーの原因は見つけやすいです。

 

できるようになること: 基本的なプログラミング・MVC・インフラ・各種開発管理・機械学習

Python×Djangoをある程度勉強すればRuby on Railsを勉強した場合と同じように、簡単なウェブアプリケーション、たとえばツイッターや質問箱のようなシステムを作ることができます。

それを作る過程でif(条件分岐)やfor(繰り返し)の実践的な使い方、ClassやModuleの使い方、MVCという考え方や、gitやHerokuなどのPaasの使い方を学べます。

またみんな大好き機械学習Pythonをつかえば比較的簡単に実装できます。商品の販売量や株価の予測など練習に使える題材は多いです。小・中規模の機械学習は自前のパソコンでもできますが、マシンのスペックに制約されるので超大規模の機械学習はなかなかできないと思います。

※ちなみに機械学習に使うグラボという部品はけっこう高価です。

 

 

できないこと: SQL文の学習

Python (Django) を使っていると、データベースを操作するSQLという文を書く必要がないのでそれを覚えることができません。(それがフレームワークのイイところでもありますが、、、)

 

仕事になるか(稼げるか):YES

 プログラミング言語ランキングでは上位に君臨し、日本でも海外でもPythonの求人はたくさんあります。頭が空っぽのお偉いさんまでこぞって乗っかっている機械学習ブームのおかげで需要も高いので給与も期待できます。

とはいえ実際問題「機械学習」「AI」を看板に上げていても中身は死ぬほどめんどくさいデータの前処理(ラベリングなど)をやることになるかもしれません。 

 実際にPythonを使っている実例

Pythonを使って株価を予想する

www.stockdog.work

Pythonを使ってネット上から自分の欲しい情報を自動で取得してくる

vaaaaaanquish.hatenablog.com

 

PHP

はじめやすさ: はじめやすい

PHPはwindowsOSでもMacOSでも環境構築をするときのエラーが起こりにくいです。

XAMPPなどのインストーラーを使えばPHPに必要な環境をすぐに整えられます。

そのため開発をスムーズに始められ、ストレスが少ないです。Ruby(on Rails)をWindowsで動かす場合、初心者だとどうしてもエラーがなおらず途方に暮れることも多いです。

Ruby on Railsに影響を受けたcakeというウェブアプリケーション開発のためのフレームワークを利用すれば開発を効率化できます。

 

わかりやすさ: そこそこ

PHPのcakeにも自動でコードを生成してくれる機能がありますが、Ruby on Rails の機能と比べると自動になる部分が少ないです。そのためある程度事前の学習が必要です。

しかし暗黙のルールが少なく自分で書かないといけない部分が多い分、Ruby on railsDjangoと比べて柔軟な運用ができます。コードをかいて手を動かしながらプログラミングやウェブアプリケーション開発を理解していくことができる面もあるでしょう。

そのため初心者に推薦されることが多いプログラミング言語のひとつです。

情報量: 多い 

PHPは比較的歴史のあるプログラミング言語なのでネット上にも書籍にも情報が豊富にあります。日本で人気なプログラミング言語なので日本語の情報も充実しています。

長く使われるだけあって癖のないプログラミング言語です。

難易度: 簡単

 

ウェブアプリケーションを作るならPHPRuby on Railsか、といわれるほどです。とくに初心者にとってはPHPがプログラミングの入り口になることも多いです。

必要となるデータベースやサーバーを一括インストールするインストーラーも用意されているので開発を始めやすく、文法の自由度も高いので学んだことがすっと頭に入りやすいです。 

できるようになること: 基本的なプログラミング・MVC・インフラ・各種開発管理

 

素早く軽量なウェブアプリケーションを開発できるのがPHPの強みです。Railsの機能を取り入れたcakeなどのフレームワークを使えば開発を効率化できます。

明示的に処理する部分も多いので、基本的なウェブ開発を手を動かしながら学ぶには最適なプログラミング言語です。

 

できないこと

HTML、CSSJavaScriptもまとめて開発・管理するRuby on Railsに対して、フロントエンドとサーバーサイドが分離するPHPは高度なフロントエンドデザインのスキルを身に着けるにはやや不便です。

作業を分業しやすいですが、フルスタックな技能を付けたい人には Ruby on Railsのほうがおすすめです。

仕事になるか(稼げるか):それなりにYES

 PHPを利用して開発されたサービスは多いです。身近なものでいうとFacebookWordPressぐるなびに用いられています。

PHPはプログラミングランキングでも安定的に上位をキープしています。Rubyとくらべて軽量なので大規模なサービスを長期間運用する場合にも使えます。

Cに似た構文を使うのでコンパイラ言語を学ぼうと思ったときにも応用が利きます。

日本で人気ですが、その分エンジニアの数も多いので仕事の単価はひくくなりがちです。

 おすすめ記事

xhateblo.hatenablog.com

xhateblo.hatenablog.com

 

xhateblo.hatenablog.com