SlideShare a Scribd company logo
ウェブ職人のためのPHPフレームワーク
<第1回>初めての
Laravel PHPフレームワ
ーク講座
水野 竜与志
- Tatsuyoshi Mizuno
<第1回>初めてのLaravel PHPフレームワーク講座で学べる
こと
❖ WEBフレームワークとは
❖ Laravelのここが良い
❖ Laravelの情報源と公式サイトの紹介
❖ Laravelを理解するために
❖ composerとは
❖ namespaceとは
❖ Laravelハンズオン!
❖ Laravelのインストール
❖ ローカル実行環境の作り方
❖ ビルトインサーバの起動
❖ コントローラの作成とルーティングの設定
❖ ビューの作成と表示
❖ データベースへのコネクション設定
❖ マイグレーションの作成と実行
❖ モデルの作成
❖ コントローラへ処理記述
ハンズオンの内容
<第1回>初めてのLaravel PHPフレーム
ワーク講座
講師紹介
❖ みずの たつよしです。
❖ フロントのUI・UX開発もやっています。
❖ AI・VRに関心あります。
Tatsuyoshi (タツヨシ)
http://elastic-info.jp/
https://www.facebook.com/tatsuyoshi964
<第1回>初めてのLaravel PHPフレームワーク講座
講習会が始まります
<第1回>初めてのLaravel PHPフレームワーク講座
WEBフレームワークとは
❖ フレームワークは骨組み
❖ 十分にテストされたライブラリの集合体
❖ MITライセンスが大半
❖ CMSよりも自由度が高いが学習コストが発生する
システム 必要な知識量 開発自由度 実行効率(速度)
CMS系 低〜中 限定的 低
フレームワーク やや低〜中 十分 中〜高
PHPのみ 高 最高 最高
■開発効率比較表
<第1回>初めてのLaravel PHPフレームワーク講座
Laravelのここが良い
❖ 多種多様で拡張が容易なバリデーション
❖ ページネートが簡単で高機能
❖ 学習コストの低いORM
❖ 実行しやすいテスト
❖ 他のフレームワークに比べると規約がゆるい
<第1回>初めてのLaravel PHPフレームワーク講座
バージョン推移とLTS
Version 特徴
Larval 1 軽量さが評価
Larval 3 WEB開発に必要なコンポーネントを集めだした
Larval 4
コンテナーの充実で大規模開発
がしやすくなった
Larval 5〜 LTSサポート!
※LTSは長期サポート対応の意味です。
<第1回>初めてのLaravel PHPフレームワーク講座
Laravelの情報源と公式サイト
❖ 公式サイト http://laravel.jp/
❖ ドキュメント https://readouble.com/laravel/
❖ Facebook
https://www.facebook.com/groups/laravel.j
p/
❖ Google+
https://plus.google.com/communities/11800
6056115330646882
❖ その他 teratail.com, stack overflowなどなど・・
<第1回>初めてのLaravel PHPフレームワーク講座
Laravelを理解するために
<第1回>初めてのLaravel PHPフレームワーク講座
Laravelを理解するためには
❖ composerでのパッケージ管理をする
❖ namespaceとuse宣言
解説します!
<第1回>初めてのLaravel PHPフレームワーク講座
composerとは
❖ Pearで苦労していませんか?
❖ composer.jsonでバージョン管理
❖ 公式サイト https://getcomposer.org/
❖ package公開 https://packagist.org/
composer.json
composer install
composer update
/vendor
/package1
/package2
/package3
リポジトリ
<第1回>初めてのLaravel PHPフレームワーク講座
namespaceとuse宣言
❖ クラスへ名札を付けるイメージ
❖ バックスラッシュ区切りでディレクトリ構造を定義できる
❖ 名前空間で定義されたクラス/関数/定数は先頭に名前空間を付与したものと
して認識される
❖ use宣言で別の名前空間のクラスをインポートできる
namespaceって?
まとめ
❖ composerはPHPのパッケージ管理の仕組み
❖ namespaceはクラス名に名札を付与する
❖ useは多重継承を可能にする仕組み
<第1回>初めてのLaravel PHPフレームワーク講座
Laravel ハンズオン!
<第1回>初めてのLaravel PHPフレームワーク講座
Laravel サンプルプログラムのダウンロード
URL ・・・
https://github.com/SOLTInc/techmeeting_laravel
_1st
コマンド ・・・
git clone
https://github.com/SOLTInc/techmeeting_laravel
_1st
クローン・ダウンロード
お好きな方でどうぞ!
<第1回>初めてのLaravel PHPフレームワーク講座
ハンズオンの進め方
❖ composerをインストールする
❖ サンプルプログラムより完成イメージを動作確認する
❖ プレーンなLaravelをインストールし組み上げる
❖ 詰まったらサンプルプログラムよりソースコードを持ってくる←
まわりのスタッフへ随時聞いてください(^o^)
<第1回>初めてのLaravel PHPフレームワーク講座
composerのインストール
1. PHP5.3以上であればcomposerは使用可
2. 実行ファイルをcurlで取得する
3. 実行ファイル$PATHの通っているディレクトリへ移動
4. バージョンの表示で完了です
$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer
$ composer -V
<第1回>初めてのLaravel PHPフレームワーク講座
サンプルプログラムを実行
1. cdコマンドでサンプルプログラムへ移動
2. composerでパッケージを取得する(GITでパッケージ追跡していない為。)
3. php artisanコマンドでビルトインサーバを起動
4. http://localhost:8000の表示で完了です
$ cd “Your Project Root Directory”
$ composer install
$ php artisan serve
<第1回>初めてのLaravel PHPフレームワーク講座
Laravelをインストール
1. cdコマンドで講習会プログラム作成用のディレクトリへ移動
2. lessonというフォルダ名でLaravelがインストールされます
$ cd “Your project Directory”
$ composer create-project --prefer-dist laravel/laravel lesson
<第1回>初めてのLaravel PHPフレームワーク講座
ローカル実行環境の作り方
❖ Laravel専用VagrantBoxを使用する(HomeStead)
❖ ビルトインサーバを使用する
※講習会ではビルトインサーバを使用します
簡単な方法は大きく分けると2つ
<第1回>初めてのLaravel PHPフレームワーク講座
Laravelの初期設定①
- timezone' => ‘UTC’
+ timezone' => ‘Asia/Tokyo'
- locale' => ‘en’
+ locale' => ‘ja'
/config / app.php
<第1回>初めてのLaravel PHPフレームワーク講座
Laravelの初期設定②
サンプルプログラムよりまるごと中身をコピーします。
※ソースコードの解説は致します。
/.env
<第1回>初めてのLaravel PHPフレームワーク講座
コントローラの作成
1. 実行後コマンド下部に「Controller created successfully」が表示
さえれば成功です
2. 実行後、app / Http / Controllers へファイルが自動生成されます
3. それぞれ今回の講習会で使用します
$ php artisan make:controller PostController
$ php artisan make:controller ListController
$ php artisan make:controller DetailController
<第1回>初めてのLaravel PHPフレームワーク講座
ルーティング設定
- Route::get('/', function () {
- return view('welcome');
- });
+ Route::get('/', 'ListController@index');
+ Route::get('delete/{id}', 'ListController@delete');
+ Route::get('input', 'PostController@index');
+ Route::post('post', 'PostController@post');
+ Route::get('detail/{id}', 'DetailController@index');
app / Http / routes.php
<第1回>初めてのLaravel PHPフレームワーク講座
ビューの作成
Lesson 内、 viewsフォルダよりまるごと中身をコピーします。
resources / views /
public /
Lesson 内、 assetsフォルダをここへまるごとコピーします。
<第1回>初めてのLaravel PHPフレームワーク講座
コントローラよりViewを表示①
+ public function index($id){
+ return view('detail');
+ }
app / Http / Controllers / DetailController.php
<第1回>初めてのLaravel PHPフレームワーク講座
コントローラよりViewを表示②
+ public function index(){
+ return view('list');
+ }
+ public function delete($id){
+ return redirect('/');
+ }
app / Http / Controllers / ListController.php
<第1回>初めてのLaravel PHPフレームワーク講座
コントローラよりViewを表示③
+ public function index(){
+ return view('input');
+ }
+ public function post(Request $inputs){
+ return redirect('/');
+ }
app / Http / Controllers / PostController.php
<第1回>初めてのLaravel PHPフレームワーク講座
実際にURLへアクセス、表示を確認
投稿一覧ページ http://localhost:8000/
投稿詳細ページ http://localhost:8000/detail/1
新規投稿ページ http://localhost:8000/input
<第1回>初めてのLaravel PHPフレームワーク講座
データベースへのコネクション設定
SQlite用DBファイルを作成
/ database / database.sqlite
.envへSQliteドライバー使用設定
+ DB_CONNECTION=sqlite
※サンプルプログラムよりコピーした.envファイルへ既に設定が入っています。
<第1回>初めてのLaravel PHPフレームワーク講座
マイグレーションファイルの作成
❖ 自動的にファイルが生成されます
❖ 投稿データ格納用のpostsテーブルするファイルを作成
❖ 投稿データのtug保存用のpost_tugsテーブルを作成
$ php artisan make:migration create_table_posts
$ php artisan make:migration create_table_post_tugs
<第1回>初めてのLaravel PHPフレームワーク講座
スキーマの定義を記述①
public function up()
{
+ Schema::create('posts', function(Blueprint $table)
+ {
+ $table->increments('id');
+ $table->string('title');
+ $table->string('category');
+ $table->text('description');
+ $table->string('picture');
+ $table->softDeletes();
+ $table->timestamps(); // created_atとupdate_atカラムの追加
+ });
}
public function down()
{
+ Schema::drop('posts');
}
database / migrations /
xx_xx_xx_xx_create_table_posts
<第1回>初めてのLaravel PHPフレームワーク講座
スキーマの定義を記述②
public function up()
{
+ Schema::create('post_tugs', function(Blueprint $table)
+ {
+ $table->increments('id');
+ $table->integer('post_id');
+ $table->string('tug_name');
+ $table->timestamps();
+ });
}
public function down()
{
+ Schema::drop('post_tugs');
}
database / migrations / xx_xx_xx_xx_create_tab
<第1回>初めてのLaravel PHPフレームワーク講座
マイグレーションを実行
❖ 作成したマイグレーションを作成日順に実行します
❖ 実行記録をデータベース内で管理します
❖ sqlitebrowerでDBを覗いてみましょう、テーブルが作成されていま
す
$ php artisan migrate
<第1回>初めてのLaravel PHPフレームワーク講座
モデルの作成
❖ 自動的にファイルが生成されます
❖ postsテーブルを参照するモデルファイルを作成
❖ post_tugsテーブルを参照するモデルファイルを作成
$ php artisan make:model PostTugModel
$ php artisan make:model PostModel
<第1回>初めてのLaravel PHPフレームワーク講座
モデルの設定①
+ protected $table = 'posts';
+ protected $fillable = [
+ 'title',
+ 'category',
+ 'description',
+ 'picture'
+ ];
+ protected $dates = [
+ 'deleted_at',
+ 'created_at'
+ ];
+ public function tugs()
+ {
+ return $this->hasMany('AppPostTugModel', 'post_id', 'id');
+ }
app / PostModel
<第1回>初めてのLaravel PHPフレームワーク講座
モデルの設定②
+ protected $table = ‘post_tugs';
+ protected $fillable = [
+ 'post_id',
+ 'tug_name',
+ ];
+ protected $dates = [
+ 'created_at'
+ ];
+
app / PostTugModel
<第1回>初めてのLaravel PHPフレームワーク講座
コントローラロジック 一覧画面
use IlluminateHttpRequest;
use AppHttpRequests;
+ use AppPostModel;
public function index(){
+ $posts = PostModel::all();
- return view('list');
+ return view('list', compact('posts'));
}
public function delete($id){
+ $post = PostModel::find($id)->delete();
return redirect('/');
}
app / Http /Controllers / ListController.php
<第1回>初めてのLaravel PHPフレームワーク講座
コントローラロジック 新規登録①
use IlluminateHttpRequest;
use AppHttpRequests;
+ use AppPostModel;
+ use AppPostTugModel;
public function index(){
+ $view_name = '記事投稿';
- return view('input');
+ return view('input',compact('view_name'));
}
public function post(Request $inputs){
+ $post = PostModel::create([
+ 'title' => $inputs['title'],
+ 'category' => $inputs['category'],
+ 'description' => $inputs['description'],
+ 'picture' => $inputs['picture'],
+ ]);
+ $id = $post->id;
app / Http /Controllers / PostController.php
・・・続く
<第1回>初めてのLaravel PHPフレームワーク講座
コントローラロジック 新規登録②
+ foreach ($inputs['tugs'] as $key => $value) {
+ PostTugModel::create([
+ 'post_id' => $id,
+ 'tug_name' => $value,
+ ]);
+ }
+ return redirect('/');
}
app / Http /Controllers / PostController.php
<第1回>初めてのLaravel PHPフレームワーク講座
コントローラロジック 詳細画面
use IlluminateHttpRequest;
use AppHttpRequests;
+ use AppPostModel;
+ use AppPostTugModel;
public function index($id){
+ $post = PostModel::findOrFail($id);
+ $tugs = PostModel::find($id)->tugs()->get();
+ $view_name = $post->title;
- return view('detail');
+ return view('detail', compact('post', 'tugs', 'pagename', 'view_name'));
}
app / Http /Controllers / DetailController.php
<第1回>初めてのLaravel PHPフレームワーク講座
Viewの完成
resources / viewsを、一式まるごと動作確認を行ったサンプルプログ
ラムより移行します。
※ファイルを上書き保存されると変更が反映されないケースがございます、ファイル
を開きソースコードをコピーし保存終了願います。
サンプルプログラムよりコピー
<第1回>初めてのLaravel PHPフレームワーク講座
講習会が終わります
講師よりメッセージ
❖ お忘れ物にご注意ください(^_^;)
❖ 講習会だけでは意味がありません、実践しましょう!
❖ Facebookの申請を是非!
❖ 引き続き第2回もよろしくお願いします!
<第1回>初めてのLaravel PHPフレームワーク講座
FIN.

