質問: HTML、CSS、JavaScriptやJSライブラリなど、今までフロントエンドだけ学んできた者です。 次のステップとしてサーバーサイドの言語やサービスを学び始めてるのですが、それで何が出来るのか具体的にイメージすることでモチベーションをあげたいので、ご意見いただければ幸いです! たとえばGithub pagesとJavascriptを組み合わせるだけでも、ある程度ロジカルなものは作れると思うのですが、 それをさらにAWSやサーバーサイド言語の知識身につけることによって、どのようなものが作れるようになるのでしょうか?? ググってみたのですが、サーバーサイドは仕組み作りやデータベースをつくる言語みたいなイメージの答えが多く、それってJavaScriptでもできるのでは?と思いました。 あとはWEBに公開することができるってことは分かるのですが、それはGithub pagesでも出来そうだし、オープンソースじゃなくなるってだけでは学習のモチベーションは上がりません...。 こんな質問をしちゃうくらい、フロントの事しか分からないので、とっかかりになる検索ワードだけでも、嬉しいです! もちろん詳しく教えてくれたら、もっと嬉しいです! (サーバーサイドについてはAWS EC2へのSSH接続がやっとできるようになったり、PHPの書き方を勉強中だけどJavaScriptとの違いを見出せていないくらいのレベルです。セキュリティ上の違いとかは当然あるとは思うのですが、逆にそれくらいしかイメージできてないです。) 追記 -- 僕の言うJavaScriptで作れる「ロジカルなもの」とは、条件分岐や、ユーザからの値の受け取り、ローカルストレージへのデータの保存を活用するような、アプリ的なものです! 具体的にはTODOリストや高機能なメモや計算機、経験を積めばブラウザ上でオフラインゲームまでできるという認識です。 JSを習得する際、フロントエンドの先生から「JSはブラウザ上ならオフラインの事は何でもできる」と教わった際に、サーバーサイド言語の処理ってオフラインで作れるデータをサーバーと送受信するだけなの??という疑問が起きたのが、この質問の発端でした。 ベストアンサー ------- みなさん、沢山のご意見をどうもありがとうございます! お陰様で、ふわっとしていた学習意欲がいい感じに固まってきました。 皆様の意見ひとつひとつがとても参考になったので、ベストアンサーを決めるのが難しかったのですが、 たくさん高評価を押されていて、コメントでも更に詳しくお返事くださった**dyoshikawa**様にしました! 今後も沢山手を動かして、皆様に頂いたお言葉を、より具体的に実感できるように頑張ります。
回答: 簡単にいえば、 `他人とデータを共有したい場合` に必要です。 オフラインゲームとオンラインゲームの違いというか。 昔のスーパーマリオのような完全一人プレイ用のオフラインゲームは他のユーザとデータを共有する必要がないですね。 セーブデータも自分の端末だけにあればよいです。 オフラインゲームはフロントエンド技術だけで作れるということです。 一方、モンスターハンターのようなオンラインゲームでは自分の端末ではないクラウド上にデータを貯めておく必要があり、さらにそのデータをインターネット通信で各ユーザで共有することになります。 そのために必要なのがサーバアプリケーションやデータベースです。 `昔のスーパーマリオ` と述べましたが、最近のゲームはほとんどがオンライン前提です。 webアプリも同じです。 何の目的にせよ、 `他人と情報を共有したい` 要件が必ずといっていいほど入ってくるはずです。