IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

RubyビギナーのためのStep upコラム

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート 

第5回 RubyとPythonの文法や環境を比較してみる (中越智哉) 2018年7月

みなさん、こんにちは。
Rubyistの皆さんは当然ながら、日々、Rubyを使われていることかと思います。別に、ほかの言語のことなんて気にならないよ、という方も多いかもしれませんが、でもやっぱりRubyをウォッチしていると、どうしても気になってしまうのが、Pythonではないでしょうか?

PythonはRubyと同じく、スクリプト言語であり、オブジェクト指向言語であり、オープンソースでもあります。Ruby言語自体の歴史は20年以上と意外と古いのですが、Rubyが全世界的にブームとなったのは2005年にバージョン1がリリースされたRuby on Railsという、当時ホットなアーキテクチャだったサーバサイドのWebアプリケーションの生産性を劇的に向上するフレームワークがきっかけでした。それを契機として、その後の新しい技術の流れを次々に取り込んでメジャーになっていったわけですが、Pythonもやはり同じく昨今のAIブームに乗って、一気に注目を浴びる言語となりました。最新の技術やアーキテクチャにフィットしてスターダムにのし上がるというストーリーに親和性を感じる人も多いのではないでしょうか?

ということで、ちょっと前置きが長かったですが、似ているようで似ていない?RubyとPythonの文法や環境をいくつか比較してみたいと思います。いちおう、Rubyistから見た視点になっていますので、「〇〇はPythonのほうがそもそも先なんだけど」みたいなことがありましたらどうかご容赦ください。

1. 似ている?対話型実行の仕組み

Rubyを使うときに、便利だなあと私が思うツールに、「irb」があります。Rubyのソースコードを普通に実行する際は、「ruby」コマンドでインタプリタを起動しますが、irbを使うと、きちっとしたプログラムを書いて保存しなくても、簡単に文法の確認を行ったりできるので、大変便利です。

fig01

実は、Pythonにも、同じような対話式のツールがあります。ただし、Rubyのようにインタプリタと別のコマンドになっているのではなく、インタプリタを起動する「python」コマンドで、引数を省略すると対話モードが起動するようになっています。

fig02

2. 似ていない!ブロックの記述方法

Rubyでは、ブロックの記法といえば「do~end」か「{ ~ }」を利用しますよね。つまりRubyのプログラムではブロックの終わりがどこかを知るには「end」か、「}」を探せばよいわけです。

実は、Pythonには、ブロックの終了を表すキーワードや記号がありません。何か区別できる表記がないと、どこがブロックの終わりかわからないではないか?とRubyistの常識では思うわけですが・・・Pythonでは、なんと「インデント」によってブロックを表現するのです!

つまり、あるブロックの中のコードは、必ずインデントが1段下がり、ブロックが終了した後のコードは、必ずインデントが1段戻るように記述することで、インデントが戻る前までのコードがブロックに含まれるという見方になるのです。

age = 16
if age>=18:
  print("選挙権を有します")
  print("選挙に行きましょう")
else:
  print("選挙権がありません")
  print("あと{0}年待ちましょう".format(18-age))

3. 似ていない!真偽値

Rubyの真偽値は、falseとnil以外は全て真とみなすというのは皆さんご存知の通りかと思います。シンプルで分かりやすいルールですが、Pythonについてはどうでしょうか?

Pythonの真偽値とRubyの真偽値を比較した表がこちらになります。

Rubyの真偽値

内容 代表的な値 Rubyで真偽値とみなされる値
true 偽でない値全て
false falseまたはnil

Pythonの真偽値

内容 代表的な値 Pythonで真偽値とみなされる値
true 0以外の数値
空でない文字列
要素を持つシーケンスやディクショナリ
false 数値の0
空文字列("")
空のシーケンス([])や空のディクショナリ({})

RubyとPythonに限りませんが、同じ真偽値といっても、言語によってその取扱いはかなり特徴があります。それぞれの言語のポリシーのようなものが、垣間見える部分なのかもしれないですね。

ということで、今回はRuby自体の話からは少し逸脱しましたが、いかがでしたでしょうか。次回もどうぞお楽しみに。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート