実現したいこと
なるべく少ない言語で効率的にWebサイトやWebサービスの構築を実現したいです。
その場合どの言語が良いのか選択肢をいただけるとありがたいです。
※※※※※※※※※※※※
・目的はフロントエンド、バックエンドの両方です。
・ただただ使用言語が少なければなんでも良いというわけではなく開発効率も考慮していただけると嬉しいです。
・僕自身Web言語周りに疎く、言語の選択肢を並べる段階で悩んでいるので「こういった言語を使ったら自分の知っている中で一番効率的に開発できるよ」といった言語を提示していただけるだけでもありがたいです!
前提・実現したいこと
僕自身現在は 『SwiftUI』 でiOSアプリを作成しているのですが、WebサイトやWebサービスの重要性も痛感することが多くそっちの勉強もしたいなと考えています。
元々プログラミングはWeb系から入ったのですが、
その当時は『HTML』『CSS』『Javascript』『Ruby』『+データベース』と使用言語(前者3つは正確にはプログラミング言語ではないですが)が多く、
また実装内容に対するコード量等が不釣り合いで正直非効率な超肉体労働感が否めなくWeb言語から離れiOS言語に移行しました。
もし少ない言語で、かつ効率的にWeb系の開発ができる言語があれば教えていただきたいです。
無知な質問で申し訳ないです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/25 04:06
2020/11/25 05:08
回答4件
0
今回の質問を解決させるにはちょっと行数が必要になりそうですかね?
長くなりましたがわかり易さ重視にしました。
Webを取り巻く技術は現状発展中です。
HTMLとJSを別々に書くのは古いよねって感じになっており、
JSフレームワークという形で統合されました。
それでも最終的な結論はJSフレームワークがベースであり、
それにNode.js製のWebサーバ機能がセットになったライブラリが主流になると思いますので、
質問文への回答としてこれらのライブラリを挙げます。
- Svelte: 3番手前後のJSフレームワーク、とにかく超楽をプッシュ
- Next.js: Reactにルーティング機能をつけてWebサーバで包んだモノ、らくちん
- NuxtJS: Next.jsのVue.js版、こちらも大人気
- Angular: よくしらない
古の時代はブラウザにHTMLファイルを読み込ませると、
画面表示する際にDOMツリーという階層構造のデータツリーを作って、
それをレンダリングする形で画面に反映します。
JSはDOMツリーを書き換える事で
Webページの画面更新を行っていました。
これって一方通行なので「A → B」は表現出来ますが、
「B → A」を表現したければ改めて書き直す必要があります。
既にBの状態の画面に「→ B」を更に適用すると画面がぶっ壊れる。
これが非常に辛く、コードやテストが膨大になる泣き所になっていました。
そこで、JSで全部やればいいじゃんという発想になります。
変数世界にHTML風テンプレート文字列データをまるっと記憶させてしまいます。
それを「JSフレームワーク」に流し込み、
JS上の変数を書き換えたら、最新の変数の値を使ってDOMツリーを勝手に描画し直すという流れを構築します。
なので今時のJSは変数の管理に注力するだけで、
不具合が殆ど発生しない堅牢なWebサイトを表現出来るようになりました。
しかし、これらは全て積み重ねてきた結果なので、
覚える技術の量という点では減っていません。
先程のJSフレームワークにしたって
デザインの都合は丸投げなのでCSSは勝手に作って頑張れ!ですし、
HTMLの事がわかって無ければHTML風テンプレートなど作れません。
JSの事を理解してなきゃJSフレームワークで変数を作って書き換える事もできない。
まぁ、これは六法全書覚えてないけど弁護士になりたいみたいなもので
どの世界でも前提知識は必要ですからしょうがない事だと思います。
幸いWebのフロントエンドに限っては、
JS以外は浅い知識でわりと何とかなるので
とりあえず触って作ってみて、問題が出たら対応するくらいで良いです。
バックエンドはセキュリティ面でPC乗っ取られた!みたいな事件が発生するので、
こちらは信頼出来る師匠を手にするか、それ系の企業に入って覚えた方が良いでしょうね。
さて、ここからは効率の話です。
覚える事は残念ながら減りませんが、効率は改善出来るので見ていきましょう。
また実装内容に対するコード量等が不釣り合いで正直非効率な超肉体労働感が否めなく
HTMLが「整合性」に全振りした文書形式だからですね。
言い換えれば効率の悪い言語という事です。
最初は学習の為にエディタ開いて手作業で編集する事になりますが、
最終的な結論で言えばHTMLはプログラムやブラウザ等のソフトウェアが読み書きするものです。
人間が扱ってはいけません。
Node.js、PHP、Ruby、Python等……まぁどの言語でも良いですが、
それらを経由して吐き出すような仕組みを構築しましょう。
どうしてもエディタで編集しなければならない場面はありますが、
Rubyならslim、Node.jsならPugのようなHTMLを作るテンプレート言語を使うと良いでしょう。
こういう人間が読み書きしやすい言語で置き換え、コマンド一つでHTMLファイルを作れるようにしておくと効率は桁違いに良くなります。
CSSも同様で、親子構造が表現し辛い効率の悪い言語なので、
Sassといったテンプレート言語が開発されています。
JSに関しては事情が異なります。
当時流行っていたJavaとLispとPerlが悪魔合体して失敗したような言語で、
相当使いにくくへんてこな挙動をする言語でした。
そしてブラウザ毎に実装が違うので、挙動や使えるメソッドが違うとこの世の地獄……
他にもJSはブラウザで表示したページを動的に編集する事に特化した言語です。
HTML(DOMツリー)を後から書き換える事でページの変更を促すことしか出来ない言語でした。
しかしECMAScriptというJSの仕様統一の動きがあり大幅に改革が進みます。
更にRubyやPythonのようなモダンな構文を次々と取り入れ、
JSは2015年あたりを境目に劇的に変化します。
Node.jsの登場も大きいですね。
JS言語のルールだけを持ってきて、C++で作ったファイルの読み書き等を司るライブラリを付与し、
RubyやPythonと同じく汎用スクリプトとして使えるNode.jsが登場しました。
これにより、JSはコードはRubyに並ぶ程モダンに書ける上、
JSはNode.jsの枠組みを利用してRubyのようにCLIライブラリを作ったり、
マシン上でコードを書いてWebサーバになれるようになりました。
という訳で、まずNode.jsですね。
これ単体でも便利なコマンドラインツールを作ったりも出来るので、
PC上の作業は非常に捗るようになるはずです。
投稿2020/11/25 05:13
総合スコア21203
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
一番少ないのはHTMLですべてやることです
投稿2020/11/25 04:03
総合スコア116724
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/25 04:07
2020/11/25 04:19
2020/11/25 04:29
2020/11/25 04:38
2020/11/25 05:10 編集
2020/11/25 05:28
2020/11/25 05:50
0
もし少ない言語で、かつ効率的にWeb系の開発ができる言語があれば教えていただきたいです。
意図がイマイチわかりませんが、この部分を言葉どおりに解釈するなら、C#でできます。
BlazorプロジェクトでDBアクセスにはEntityFramoworkを使えば、基本的なことはほぼ全てC#で書けます。
ページUIを記載する際にrazor構文の中で現れるHTMLやCSSの知識からは流石に逃げられませんし、凝ったことをするならJavaScriptと組み合わせるケースはありますし、EntityFrameworkを本気で使いこなすならSQLの知識は必要になってきますが。
投稿2020/11/25 07:54
総合スコア8947
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
少ない言語にこだわるのならjavascriptとsql
だけ覚えればいいです。
ただし少ない=効率的という訳ではない
投稿2020/11/25 03:26
総合スコア6426
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/25 03:41
2020/11/25 04:12
2020/11/25 04:29
2020/11/25 04:35
2020/11/25 04:51
2020/11/25 05:13
2020/11/25 07:20
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。