@soma0419

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

初学者の私には環境構築が難しすぎます。独学は無謀でしょうか。

事の経緯について

21歳文系大学生です。私の父は昔から続く実家の有限会社を一人で経営しており、主に会計や財務系の仕事をしています。その傍らで取引先から商品の販売管理ソフトを作ってほしいとたのまれC#、SQLなどで簡単なアプリケーションを作るような仕事もしています。そんな父に影響されて私もITの道に進みたいと思うようになりました。

今回お聞きしたいこと

C#やその他バックエンド言語を簡易的に学習した経験があったのでとりあえずVisual Studioで簡単なアプリを一度作ってみようと思い、フロントエンド学習も兼ねてReact and ASP.net coreというプロジェクトテンプレートを使おうと思ったのですが、「npmがインストールされていません」とのことでエラーが出ました。npmとはなんぞやと思い調べてみておおまかなことは理解したのですが、いざインストールしようとしても全く歯が立ちませんでした。Windowsのコマンドプロンプトでごちゃごちゃ実行するところで頭がパンクしてしまい、環境構築の難しさを実感したところです。
先輩方に是非ご教授いただきたいのですが、やはり環境構築からデプロイまで完全独学で学習するのは効率が悪すぎるのでしょうか。皆様がどのようにして成長できたのか体験も含め、どうか教えていただきたいです。よろしくお願いします。

1 likes

8Answer

フロントエンドだけやりたいならいきなりASPをつける必要は無いし(ASPなしのテンプレートもあります)そもそもnpmはNode.jsをインストールすれば勝手についてきます.
察するに調べ物が下手すぎるだけなんじゃないでしょうか.

何も知識がないなればこそ,まずはReactの公式チュートリアルを 一切手順違わず(余計なことをせず) 実行してみるところから始めると良いです.

2Like

Comments

  1. @soma0419

    Questioner

    仰る通りで大した知識もないのにバックエンドとフロントエンド一気につなげてどうにかしてやろうというのがそもそも間違いだったのかもしれませんね。全体像を浅く見積もりすぎていましたお恥ずかしい限りです。まずは教えていただいたことを一度やってみます!貴重なご意見ありがとうございます。

  2. 個人的な見解ですが,いきなりフルスタックフレームワークに手を出すとフロントエンドとバックエンドの境界が分かりづらいので沼ることもよくあります.
    フロントエンドだけの環境で学習することで,フロントエンドだけではできないことや,セキュリティの都合とかが把握しやすいです.
    焦らず学習してみてください.

  3. @soma0419

    Questioner

    今の自分はまさに沼ってる状況でした。
    その言葉に救われた気がします、地道に頑張ってみます。
    とても分かりやすい回答でした。ありがとうございます。

こんにちは。初心者さん。

こういう質問は何故か攻撃的な回答やマウントを取るような意見が付きやすいですが、プログラマはそんな高尚なものではありません。
環境構築は難しいことがほとんどです。中には簡単なものもあります。
初めから簡単だった人も中にはいるかもしれませんが、そんなのしょうもない才能なので気にしなくていいでしょう。
OSやCUIがあんまりわかんないし、学ぶ気もないって人も中にはいます(プロとしては良くないと思うのですけども)

独学で学ぶのが無謀かどうかは諸説ありますが、簡単なことではないだろうと思います。ちょっと理解できればあとはチョロいですが。
初心者のうちはプレーンな状態で依存関係の解決などをしようとして、こんがらがります。本当は仮想化環境ですることが望まれるのですが、そんなことは逆に難しくて分からないでしょう。(npmなら不要という意見もあるでしょうがね)

人は失敗して悩むのは当然です。普段使わない使い方をし始めて、分からないことだらけというのは当然です。
普段GUIで操作している操作をCUIでもやってみたら、苦手意識が無くなるかも?

どんな方法で進めても良いと思います。環境構築が全てではありませんから是非頑張ってください。
まあ訳分からず操作しまくって取り返しのつかないところまで行くかもしれませんけど...

2Like