More Related Content

PDF
behatエクステンションの作り方
PDF
Laravel5を使って開発してみた
PPT
今、最もイケてるPHPフレームワークLaravel4
PDF
ディレクションのすゝめ
PDF
laravel x モバイルアプリ
PDF
Laravelの認証について
PDF
今、最もイケてるPHPフレームワークLaravel4
PDF
Laravelとテストについて
behatエクステンションの作り方
Laravel5を使って開発してみた
今、最もイケてるPHPフレームワークLaravel4
ディレクションのすゝめ
laravel x モバイルアプリ
Laravelの認証について
今、最もイケてるPHPフレームワークLaravel4
Laravelとテストについて

What's hot (20)

PPTX
Phpフレームワーク 「laravel」でブログを作ろう
PDF
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
PPTX
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
PDF
Behatで行う、E2Eテスト入門
PDF
REST with Spring Boot #jqfk
PDF
flyingV Laravel & AWS 經驗分享
PDF
中・大規模でLaravelを導入するTips
PDF
Service Workerとの戦い ~ 実装編 ~ #scripty03
PDF
Laravelでfacadeを使わない開発
PPT
JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013
PDF
REACT & WEB API
PDF
第104回 php勉強会@東京 Laravel
PDF
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PDF
第21回Creators MeetUp
PDF
React入門-JSONを取得して表示する
PDF
Laravel で API バージョニングを実装するなら
PDF
Laravel における Blade 拡張のツラミ
PDF
Spring Framework ふりかえりと4.3新機能
PDF
Maven基礎
PDF
Cakephp
Phpフレームワーク 「laravel」でブログを作ろう
A HUGE CHANGE RAILS 5 IS APPROACHING FAST
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Behatで行う、E2Eテスト入門
REST with Spring Boot #jqfk
flyingV Laravel & AWS 經驗分享
中・大規模でLaravelを導入するTips
Service Workerとの戦い ~ 実装編 ~ #scripty03
Laravelでfacadeを使わない開発
JobSchedulerを使ったDevOps at OSC Tokyo/Fall 2013
REACT & WEB API
第104回 php勉強会@東京 Laravel
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
第21回Creators MeetUp
React入門-JSONを取得して表示する
Laravel で API バージョニングを実装するなら
Laravel における Blade 拡張のツラミ
Spring Framework ふりかえりと4.3新機能
Maven基礎
Cakephp
Ad

