DIVE INTO CODE

2019年06月12日
  • #Ruby
  • #Python

PythonとRuby、これから始めるならどちらがおすすめ?

Aws4 request&x amz signedheaders=host&x amz signature=77022bfc7baf7c04eeea36920532134b61ead9e19d87ecc0dc1ca0d51435ed28

【こんな方におすすめ】
・PythonとRuby、どちらを学ぼうか迷っている方
・PythonとRuby、それぞれを学ぶ目的を考えたい方
・PythonとRubyの歴史に興味がある方

【目次】
1.PythonとRuby、どちらがおすすめ?
2.PythonとRuby、どちらを選ぶかの選択基準
3.PythonとRubyはC言語やJavaより敷居は低め
4.就職が目的なら仲間探しは必須!人と出会える方法
5.就職が目的ではない場合は、前提を確認しよう
6.PythonとRuby、希少価値を出せるのはどっち?
7.PythonとRuby、どちらを先に学んでも言語転向は簡単
8.まとめ

■話し手
DIVE INTO CODE 代表 野呂 浩良
■聞き手
StartGate 永田 拓也

PythonとRuby、どちらがおすすめ?

では今回は「PythonとRuby、始めるならどちらがおすすめ?」という質問にお答えしたいと思います。

これは気になりますねー!
どちらも特徴があるというお話は前にもあったと思いますが、改めての比較というか、始めるならどちらがいいのかというのは気になりますね。どちらが覚えやすいというのもあるのでしょうか?

永田さんは、何かを始めるときにどのようなことが気になりますか?「こうだったらいやだな」とか、気にすることって何かありますか?

そうですねえ、まずは難易度でしょうか。

ほう、難易度。

あとはやっぱり仲間がいるかどうかとか。

他に学習している人がいるかということですね。

逆にレアかどうかも気にはなるんですけどね。

希少価値みたいなところですね。

はい、でもやはり仲間はいたほうがいいですね。

なるほど、わかりました。
では、難易度とか、仲間がいるかとか、レアさ、みたいなところに触れながらお答えしていきたいと思います。

PythonとRuby、どちらを選ぶかの選択基準

まぁ結論から言いますと、どちらがおすすめかと聞かれて、私なら何と回答するかというと…どちらもおすすめです。

(笑)

どちらも良いと思いますよ、と。
そして、「どうやって選ぶか」というお話をすると思いますね。その選択基準というものをお伝えしていこうかなと思います。

なるほど、よろしくお願いします。

その選択基準ですが、大きく3つのステップで考えていこうかなと思います。まず1つ目のステップが、目的が何なのかという話ですね。学ぶ目的、それが就職なのかそれ以外なのか

ふむふむ。

次に、2つ目のステップが何を実現したいのか。この「何を実現したいのか」というのは、「就職したい」とかそれ以外ということではなくて、「何を作りたいのか」に近いですかね。ECサイトを作りたいのか、SNSを作りたいのか、それともデータ分析とか、AIみたいなものを作ってみたいのかとか、そういうイメージですかね。

「何を作りたいか」ですね、なるほど。

そして3つ目のステップですが、こちらは最後のおまけみたいなものですけど、「言語転向」、つまり、他の言語を学びなおすというのは初学より楽だということをお伝えしようかなと思います。

ほー、そうなんですね。

「どう楽なのか」というお話は最後にお伝えします。これら3つのことを選択基準として使っていただいて、どちらにしようかを決めていただけたら嬉しいですね。

なるほど、わかりました。

PythonとRubyはC言語やJavaより敷居は低め

まずRubyとPythonの歴史とその特徴について、簡単に触れておこうと思います。

Rubyについては以前に取り上げましたけど、RubyのWikiを見てみますと、登場時期が1995年、作った方はまつもとゆきひろさんですね。こちらは「オブジェクト指向スクリプト言語です」と書いてあります。

次にPythonですね。PythonのWikiで登場時期を見てみると、1991年。Rubyよりちょっと前なんですよね。作られたのはグイド・ヴァンロッサムさんという方ですね。この2つの言語は、Wikiを見ただけでは一見わからないかもしれないですけど、非常に似ているんですよ。

ほう。

先程、「オブジェクト指向スクリプト言語」と言いましたけど、どちらもオブジェクト指向という考え方で作られているものです。また、スクリプト言語であるというところもすごく似ています。要は黒い画面で簡単にカタカタ打って、実行すればすぐ結果が返ってくる、直感的に書けるという意味で一緒なんですよ。そういう特徴があるので、実はどちらを学習しても難易度は変わらないです。

ふーん、そうなんですね。ちなみに、この2つ以外の言語だとやっぱり変わってきますか?

よく使われている言語のC言語やJavaなどを引き合いに出すと、C言語やJavaは「コンパイル」と言って、人間が書いたものをコンピュータにわかるように変換する処理をはさまないと、動かせないんですよ。

ああ、コンピュータが実行できる形式にすることですね。

そうです。そのために、コンパイルするためのツールを使って、そのツール上で動かす、つまり統合開発環境(IDE)などを使っていかないと、うまく動かせないことがあるかもしれません。