Comments

  1. @soma0419

    Questioner

    温かいコメントありがとうございます。
    私自身数学ともコンピュータとも全く馴染みのない育ち方をしたので、世の中こんな難しい理屈で物を作ったり動かしたりしているという事実に衝撃を受けています。聞いた事の無い横文字や仕組みなど、正直プログラミングの概念すらも理解することに苦しんでしまいますが、そのようなアドバイスをいただき、焦らず地道に欲張らず進めるのが最適解だと再認識できました。失敗しながらも着実に少しずつ成長できたらと思っています。貴重なご意見ありがとうございます。

どうしても React + ASP.NET でやりたいということなら、まず Node.js をインストールしてください。以下の Node.js のサイトから、

Windows インストーラ(.msi) をダウンロードしてインストールすれば、現時点では LTS 版の Node.js 22.17.0 と、同時に npm 10.9.2 がインストールされるはずです。

NodeJsInstaller.jpg

その後で、Visual Studio 2022 のテンプレートを使って JS 版 (TS 版は現状動かないので注意) の React and ASP.NET Core アプリのプロジェクトを作成し、

ReactJS.jpg

Visual Studio から実行すれば開発用の Web サーバーが立ち上がってアプリが実行され、さらにブラウザも自動的に立ち上がって、ブラウザ上に以下の画像 (React が ASP.NET Core Web API からデータを取得し表示したもの) が表示されるはずです。

Result.jpg

ただ、裏では Visual Studio によっていろいろな設定・操作がされており、そこが見えてないとその先開発を続けていくのが難しいと思います。

例えば、React が Vite、ASP.NET が Kestrel と異なるサーバーを使っていること、クロスオリジンの問題を解決するためプロキシを使っていること、HTTPS 通信用のサーバー証明書が自動的に発行されそれを使う設定がされることなどなど。

そう言われて分かりますか?

分からないということであれば、やはり React は止めて MVC または Razor Pages で開発することをお勧めします。

2Like

Comments

  1. @soma0419

    Questioner

    とても丁寧に画像まで載せていただきありがとうございます。奥が深いですね。正直言って現段階では全く理解が出来ませんでした。とにかく私がやろうとしていた事は目に見えない所で異なる2つ以上の動きをしており、それが理解できない限りはフルスタックに本質的な開発は難しいということでしょうか。とても勉強になりました。では一度練習として教えていただいた事で簡単な物を作れるように進め、それとは別物としてフロントエンドの学習もしてみたいと思います。境界線が曖昧になり混乱しないように気をつけます。有益なアドバイスありがとうございます!

世の中的にはノーコード、ローコードといったものにシフトしていっています。
キントーンとかCMを聞いたことがあるかと思います。他にもさまざまあります。
私はフルスクラッチのDjangoで開発するプロジェクトを計画した後、ローコードに変更して3ヶ月計画を3日にしてビジネスの速度変化を実感したのでノーコード、ローコードをお勧めします。

2Like

Comments

  1. @soma0419

    Questioner

    キントーンもよく聞きますし、導入しているところも増えていますね。私が個人的に思うことは、@Bunalmageさんのようにそれらの仕組みや内部での動きを体型的に理解しているような方はノーコードやローコード開発を有意義に活用できると思います。しかし私を含め知識や開発経験が乏しい、または全くないような人間は初めからそれに頼ると開発の幅が狭く、いつか自分の力では解決できない壁にぶつかってしまうのではないかと懸念しています。後々そのような便利なシステムを活用できるようになるために、敢えて遠回りしてまずはしっかりと一から学習していきたいと考えております。貴重なご意見ありがとうございます。

商品の販売管理ソフトを作ってほしい

その場合 Web アプリが必ず必要になるはずです。そうすると React だけではなんともなりません、と言うより React 無しの ASP.NET だけで可能です。ASP.NET MVC とか Razor Page で作ってみることをお勧めします。

1Like

