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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

2700閲覧

javascriptの学習方法

KeitaYoshida

総合スコア18

Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

3グッド

10クリップ

投稿2018/11/16 03:05

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翻訳を使いながらなんとか読める程度の読解力なので、少し敬遠気味です。

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

DrqYuto, tokkurikujira, set0gut1👍を押しています

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

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

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

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

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

maisumakun

2018/11/16 03:10

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

2018/11/17 07:19

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

回答1

0

ベストアンサー

大前提として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/16 03:40

編集2018/11/16 06:59
miyabi-sun

総合スコア21158

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

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

KeitaYoshida

2018/11/17 07:30

ご丁寧に回答頂きましてありがとうございます。 おかげさまで、色々悩んでいたことがすっきりしました。 せっかくの勉強する機会なので、Javascriptをベースにwebpack,Express.js,Angularをしっかり学んで行きたいと思います。 サンプルコードやサイトや書籍まで本当にありがとうございました。 死ぬ気でがんばります!笑
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問