Rubyでできること、できないこと
Rubyは何に向いているか?
今回からRubyというプログラミング言語をお二人に紹介していきます
とうとう、きましたねー
Rubyは、どんなプログラミング言語なんですか?
簡単に言うと、Rubyで書けないソフトウエアはありません。だから、とても人気があるプログラミング言語ですよ
Rubyで書かれた有名なサイト
たとえば、Rubyで作られたサイトにはこのようなものがあります
Twitter、Hulu、価格ドットコム、食べログ、クックパッド、Gunosy(ニュースなどのまとめサイト)、Airbnb(旅行予約サイト)、クラウドワークス(仕事のマッチングサイト)、GitHub(ソフトウェア開発のプラットフォーム)。
Rubyで作られたサイトの共通点
Rubyで作られたサイトには、このような共通点があります。「なんとなく」でよいので掴んでおくといいですよ
- PCやスマホを使ったインターネット経由で何かをする
- 登録ができて、登録した人へのサービスがある
- 大量のデータの中を検索して、ユーザーが望む情報を与える
- 検索結果を見たユーザーに気に入ったものがあればお金が動く
すべてがこの条件を満たすわけではありませんが、基本的にはこのような枠組みで成り立っているサービスが多いです。
Rubyは、こういうWebシステムやWebアプリを作るのに向いています。簡潔に書けるため開発の速度が早く、プログラムの改良などの保守が容易だからです。この他にもゲームやSNSのBot(自動投稿プログラム)なども比較的容易に書けます。
そもそもRubyとは?
Rubyは1995年に日本人の「まつもとゆきひろ」さんが作りました。IT業界、とくにプログラミング言語で日本人が作ったものが生き残っているのは、ほぼRubyだけです。また、Rubyはオブジェクト指向スクリプト言語です。
オブジェクト指向とは
オブジェクト指向?
ちょっとわかりにくいですよね。本当に簡単に説明すると、機能とデータが一体になった方法論のことです。オブジェクト指向は、大規模なプログラミングに向いているんですよ
今時の言語のほとんどはオブジェクト指向に基づいて書くことが可能です。プログラムの規模が小さいうちはオブジェクト指向を用いなくても問題はありませんが、なるべく早いうちにこの考え方を身に着けておいたほうがよいかと思います。
コンパイル型言語とスクリプト言語
プログラミング言語を大きく二つに分けると、コンパイル型言語とスクリプト言語に分けられます。
コンパイル型言語の代表は、C言語、C++、C#、Javaなどです。
一方、スクリプト言語として代表なものがPerl、Python、そしてこれから私たちが学ぼう取りているRubyです。
コンパイル型言語とスクリプト言語は、何が違うんですか?
コンパイル型言語
コンパイル型言語の特徴は、プログラムをすべて書き上げてからコンパイルする点です。実行時は高速ですが、プログラムを書くのに時間がかかってしまいます。
スクリプト言語
一方、スクリプト言語の特徴は一行ずつ実行する点です。実行時はちょっと低速になってしまいますが、プログラムを書く時間は少なくて済みます。
Rubyはスクリプト言語なので、実行時にはちょっと低速。と言っても、Webアプリを書く上では問題にはならない程度です。それよりも、早くプログラムを書ける魅力のほうが大きいですね
Rubyを使った簡単なプログラミングの例
早くプログラムを書けるってどのくらいなの?
具体例を出したほうがわかりやすいかもしれませんね。簡単なプログラムの例を挙げてみましょうか
Rubyで2+3の答えを表示したいのなら、こう書きます。
print(2+3)
これだけ?
そう、これだけなんです。Rubyの人気があるのも、なんとなくわかりますよね
Rubyに向いていないもの
もちろんRubyに向いていないものもあります。本当に高速で動かさないといけないプログラムには、向いていません。
たとえば、WindowsなどのOSとか大規模な科学技術計算(飛沫の広がり方の計算とか)です。また、今流行りのAI、人工知能、機械学習、深層学習にはあまり向いていません。
同じスクリプト言語のPythonの方が向いています。Pythonはスクリプト言語なのでちょっと遅いのですが、深層学習のプログラムとの連携がうまく作られています。
どんな言語にも向き不向きがあるのは、知っておいてくださいね
Ruby on Railsについて
次は、Ruby on Railsの紹介をします
また、知らない言葉が出てきましたねぇ
Ruby on Rails(ルビーオンレイルズ)はRubyで開発するためのフレームワークです。
Scaffold
Ruby on Railsの中にもいろいろなものがあり、代表的なものの1つがScaffoldです。
実は、大多数のWebアプリの基本的な構造は、共通しているんですよ。そこでRubyは設定だけ書けば、Webアプリを自動生成するフレームワークを準備しました。
なるほど。共通点がたくさんあるから、できたことですね
そのとおりです。そして、フレームワークによって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ページの中から自動的に画像部分、表の部分、動画部分をすべてダウンロードできると便利です。これもその昔はいちいちプログラムを書いていたのですが、設定を書くだけで容易にそれらを取り出せるようにしました。
Rubyの開発環境は無料
Rubyは完全に無料です。誰でも自由にダウンロードして使うことができます。開発環境ですが、ここではWindows上の最小限の環境で説明します。
VSCodeやEclipseなどのIDE(プログラミング開発に必要となるテキストエディタ、コンパイル、デバッガを1つにまとめた開発環境)を使うと効率よく開発できます。もちろんMacやLinux上でも開発できます。
RubyとRuby on Railsの実行は、Windows、Mac、Linuxで可能です。またSmalruby(スモウルビー)というビジュアルプログラミングインタフェースも自由に使うことができます。
まとめ:丸暗記は必要ない
さて、これで1回目の講義を終了としますが……理解できましたか?
全然、覚えられません
そうですね。いきなりは無理ですよね。でも、べつに今回教えたことを丸暗記する必要はないんですよ。ざっくりと知っておくだけで十分です。「そういえば聞いたことあるなぁ。なんだったかなぁ」と思ったら、また調べればいいんです
それなら全然問題なさそうです
うん!問題ない。次にいこ
それでは次章からRubyのインストールと使い方について説明していきたいと思います。