Comments

  1. @soma0419

    Questioner

    そうなんですね!知識に見合わない高望みをしていました。
    是非参考にさせていただきます。
    貴重なご意見ありがとうございます。

  2. どうしても Single Page Application (SPA) にしなければならないという事情はないですよね。であれば、React の勉強に費やす時間と労力を、Web アプリの勉強に使うことをお勧めします。

  3. @soma0419

    Questioner

    ど素人質問で大変恐縮なのですが、正直自分の中で「Webアプリの勉強」という意味が曖昧でよく分かっておらず、もしよろしければ1つ具体例をいただけるとありがたいのですがよろしいでしょうか?

  4. @SurferOnWww

    客観的にReactにこだわる必要は無いですけどほぼ必ずこういうことになるということは申し添えておきます.
    どっちかというと大事なのはReactの使い方というよりどうフルスタックに適応していくかであって,Razorなんかのテンプレートをバックエンドで使うタイプはほぼ必ずこの問題にぶち当たることになります.
    なので私はフロントエンドを勉強しろと言っています.

  5. 質問者さん>

    もしよろしければ1つ具体例をいただけるとありがたいのですがよろしいでしょうか?

    チュートリアルなどを参考に、自分の手を動かしてアプリを作成し、動かしてみることをお勧めします。初心者向けの簡単なものとしては以下のチュートリアルがお勧めです。

    ASP.NET Core MVC の概要
    https://learn.microsoft.com/ja-jp/aspnet/core/tutorials/first-mvc-app/start-mvc?view=aspnetcore-9.0&tabs=visual-studio

    または、Razor Pages ならば、

    チュートリアル: ASP.NET Core の Razor Pages の概要
    https://learn.microsoft.com/ja-jp/aspnet/core/tutorials/razor-pages/razor-pages-start?view=aspnetcore-9.0&tabs=visual-studio

    データベースの作成から、作成したベータベースからデータを取得して一覧表示、レコードの追加、編集・更新、削除が可能な Web アプリが簡単に作れます。

  6. @Verclene さん>

    Razorなんかのテンプレートをバックエンドで使うタイプはほぼ必ずこの問題にぶち当たることになります.

    「この問題」とは何でしょう? @Verclene さんが挙げた ↓ このスレッドの話は、

    サーバー側で起こることとクライアント側で起こることの区別のついてない初心者の方の XY 問題だと思ってます。

    区別がついていれば「Razorなんかのテンプレートをバックエンドで使うタイプはほぼ必ずこの問題にぶち当たる」ということはないはずです。

  7. 区別がついていれば「Razorなんかのテンプレートをバックエンドで使うタイプはほぼ必ずこの問題にぶち当たる」ということはないはずです。

    だから区別がつかないうちは困るでしょ?って文脈のつもりなのですがご理解いただけませんでしたかね.

  8. Web アプリ開発では区別をつけて考えるのは基本のキで、それができてないと開発はできないと言っても過言ではなく、初心者が最初に留意することの一つです。「区別がつかないうち」とか言ってますけど、初心者の内から区別しながら開発するのが当たり前かと。

  9. そのドキュメントはサーバー側で起こることとクライアント側で起こることの区別をつけて考えることを学ぶためのものではありません。DB の CRUD ができる ASP.NET Core Razor Pages アプリの作り方を学ぶのが目的です。

    イマイチ伝わってないようですが私はその基本が曖昧な初学者にいきなりMVCフレームワークをやらす気かという懸念を表しています.

    React から始めれば曖昧でも良いと言ってます? 

    そんなことはないでしょう。React から始めようと MVC から始めようと曖昧ではダメで、初心者でも最初からサーバー側で起こることとクライアント側で起こることを区別しながら開発しないと・・・

  10. @soma0419

    Questioner

    大変高度なやり取りを拝見させていただきとても勉強になりました。
    論点的に私が学習を進めていく上でその動きがサーバー側で起こっていることなのか、クライアント側で起こっていることなのかをしっかりと区別しながらまずはWeb開発の基本を身につけるべきという事ですね。その中でフロントエンドが独立した環境で学習することも己の身になるということが分かりました。お2人の回答、どちらも大変勉強になりました。私なりに何とか噛み砕いて頑張ろうと思います!
    貴重なご意見ありがとうございます。

環境構築はプログラマーの第一関門であり、避けて通れないものです。
頑張って試行錯誤するといいでしょう。

そして環境構築はWindowsよりWSLの方が楽だと思います。
WSLもWSLで環境構築やコマンドを覚える必要がありますが、
これも視野に入れるといいでしょう。

1Like

