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

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

ただいまの
回答率

88.61%

javascriptの学習方法

解決済

回答 1

投稿

  • 評価
  • クリップ 10
  • VIEW 1,735

KeitaYoshida

score 18

 javascriptの学習方法

VBAで社内の生産管理ソフトの作成をしていますが、要求のレベルと機能に限界を感じ、
モダンな言語を改めてしっかりと学習したいと思い、ここ1・2ヶ月javascriptの学習をしておりましたが、
実装したい機能に対してのマストな選択、また、それを学ぶための最適解を
未だ見いだせない状態ですので識者の方に助言いただければと存じます。

最終的な目標

  • 社内のシステム化(製造業)
    ・製品・部材をバーコード管理し在庫管理・入出庫を携帯端末でできるように
    ・製造の進捗状況の登録・モニタリング
    ・製造スケジュール・受注・出荷状況の登録
    ・各種申請のペーパーレス化

※VBAにて実装済機能がいくつかありますが、必要に応じて作り直しも検討しています
※既に可動しているデータ(mysqlにて管理)の変更は難しいのでmysqlはそのまま運用する予定です。

  • +(個人的に)スマートフォンアプリを制作したい

経緯

  • 前職で軽くPHPを触っていたこともあり、またマルチプラットフォーム対応の容易さから
    WEB関連の言語を選択
  • 腰を据えて学習するならモダンな言語を学びたかったのでjavascriptを選択
  • 規模を考慮しAngularを選択→学習
  • フレームワーク以前に圧倒的にjavascriptの知識が足りていなかったので
    javascript・Typescriptの学習を開始
  • 情報・選択肢の多さからパニック状態

所見・疑問点

  • 大前提としてMySQLの運用がある上でのNode.jsの選択は間違いだったのか?
    調べてみるとNode.js・ExpressでのMySQL運用記事は多数あるが、
    Node.jsはNoSQL前提、のような記事も見かけるため、良否がわからない。
    とはいえ、NoSQLは複雑なデータの取扱には適さないとの見解らしく
    「複雑なデータの取扱がある案件」→「Node.jsが選択肢から外れる」
    とは到底思えないので、多少楽観視はしている。
     
  • javascriptとTypescript、どちらを学べばよいのか? そもそもどう学べばよいか。
    TypeScriptをきちんと理解する上でjavascriptを学びたいのだが、
    著名な書籍はバージョンの古いものばかりで、それを学んで良いのかもわからない。
    また、最新のjavascriptの情報を見ていると、Typescriptよりjavascriptの方が
    記述が容易に思えたもの(async/await(ES2017)等)あり、どちらを学べばよいかの
    良否判断ができていない。(TypeScriptの書籍が少ないことも懸念事項)
     
  • どのツールが適しているのか
    例えばMysqlとの接続をとっても、mysql2、promise-mysqlと2つあり、Promissについても
    promise-mysqlを使えばよいのかmysql2/promissで良いのか、async/awaitを使えばそれで
    十分なのかがわかりません。
     
  • また、現在小規模機能を作成しつつ学習を進めているのですが、小規模であってもwebpackや
    Expressを導入したほうがいいのか(Angularはjavascriptをある程度理解してから使用する予定です)

開発環境

macOS Mojave
VSCode

学習環境?

主にQiitaやteratail、書籍を元に調べています。
英語のリファレンスや投稿サイトのほうが情報量も鮮度も高いのは理解しているのですが
Google翻訳を使いながらなんとか読める程度の読解力なので、少し敬遠気味です。

開発者としての経験も浅く、まだまだ未熟者ですのでご指導ご鞭撻いただければと存じます。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • maisumakun

    2018/11/16 12:10

    「バーコード管理」とありますが、バーコードを読み取るのはどのような端末で考えていますか?

    キャンセル

  • KeitaYoshida

    2018/11/17 16:19

    バーコードと記載しましたが、QRコードをスマートフォンやタブレット端末で読み取れるように考えています。

    キャンセル

回答 1

checkベストアンサー

+10

大前提としてMySQLの運用がある上でのNode.jsの選択は間違いだったのか?

もし貴方が今の企業が嫌になり、Web系企業に転職するという選択を取る場合、大間違いです。
これは単純にPHPとRubyが人気がありすぎる為に、Node.jsを使っている企業が少ないという理由です。

Node.js製のWebサーバ自体はJSによるプログラミングとNode.jsのローカルルールにさえ慣れてしまえば無双出来るポテンシャルはありますね。
JS(主にNode.js)はALGOLの皮を被ったLispなので、モチベーションを保つなら「ハッカーと画家」を読むと良いかもしれません。

javascriptとTypescript、どちらを学べばよいのか?

