give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

Q. チェリー本の学習時にサポートが切れたRuby 2.4を使ってもいいの?

はじめに

先日、Ruby 2.4の公式サポートが終了しました。

Ruby 2.4 公式サポート終了

ですが、これは別に驚くべきニュースでもなんでもありません。
Rubyは毎年12月25日に新バージョンが公開され、毎年3月末に古いバージョンがサポート対象外になっていくので、これは予定通りの動きです。

ところで、拙著「プロを目指す人のためのRuby入門」(通称・チェリー本)では、このRuby 2.4を説明対象のバージョンにしています。
これから本書を使って勉強しようと考えている人は、「えっ、Ruby 2.4ってサポートが切れてるけど、使って大丈夫なの?」と思うかもしれません。
そこでこのエントリでは、チェリー本の学習時に使用すべきRubyのバージョンについて説明します。

最初に結論:Ruby 2.4でもいいし、Ruby 2.5以上でもOK!

最初に結論を言うと、勉強で使用するならRuby 2.4でもいいし、Ruby 2.5以上でも構いません。
詳しい話は以下に書きます。

Ruby 2.4を使う場合

公式サポートが切れると、Ruby本体のバグ修正やセキュリティパッチのリリースがなくなります。
もしRuby 2.4を使って、外部に公開するようなアプリケーションを開発している場合はこれが深刻な問題につながる可能性があります。

ですが、チェリー本のサンプルプログラムはローカルマシン内に閉じた簡単なものばかりです。
なので、学習用として使うのであれば、Ruby 2.4を使い続けても問題はありません。

Ruby 2.4の問題点

ただし、Rubyのバージョンが古くなっていくと、「最新の開発環境にうまく対応できなくて、インストールにすごく苦労する」という現象がときどき発生します。
今はすんなりインストールできると思いますが、数年すると「Ruby 2.4をインストールしようとしたらエラーが出た」みたいな問題が起きるかもしれません。
その際は無理に頑張らず、新しいバージョンのRubyをインストールして学習することを検討してください。

また、最新のRubyでは本書の説明と異なる部分もいくつかあるため、業務で新しいバージョンのRubyを使ったときに「あれ、こんな構文あったっけ?」と疑問に思うことが出てくるかもしれません。
そうならないように、Ruby 2.4で学習が終わったら今度は次の項で紹介する説明記事を参考にして、Ruby 2.5以上の新機能や新構文もチェックしておきましょう!

Ruby 2.5以上を使う場合

Ruby本体はバージョンが上がっても、大半の部分で後方互換性が維持されています。
ですので、Ruby 2.5以上のバージョンでチェリー本を勉強したとしても、9割以上の内容は有効です。

ただ、そうは言っても「100%同じ」というわけにはいきません。
そんなに数は多くないものの、中には「チェリー本に書いてある内容と、実際に動かしたときの挙動が異なる」という部分もところどころに出てきます。

そういうときのために、Ruby 2.5、2.6、2.7の各バージョンについて、チェリー本の説明との差異をまとめています。

qiita.com
qiita.com
qiita.com

Ruby 2.5以上のバージョンを使って学習する場合は、事前にこれらの記事に目を通しておくと、安心して学習が進められると思います。

このような最新バージョンとの差異の説明は、今後も引き続き行っていく予定です。

Q. ところで、Rubyのバージョンってどうやって変更するの?

特定のバージョンのRubyをインストールしたり、複数のRubyのバージョンを切り替えて使ったりする場合はrbenvというツールを使います。(Mac/Linux環境の場合)

github.com

なお、rbenvのインストール方法や使い方についてはここでは詳しく説明しません。
これらはネット上にたくさん情報があるので、そちらを参考にしてください。
(意外と技術の移り変わりが激しい分野なので、なるべく1年以内に公開された情報を参考にするのをお勧めします)

Q. Ruby 2.3以前を使って勉強するのもありですか?

ありと言えばありですが、チェリー本が発売された当時(2017年)ならともかく、2020年現在にわざわざRuby 2.3以前のRubyを使う理由は特にない気がします。
何か特別な理由があるならやむを得ないと思いますが、そうでないならRuby 2.4以上で学習することをお勧めします!

まとめ

というわけで、このエントリではチェリー本の学習にサポートの切れたRuby 2.4を使ってもよいのかどうかについてまとめてみました。
ここに書いた内容で疑問点が解消しなかった場合はこのブログのコメント欄や、Twitterのメンションなどを使って、お気軽にご質問ください。

今後とも「プロを目指す人のためのRuby入門」をよろしくお願いします!