1時間で基礎が学べる!
はじめてのプログラミング(Ruby編)
初心者の方がプログラミングを学ぼうと思うと、さまざまなハードルがあり、すぐに挫折してしまうことがあると思います。本カリキュラムは、これからプログラミングを学びたい人が最低限知っておきたい内容をまとめました。1時間程度の学習時間で、実際にプログラミングも体験しながら実践的に学ぶことができます。
ぜひ今後のプログラミング学習にお役立てください。
目次
- インターネットの仕組みとプログラミング
- 開発環境の準備
- Rubyの基礎
- 変数
- 演算子
- 条件分岐
- さらに学ぶには
インターネットの仕組みとプログラミング
プログラミングを実際に始める前に、簡単な仕組みと、Webプログラミングをするにあたって知っておきたいインターネットの仕組みについて学びましょう。
そもそも、「プログラミング」とは何でしょうか。プログラミングとは、プログラムを作り、コンピュータに指示を与えることです。具体的にどういった指示を与える際に使うのかについて、みなさんが普段から使っているインターネットの仕組みを例に解説していきます。
インターネットの仕組み
私たちは日常的に、インターネットのブラウザ(Chrome、Firefox、InternetExplorer、Safariなど)を使って、Webに掲載されている情報を閲覧しています。インターネットを通して得られる情報は、一体どこに存在しているのでしょうか?
それを知るには、「クライアント」と「サーバー」、そして「リクエスト」、「レスポンス」という概念について、理解しておく必要があります。
サーバーとは、英語で「供給する」という意味です。クライアントは「顧客」を意味しています。私たちが手に持っているデバイス(PC/スマートフォン)のWebブラウザが、クライアントに相当します。
サーバーに対して、クライアントは「この情報を取得したい」というメッセージを送ります(リクエスト)。そしてサーバーでは、クライアントのリクエスト(要望)に応じて処理をおこない、その結果を返します(レスポンス)。
例えばGoogleのトップページにアクセスするとき、ブラウザに入力されたURL「Googleのトップページの情報を取得する」というリクエストが送られ、Googleのサーバーでは「Webページが記述されているHTML文書」を、レスポンスとして返してきます。ブラウザは、受け取ったレスポンス結果を解析して表示するためのソフトウェアです。
ここまでの流れを、箇条書きで整理してみます。
- ユーザーが、ブラウザ上にURLを入力する
- ブラウザ(クライアント)が、HTTPリクエストをサーバーに送る
- サーバーがリクエストを解析して処理を行う
- サーバーが処理結果のレスポンスをブラウザへ返信する
- ブラウザが受け取ったレスポンスを解析して、表示する
Webサイト1ページにアクセスするだけでも、上記のような手順が踏まれているのです。サーバーとクライアント、それをつなぐリクエスト・レスポンス、この考え方が、Webアプリケーションを開発する上で、もっとも基本的な考え方になります。
プログラミング言語における、 クライアントサイド処理とサーバーサイド処理
サーバー側のプログラムが処理を行い、結果をレスポンスとして返してクライアントに表示させる ─ これが一般的なクライアントとサーバーの構成ですが、最近ではスマートフォンアプリなど、「クライアントサイド」と「サーバーサイド」を柔軟に連携させるアプリケーションも増えてきました。
サーバーサイド・スクリプト
サーバサイド・スクリプトは、その名の通りサーバー上で処理を行うスクリプト言語です。Webサーバからブラウザ(クライアント)に送信される時点で、一定の必要な処理を完了させており、HTMLやjsonといったデータ形式として、レスポンスが返ってきます。主なサーバーサイドスクリプトに、以下のようなものがあります。
- Ruby
- Perl
- PHP
- Python
クライアントサイド・スクリプト
一方で、クライアントサイド・スクリプトは、サーバー上ではなく、Webブラウザやスマートフォンアプリなど、クライアント側で動作するスクリプトです。有名なものとして、JavaScriptが挙げられます。
例えば、「来年の誕生日までの日数を表示する」という処理を書こうと思ったとき、ちょっとした計算が必要なため、HTMLだけでは実現できません。ただ、この簡単な処理のために、わざわざサーバーを用意して結果を返すような仕組みを作る必要もありません。そこでJavaScriptで数行のコードを書くことで、インターネットに接続していない状態でも上記のような簡単な計算などの処理が実現できます。
このように、インターネットでは、「クライアントサイド」と「サーバーサイド」に応じて、それぞれのプログラムが動いており、そのプログラムを指示するためにプログラミングのスキルが必要になります。
開発環境の準備
プログラミングを学ぶにあたって、最初のハードルは開発環境の構築です。自分のPC上で開発環境を構築することも可能ですが、ある程度の知識も必要なため、これだけで挫折してしまう人もいます。今回は、クラウド上で簡単に使えるCloud9という無料のツールを使用します。アカウント登録くらいの内容ですが、まずは準備をしましょう。
Cloud9のアカウント登録
登録は簡単です。Cloud9のページにアクセスして、「SIGN UP」のボタンを押して登録するだけです。
登録ができたら、実際に操作をするワークスペースを作成してみましょう。
登録が完了するとダッシュボード画面が表示されるので、「Create a new workspace」ボタンを押してください。
続いてこのような画面が表示されますので、入力していきます。
ワークスペース名は何でも構いませんので、ご自身が管理しやすい名前にしましょう。
続いて「Private」と「Public」を選ぶことができます。Cloud9には、画面を共有したりチームで開発することもできるという特徴があるので、他の人に共有したい場合などは「Public」にしておくことおをおすめします。
また、テンプレートから選ぶことができますが、今回は「Custom」を選択しました。
これで「Create workspace」のボタンを押せばワークスペースの作成は完了です。
ダッシュボードに作成したワークスペースが表示されますので、「Open」を押して開いてください。このような画面が表示されたら成功です。
これで開発環境の準備は完了です。
Rubyの基礎
いよいよRubyを使いながらプログラミングを実践していきます。その前に、今回扱うRubyがどんなものなのかおさえておきましょう。
Rubyとは
Rubyはプログラミング言語の一つで、日本人のまつもとゆきひろ氏によって作られました。理解しやすい文法で楽しくプログラムできることができ、特にWebの分野で国内外で幅広く使われています。
Rubyはプログラミング言語として、以下のような特徴を持ちます。
- すぐに実行できる(インタプリタ型、スクリプト言語)
- 簡単に実世界を表現することができる(オブジェクト指向)
- 短いコードで記述できる(動的型付け)
Rubyはシンプルでわかりやすい文法でプログラムを書くことができるので、プログラミング初心者におすすめです。
Ruby on Railsとは
Rubyが幅広く使われるようになったのは、Ruby on RailsというRubyで作られたWebアプリケーションフレームワーク(Webアプリケーションを作るのに必要な仕組みを集めたもの)が海外で人気になってからです。
Ruby on Railsによって初心者でも少ない労力でWebアプリケーションを作ることができるようになりました。Ruby on RailsはTwitterや食べログなど様々な有名Webサービスで使われているので、これからWebサービスを作りたいという方におすすめです。
Rubyの基本ルール
まずは最低限下記の2つを覚えておきましょう。
- 処理の終わりには「;」は不要(記述してもエラーにはなりません)
- ファイルの拡張子は「.rb」
具体的な書き方は実践しながら覚えていきましょう。
Rubyで文字列を表示してみよう
まずは基礎として、文字列を表示してみましょう。
Rubyで文字列を表示する場合は、puts
あるいはprint
を使います。printは改行を行いませんが、putsは文字列の最後で改行を行います。
例えば、putsの場合はこのように書きます。
puts "こんにちは"
やってみよう:Hello Worldを出力
実際にCloud9を使ってやってみましょう。
まずはワークスペース上で、ファイルを作成します。ファイルを作成するには、ワークスペースの左にあるフォルダの上で右クリックして、「New File」をクリックします。
ここで作成したファイル名は「hello.rb」としましょう。ファイル名は何でも構いませんが、日本語は使わないようにします。
「.rb」が先ほど説明したRubyの拡張子です。
このファイルをクリックすると、編集ができるようになりますので、ワークスペース上に下記のコードを入力してください。
puts "Hello, world!"
コードが入力できたら、Windowsの場合はControl + S
、Macの場合はcommand + S
のショートカットキーでファイルを保存してください。
保存ができたら、ワークスペース画面の下にあるbashターミナルから以下のコマンドを入力してからEnterキーを押下して実行しましょう。
$ruby hello.rb
すると、このように出力結果が表示されるはずです。
何か間違っているとエラーが表示されますので、「”」の入力が間違っていないかなど確認しましょう。
これから解説する内容についても同じようにプログラミングコードを入力して、実行していきます。
解説:オブジェクトとメソッド
まずは文字列を表示しましたが、ここでRubyを使う上で重要な「オブジェクト」と「メソッド」について解説します。
Rubyでは、文字列、数値、時刻など全てのデータがオブジェクトになっています。オブジェクトは日本語にすれば「もの」であり、命令の対象となるデータのことだと考えてください。
先ほど出てきた、”Hello, world!”は文字列オブジェクト(あるいは文字列)と呼ばれます。他にも数値オブジェクト(あるいは数値)などがあります。
また、putsなどは、オブジェクトを扱う為の命令であり、メソッドと呼ばれます。メソッドに渡す情報は引数と呼ばれます。たとえば、先ほどのプログラムで、putsメソッドに対しての引数は、”Hello, world!”です。
今はまだ理解できないかもしれませんが、これからRubyプログラミングを学ぶ上で重要な知識なので知っておきましょう。
変数
続いて変数について学びます。
変数とは、オブジェクトを格納する箱のようなものです。数値や文字列などのデータを、名前のついた箱にしまっておくことを想像してみてください。この名前を「変数名」と呼びます。変数名を指定することで、プログラム中いつでも、変数に格納されたデータを利用することができます。
変数を用いると、複雑なプログラムも作成しやすくなります。例えば、計算結果などを変数に格納すれば、プログラム内で繰り返し用いることができます。これにより、同じ計算を何度も繰り返す必要がなくなり、処理効率を高めることができます。
実際に変数を使ってみましょう。以下のように書くことで、値(数値オブジェクト)を変数に代入することができます。xは「変数」、=は「演算子」、1は「値」となります。これで、変数「x」に数値の「1」がが記録されました。なお、ここでの「=」は「等しい」ではありませんのでご注意ください。等しい(イコール)については後ほど解説します。
x = 1
変数の名前の付け方ですが、いくつか注意点があります。まず、利用目的がわかるような名前をつけて、長すぎず短すぎずにしましょう。また、変数に使用できる文字は以下のように決まっているので注意しましょう。
- 半角英数字、アンダースコア(value-1はNG)
- 大文字と小文字は区別される
- 最初の文字に数字は使用できません(1valueはNG)
やってみよう:自分の名前を変数で出力する
実際に課題として、変数「name」に自分の名前を代入して名前を出力してみましょう。
実行例は下記のようになります。
name = "Taro Kirameki"
puts name
まずはnameという変数に自分の名前(今回はTaro Kirameki)を代入します。その次にputsで変数nameを呼び出しました。
先ほどと同じように実行すると、このように出力されるはずです。
これで変数が使えるようになりました。
演算子
続いて、計算や比較などができる演算子について解説します。
演算子には、下記のようなものがあります。
- 算術演算子
- 比較演算子
- 論理演算子
なお先ほど、紹介した「=」も代入演算子です。
今回は算術演算子と比較演算子を扱います。
算術演算子
数学における計算処理を行うための演算子です。例えば、ECサイトで合計金額を計算する際など様々なところで使われます。
算術演算子には下記のようなものがあります。
演算子 | 意味 | 使用例 |
---|---|---|
+ | 加算 | x = 10 + 3 #13 |
- | 減算 | x = 10 - 3 #7 |
* | 乗算 | x = 10 * 3 #30 |
/ | 除算 | x = 10 / 3 #3.333… |
% | 剰余 | x = 10 % 3 #1 |
この中であまり見慣れないのは「%(剰余)」ではないでしょうか。%は余りを計算しますので、10÷3で余り「1」のため計算結果は1となります。
具体例を見てみましょう。
変数num1に3を、num2に4を代入して加算するとします。
num1 = 3 num2 = 4 puts num1 + num2
まずはnum1、num2にそれぞれの値を変数として代入します。その次に「+(加算)」を使って計算させます。
こうすると、3+4ですので、7が出力結果として表示されます。
やってみよう:計算してみる
変数num1に「12」、変数num2に「3」を代入し、それを用いて 加算、減算、乗算、除算、剰余をそれぞれ計算してみましょう。
実行例は下記のようになります。
num1 = 12 num2 = 3 puts num1 + num2 puts num1 - num2 puts num1 * num2 puts num1 / num2 puts num1 % num2
それぞれ計算されるので、このように出力されるはずです。
変数の値を変えてみたりして計算結果がどう変わるか確認すると良いでしょう。
条件分岐
最後に条件分岐を学びましょう。条件分岐のif
を使うと、条件に応じて処理を分岐させることができます。つまり、ある場合はAの処理、別の場合はBの処理を行うといった、場合分けの処理が可能になるのです。
基本的な書き方は、下記のようになります。
if 条件 [then] #=> 条件が真であれば実行 else #=> 条件が偽であれば実行 end
条件にはブール値(真/偽)を返す式を入れます。また、Thenは省略可能です。
ここので「真」はTrueでTと略され、「偽」はFalseでFと略されます。
比較演算子
条件分岐を使う際は、比較演算子と一緒に使われることが多いため、先に理解しておきましょう。
比較演算子とは、大小関係や等しいなどの比較を行う演算子です。以下のようなものがあります。
演算子 | 意味 | 使用例 |
---|---|---|
== | 等しい | a == b #=>aとbの値が等しければ真 |
!= | 等しくない | a != b #=>aとbの値が等しくなければ真 |
< | 未満 | a < b #=>aがb未満ならば真 |
<= | 以下 | a < b #=>aがb未満ならば真 |
> | より大きい | a > b #=>aがbより大きければ真 |
>= | 以上 | a >= b #=>aがb以上ならば真 |
条件分岐を書いてみる
それでは、条件分岐を書いてみましょう。
今回はテストの点数が70点以上だったら「合格です」と表示してみます。変数scoreに点数を代入して条件分岐を書くとします。
score = 85 if score >= 70 puts "合格です" end
scoreが85と70以上になっているので、「合格です」と表示されます。
条件分岐が複数ある場合
条件分岐では、「〜でなかったら」といった具合に複数の条件を指定することができます。複数を指定する場合はelsif
を使って条件判定を行います。
elsifは以下のように書きます。
if 条件1 [then] #=> 条件1が真であれば実行 elsif 条件2 [then] #=> 条件1が偽で条件2が真であれば実行 elsif 条件3 [then] #=> 条件1,2が偽で条件3が真であれば実行 else #=> 条件1~3が全て偽であれば実行 end
条件は上から順番に適用され、どれにも該当しない場合は、else
のあとに指定されたものが実行されます。
先ほどの例に追加して、70点以上で「合格です」、60点以上70点未満で「不合格です。おしい」、60点未満で「不合格です」と表示してみましょう。
score = 85 if score >= 70 puts "合格です" elsif score >= 60 puts "不合格です。おしい" else puts "不合格です" end
これで変数scoreの値を変えること表示される文字列が変わるようになりました。
やってみよう:天気予報を作ってみる
本カリキュラムの最終課題です。
変数numに0〜100の降水確率の数値を代入し、
- 降水確率が80以上であれば「明日は雨です」
- 降水確率が50以上、80未満であれば「明日は曇りです」
- 降水確率が50未満であれば「明日は晴れです」
と出力されるようにプログラムを書いてください。
実行例は以下のようになります。
num = 40 if num >= 80 puts "明日は雨です" elsif num >= 50 puts "明日は曇りです" else puts "明日は晴れです" end
このように出力されるはずです。
変数の値を変えることで、天気の結果が変わることも確認してみましょう。
これでRubyの基礎は終了です。お疲れ様でした。
さらに学ぶには
今回はRubyの基礎の基礎だけを学びました。ぜひ継続して学習してみてください。
また、TechAcademyでは最短4週間でRuby on Railsを習得して、オリジナルサービスを開発できるオンラインブートキャンプ Webアプリケーションコースを提供しています。独学ではなく現役エンジニアのメンターの力を借りて効率的に学びたい場合はご検討ください。
オンラインブートキャンプの特徴
オンラインブートキャンプには3つの特徴があります。
パーソナルメンター制度
現役エンジニアのメンターが学習を毎日サポートします。週2回・1回30分で学習状況を確認する「メンタリング」を実施してマンツーマンサポートを行い、期間中は毎日15時〜23時でチャットのサポートがあります。
開発環境の構築なし
Cloud9を使うので、ローカル環境の構築が不要です。また、Cloud9を使うことでメンターが課題レビューすることもできます。
Webサービスを実際に公開
期間内で3つのアプリケーションのリリースを目指します。最後には、オリジナルサービスを自分でリリースしていただことがゴールです。実務に近い形で学習することで、社会でも通用するスキルが身につきます。
ぜひこの機会に学習してみましょう。