じゃあ、C言語やJavaはRubyやPythonに比べて、ひと手間加わるっていうことですね。

そう、ひと手間かかるイメージですね。ほんとに微々たる手間ですけど、でも本当に初学の人からすると、ちょっととっつきにくさを感じるだろうなというところですね。慣れてしまえばなんてことないんですけどね。

そうなんですね。話は戻りますが、RubyとPythonは難易度という点ではあまり変わらないんですね。なるほど。

そうですね、難易度はあまり変わらないので、「何のために学ぶのか」という目的から、最初のステップを考えていただきたいと思っています。

就職が目的なら仲間探しは必須!人と出会える方法

目的、ですか。

はい、目的が就職なのかそれ以外なのか。やっぱり就職にたどり着くまでには深く学ぶ必要があります。言い方はアレですが、ネット上に転がっている教材をただなぞっただけで就職できたら世話ないんですよ。

たしかに。

乱暴な言い方をすると、ハローワークより楽勝ですよ、と。しかし、そんなに世の中は甘くないわけです(笑)

はい。それはそうですよね。

なので、仕事にするためには、必要な知識やノウハウみたいなところまで踏み込んで話せる人との接点が大事になります。就職ということを考えると、人がいるということ、仲間がいるということはものすごく重要だと思うんですね。

そうですよね。

一緒に学ぶ仲間がいるか、質問できる相手がいるか、そういう人たちとまず出会えそうか、ですね。

確かに。自分だけで勉強していると、今の自分のレベル感がわからなくなったりしますよね。自分ができる方にいるのか、そうでもないのか…。

そうそう。でも幸いにもプログラマーやエンジニアの仕事は営業などに比べると、すぐコードを書いたりものを作ったりして、「できるかどうか」を見せやすい仕事でもあるのです。説明をその場でできますからね。余談ですが、これが営業職だと、「商品の説明をしてみて」って突然にはできないわけですよ。

ははは。確かにそうですね。

具体的な商品がない状態で営業トークをするというのは無理なことなんですよね。そんな状態で営業トークをしても、何かのネットワークビジネスの営業みたいになってしまいます。

ははは。

もちろん、ごく普通の会話をしながら「この人はできる営業さんだな」と気づく場合もあると思いますけど、本来は、営業職の方は具体的な商品がある状態で商品の説明ができて、かつその商品が売れてなんぼの世界にいらっしゃるわけです。

なるほど。

それって、なかなかできないことだと思います。他の人の意見を聞いたりノウハウを吸収したりするのって難しいと思うんですよ。

そうですね。

でも、プログラマーやエンジニアだと、他の人の意見のヒアリングやノウハウの吸収はオンラインでできたりするので、技術伝承などもしやすいのかもしれないですね。

なるほど。

そして、仲間がいるかという観点でいうと、PythonもRubyもどちらもよく使われている言語の中には入っています

あ、そうなんですね!

Pythonは最近人気で、いろいろなところでセミナーや勉強会が開かれてます。PyCon JPとか、Python Bootcampとかですね。あと、RubyですとRubyKaigiとか、Ruby World Conferenseというイベントが開催されています。

へぇ。

そういう場所に行って、実務経験のある人をつかまえて、その人とつながることが、一番最短の方法ですかね。

んー、なるほど。

その人と話しながら、どこまで学べばいいのかを聞いてみたり、その場にいる人たちとつながったりしておくとか。就職の場合にはそういう「仲間探し」が必要かなと思います

なるほど。

就職が目的ではない場合は、前提を確認しよう

一方で、就職が目的ではない場合。例えば、「書き方を知って仕事に活かしたい」とか「一緒に働いてるエンジニアが何を言っているのかさっぱりわからないから、せめて用語がわかるようになって、企画の説明がしやすくなったらいいな」とか。ありますよね、そういう場合。

ありますね。

そういう場合は、そもそも会社でどの言語を使っているのかを最初に把握してからですね。

確かに(笑)

会社でPythonを使っているのにRubyを学ぶなんて、「何をやっているんですか?」ってなりますよね。

確かに、「言語ならみんな一緒だろう!」みたいな見切り発車は焦りすぎですよね。

そうそう、やっぱり、すぐ使うほうを学ぶっていうのが鉄則ですよね。会社でJavaを使っているけど、「Javaは難しそうだから、Rubyを学習しておこうか」というお話ではありませんよね。

確かに。

会社に確認してPythonでもRubyでもなければ、使っている言語を学習しましょうとなるのが順当ですよね。

結局は目的が大事で、目的に合わせて言語を選びましょうということですね。

そうそう、そのとおりです。その目的が自分の中で整理できたら次のステップにいきましょう。「何を実現したいのか」、「どんなものを作りたいのか」ですね。

PythonとRuby、希少価値を出せるのはどっち?

「どんなものを作りたいの?」というお話をするときに非常に重要なのは、例えば「自分がプログラミングをすることによって、どんなものを作れたら嬉しいのか?」を考えることですね。あるいは、「会社や就職先ではどんなものを作っているのか」といったことを意識するといいですね。

