システム開発

Laravel(API)とNuxt.jsの連携を行う【Laravel6+Nuxt.jsで作る管理画面】

PHPの人気のフレームワークLaravelを利用してWebサイトの管理画面を開発することができます。

このシリーズではそんな管理画面の構築に関して、技術者向けにその手順を紹介していきます。

まず本記事ではNuxt.jsの連携方法まで。続きはこちらの記事を参考にして下さいね。

・Laravelを使って構築をしたい方
・Webサイト構築の具体的な手法が知りたい方

これらに当てはまる方におすすめの記事となっています。これを読めばLaravel(API)とNuxt.jsの連携方法が丸わかりですよ。

Nuxt.jsでの構築がおすすめの理由

Laravel6ではVue.jsがデフォルトから削除され、JSの構成に関しては開発者に完全に委ねられている状態のため、
しっかり規約を設けて開発スピードの向上を図る必要があります。

そこで必要な機能が一通り揃っていて、 規約に沿った開発思想でスピードが出そうなNuxt.jsがおすすめです。

Next.jsはNuxtに比べると機能がミニマムですが、Reactの既存資産が多い場合はありだと思います。

リポジトリは別々で管理しよう

そもそもフロントエンドにJSを使う理由は、 Laravelと疎結合にすることで人材の採用要件を下げたりそれぞれの開発に集中できるようにするためです。

同一リポジトリだと結局両方の知識が求められますし複雑になるので、リポジトリは別管理していきましょう。

Laravel(API)とNuxt.jsの連携を行う

いよいよLaravel(API)とNuxt.jsの具体的な連携方法を紹介していきます。

1.最低限必要な機能を決める

機能を詰め込みすぎても実装が終わりません。必要最低限の機能にとどめて構築することをおすすめします。

今回は、 管理画面に最低限必要な機能としてユーザー認証とCRUD機能を作ることにしました。

2.Laravelのプロジェクトを作成する

こちらの記事でLaravel6の環境構築は解説しているので、詳しくは割愛します。

以下のコマンドでLaravelのプロジェクトを作成します。

composer create-project --prefer-dist laravel/laravel admin_laravel_api "6.*"

3.APIを作る

次にフロントエンド側との通信を試すため、シンプルなAPIを用意します。

routes/api.phpに以下コードを追加します。

Route::get('/', function() {
    return 'helloworld';
});

下記コマンドでサーバーを立ち上げておきます。

php artisan serve

これでhttp:localhost:8000/apiへアクセスしたらhelloworldの文字列を返すAPIが出来ました。

4.Nuxt.jsのプロジェクトを作成する

次に下記コマンドでLaravelとは別にNuxt.jsのプロジェクトを作成します。

yarn create nuxt-app admin_next_app

yarn create nuxt-appは下記コマンドと同義です。

yarn global add create-nuxt-app
create-nuxt-app my-app

create-nuxt-appはNuxt.jsのセットアップをコマンド1つで行ってくれるツールです。

必要なものは後から入れたいので、
すぐに利用するaxios以外はデフォルトのままにしました。

5.Nuxt.jsからAPIを使う

pages/index.vue<script>の中身を以下に書き換えます。

<script>
import Logo from '~/components/Logo.vue'

export default {
  components: {
    Logo
  },
  async asyncData(app) {
    const data = await app.$axios.$get('http://localhost:8000/api')
    return {
      data
    }
  }
}
</script>

asyncDataは非同期なデータが用意できてから画面描写してくれるメソッドです。
returnで返したオブジェクトを<template>内で参照できます。

先ほど受け取ったデータを{{data}}で画面に表示します。

<template>
  <div class="container">
    <div>
      <logo />
      <h1 class="title">
        {{data}}
      </h1>
      <h2 class="subtitle">
        My superb Nuxt.js project
      </h2>
      <div class="links">
        <a
          href="https://nuxtjs.org/"
          target="_blank"
          class="button--green"
        >
          Documentation
        </a>
        <a
          href="https://github.com/nuxt/nuxt.js"
          target="_blank"
          class="button--grey"
        >
          GitHub
        </a>
      </div>
    </div>
  </div>
</template>

下記のコマンドでサーバーを立ち上げ、

yarn run dev 

http://localhost:3000にアクセスしたら以下の画面が表示されればOKです。

5.プロキシ設定を行う

今のままだとAPIアクセスする時にホスト名を毎回指定する必要があります。

それを解決するためのモジュールがNuxt.jsには用意されているので、
下記コマンドでインストールします。

yarn add @nuxtjs/proxy

次にnuxt.config.jsを下記のように変更します。

const environment = process.env.NODE_ENV || 'development';