Viewers also liked (20)

PDF
Project Phoenix - From PHP to the Play Framework in 3 months
PPTX
Symfony開発者がLaravelしようとして云々
PDF
3 tips of Laravel
PPTX
LaravelアプリケーションをSeleniumでテストしてみた
PDF
魔法少女 Laravel 2014
PDF
PHP カンファレンス 2014 に行ってきたよ
PPTX
Express yourself
PPTX
簡単便利!Laravel Homestead
PDF
Laravel の学び方と得られる学び
PDF
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
PDF
PHP meets NodeJS
PPTX
今日から始めるLaravel
PPTX
Why Play Framework is fast
PDF
Node.js入門
PDF
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜
PDF
Node.js基礎の基礎 - Miyazaki.js vol.2
PDF
Node.js Tutorial at Hiroshima
PDF
最強オブジェクト指向言語 JavaScript 再入門!
PDF
基礎からのベイズ統計学 2章 勉強会資料
PDF
新入社員の技術研修に関してありがちな問題を解決するためにやったことやるべきこと
Project Phoenix - From PHP to the Play Framework in 3 months
Symfony開発者がLaravelしようとして云々
3 tips of Laravel
LaravelアプリケーションをSeleniumでテストしてみた
魔法少女 Laravel 2014
PHP カンファレンス 2014 に行ってきたよ
Express yourself
簡単便利!Laravel Homestead
Laravel の学び方と得られる学び
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
PHP meets NodeJS
今日から始めるLaravel
Why Play Framework is fast
Node.js入門
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js Tutorial at Hiroshima
最強オブジェクト指向言語 JavaScript 再入門!
基礎からのベイズ統計学 2章 勉強会資料
新入社員の技術研修に関してありがちな問題を解決するためにやったことやるべきこと
Ad

