質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

4回答

812閲覧

Ruby on RailsにおいてなぜJSを使うのか

raurauji

総合スコア13

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

2クリップ

投稿2020/02/18 06:28

現在プログラミングスクールに通っており、Ruby on Railsを用いて様々なアプリケーションを開発しています。
ふと疑問に思ったことなのですが、Railsのassetsのところに置かれているJavascriptと言うフォルダにJSファイルを作って記述することで動的なページを作ることができることまではわかるのですが、これの代わりにRubyの記述で同じような動的なページを作ることは可能なのでしょうか。
もちろんJSはフロントエンドの言語で、Rubyをバックエンドの言語だと言うことは理解しているのですが、理論上は可能なような気がして質問して見ました。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

理論上は可能なような気がして質問して見ました。

はい、Opalという、Rubyからフロントエンドを生成するための言語は存在します。ただし、

  • マイナーな環境を選ぶとドキュメントがほとんどない
  • 現状では結局JavaScriptの知識も必要

ということで、いまのところ、JavaScriptから大きく離れた他言語でWebフロントエンドを書く動きは低調です。

投稿2020/02/18 06:37

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

raurauji

2020/02/18 06:49

素早い回答ありがとうございます!勉強になりました!!
guest

0

理論上は可能なような気がして

可能です。

応答する HTML に script要素 を書く際、以下の2種類あります。

  1. インラインで記述する方法
  2. src 属性でサブリソースを読む方法

ご質問は 「1. の方法はできますよね?」という趣旨に感じますが、2. のサブリソース方式を取るには理由があります。「ブラウザのキャッシュ容量を抑えるために、サブリソースを読むのが現在の常識」になっています。
多くの方が使うライブラリの場合、CDNを活用するのも同じ理由です。


  • スクラッチで書いたコードスニペットを「HTMLソースを見て」と案内する公開方法をとる場合
  • WebGL のシェーダー言語、や JSON などscript 要素を使える言語を使う場合
  • etc

そのページだけで使うコードをスタティックHTMLとして公開するときに 1. の方法も利用されます。

投稿2020/02/18 07:02

AkitoshiManabe

総合スコア5434

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

確かに、Opalを用いてRuby風の記述でJavaScriptに変換する事はできないこともありません
**が、**それはサーバー上のRubyとは違いますし
ましてや、Rubyと変数や状態を共有しているわけでもありませんので
かえって初学者が混乱し災害を引き起こすだけのように思います。

(とは言いつつも私もJavaScriptにString#tr無いことが信じられずかなり長い時間Opalを検討した事があります。)

投稿2020/02/18 07:01

asm

総合スコア15149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

前提条件として、ChromeやFirefox等のWebブラウザで動作するスクリプト言語は
現状JavaScriptだけと言っても過言ではありません
フロントエンドでは四の五の言わずにJavaScript使えという状況が出来上がっています。

結局Rubyのコードをブラウザ上で動かす事は出来ません。
ブラウザが受け付けているのはHTML、CSS、JS、各種画像ファイルくらいのものです。

これを前提に据えた話をします。


これの代わりにRubyの記述で同じような動的なページを作ることは可能なのでしょうか。

ふーむ…メタプログラミングの話でしょうか?

普段RubyやPythonを使っているユーザーはJavaScriptなど書きたくありません。
そこで、RubyやPythonのコードをJavaScriptのコードに変換して、
変換して入手したコードをもってブラウザに読み込ませるという手法があります。

PythonでC言語のコードを作って動かしたいとワガママこねてる奴が作った
Nimみたいな言語も存在します。
この言語はコンパイルするとC言語のファイルが払い出されて実行ファイルに変換されます。

質問文のように
Aの言語をBの言語のソースコードを払い出せばなんだってやれる!
それがメタプログラミングになります。


JavaScriptの話に入ります。

JavaScriptはES2015という最近のバージョンになって
数々のモダンな記法がサポートされて「JSでいいじゃん」というユーザーが増えましたが、
以前は本当に古臭い言語でアンチだらけでした。

なので有名無名含めて大量のメタプログラミング専用言語が開発されました。
まさに「JSを置き換える(オルタナティブ)」という名前で
「AltJS」としてまとめて紹介される程、沢山の言語が存在します。

有名どころのAltJSは現状TypeScriptの1強ですが
Ruby使いが好んで利用していた言語がこれらのようです。

  • CoffeeScript: RoRでも採用されている2位のAltJS
  • Opal: ガチRubyは使っていた?

もちろん、この方法は一般的ではありませんのでWebStorm等のIDEの恩恵を受ける事は出来ません。


ただまぁ、結局コンパイルされた後は単なるJavaScriptですから、
最終的にはJavaScriptでは何が出来て出来ないのかを正確に知る必要があります。

例えばwindowオブジェクトの使い方とかね。
Rubyでwindowって言われてもなんだそりゃ?ってなっちゃいますよね。

なので新しく言語を覚えるという所は大事にしつつ、
筋の良いCoffeeScriptを学習してみてはどうでしょうか?

投稿2020/02/18 07:06

miyabi-sun

総合スコア21203

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問