export default {
  mode: 'universal',
  /*
  ** Headers of the page
  */  head: {
    title: process.env.npm_package_name || '',
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: process.env.npm_package_description || '' }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
    ]
  },
  /*
  ** Customize the progress-bar color
  */  loading: { color: '#fff' },
  /*
  ** Global CSS
  */  css: [
  ],
  /*
  ** Plugins to load before mounting the App
  */  plugins: [
  ],
  /*
  ** Nuxt.js dev-modules
  */  buildModules: [
  ],
  /*
  ** Nuxt.js modules
  */  modules: [
    // Doc: https://axios.nuxtjs.org/usage
    '@nuxtjs/axios',
    '@nuxtjs/proxy',
  ],
  proxy: {
    '/api': (environment === 'development') ? 'http://localhost:8000' : 'https://api.example.com'
  },
  /*
  ** Axios module configuration
  ** See https://axios.nuxtjs.org/options
  */  axios: {
  },
  /*
  ** Build configuration
  */  build: {
    /*
    ** You can extend webpack config here
    */    extend (config, ctx) {
    }
  }
}

開発環境: /api http://localhost:8000/api
開発環境以外: /apihttps//api.example.com/api

にそれぞれアクセスを変更する設定です。
これで以下のようにホスト名を省略した記述が可能になります。

<script>
import Logo from '~/components/Logo.vue'

export default {
  components: {
    Logo
  },
  async asyncData(app) {
    const data = await app.$axios.$get('/api')
    return {
      data
    }
  }
}
</script>

おわりに

この記事では Nuxt.jsからLaravelのAPIをAjaxで通信できるようにする手順まで紹介していきました。
管理画面に最低限必要なユーザー認証やCRUD機能の実装方法などに関しては、こちらの記事で紹介しています。

このようにPHPを利用すればWeb開発が行えます。今回紹介した内容の他にも様々な構築が可能。

DEHAソリューションズではPHPに強いエンジニアが多数在籍しています。エンジニアを1から採用するよりも、効率的で低コストで、エンジニアのスポット派遣や開発サポートもおこなっています。

Laravelの環境構築を行いたい方や、PHPエンジニアの採用をしたい方はぜひお問い合わせください。

PHPエンジニアについての無料お問い合わせはこちら▶

Mai Tran

Recent Posts

【オフショア開発の価格高騰】各国の最新コスト動向と今後の展望

近年、IT開発の現場では「オフショア開発のコストが上昇している」という声が多く聞かれるようになりました。 かつてオフショア開発は「低コストで開発できる手段」として広く活用されてきましたが、現在ではその前提が変化しつつあります。 為替環境の変化、各国の人件費上昇、グローバル市場の競争激化などにより、オフショア開発の価格構造は大きく変わり始めています。 一方で、日本国内ではエンジニア不足が深刻化しており、企業は開発リソースを確保するために海外人材の活用を続けざるを得ない状況にあります。 つまり、オフショア開発は「安いから使う」ものから、「必要だから使う」ものへと役割が変化しているのです。 この記事では、オフショア開発の最新動向をもとに、各国のコスト動向、企業の発注傾向、案件内容の変化、契約形態の変化、そして今後の展望について詳しく解説します。 オフショア開発を検討している方 開発効率を上げたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばオフショア開発のコスト面について最新の情報がわかるのはもちろん、今後の展望もわかりますよ。 (more…)

4 days ago

【不動産DX】不動産業界に最適なオークション形式とシステム選定のポイント

不動産業界は、これまで「対面営業」「紙契約」「属人的な価格交渉」といったアナログな手法が中心でした。 しかし近年、デジタル技術の進化と顧客行動の変化により、業界全体でDX(デジタルトランスフォーメーション)が加速しています。 この記事ではそんな不動産業界のDX化において、注目されている「オークション形式」についてどんな特徴があるのかや、システムを選定する際のポイントについて見ていきたいと思います。 DX化をすすめたい企業の方 不動産業界の方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば不動産業界におけるオークション形式のポイントや注意点が丸わかりですよ。 不動産DXが求められる背景とオークションモデルの可能性 国土交通省の電子契約解禁やオンライン重要事項説明の普及により、売買・賃貸のプロセスは大きく変わりました。さらに、ポータルサイト依存型の集客モデルから脱却し、より収益性の高い販売手法を模索する動きが強まっています。 そこで注目されているのが「オークション形式」です。 従来の不動産取引は「売主が価格を提示し、買主が交渉する」という相対交渉モデルが一般的でした。 しかし、オークションモデルでは市場原理をより明確に反映させることが可能です。需要が集中するエリアや希少物件では価格が自然に上昇し、売主にとっては最大利益を得られる可能性があります。 また、オークション形式は透明性の向上にも寄与します。 価格決定のプロセスが明確になり、「なぜこの価格になったのか」という説明責任を果たしやすくなります。 これはコンプライアンス強化が求められる現代において大きな利点です。…

2 weeks ago

2026年のAIエージェント トレンド【Googleの調査】

