僕は、今後いろんな言語やフレームワークを学びたいと思っています。ですが、言語やフレームワークの種類が多すぎて、どれから学ぶべきか基準がわからず迷っています。
そこで、ひよっこプログラマーなりに持っている感想やイメージをまとめ、他にもネットで調べた特徴をまとめて「言語・フレームワーク考察」をして行きたいと思います。
気になっている言語・フレームワーク
フロントエンド
- Vue.js
- コンポーネントが便利らしい?
- React
- Vueよりももっと多機能?
- ElmとThe Elm Architecture
- Mediumで紹介されていた。動作が速く、ランタイムエラーがないらしい。
- CSS
- もっと深く知りたい。
バックエンド
-
Ruby
と
Ruby on Rails
- 見た目が綺麗で書いていて楽しい。
-
Java
- 理路整然と整っているイメージ。
-
go
- 動作が速いらしい?。速さは大事。
-
rust
- Mediumで紹介されていた。動作が速く、精密に扱いやすいらしい?
-
C
- いろんな言語の基礎となっているので、理解できるようになりたい。
-
Swift
- iOSアプリを作れるようになりたい
今回はRubyとRuby on Railsについて
素人的印象
Ruby
利点
- 見た目がきれい(記号が少なく、文章のように理解できる)
- きれいだと書いて楽しい
- きれいだと見て楽しい
- いろいろ自由がきく
- 思いついたことをいろいろ試しやすい印象
欠点
- 動作が遅い(らしい)
- もう少し記号がある方が、見やすいかもしれない
Ruby on Rails
利点
-
WEB
アプリ開発
がしやすい
- ローカルサーバが簡単に立ち上がる
- pry-railsでデバッグが簡単にできる
-
公式リファレンスがわかりやすい
-
Gemが豊富
欠点
- 機能が必要以上に豊富
- 標準ですごくいろんな機能が備わっていて、使わない物もたくさんあります。削る方法があるのかどうかはわからないけれど、容量が大きく、動作も遅くなりそうな感じ。
調べてみた
参考サイト
Rubyを理解する!初心者でも分かるメリット・デメリット、基礎知識などを簡単に解説!
Rubyとは?3つの特徴や学びやすい理由を解説!メリットとデメリットも紹介
どちらにも書いてあることですが、Rubyのメリットは「記述のしやすさ」「自由度の高さ」「Ruby on Railsとの相性の良さ」が挙げられるようです。そして、デメリットは「処理が遅い(インタープリタ言語)」ことと「自由度の高さがチーム開発で足枷になる場合がある」ことのようです。
メリットについては、大体思っていた通りです。デメリットについて少し考えてみました。
処理の遅さ
やはり、Rubyは処理速度は少し遅いようです。その理由は、Rubyがコンパイラ言語ではなく、インタープリタ言語であることのよう。
コンパイラ言語
コンパイラ言語というのは、Javaのような言語で、プログラム記述後、動作をする前に一度機械語へコンパイルする作業を挟まないといけない言語。事前に機械語にコンパイル(翻訳)しているので、本番環境での動作が速い代わりに、開発中の動作テスト時にいちいちコンパイルをする必要があり、テンポが悪くなるようです。
インタープリタ言語
対して、Rubyが属するインタープリタ言語は、人間が記述したプログラムを実行時に1行ずつその場で機械語に訳して動作をするため、開発中の動作確認がスムーズに行えるかわり、本番環境でも1行ずつ訳しながら動作をするので、遅くなってしまうようです。
疑問
そこで思ったのですが、開発中はインタープリタ言語として動作して、開発後にコンパイルして、本番環境ではコンパイル言語として動作することがなぜできないのだろう?
いずれ、その理由がわかったらまた記事にしたいと思います。
チーム開発時の自由度の高さの弊害
これについては、事前に規約を定めて開発をすればいいことのように思いますが、そもそも初めから自由度の低い言語を使う方が話が早い感じがします。
Rubyの使い所
以上、調べてみて僕の持った感想としては、Rubyは個人開発用にはすごく良くて、チーム開発や大規模なシステム開発にはあまり向かないんじゃないかな?と思いました。
個人開発に良いと思う理由
書いていて楽しく、自由度が高いのでいろいろ挑戦ができ、インタープリタ言語なので動作チェックのストレスが少なく、Ruby on Railsでいろんなことができてしまうからです。
Ruby on Railsが親切すぎて学習用には向かない(内部処理が理解できない)という意見もみましたが、そんなことは本人の学習意欲次第だと思います。「よくわからないけど動く」で満足できる人はそもそもそんなに深い学習のできるタイプの人ではないでしょうから。
チーム開発・大規模システムに向かないと思う理由
自由度の高さ
長期の運用を考えていかないといけない場合、自由度の高さは後々保守をする人の負担を大きくする可能性は大いにあると思います。そのための対策を多く打って、その内容を覚えないといけない、というのはやはりあまり望ましくない労力に思えます。
処理速度の遅さ
実際に有名な大規模サービスでRubyが使用されているようなのでそんなに影響がないのかもしれません。それでも、大きなサービスでは処理速度はかなり重要なんではないかな、と思います。速ければ速いほど多くのリクエストに応えられるでしょうし、負荷が小さければインフラコストを減らしたり、保守が楽になったり、いろいろな利点がありそうに思えます。あくまで素人考えですが。
結論
僕の中では、今後もRubyとRuby on Railsは趣味の開発の中で使い続けて行きたいと思います。いろいろな新しいことを試すのに挑戦がしやすいし、Ruby on Railsの内部の仕組みを勉強していくことは、プログラミングの経験を深めていく上で大きな助けになると思うからです。
なにより、Rubyは楽しい!
ただ、他にも魅力的な言語はたくさんあるので、もっといろんな言語に触れていけたらな、と思っています。