昨今では、プログラミングなどのIT学習が注目されており、非エンジニアが論理的思考を強化するために学んだり、学校教育でもプログラミング教育が取り入れられはじめています。
一口にプログラミングといっても、世の中には多くのプログラミング言語が存在しており、軽く並べるだけでも Ruby、Python、Java、C++、C# …のように、非常に多くの言語が存在している状況です。
多くの言語が存在する中で、最初に何のプログラミング言語を学習しようか?という悩みに多くの人が遭遇したでしょう。
この記事では、注目のプログラミング言語であるRubyとPythonについて、その特徴の比較と、基本的な構文の違いについて紹介します。
RubyとPythonの特徴
最初は、RubyとPythonの特徴を比較してみましょう。
Rubyは日本人が開発したプログラミング言語です。主にWebアプリケーションを開発する時に用いられています。近年では企業の基幹システムなどの多くもWebアプリケーションで作られていることが多く、Webアプリケーションの人気上昇と共にRubyの人気も上がっています。
例えば、有名なTwitterやクックパッド、食べログもRubyを使って開発されてきました。
Rubyの求人を見ると開発案件の多くは、Ruby on Railsのフレームワークを使ったWebアプリ開発が大半をしめており、現状はRubyといえは「RailsでのWebアプリケーション開発」と言える状況です。
PythonはAI開発の人気から、近年のプログラミング言語ランキングでは常に上位にいる人気のプログラム言語です。
Pythonが生まれたのは1990年であり、元々は機械学習などのAI向けに開発された言語ではありませんでしたが、シンプルながら汎用性が高い構文が学習しやすく、「numpy」などの高度な数値計算ライブラリが豊富であることから、AIの研究者などで人気の言語となり、結果的にAI開発の多くでPythonが使用されています。
求人数を比較
フリーランスのための案件紹介を行っているレバテックフリーランスで、2021年4月時点でのRubyとPythonの求人数を比較してみました。
その結果、Rubyの求人案件数は「1588件」、Pythonの求人案件数は「1477件」でした。
当然、案件の数は時期によって変動がありますが、現状ではおおよそRubyとPythonの求人数は同じです。
ただし、今後は機械学習などの人気などにより、Pythonの求人が多くなっていくと予想されています。
スマホアプリは?
現状のスマホアプリ開発は、iOSならSwift、AndroidならJavaが用いられることが一般的ですが、RubyとPythonでもスマホアプリ開発者が可能です。
RubyでiOSやAndroidのスマホアプリの開発がする場合は、RubotoやRUBYMOTIONをというフレームワークを使用すると、RubyでもAndroidやiOSのスマホアプリを作成できます。
また、Pythonであれば「kivy-ios」を使用してiOSアプリ開発したり、Androidであれば「Buildozer」を使ってアプリ開発をすることが可能です。
とはいえ、やはり現状のアプリ開発案件の多くはSwiftやJavaで開発するものが多くを占めています。そのため、スマホアプリ開発者を目指しているのであれば、これらの言語を学習したほうがよいでしょう。
構文の違いを確認しよう
ここからは、RubyとPythonの基本的な構文の違いについて確認をしていきましょう。
変数の宣言
変数の宣言方法を見ていきます。RubyとPythonはどちらも変数の動的型付けであるため、変数の宣言時に型の指定をしません。
Rubyでの変数宣言
str = "Ruby"
i = 100
array = [1,2,3,4]
Pythonでの変数宣言
str = "Python"
i = 100
array = [1,2,3,4]
このように、基本的にRubyとPythonで変数の宣言方法は同じです。
関数の宣言
メソッド(関数)宣言の構文の違いについても確認しましょう。一般的に定義済の処理のことをRubyではメソッドと呼び、Pythonは関数と呼びます。
Rubyでのメソッド宣言
def メソッド名(引数1、引数2…)
処理
end
Pythonでの関数宣言
def 関数名(引数1, 引数2, ...):
処理
return 戻り値
このように、defキーワードでメソッド(関数)を定義すること自体は同じですが、Rubyばdefキーワードからendまでがメソッドのブロックとなります。それに対し、Pythonはインデントがされている文を同じブロックとして扱います。
クラスの宣言
RubyとPythonは共にオブジェクト指向言語であるため、クラスが使用できます。
Rubyでのクラス宣言
#基本的なクラス
class クラス名
def メソッド名
処理
end
end
#クラスの継承
class クラス名 < 継承元のクラス名
def メソッド名
処理
end
end
Pythonでのクラス宣言
#基本的なクラス
class クラス名:
val = "クラス変数"
def __init__(self):
コンストラクタ
def 関数名(self):
処理
#クラスの継承
class クラス名(継承元クラス):
def メソッド名(self):
処理
このようにクラス宣言では、RubyとPythonでは宣言方法に多くの違いがあります。特にPythonでは、クラスのメソッドの第一引数には必ずselfを付けるのが特徴的です。
ファイルの入出力
ファイルの入出力についても比較してみましょう。コードの内容はかなり異なりますが、いずれもシンプルなコードでファイルの入出力ができます。
Rubyでのファイル書き込み
# ファイルの読み込み
File.open('test.txt') do |file|
file.each_line do |subject|
puts subject
end
end
# ファイルの書き込み
File.open("test.txt", mode = "w"){|file|
file.write("ruby file write\n") # ファイルに書き込む
}
Pythonでのファイル書き込み
# ファイルの読み込み
file = open('test.txt', 'r')
datalist = file.readlines()
for data in datalist:
print(data)
f.close()
# ファイルの書き込み
file = open('test.txt', 'w')
file.write('こんにちは\n')
file.close()
まとめ
RubyとPythonそれぞれの特徴と、構文の違いについて解説してきました。
AI開発などの人気により、徐々にPythonの人気が増していますが、Rubyもその効率的でモダンな構文や、Railsの人気によりまだまだ需要は続くでしょう。
Rubyでは変数名の最初の一文字によって、ローカル変数・インスタンス変数・クラス変数・グローバル変数・定数のいずれかに区別されます。