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

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

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

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Node.js

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

1643閲覧

Angular + Laravel + MySQLの開発環境

dev3310

総合スコア24

Angular

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Node.js

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/02/10 02:33

##最終目標
フロントエンド:Angular
バックエンド:Laravel
データベース:MySQL
のアプリを開発しようと考えています。
その開発環境をDockerを用いて構築したいです。

##アプリについての詳細
基本的にはLaravelAdminを用いて大半の画面は作ろうと思っています。
HTML + css + Javascriptで特にAngular等のフレームワークは使用しません。

ただ、特定の機能のみAngularで開発しようと考えております。
その為、メニューのあるボタンを押したらブラウザの別タブで、ほぼ別アプリ(Angularで作ったSPA)が起動するイメージです。
ただ、処理のロジックはPHPにおまかせして、DBもAngularではない部分と同じものを使います。

##開発環境についての詳細
エディタはVSCodeを使用予定です。
デバッグもVSCodeでできたらいいなと思っています。

##わからないこと
①AngularはフロントエンドのJavaScriptなので、普通に考えたらブラウザだけあれば動くような気もするのですが、調べているとnode.jsのイメージを使ったコンテナで環境構築をしている人が多いように思います。
これはAngularCLIを使いたい→npmが便利→node.jsが必要
ということで、node.jsのコンテナを立てているのでしょうか。
それとも、Angularアプリを動かすためにwebサーバやアプリケーションサーバが必要なのでしょうか?

②フロントエンドとバックエンドでコンテナを分けたほうが良いのでしょうか?
もし①の質問の回答として「Angularアプリを動かすためにwebサーバやアプリケーションサーバが必要」なのであれば分けたほうがいいんだとは思うのですが、
その場合は、nginxのコンテナとPHPコンテナでLaravelやLaravelAdminで作った簡単な管理画面を動かして、
node.jsコンテナでAngularのSPAを動かす
というイメージでよいでしょうか。

③Docker関係なしに、LaravelとAngularの組み合わせを調べていると、Laravelのresourcesディレクトリ内にAngularプロジェクトを導入しているパターンを結構見かけます。

コンテナを分ける場合はこのディレクトリ構成ではまずいのかな?と考えています。
理由としてはPHPコンテナにLaravelソースコードをマウントした際にAngularのSPAのソースコードも一緒にマウントされるようになるからです。
さらにnodeコンテナにもAngularのソースコードをマウントするようにしたら冗長になってしまうのはあまり綺麗ではないのかなと考えて居いるのですが、どうなのでしょうか。
AngularプロジェクトのディレクトリはLaravelの中に含めなくてもうまく連携できるのでしょうか。

以上、よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

①AngularはフロントエンドのJavaScriptなので、普通に考えたらブラウザだけあれば動くような気もするのですが、調べているとnode.jsのイメージを使ったコンテナで環境構築をしている人が多いように思います。

これはAngularCLIを使いたい→npmが便利→node.jsが必要
ということで、node.jsのコンテナを立てているのでしょうか。
それとも、Angularアプリを動かすためにwebサーバやアプリケーションサーバが必要なのでしょうか?

まず、ES6とかPromise、アロー関数 とかご存知でしょうか?
これらは古いブラウザ(特にIE/Safari)とかでは動きません。
古いブラウザでも動くようにするために、古いJSに書き換えないといけません。
そのためによく使われるのがbabelです。babelはnodejsのパッケージです。
また、複数のJSファイル(moduleとかcompnentでファイル別れてますよね?)を1個に統合してダウンロードさせる方が良いという風潮があり、これを行うwebpackrollupを使うのですが、これもnodejsのパッケージです。
他にも、sassやscss、postcssなど聞いた事ありませんか?これらのaltcssを普通のcssに変換するにもnodejsのパッケージが必要です。
まとめるとブラウザで動かすjsでも、それをコンパイルするためにnodejsが必要ってことですね。

②フロントエンドとバックエンドでコンテナを分けたほうが良いのでしょうか?

そもそもコンテナには1プロセスみたいな風潮(実際箱の限りではない)があるので
性格が違うコンテナは分けてlinkしたりnginxコンテナいれてリバースプロキシした方が良いです

③Docker関係なしに、LaravelとAngularの組み合わせを調べていると、Laravelのresourcesディレクトリ内にAngularプロジェクトを導入しているパターンを結構見かけます。

理由としてはPHPコンテナにLaravelソースコードをマウントした際にAngularのSPAのソースコードも一緒にマウントされるようになるからです。

マウントしても構わないのでは?

さらにnodeコンテナにもAngularのソースコードをマウントするようにしたら冗長になってしまうのはあまり綺麗ではないのかなと考えて居いるのですが、どうなのでしょうか。

コピーされるわけではないし冗長ではないのでは?


kawaxさんの言う通り、まずは単体ごとで理解を深めてからやってみてはどうでしょうか?
全体的に浅知恵だと、原因はどのミドルウェアか判別するだけで詰まると思います。

投稿2020/02/10 04:42

mikkame

総合スコア5036

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

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

0

プログラミングは段階を踏んで学習していくしかないので
「Angular単体で覚える」「Laravel単体で覚える」
両方やれば組み合わせる方法は自分で分かる。
Dockerはいらないので無視していい。

AngularとLaravelの「半年ごとにメジャーバージョンアップ」なんて狂気に本当についていけるかを先によく考えたほうがいいけど。
Laravelの標準はVue。ここ数年Laravelが普及したのはVue側に大きな変化がなかったから。
Angular+Laravelはたぶん死ぬ。

投稿2020/02/10 04:28

kawax

総合スコア10377

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

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

mikkame

2020/02/10 04:31 編集

LaravelとVueが特段相性が良いわけではないと思います。 Vue/Angularどちらもやりますが 結局繋がる部分はAPIだけですからね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問