Ruby入門1: はじめにrubyとは?できること、できないこと

Ruby入門

Rubyでできること、できないこと

Rubyは何に向いているか?

プログラマー
CANIT先生
CANIT先生

今回からRubyというプログラミング言語をお二人に紹介していきます

猫田さん
猫田さん

とうとう、きましたねー

牛山くん
牛山くん

Rubyは、どんなプログラミング言語なんですか?

CANIT先生
CANIT先生

簡単に言うと、Rubyで書けないソフトウエアはありません。だから、とても人気があるプログラミング言語ですよ

Rubyで書かれた有名なサイト

CANIT先生
CANIT先生

たとえば、Rubyで作られたサイトにはこのようなものがあります

TwitterHulu価格ドットコム食べログクックパッドGunosy(ニュースなどのまとめサイト)、Airbnb(旅行予約サイト)、クラウドワークス(仕事のマッチングサイト)、GitHub(ソフトウェア開発のプラットフォーム)。

Rubyで作られたサイトの共通点

CANIT先生
CANIT先生

Rubyで作られたサイトには、このような共通点があります。「なんとなく」でよいので掴んでおくといいですよ

  1. PCやスマホを使ったインターネット経由で何かをする
  2. 登録ができて、登録した人へのサービスがある
  3. 大量のデータの中を検索して、ユーザーが望む情報を与える
  4. 検索結果を見たユーザーに気に入ったものがあればお金が動く

すべてがこの条件を満たすわけではありませんが、基本的にはこのような枠組みで成り立っているサービスが多いです。

Rubyは、こういうWebシステムWebアプリを作るのに向いています。簡潔に書けるため開発の速度が早く、プログラムの改良などの保守が容易だからです。この他にもゲームやSNSのBot(自動投稿プログラム)なども比較的容易に書けます。

そもそもRubyとは?

Rubyは1995年に日本人の「まつもとゆきひろ」さんが作りました。IT業界、とくにプログラミング言語で日本人が作ったものが生き残っているのは、ほぼRubyだけです。また、Rubyはオブジェクト指向スクリプト言語です。

オブジェクト指向とは

猫田さん
猫田さん

オブジェクト指向?

CANIT先生
CANIT先生

ちょっとわかりにくいですよね。本当に簡単に説明すると、機能とデータが一体になった方法論のことです。オブジェクト指向は、大規模なプログラミングに向いているんですよ

今時の言語のほとんどはオブジェクト指向に基づいて書くことが可能です。プログラムの規模が小さいうちはオブジェクト指向を用いなくても問題はありませんが、なるべく早いうちにこの考え方を身に着けておいたほうがよいかと思います。

コンパイル型言語とスクリプト言語

パソコン

プログラミング言語を大きく二つに分けると、コンパイル型言語とスクリプト言語に分けられます。

コンパイル型言語の代表は、C言語、C++、C#、Javaなどです。

一方、スクリプト言語として代表なものがPerl、Python、そしてこれから私たちが学ぼう取りているRubyです。

牛山くん
牛山くん

コンパイル型言語とスクリプト言語は、何が違うんですか?

コンパイル型言語

コンパイル型言語の特徴は、プログラムをすべて書き上げてからコンパイルする点です。実行時は高速ですが、プログラムを書くのに時間がかかってしまいます。

コンパイル:私たちが書いたコードのとおりにコンピューターが実行できるように変換することです

スクリプト言語

一方、スクリプト言語の特徴は一行ずつ実行する点です。実行時はちょっと低速になってしまいますが、プログラムを書く時間は少なくて済みます

CANIT先生
CANIT先生

Rubyはスクリプト言語なので、実行時にはちょっと低速。と言っても、Webアプリを書く上では問題にはならない程度です。それよりも、早くプログラムを書ける魅力のほうが大きいですね

Rubyを使った簡単なプログラミングの例

猫田さん
猫田さん

早くプログラムを書けるってどのくらいなの?

CANIT先生
CANIT先生

具体例を出したほうがわかりやすいかもしれませんね。簡単なプログラムの例を挙げてみましょうか

Rubyで2+3の答えを表示したいのなら、こう書きます。

print(2+3)

猫田さん
猫田さん

これだけ?

CANIT先生
CANIT先生

そう、これだけなんです。Rubyの人気があるのも、なんとなくわかりますよね

Rubyに向いていないもの

https://www3.nhk.or.jp/news/html/20200617/k10012473941000.html

もちろんRubyに向いていないものもあります。本当に高速で動かさないといけないプログラムには、向いていません。

たとえば、WindowsなどのOSとか大規模な科学技術計算(飛沫の広がり方の計算とか)です。また、今流行りのAI、人工知能、機械学習、深層学習にはあまり向いていません。