2026年、AI活用は新たなフェーズへと突入します。これまでの「生成AIを使う」段階から、「AIエージェントが業務を遂行する」段階へと進化しています。 Google Cloudが発表したレポート『AI agent trends 2026』では、企業活動におけるAIの中心がAgentic AI(エージェント型AI)へ移行すると指摘しています。 AIエージェントとは、単に質問に答える存在ではありません。目標を理解し、計画を立て、複数のシステムを横断しながら実行まで行う「行動するAI」です。 この記事では、Googleの調査をもとに、2026年を形づくる5つのAIエージェントトレンドを詳しく解説します。 AIエージェントは何か知りたい方 業務効率を上げたい方 これらに当てはまる方におすすめの数となっています。これを読めばAIエージェントのトレンドがわかるのはもちろん、利用のポイントもわかりますよ。 すべての従業員にAIエージェントがつく時代(Agents for Every…

2 weeks ago

3層品質保証で実現する安心のITアウトソーシング体制

グローバル市場におけるITアウトソーシングでは、品質保証は単なる最終テスト工程ではありません。 品質は「工程の最後で確認するもの」ではなく、「開発の初期段階から設計され、統制されるべき経営基盤」です。  従来型のQAがリリース直前のテストに依存するのに対し、DEHA SOLUTIONSではTQA・PQA・SQAの3層構造により、技術・プロセス・サービス全体を横断的に管理しています。 これは単なる品質向上施策ではなく、リスクコントロールと持続的成長を実現するためのガバナンス設計です。  (more…)

2 weeks ago

システム開発におけるPMの役割を徹底解説|失敗や納期遅延を防ぐポイント

システム開発プロジェクトにおいて、成功と失敗を分ける最大の要因は「PM(プロジェクトマネージャー)」の力量だと言っても過言ではありません。 技術力の高いエンジニアが揃っていても、要件が曖昧だったり、スケジュールが破綻したり、関係者間の認識がずれたりすれば、プロジェクトは簡単に炎上します。 特に近年は、アジャイル開発やハイブリッド型開発など手法の多様化、オフショア開発の増加、DX推進によるスピード要求の高まりなど、PMに求められる能力はますます高度化しています。 この記事では、そんなシステム開発におけるPMの役割を体系的に整理し、失敗や納期遅延を防ぐための実践的なポイントを徹底解説します。 システム開発をしたい方 システム開発を効率よく行いたい方 社内にIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばシステム開発におけるPMの役割がわかるのはもちろん、失敗しないためのポイントも丸わかりですよ。 PMとは何か?システム開発における本質的な役割 システム開発におけるPM(プロジェクトマネージャー)は、単なる進捗管理者ではありません。 PMの本質的な役割は、「プロジェクトを成功に導くための総責任者」であることです。 プロジェクトには必ず「QCD(品質・コスト・納期)」という制約があります。さらに、近年では「スコープ(範囲)」や「リスク」、「ステークホルダー満足度」も重要な要素です。 PMはこれらすべてを統合的に管理し、バランスを取りながら意思決定を行います。PMの主な責任領域は以下の通りです。 目的・ゴールの明確化 要件定義の統括…

3 weeks ago

アジャイル・ウォーターフォールハイブリッド開発の手法とは?オフショア開発に効果?

アジャイル・ウォーターフォールハイブリッド開発は、ウォーターフォール開発の計画性・文書化・統制力と、アジャイル開発の柔軟性・反復改善・顧客密着型の進め方を組み合わせる手法です。 この記事では、そんなアジャイル・ウォーターフォールハイブリッド開発の基本概念から具体的な実践方法、さらにオフショア開発における効果や導入時の注意点まで、体系的に解説していきます。 アジャイル・ウォーターフォールハイブリッド開発が気になる方 オフショア開発に興味がある方 開発効率を上げたい方 これらに当てはまる方におすすめの記事となっています。これを読めばアジャイル・ウォーターフォールハイブリッド開発について特徴わかるだけでなく、導入のポイントも丸わかりですよ。 なぜ今「ハイブリッド開発」が注目されているのか 近年、ITシステム開発の現場では「スピード」と「品質」の両立が強く求められています。市場環境は急速に変化し、顧客ニーズも多様化しています。 その一方で、セキュリティ要件や法規制への対応、社内ガバナンスの強化など、開発プロジェクトに求められる統制レベルは年々高まっています。 このような背景の中で、従来型のウォーターフォール開発だけでは変化への対応が難しく、またアジャイル開発だけでは大規模案件や厳格な要件管理が必要なプロジェクトに対応しきれないケースも増えています。 そこで注目されているのが、「アジャイル・ウォーターフォールハイブリッド開発」です。 これは、ウォーターフォール開発の計画性・文書化・統制力と、アジャイル開発の柔軟性・反復改善・顧客密着型の進め方を組み合わせる手法です。 単なる折衷案ではなく、プロジェクトの特性やフェーズに応じて最適な開発アプローチを選択・融合する実践的な方法論といえます。 特にオフショア開発においては、言語・文化・時差・契約形態といった要素が絡み合うため、開発手法の選択はプロジェクトの成否を左右します。 日本国内で要件定義を固めた上で海外チームに実装を委託するケース、あるいは海外側に一部設計まで任せるケースなど、形態はさまざまです。…

3 weeks ago