Similar to <第1回>Laravelハンズオンセミナー (20)

PDF
10分でわかるFuelPHP @ 2011/12
PDF
フレームワークを使うべき 3 つの理由
PDF
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
PDF
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
PDF
Laravel shibuya 3 Laravel Beginner IRT
PDF
Laravel 5.3 で basic task list を作ろう!
KEY
FuelPHPをさわってみて
PDF
Laravel4 Happy Hacking
PPTX
〜laravel で学ぶ MVC
KEY
最近、僕がハマったFuelPHPの紹介
PPTX
Laravel本とコミュニティの話
PDF
Lithium Labo #1
PDF
Laravelの検索機能の実装方法
PDF
FuelPHP Osu Nagoya vol.1
PPTX
Laravel Controller→View
PDF
Laravel_オープンソースカンファレンスhokkaido_JP_2014
PPTX
Laravelではじめる Webアプリケーション開発
PDF
はじめての FuelPHP
PDF
Creators meetup5
PDF
魔法少女 Laravel
10分でわかるFuelPHP @ 2011/12
フレームワークを使うべき 3 つの理由
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
Laravel shibuya 3 Laravel Beginner IRT
Laravel 5.3 で basic task list を作ろう!
FuelPHPをさわってみて
Laravel4 Happy Hacking
〜laravel で学ぶ MVC
最近、僕がハマったFuelPHPの紹介
Laravel本とコミュニティの話
Lithium Labo #1
Laravelの検索機能の実装方法
FuelPHP Osu Nagoya vol.1
Laravel Controller→View
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravelではじめる Webアプリケーション開発
はじめての FuelPHP
Creators meetup5
魔法少女 Laravel