同じスクリプト言語のPythonの方が向いています。Pythonはスクリプト言語なのでちょっと遅いのですが、深層学習のプログラムとの連携がうまく作られています。

CANIT先生
CANIT先生

どんな言語にも向き不向きがあるのは、知っておいてくださいね

Ruby on Railsについて

CANIT先生
CANIT先生

次は、Ruby on Railsの紹介をします

猫田さん
猫田さん

また、知らない言葉が出てきましたねぇ

Ruby on Rails(ルビーオンレイルズ)はRubyで開発するためのフレームワークです。

Scaffold

Ruby on Railsの中にもいろいろなものがあり、代表的なものの1つがScaffoldです。

実は、大多数のWebアプリの基本的な構造は、共通しているんですよ。そこでRubyは設定だけ書けば、Webアプリを自動生成するフレームワークを準備しました。

牛山くん
牛山くん

なるほど。共通点がたくさんあるから、できたことですね

CANIT先生
CANIT先生

そのとおりです。そして、フレームワークによってWebアプリの開発が、劇的に簡単になりました

さらに、仕様を変更したときも、直接Rubyプログラムに触れることなく、簡単に直すことができるようになりました。

また、Webアプリを作るときにいつも問題になるセキュリティの問題もこのScaffoldがすべて吸収しました。

セキュリティの問題が発見されるといろいろなレベルで対応しなければならず、作業が大変でしたが、Scaffoldのバージョンだけ気にしていればセキュリティの問題はすべて解決するようになったのです。

RDBとの連携

RubyがWebアプリを書くのに適しているもう一つの理由として、RDBとの連携がよいというのが挙げられます。

猫田さん
猫田さん

RDB……また知らない言葉が出てきましたよ

RDB(Relational DataBase)は、大量のデータを高速に安全に扱うシステム。MySQLやPostgreSQLが有名です。

安全にシステムを扱うためにRDBは必要なのですが、基本的にRDBを操作するのは大変です。でも、Ruby on Railsでは設定を書くだけで、RDBの自動生成やアクセスを可能にしました。

Nokogiriライブラリ

もう一つRubyの画期的な応用として挙げられるのは、Nokogiriというライブラリです。Webスクレイピングでよく使われます。

WEBスクレイピングとは、WEBサイトから情報を抽出することです。HTMLの構造を解析し、特定の要素をノコギリのように切り出す……そのようなイメージを持つとわかりやすいかもしれません

Webページの中から自動的に画像部分、表の部分、動画部分をすべてダウンロードできると便利です。これもその昔はいちいちプログラムを書いていたのですが、設定を書くだけで容易にそれらを取り出せるようにしました。

Rubyの開発環境は無料

女性 スマホ

Rubyは完全に無料です。誰でも自由にダウンロードして使うことができます。開発環境ですが、ここではWindows上の最小限の環境で説明します。

VSCodeEclipseなどのIDE(プログラミング開発に必要となるテキストエディタ、コンパイル、デバッガを1つにまとめた開発環境)を使うと効率よく開発できます。もちろんMacやLinux上でも開発できます。

RubyとRuby on Railsの実行は、Windows、Mac、Linuxで可能です。またSmalruby(スモウルビー)というビジュアルプログラミングインタフェースも自由に使うことができます。

まとめ:丸暗記は必要ない

女性 パソコン
CANIT先生
CANIT先生

さて、これで1回目の講義を終了としますが……理解できましたか?

猫田さん
猫田さん

全然、覚えられません

CANIT先生
CANIT先生

そうですね。いきなりは無理ですよね。でも、べつに今回教えたことを丸暗記する必要はないんですよ。ざっくりと知っておくだけで十分です。「そういえば聞いたことあるなぁ。なんだったかなぁ」と思ったら、また調べればいいんです

牛山くん
牛山くん

それなら全然問題なさそうです

猫田さん
猫田さん

うん!問題ない。次にいこ

それでは次章からRubyのインストールと使い方について説明していきたいと思います。

挫折率が高い??プログラミング学習のポイント
駆け出しエンジニアが一緒に学ぶ
CANITは、Progateやドットインストールで独学している人達同士をつなげます。駆け出しエンジニアのあなたのためのSNSです。
Ruby入門
【この記事を書いた人】
CANIT 先生

あらゆるプログラミング言語をあやつるフリーの凄腕講師。温和な性格で「わかるまで教えます」がモットー。たまに時間ができると動物の仲間達に、プログラミングを教えることもある。現在の生徒は牛山くんと猫田さん。

CANIT
タイトルとURLをコピーしました