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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

8回答

3217閲覧

あえてJavaScript以外の言語をやる理由

退会済みユーザー

退会済みユーザー

総合スコア0

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

3クリップ

投稿2021/06/18 13:38

Web開発をするには、JavaScriptが必須です(ブラウザで動く唯一の言語)。そして、JavaScriptがあればサーバ側も開発できます(Node.js)。よって、WebエンジニアはJavaScriptだけやればいいわけですが、あえてJavaScript以外の言語を使う動機はありますか?

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

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

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

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

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

Zuishin

2021/06/18 14:07

JavaScript が使いにくいから TypeScript ができたのに。
m.ts10806

2021/06/18 20:29

>ブラウザで動く唯一の言語 HTMLの「L」は「language」
退会済みユーザー

退会済みユーザー

2021/06/19 04:15

@m.ts 10806 HTMLはプログラミング言語なんでしょうか。
guest

回答8

0

マサカリがあれば木を切れるのに、あえてノコギリやチェーンソーで木を切る理由、と似てますかね。

開発が可能であるということと、個々のケースにおいて開発に適していることは別なのです。

JavaScriptよりも生産性が高まったり、バグが発生しづらかったり、動作速度が速い言語が存在するので、状況によってそれらを選択します。

投稿2021/06/18 14:45

fukatani

総合スコア626

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

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

0

回答では無いですけど

「あえて英語以外の言語で質問した理由」を自問すると、大体質問の回答につながります。

投稿2021/06/19 11:32

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

プログラミング言語オタクです。本来このようなTeratailのそぐわない質問答えるべきではないように思いますが敢えて答えさせていただきます。

Web開発をするには、JavaScriptが必須です(ブラウザで動く唯一の言語)。そして、JavaScriptがあればサーバ側も開発できます(Node.js)。よって、WebエンジニアはJavaScriptだけやればいいわけですが

他の人も指摘している通り、この前提はおかしいです。SmalltalkでWeb開発している人間もいるし、ClojureやElmでWebフロントエンドを書いて、開発することは可能で、別に必須というわけではないです。

また、サーバー側も確かにNode.jsで開発することは可能です。しかしながらNode.jsではないサーバーの方が多く、大抵の場合、バックエンドは別の言語ということが多いです。

ただし、「JavaScript onlyで開発は可能」ということはそうです。現実の多くの開発ではそうではないのです。

そのところのギャップを考えてみてはいかがでしょうか?「なぜJavaScriptのみで開発できるようになってるのにそれをしないのだろう?」まずこのことをご自身で考えてみてはいかがでしょうか?

、あえてJavaScript以外の言語を使う動機はありますか?

私としてはその問いは、まず「楽しい」のですね。いろんなプログラミング言語があって、いろんな言語哲学や言語の設計思想、環境や、コミュニティ、ツール...そういったものに触れ続けるのは非常に刺激的なことです。

なぜ、そのようなプログラミング言語やプログラミングの環境が沢山あるのでしょうか?私の意見としてはプログラミング言語というのは、単にコンピュータの処理を記述するだけのものではなくて、人間の思考の形式、情報、概念、計算、論理... そのようななんというか目に見えないやわらかいものを表現するために発展してきたように思います。

そもそも、プログラムは「コンピュータに実行してほしいことを書くためのもの」で、プログラムする目的には「コンピュータに希望の処理をしてほしいから」という問答があるけれども、じゃあなぜ「その処理をコンピュータにやらせたいのか?」という問いがありると思います。「ゲームを作るため」「サービスを作る為」「効率化を図りたいため」。いろんな答えが想定され手、多種多様な答えが返ってくるように思います。

じゃあ、現実のプログラムを見てみると、私には「コンピュータに実行してほしいことを記述している」よりもその先の「問題自体」をプログラムで書いているように思います。たとえばゲームにおいて、コンピュータがやっていることとしては、内部でメモリを書き換えて、そのメモリをもとに、画面に何か表示しているだけです。でも「プログラム」はそのようには書いて無く、おそらく高度に発達したプログラム言語は「Destory(enemy)」などを書いているはずです。

プログラミング言語の発展はそのような、人間の課題、問題、思考、そういったものをより適切に表現できるように追及していったそういう面はあるんじゃないかと思います。だからこそ多様な言語が生まれてきたりするわけです。

また、ひとつの言語も発展していくことも忘れてはいけません。JavaScriptもまた、どんどん進化していきました。