Comments

  1. @soma0419

    Questioner

    そうですよね。エラーが出ると、とてつもない拒否反応を感じますが忍耐強く頑張るしかありませんね。WSLというのも調べてみようと思います!貴重なご意見ありがとうございます。

コマンドプロンプトでいうコマンドというのは実行ファイルのことです
.exeと付いてるファイルがそれです
nodeコマンドもその一種です

まずはコマンドをどう動かすかイメージをつけるといいでしょう
メモ帳でファイルを作り、適当なフォルダに保存して、そのフォルダの絶対パスをctrl+shift+cでコピーしたら、スタートメニューから環境変数を編集するウィンドウを検索して、そのウィンドウにあるPATHという項目で開けるリストにペーストします
すると先ほど作ったファイルをそのファイルの名前だけでコマンドプロンプトから開けるようになります

(環境変数の設定)
https://atmarkit.itmedia.co.jp/ait/spv/1805/11/news035.html

更にPATHTEXTという項目に拡張子を追加すれば、ファイル名を指定する際に拡張子を省略できます

この一連の作業をパスを通すといいます
この作業をしない場合、ファイルを開くのに逐一そのファイルの絶対パスを打たなくてはなりません
コマンドとは、このように名前だけで呼び出せるようにした実行ファイルを指します

インストーラーは裏でこの作業を担っています
このことからわかるのは、あらゆるコマンドがどこかのフォルダに保存される実行ファイル(.exe)だということです

例えばnodeコマンドであればnode.exeがその本体となります
C#であればdotnet.exeが存在し、これがdotnetコマンドとしてC#のプログラム(.cs)をコンパイル及びビルドします

こうしたファイルはバイナリファイルとしてフォルダにまとめられており、公式から入手可能です
Windowsであれば大抵.zip形式に圧縮されたフォルダを展開します

(NodeJS)
https://nodejs.org/en/download/

(.Net)
https://dotnet.microsoft.com/ja-jp/download/dotnet/10.0

ここまでをまとめると、環境構築とは

  • 圧縮されたフォルダ(.zip)を入手、展開する

  • フォルダの中から実行ファイル(.exe)を探す

  • 実行ファイルが保存されるフォルダの絶対パスを環境変数PATHに登録する

  • 実行ファイルを名前で呼び出し、コマンドとして機能するかテストする

の、4段階が基本となります

尚当然ながら初心者がいきなりバイナリファイルを用意して環境構築を目指すのは至難なので、通常はインストーラーやIDE(VidualStudio)を使います

ただ、環境構築の骨格を知っておくことで、コマンドが使用できないなどのトラブルの時に、何のファイルが不足しているかなど、原因に検討をつけることができます

なおここではWindows環境を前提に説明していることをご留意ください

0Like

質問者さんがReactに行き着いたということはWebアプリケーションを作りたいのかな?と思いましたが、ひとまずnpmが分からないということなのでもっと基礎的な知識が必要と思います。
私のオススメとしては、HTMLとCSSでサイトを作りそこへJquery(JavaScriptのライブラリ)で動きを付けるところから始めたほうがいいのかなと思います。
その後Jqueryを卒業して何も無い所謂バニラJSで同じようにプログラムを書いてその後Reactかなと思いました。
ReactとかVueとかはモダンJSって呼ばれるものになりますが、これの習得にはある程度JavaScriptを知っておく必要がありますので今までC#を使ってた人には少しとっかかりづらいかと思います。
今はまだ分からない事が分からない状態だと思うのでまずは豪華なWebサイトが構築出来ることを目的にやっていくとそのうち他の事も身につくかと思います。

また、コマンドプロンプトやターミナルっていうCUIはとっかかりづらいですよね。
私も苦手でしたが、AWSでwebサーバーの構築をqiitaで調べながらやったらすんなり習得出来ました(細部は違いますが)
私も完全独学で10年近くやっていますのでその分からない気持ちよくわかります。
背伸びしていきなり難しい事をしようとするとちんぷんかんぷんなので先に行った通りまずはとっかかりやすいJqueryを個人的にはおすすめします。(主にアニメーションをつくってください。)

また、chatGPTなどもガンガン使っていくべきです。
やりたいことを細分化して細かくしたものを聞けば良い感じに教えてくれます。
いい時代になりましたね。

0Like

Your answer might help someone💌