プログラミングを勉強する時には、どの言語で何が出来るのかということを把握しておく必要があります。「Webサイトを作りたい時にはどの言語を選べばいいか?」「iPhoneアプリはRubyで作ることができるのか?」などを知った上での言語選択をしなければ、せっかく勉強したのに意味がなくなってしまうことになりかねません。
RubyとRuby on Railsは日本をはじめ世界中で人気の言語、フレームワークですが、これらを使ってできることとできないことがあります。ほとんど言語によって作れるものには差はありませんが、多少違いは出てくるため、本記事ではRubyとRuby on Railsを使ってできることを紹介します。
Webサイト開発
インターネット上に公開されているWebサイトはRuby, Ruby on Railsを使って作ることが可能です。もちろんphpやperlなどでも作ることはできるためこれはほとんどの言語で共通となっています。最近では、iPhoneアプリ開発のための言語であるSwiftがオープンソース化によってSwiftでもWebサイトを作ることができるようになっています。
RubyとRuby on Railsを使ってWebサイトを作るメリットはやはりRuby on Railsというフレームワークによる開発スピードです。Ruby on Railsは非常によく出来たフレームワークで、Webアプリケーションの開発をするために最適化されたツールです。Webサイトを作るためのgem(パッケージ)も充実しているため、管理画面を作りたい時にはAというgemを使えばあっという間に管理画面の雛形が作れたり、SNSの認証を作りたい時にはBというgem、フォームの生成を簡潔にしたいときはCというgem…といったように各種パッケージを使うことで自分の手で一からプログラムを書かなくて済むことができます。
このようなパッケージの充実度は他の言語とは異なっているため、大きな利点です。一方で、初心者がRailsを使うとそのほとんどをRailsの機能やgemに頼ってしまうため、プログラミングの中で何が起こっているのかということがブラックボックス化されてしまい、本質を勉強できないというデメリットもあります。
API開発
スマートフォンアプリケーションを作る際に、サーバーサイドと連携をするためのAPIもRubyとRuby on Railsを使って構築することができます。スマートフォンアプリケーション自体はSwiftやJavaなどで書くのですが、アプリから取得した情報を保存したり、アプリにデータベースからの情報を投げたりすることはAPI側で行うことが多いです。
このAPIの開発をRubyやRuby on Railsを使って行っている企業は多くあります。よく初心者の人が間違いがちなのは、「スマートフォンアプリを作る時はSwiftかJavaだけを勉強すれば良い」と思っている点です。これは100%正しいとは言えず、どのアプリの開発にもサーバーサイドとの連携が必要になります。
最近ではmBaaSと呼ばれるサービスが増えてきており、サーバーサイドはRubyなどのプログラミング言語で構築するのではなく、直接SwiftやJavaで書かれたコードでサーバーと連携する手法も増えてきていますが、まだ一般的にはRubyなどでAPIを開発している企業が多いです。
特にスマートフォンアプリとWebサイトの両方を運営している会社はAPIを自社でしっかりと開発しています。Webサイトでもスマートフォンアプリでも共通の部分があり、同じサーバーで動いていることからそのような傾向にあります。
クローラー開発
Webサイトなどからデータを取得してくるクローラーの開発もRubyで行うことができます。もちろんこれはRubyだけではなく、他の言語でも行うことができるため、Rubyだけの特徴というわけではありません。
ニュースサイトを作る場合やキュレーションサイトを作る場合にクローラーは活躍します。色々なメディアからニュースの情報を取得し、それを自社サイトに紹介する形で掲載したりするときにクローラーを使います。
スマートフォンアプリ開発
iPhoneアプリをRubyを使って開発することも可能です。ただし、現時点ではあまりおすすめすることはできません。
iPhoneアプリの多くはAppleが開発したプログラミング言語であるObjective-CまたはSwiftで開発されているのですが、RubyMotionというツールを使えばRubyでiPhoneアプリを作ることができます。パフォーマンス自体もObjective-Cで開発した場合とほとんど差はなく、その点は問題ではないです。
しかし、Rubyを使ってiPhoneアプリを開発しているプロジェクトは決して多いとはいえず、プロジェクトが少ないということはニーズも高くはないということです。もしRubyを使ってiPhoneアプリを作っていると言ったら「そんなにRubyが好きなの?」「なんでRubyで作ってるの?」というちょっと変わった目で見られるかもしれません。
同様にAndroidアプリもRubotoというフレームワークを使えば、RubyでのAndridアプリ開発をすることができます。しかし、iPhoneの場合と同じようにあまりオススメはできません。
したがって、スマートフォンアプリ開発をしたい場合には、「Rubyでの開発は可能だが、できればネイティブの言語で開発した方がいい」という結論になります。
機械学習
昨年頃から一般的に有名になった機械学習ですが、現時点ではRubyでの機械学習はそこまで盛り上がっていません。一般的にはPythonというプログラミング言語を使って機械学習の開発を行っている人たちが多いです。
RubyやRuby on Railsの機会学習関連のライブラリもまだそこまで充実しておらず、コミュニティやエコシステムも発展途上です。機械学習自体が発展途上なのですが、その発展途上の分野の中でRubyでの機械学習はさらに発展途上というわけです。
発展途上である理由は様々なのですが、機械学習をする上での処理などを考慮するとPythonが優れている点が多いということや、一度Pythonで形成されたコミュニティやエコシステムが盛り上がりを見せているため、現時点では多くの開発者がそちらに流れているという点などがあります。
今後数年の間にRubyでの機械学習も徐々に盛り上がってくる可能性はありますが、機械学習の分野でスキルを伸ばし、何かサービス製作や開発をしたい場合にはRubyはあまりベストな選択であるとは言い切れません。
Rubyで開発されているサービス
最後にRuby, Ruby on Railsで開発されているサービスを紹介します。実際にどんなプロダクトを作ることができるのかということを実例ベースで確認することでイメージを膨らませてみてください。
クックパッド
主婦の愛用品であるクックパッドはRubyで作られていることで有名です。日本のRubyデベロッパーのトップ層はクックパッド、LINE、ドワンゴの三社に集結していると言われることもあり、そのうちの1つがクックパッドなのです。
クックパッドのようなサービスを作るときにはRubyじゃないといけないというわけではありません。偶然なのか必然なのかはわかりませんが、クックパッドを作る時のチームがRubyを選んだというだけだと思います。
マネーフォワード
Fintechという分野に該当するマネーフォワードもRubyで作られています。マネーフォワードは銀行口座情報やクレジットカード情報を登録することで、全てのお金周りの情報を一括で管理することができるサービスです。
つまりクローラーやAPIをゴリゴリ開発しているわけですね。登録されているクレカ情報からクレカ管理のサイトに飛び、そこから情報をインポートしている形です。お金関係のサービスであるため、セキュリティにも十分な対策を取っているであろうサービスの例です。
Airbnb
日本でも一般的に普及しはじめたAirbnbもRuby、Ruby on Railsで開発されています。Bootstrapというフロントエンドフレームワークや決済システムであるPaypalをRuby, Railsと連携して使っています。
Code4StartupというWebサイトでは、AirbnbをRubyとRuby on Railsで開発してみるというチュートリアルがあるので、有料でも問題無い人は一度試してみても面白いと思います。
上述したPaypalでの決済システムをRailsで使ってみたり、Bootstrapを導入してみたりすることが試せるため、実践的なスキルが身につきます。
スマートニュース
1000万DLを突破しているスマートニュースもRubyを使って開発されていると言われています。こういったニュースキュレーションアプリは各ニュースメディアから1日の中で定期的にデータを取得してくる必要があります。
これらのデータをクライアントから取得してくる時にRubyを使ったクローラーを使用しているのでしょう。
フリーランスになるために必要な知識やスキルアップの方法等、様々なお役立ち情報を発信していきます。
(リモートワーク案件に強いフリーランスエージェント「クラウドワークス テック」を運営)