あなたはIDEを利用して、型に守られたプログラミングは好きですか?
TypeScriptはMS社がJavaScriptを触って「型が無いとかダメだろ」とJSに型を付けた言語です。
TypeScriptは所謂AltJSで、コンパイルするとネイティブのJavaScriptに変換され、Node.jsやブラウザ上で利用されます。

TypeScriptは思想としてn年後のデファクトスタンダードJavaScriptという思想を掲げており、
型情報を付与したヘンテコな関数宣言が出来るくらいの違いしかありません。
それ以外は最新のECMAScriptに対応したドノーマルJavaScriptであり、JavaScriptのソースコードをベタっとコピペしてTypeScriptとして動かしても動く程だそうです。
(私はCoffeeScript教徒の信者なのでTypeScript教はシネと思ってますので伝聞でしかありません)

つまり、JavaScriptで培ったスキルや資産は全てTypeScriptへ持っていけます。
懸念のasync/await構文も当然動くでしょう、むしろ動かなかったらTypeScriptの存在価値無いし、鵜呑みのした私大うそつきじゃん。
先にJavaScript中心で勉強し、規模が大きくなり必要に迫られてTypeScriptを覚えても、
TypeScriptを使いながら平行してJavaScriptの扱いを勉強しても最終的なゴールは同じになります。

一人開発の場合、型が好きで好きで仕方ないならTypeScriptを使えば良いですし、
そうでもないならJavaScriptからやれば良いんじゃないですかね。

Node.jsはNoSQL前提、のような記事も見かける

MySQLは別にNode.jsと相性が悪い訳ではなく、他の言語同様に相性は良好です。
これは私は因果関係が逆だと思っています。

NoSQLのMongoDBなんかはストアドプロシジャにJavaScriptを採用するほどのJS寄りで、
MongoDB使うのに、なんでNode.jsじゃなくてJavaやRuby使うの???みたいな感じでNode.js前提な所があります。

どのツールが適しているのか

ん〜、私はmysql2しか使った事ありませんが、どちらでも良いと思います。

async/awaitはPromiseをスマートに扱う糖衣構文です。
Promiseは基本的にPromiseインスタンスを受け取り、後続のやりたいことの記述がしたければ.then(fn)という風にthenメソッドにやりたい事を関数化してぶら下げる記述をする必要があります。

async/awaitを使えば、promiseの完了をawaitで待つ事が出来るようになる上、resolveの結果を取り出して代入したり他の関数の引数として渡したりできるようになります。
これが超便利で、ソースコード上では普通の同期処理であるかのように書けるのでめっちゃ捗ります。

これはmysql2/promiseでasync/awaitを併用したサンプルですが、これ覚えておけば全てのPromiseを同じように扱えるんで、Promiseとasync/awaitは死ぬほど勉強して覚えてください。
https://github.com/sidorares/node-mysql2/blob/master/examples/promise-co-await/await.js

小規模であってもwebpackや
Expressを導入したほうがいいのか(Angularはjavascriptをある程度理解してから使用する予定です)

Node.jsの存在意義の半分がJadeやSASS等の静的HTMLジェネレータにありますので、
何かしらのタスクランナー(+コンパイルツール)を扱うのはマストです。

私はwebpackじゃなくて、マニュアル的なnpm-scriptsを使っていますが、
流行のwebpackに乗っかっておけば間違いないと思います。
webpackでビルドしてください前提のプロジェクトは結構あって、Angularもwebpackだったかもしれません(適当

Node.jsのhttpモジュールは死ぬほど使い勝手が悪いので、
Express.jsの使用はマスト!むしろこっちがデフォルトくらいの勢いです。

AngularはJS初心者が手を出すと挫折するほど導入が辛いかも知れません。
例えVue.jsで妥協したとしても、何かしらのJSフレームワークはこの段階で絶対に習得してください。
大規模なWebアプリをJSで実装する段階でネイティブJSやjQueryだと横並びの修正作業項目だらけになって確実に死にます。

学習環境?

知らない機能やメソッドを見かけたら、
必ずこれらのサイトで裏付けを取ってください。

  • MDN: Firefox作ってる団体のJavaScript解説サイト、全ての組み込み関数やメソッドの挙動はこのサイトで確認出来る
  • Node.jsドキュメント
  • ExpressJS公式: APIドキュメントは英語だが、ガイドまでは日本語で読めるのでニュアンスを理解すれば頑張れるはず

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/17 16:30

    ご丁寧に回答頂きましてありがとうございます。
    おかげさまで、色々悩んでいたことがすっきりしました。

    せっかくの勉強する機会なので、Javascriptをベースにwebpack,Express.js,Angularをしっかり学んで行きたいと思います。

    サンプルコードやサイトや書籍まで本当にありがとうございました。
    死ぬ気でがんばります!笑

    キャンセル

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

  • ただいまの回答率 88.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る