<第1回>Laravelハンズオンセミナー

Editor's Notes

  • #6: ■フレームワーク 実装するべき処理を、いくつかのパッケージを組み合わせて開発速度構築を容易 実装にはフレームワークのコーディングがルールが制約されますが、制約に従うことで実装を容易に PHPに限った概念ではない ■MITライセンス MITライセンスのもとで配布されているものは、改変でも、再配布でも、商用利用でも、有料販売でも、どんなことにでも自由に無料でつかうことができます。守らなくてはいけない条件は、「著作権表示」と「MITライセンスの全文」を記載する、という条件だけです。(なお、「MITライセンスの全文」を記載する代わりに、MITライセンスの全文が記載されているウェブページのURLを記載することも認められています。)
  • #7: Laravelが提供するコンポーネントは扱いやすい 代表格でページネートとバリデーションがある 独自のORMを実装しており、学習コストが低く可読性が高い 今回は触れないが、フレームワークで実装しているpackageや、実装したモジュールの単体テストがしやすい FuelPHPやCakeなどのDirectory構造に強く制約はないのが扱いやすい 規約はゆるく、様々なデザインパターンに対応する
  • #8: 大きあメジャーバージョンアップは毎年ッて感じ。 LTSはメジャー長期サポートの意味、 2年間ごとにアップされる LTS版はバグフィックスは2年間、脆弱性の対応は3年間、長期的なプロジェクトも安心
  • #12: ■pear(ペアー) ・インフラ部隊に依頼する必要がったりする ・ローカルとローンチ環境を統一しにくい
  • #13: namespaceは、BOM付きのutf-8で使用すると怒られます。 参考:http://www.slideshare.net/KosukeHorii/5-9037647