たとえば、constletなどの変数宣言これは昔は無かったものでした。そうものが入ってきて、constでるだけ、使ってプログラミングすべきだという人も沢山出てきました。そうしたとき、JavaScriptだけしかやってきたことがない人間は、そのような変化に耐えられないように感じます。

大抵言語に新しい機能が追加されていくとき、根本に、他の言語の影響があるのです。constなどの機能が追加された背景は、そもそも他の言語をやってきた人が「JavaScriptにはこれが足りない」と言って入れてくるわけです。

だいたいの優秀なエンジニアはこのような変化についていけます。むしろ、ウキウキとしてこのような変化を歓迎します。そもそも優秀な人たちは大抵一つの言語だけではなく他の言語もある程度やっているのです。だから適切な書き方をすでに分かっているわけです。一方で、JavaScriptの畑しかいなかった人間は大変なわけです。今まで、無かった新しいことを沢山学習しないといけないのですから。

たとえば、先のconstの話の続きとして、constがJavaScriptに入った正確な経緯は詳しくはないですが、ただ、明らかに関数型プログラミングをしてきた人たちにとっては歓迎されたように思います。関数型プログラミングのためにconstの機能が追加されたかどうかは知りませんが、関数型スタイルのプログラムの記述の仕方をサポートはまず間違いなくしたでしょう。

なにが言いたいかというと、一つの言語が発展するにも他の言語の影響で発展することもあるというわけで、だからこそ、ある程度言語の発展についていくためには、他の言語についても知っておくと良いことがあるというわけです。むしろ、それは非常に楽しいことです。他の言語に触って、新しい発想を得ることにもつながりますから。

また、JavaScriptだけ書いていたら、理解できないこと、分からなかったこと、書けなかっただろうなと思うこともあります。例えば「参照」の概念なんかは、私はC言語をやっていて、ポインタを理解していたからこそ、正確に把握できることがあります。もちろん、C言語をやっていなかったとしても「参照」は理解できるとは思いますが、正確に理解するには時間を要するのではないかと個人的には思います。そもそもそんなこと、悩むことが無いのかもしれないですね。でも、そうやって、他の言語をやっていて視点を持つことによって、JSを深く理解することができると思います。

あと、Lispを私はよくやっていたからこそ、クロージャーを上手く使ったり、λ(無名関数)を上手く使えたりしたのもそうで、Promiseなんか、あれ難しいらしいですが、私はすっと入ってきたのは、元もE言語を知っていたり、継続モナドについて学習していたりしたからという感覚もあります。

WebエンジニアはJavaScriptだけやればいい

もうすこし言わせてください、あと「Webエンジニアは」という点です。そもそもその人はずっとWebで生きていくつもりでしょうか?との疑問があります。ゲームやその他の例えば機械学習を使ったものを作りたいとは思わないでしょうか?

そもそも私としては、例えばフロントエンドエンジニアはブラウザについてもっと深く知るようになると、ブラウザの内部実装がどうなっているか気になるはずです。その実装を読むためにはC++やRustの知識が必要になります。そのときもまた新しく言語を学ぶ一つの動機になるでしょう。

またサーバーで例えば、node.jsを扱うようにあると、今度はシステムプログラミングの領域が気になり出します。でもそれをもっと深く知りたいとなったら、例えばカーネルについて学習したいとなったら、おそらく必ずC言語のソースは目にするはずです。

だから、そもそも「WebエンジニアJavaScriptだけやればいい」という意見は根本的になにか、そもそもその人がずっとWebエンジニアで成長していかない、範囲を広げていかないということは本来ありえないように思います。Webエンジニアと名乗る、「エンジニア」と名乗る以上、その技術において、深い見識をもちプロフェッショナルとして、エキスパートとして、最新技術を学び、成長していくそういうことが抜け落ちた意見なんじゃないかと個人的には思います。

投稿2021/06/18 18:28

nobkz

総合スコア320

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

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

0

Web開発をするには、JavaScriptが必須です(ブラウザで動く唯一の言語)。

これはまあさほど間違ってはいないでしょう。
別の言語で開発してJavaScriptに自動変換という手もあるものの、その場合でもJavaScriptを全く知らずに書けるとはあまり思いません。

JavaScriptがあればサーバ側も開発できます(Node.js)。

否定はしませんが、サーバ側の言語は多数あるわけで、それぞれ向き不向きがあることは想像に難くありません。

WebエンジニアはJavaScriptだけやればいい

