PHPのフレームワークで最近人気のLaravel。
多くの人が利用しているフレームワークのため勉強しやすく扱いやすいのが特徴ですが、Laravel入門者はその扱いに戸惑うこともあるでしょう。
この記事では、そんなLaravel入門者向けにMVCをスピード重視で試す手順を解説していきます。
・Laravel入門者でそのポイントについて知りたい方
・Laravelでアプリケーション設定をしたい方
これらに当てはまる方におすすめの記事です。これを読めば入門者の方でもLaravelでの開発が行えますよ!
Laravelの開発環境の構築方法は大きく以下の4つがあります。
結論から言うと、入門者はこのビルトインサーバーを使う方法が一番オススメです。
PHP5.4から内蔵されているWebサーバーを使ってLaravelを動かす方法で、
Laravelでひとまず開発を進めたい場合には十分です。(本番環境では必ずNginx等のWebサーバーを用意しましょう)
Laravel Homesteadは公式サイトで推奨されているものの、手間がかかる手法です。
仮想環境といえば最近はDockerを使うプロジェクトが多いので、HomesteadのためだけにVirtualBoxを入れたりVagrantを学習をするのは大変です。
またHomestead自体にも少なからず学習コストがかかってしまいます。
Laradockはインフラに詳しくない人でも、Docker上にLaravelを構築することができるツールです。
Laravel以外のフレームワークにも幅広く対応したおかげで、コード量が膨大で解読が難しく、ハマった時に時間がかなり取られるためオススメしません。
仮想環境を構築するのであればDockerの扱いに慣れておいた方が他のプロジェクトでも便利です。
しかし仮想環境を一から構築するのは手間と時間がかかるため、ビルトインサーバーで早く開発を進めてしまい、
Laravelに慣れてきてからDocker環境を自作するのが良いかと思います。
Laravelの最新バージョンは7系ですが 2020年3月3日にリリースされたばかりであり、執筆時点(2020年4月3日)では長期サポートの対象となっているのは6系です。
今から本番運用も考えて始めるならば、6系をオススメします。
PHPのバージョン管理ツールはphpenvとphpbrewが有名ですが、これが意外と落とし穴です。
どちらのツールを使った場合でも、PHP7.4をインストールする際に依存ライブラリでハマる場合が多く非常に面倒です。
特にphpenvの場合はrbenvと競合してしまう問題もあります。結論として、PHP7.4はHomebrewでインストールしましょう。HomebrewはPHPの依存ライブラリも自動で解決してくれますし、複数のバージョンの切り替えも可能です。
ここからいよいよLaravel6系+PHP7.4でMVCを試していきましょう。
まずは下記コマンドでインストール可能なPHPのバージョンを確認します。
brew search php@7
以下のような画面が表示されるかと思います。
次に下記コマンドでPHP7.4をインストールします。
brew install php@7.4
依存ライブラリが多く、数分はかかるので気長に待ちましょう。
次に下記コマンドでPHPのパスを通します。zsh以外を利用している場合は適時書き換えてください。
echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> ~/.zshrc echo 'export PATH="/usr/local/opt/php@7.4/sbin:$PATH"' >> ~/.zshrc source ~/.zshrc
有効化が完了したら、下記コマンドでPHPのバージョンを確認します。
php -v
以下のように7.4系がインストールされていればOKです。
まず次のコマンドでcomposerをインストールします。
brew install composer
次に下記コマンドでlaravel6系のプロジェクトを作成します。
composer create-project --prefer-dist laravel/laravel laravel_sample "6.*"
create-projectはgit cloneとcomposer installを同時に行ってくれるコマンドです。
また--prefer-distをオプションで指定するとzip形式でダウンロードできるので通常より高速になります。
プロジェクトの作成が完了したら、下記コマンドでサーバーを起動します。
cd laravel_sample php artisan serve
起動が完了したら、
http:localhost:8000にアクセスします。
以下のような画面が表示されればOKです。
次にモデルからのデータベース接続を試したいので、 下記コマンドでLaravel用のデータベースを作成します。
mysql -u root -p mysql> create database laravel;
config/database.phpを確認すれば分かりますが、
環境変数のDB_DATABASEにデフォルトでlaravelが指定されています。
トップ画面の表示をカスタマイズするため、下記コマンドでコントローラーを追加します。
php artisan make:controller HomeController
これでapp/Http/Controllers以下にHomeController.phpが作成されます。
次にroutes/web.phpを以下のように編集します。
Route::get('/', 'HomeController@index'); これでトップ画面にアクセスした時に、HomeControllerのindexアクションが呼ばれるようになります。
次にapp/Http/Controllers/HomeController.phpを以下のように編集します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function index ()
{
$message = 'Hello World';
return view('hoge.index', ['message' => $message]);
}
} Laravelの特徴として、第一引数に渡すビューは何でも良いという点があります。
HomeControllerのindexアクションですが、ビューはhome/index という階層で無ければならないという規約の縛りはありません。
分かりやすさを優先して、今回はコントローラーのアクション名とビューの階層を合わせています。
次に以下の内容のresources/views/home/index.blade.phpを追加します。
コントローラーから受け取ったmessage変数を表示します。
<html>
<body>
<h1>{{ $message }}</h1>
</body>
</html> 追加できたら、http://localhost:8000にアクセスします。以下のような画面が表示されればOKです。
次に以下コマンドでPostモデルを追加します。
php artisan make:model Post --migration
database/migrationsに以下のようなマイグレーションファイルが作成されます。
また最初から認証機能用にusersテーブル等のマイグレーションが用意されていますが、
これらは不要であれば反映する前に削除しておきます。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/ public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/ public function down()
{
Schema::dropIfExists('posts');
}
} 主キーのIDとタイムスタンプが自動で作成されているので、titleとbodyカラムを以下のように追加します。
$table->bigIncrements('id');
$table->string('title');
$table->text('body');
$table->timestamps(); 次に以下コマンドで実行してマイグレーションを反映します。
php artisan migrate
これでpostsテーブルが新しく作成されました。
Laravelでは以下のように書くと複数のカラムをまとめて保存できます。
Post::create(['title' => 'title', 'body' => 'body']);
しかし不正なパラメータが渡ってきても大丈夫なように、
事前に許可したカラム以外は一括保存出来ないようになっています。
そこでapp/Post.phpを以下のように編集します。
class Post extends Model
{
protected $fillable = ['title', 'body'];
} これで一括保存が可能になります。
次に表示用にテストデータを追加するため、以下のコマンドを実行してtinkerを起動します。
php artisan tinker
tinkerはLaravelや独自クラスの機能を、
試しにコマンドライン上で動作させることのできるツールです。
tinkerを起動したら、以下コマンドを実行して、 postsテーブルにレコードを1件追加します。
Post::create(['title' => 'title', 'body' => 'DB Hello World']);
以下のように表示されればOKです。
次にapp/Http/Controllers/HomeController.phpを以下のように編集します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Post;
class HomeController extends Controller
{
public function index ()
{
$message = Post::where('title', 'title')->first()->body;
return view('hoge.index', ['message' => $message]);
}
} Postモデルからレコードを取得するように変更しました。
変更できたら、http://localhost:8000にアクセスします。 以下のような画面が表示されればOKです。
これでLaravelでMVCモデルを実装する際の基本は試すことが出来ました!Laravelの環境構築には様々な方法があり、動かすまで時間がかかったので、今回の記事が同じような方の役に立てば幸いです。
DEHAソリューションズではPHPに強いエンジニアが多数在籍しています。エンジニアを1から採用するよりも、効率的で低コストで、エンジニアのスポット派遣や開発サポートもおこなっています。
自分だけでLaravelの環境構築を行うのは難しそうという方やPHPエンジニアの採用をしたい方はぜひお問い合わせください。
長年運用されてきた基幹システムは、企業活動を支える重要な存在である一方で、技術的負債の蓄積、保守人材不足、クラウド対応の遅れ、ブラックボックス化など、さまざまな問題を引き起こしています。 従来のマイグレーションでは、既存システムの解析からコード変換、データ移行、テスト、カットオーバーまで、多くの工程を人手に依存していました。 こうした背景の中、注目を集めているのが「AIレガシーマイグレーション」です。 この記事ではAIレガシーマイグレーションについて、どんな特徴があるのかやその強みに着目をしていきたいと思います。 AIレガシーマイグレーションが気になる方 製造業の方 DXをすすめたい企業の方 これらに当てはまる方におすすめの記事となっています。これを読めばAIレガシーマイグレーションがどう言ったものかがわかるのはもちろん、DEHAのAIレガシーマイグレーションについてもわかりますよ。 (more…)
近年、企業のIT戦略やシステム開発において「AI Native(AIネイティブ)」という言葉が急速に注目を集めています。 この記事ではそんなAI Nativeについて、その概要やメリットなどを紹介していきます。 AI Nativeが気になる方 システム開発をお考えの方 社内にIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばAI Nativeが何かがわかるのはもちろん、導入するべき理由が丸わかりですよ。 (more…)
IFS Cloudは、スウェーデン発のグローバルERPパッケージであり、ERP、EAM(設備資産管理)、SM(サービス管理)を統合的に提供する統合プラットフォームです。 本日はそんなIFS Cloudについて主要モジュールを解説します。 IFS Cloudに興味がある方 ERPをお探しの方 製造業の方 これらに当てはまる方におすすめの記事となっています。これを読めばIFS Cloudについてわかるのはもちろん、IFS Cloudの強みまで丸わかりですよ。 (more…)
企業のDX推進が本格化する中で、ERP(基幹業務システム)の役割は単なる業務管理ツールから、経営基盤そのものへと変化しています。 その中で、世界的に注目されているクラウドERPが IFS とOracle Cloud ERPです。 どちらも世界トップクラスのERPとして高く評価されていますが、実際には設計思想や得意分野が大きく異なります。 IFS Cloudは「現場・設備・サービス」を重視したERPであり、製造業やインフラ産業との相性が非常に高いことで知られています。 一方のOracle Cloud ERPは、「財務・経営統制・グローバル管理」を重視したERPであり、多国籍企業や大企業における経営管理基盤として強みを発揮しています。 そのため、「どちらが優れているか」という単純な比較ではなく、「自社の業務や経営戦略にどちらが適しているか」を見極めることが重要になります。 この記事では、IFS CloudとOracle…
製造業や建設業、航空・防衛、エネルギー、サービス業など、複雑な業務を抱える企業にとって、ERPシステムは単なる基幹システムではなく、経営そのものを支えるインフラとなっています。 しかし近年、多くの企業で従来型ERPの限界が顕在化しています。そのような中で注目されているのが、クラウド型ERPへの移行です。 この記事では、「IFSクラウドへ移行すべき4つの理由」というテーマで、IFS Cloudがなぜ多くの企業に選ばれているのかを詳しく解説します。 IFSクラウドに興味がある方 製造業や建設業の方 従来型ERPをお使いの方 これらに当てはまる方におすすめの記事となっています。これを読めばIFSクラウドへ移行すべき理由がわかるだけでなく、経営改革の視点からIFS Cloudの価値を整理することができますよ。 (more…)
製造業を取り巻く環境は、ここ数年で大きく変化しています。原材料価格の高騰、サプライチェーンの不安定化、人手不足の深刻化、さらにはDXの加速など、企業にはこれまで以上に迅速かつ柔軟な意思決定が求められています。 こうした中で注目されているのが、企業の基幹業務を統合・最適化するERP(基幹業務システム)の再構築です。 その中で、多くの製造業が比較検討しているのが「IFS Cloud」と「SAP」です。いずれもグローバルで高い評価を受けているERPでありながら、その強みや設計思想は大きく異なります。 そのため、「どちらを選ぶべきか分からない」「自社に合うのはどちらなのか判断できない」といった悩みを抱える企業も少なくありません。 この記事では、そんなIFS CloudとSAPを「製造業」という視点から徹底比較し、それぞれの特徴や強み、導入時のポイントを分かりやすく解説します。 製造業の方 IFS CloudとSAPに興味がある方 グローバルERPの導入を検討している方 これらに当てはまる方におすすめの記事となっています。これを読めばIFS CloudとSAPの違いがわかるだけでなく、「どのような企業にどちらが適しているのか」がわかりますよ。 (more…)