それを意識したときに、「RubyとPythonの両方を使っている」とか、あるいは「どちらも使ってないけど、今後使う予定があるかもしれない」というケースがあると思うんですよ。

ほう。

たとえば新規事業担当で、「どちらを使うかはまだ決めていないけど、企画はしている」とかね。

なるほど。

でも会社で今後どの言語を使うかなんてわかんないじゃないですか。そういうときのために知っておきたいということでいうと、「Webアプリケーションを作りたいのか」、それとも「データサイエンスとか機械学習に携わりたいのか」によって違うということですね。

なるほど。

そしてそのとき、冒頭に出た希少価値、レアさのお話になりますが、Pythonを使ってデータサイエンスができる人とか、機械学習のプログラムを組める人というのはWebアプリケーション開発ができることより希少価値が高いです。

うーん。

まだ多くの企業は、その職種や、その職種の人たちが働ける環境などの用意ができていないんですね。すでに一般的になっているWebエンジニアのほうが、人口は圧倒的に多いんですよ。

まあそうかな、って感じはしますね。

ということは、レアさを求めるならPythonを学んだ方がいいんですけど、PythonでWebアプリケーションをゼロから作るのではなくて、Pythonでデータサイエンスをしたり、機械学習のプログラムを作ったりすると、希少価値を出せるってことになります。

なるほど。

ただこれも、「何を実現したいのか」次第ですよね。何を作りたいのか。本当はECサイトを作りたい、作らなくてはと決めたのに、「希少価値」のイメージにひきずられて、ずーっとデータ分析をしていたり、ずーっと機械学習のプログラムを作っていたら、「なんか違うことやってない?」ってなりますよね。

確かに。

そうなってくると、「レアさとかどうでもよくない?ほんとにやるべきことって何だっけ?」というお話になると思います。

「就職とかに有利だから」みたいに途中で目的がすり替わってしまうということですよね。

そうですね。
ただ、どんな目的でもいいと思います。「お金儲けしたい」とか「モテたい」とか、あとは「なんか楽しくプログラミングしたい」とか、なんでもいいと思うんですよ。だけど、「自分が何のためにしているのか」っていうところは絶対にぶれない方がいいですね。

なるほど。

PythonとRuby、どちらを先に学んでも言語転向は簡単

最後、ステップ3ですね。これはぜひ意識しておいていただきたいと思うのですが、途中で学ぶ言語を変えたくなったときのお話ですね。

はい。

必ずと言っていいほど本当によくご質問を受けるのですが、例えばRubyの学習を始めるとして、「もし途中でPythonを習いたくなった場合はどうすればいいですか?」とか、「一度何らかの言語を学んだけど、それだけでは就職が難しいときや方向転換したいときに、学び直しをしないといけないのか」とか。

そう悩まれたときのために覚えておいてほしいのですが、言語転向って初学より全然楽なんですよ。

へー!

例えば私は今、RubyとかPythonとか講義持ってますけど、Javaもやり始めてますし、講義したことないものだと、Goとか、ElixirとかJuliaとか。世の中にプログラミング言語はいっぱいありますけど、オブジェクト指向の考え方でできてる言語は、どれも考え方が一緒なんですね。

考え方、つまり原理が一緒ってことでしょうか。

そうそう、原理が一緒なので書き方の違いだけ覚えてしまえば、あとは理解が早いですね。

あ、そうなんですね。

だからひとつの言語をしっかり学んで、ひとつの言語で就職できそうなレベルまでいければ、他の言語に転向するのは割と楽ですよ。

なるほど。

言語を選ぶときにあまり先々のことまで気にしすぎて決めかねて、結局やらないというよりは、ひとつに決め打ちして、「今はこれが最適なんだ」と決めて学ぶことをおすすめします。

まずは自分の目的、例えば、「なにを実現したいのか?」「就職にどう生かしたいのか?」というところを考えて、挑戦してみて、ちゃんと学んで、そこからまた派生していって、というステップで進めれば問題ないということですね。

そのとおりです。

道筋が見えて、ちょっと安心しました。

PythonとRubyというのは特徴も似ていますし、書き方も似ていますし、どちらを学んでも楽しいと思います。ただ、言語の特徴はそうだとしても、「ご自分が何のために学ぶのか」、そこをしっかりと整理しておくといいと思います。

なるほど、ありがとうございました!

まとめ

PythonとRuby、どちらを選ぶか決めるときに知っておくとよいことは、下記の3つにまとめられます。

1.学ぶ目的は就職か就職じゃないか。就職なら人とつながるのは大事
2.作りたいものは何か?WebアプリケーションならRuby、データサイエンスや機械学習ならPython。Pythonはまだ人材市場が確立しておらず、希少価値アリ
3.同じオブジェクト指向言語だから言語転向するのは楽。どちらでもいいので、まずは就職できそうなレベルまでやり切ってみよう

いかがだったでしょうか?どちらの言語を学んでも、自分の市場価値を高めてくれそうですよね。でも最後はやっぱり、「どうしてこの言語を選ぶのか?」という”Why”の部分を忘れないようにするのが大事だと思います。

DIVE INTO CODEのことをもっと知ってみませんか?