「だけやればいい」は明らかに誤っています。
ネイティブで動くあらゆるプログラムは機械語だけで作れるにも関わらず、機械語だけやればいいと言う人はいないでしょう。

あえてJavaScript以外の言語を使う動機はありますか?

むしろ逆に、あえてJapaScriptに統一する動機が薄いと言えるでしょう。
一般にWebに限らず開発では、様々な言語の中から目的に応じて利点と欠点を比較し適切な言語を選ぶものです。
その中で、現状を観察する限り、「使う言語の数が少ない」というのはさほど大きな利点ではないと見えます。

投稿2021/06/19 03:42

ikadzuchi

総合スコア3047

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

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

nobkz

2021/06/19 07:12

> 別の言語で開発してJavaScriptに自動変換という手もあるものの、その場合でもJavaScriptを全く知らずに書けるとはあまり思いません。 それはその手のツールの存在をあなたは知らないだけでは?数多くのそういったツールが存在して、それでWebアプリを開発している人は多数存在していますね。
ikadzuchi

2021/06/19 13:30

あ、そうなんですね。そのあたりのツール類というのがどの程度実用的なものが存在しているのかあまり詳しくないもので。 詳細に回答にしていただけるとよいかと思います。
Zuishin

2021/06/20 11:18

Elm とか Bolero とか Blazor とかには JavaScript の知識は不要です。
ikadzuchi

2021/06/21 16:49

なるほどそのようなものがあるんですね。ありがとうございます。調べてみます。
guest

0

Web開発をするには、JavaScriptが必須です(ブラウザで動く唯一の言語)。

この前提がまず違います。用途によってはJavaやGolangなど、JavaScriptを使わなくてもWeb開発はできます。

その上で、どの言語を使うかは様々な要因が考慮されます。社内のリソースや言語の将来性、求人のしやすさなどです。

例えばデザインツールは良い例で、XDやFigmaなど様々なツールがあり、同じことができるのならどれか一つで良いじゃんという考え方もできますが、操作感や慣れなどにより、どのツールでデザインするかは人によって様々です。

そうした中で、例えば社内にXDは使えないけどFigmaは使えるという人が多ければ、Figmaでデザインしようという話の流れになることもあります。

結局プログラミング言語もたかだかツールであり、どのツールを使うかは人や会社の方針によります。
使いやすいか、使う人が多いか(求人しやすいか)、将来性はあるか、etc

投稿2021/06/18 14:09

nabenabe11234

総合スコア126

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

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

0

ほげ言語のパラドックスに陥っていませんか。

投稿2021/06/18 13:56

matobaa

総合スコア2493

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

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

matobaa

2021/06/18 14:38

あ、たしかに、この回答は低評価が妥当だ……。
guest

0

WEBエンジニアと一口に言ってもフロントエンドエンジニア、バックエンドエンジニア、インフラエンジニアなど職種があり、大半のプロジェクトではそれらの職種がそれぞれ分担で開発をしております。なのでバックエンドエンジニアを専門としている方の中にはjsを触ったことない方もいます。なのでそれだけでもjsのみで開発すれば良いと言う考えは無理があると思います。

また言語毎に様々な特徴があり向き不向きもあります。なのでプロジェクトが何を求めるかによって言語の採用基準が変わります。
例えばバッグエンドの開発で現在主流と言える言語は、PHPやRuby辺りでしょう。(多分)それならばRubyが扱えるエンジニアが多いのだから募集をかけやすい様にRubyを採用しようと言う判断もあるかもしれません。
また機械学習を使った機能を作ろうとなれば、現在機械学習のライブラリーが充実しているのはpythonだから(多分)pythonを採用しようと言う判断もあると思います。
処理速度が速い方が良いということになればgoやjavaを採用するでしょう。
フロントエンドでjs触ったから新しい言語勉強するのだりーからnode.js使うかなって判断もあるでしょう。

投稿2021/06/19 10:49

編集2021/06/19 11:02
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2021/06/19 11:03

バックエンド開発全くやったことないから、てきとーに書いているんだけどね笑
guest

0

別の言語で開発してJavaScriptに自動変換という手もあるものの、その場合でもJavaScriptを全く知らずに書けるとはあまり思いません。

それはその手のツールの存在をあなたは知らないだけでは?数多くのそういったツールが存在して、それでWebアプリを開発している人は多数存在していますね。

投稿2021/06/19 07:11

nobkz

総合スコア320

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問