Laravel6 microposts

追加機能

コード補完機能


EditorConfigを使用

  • EditorConfigを使ってレイアウトを統一(改行コードやタブの空白数など)
  • .editorconfigで設定

Controller、Model、ViewにPHPDoc記入

  • 各ファイルにPHPDocを記入

flushメッセージ表示

以下actionにflushメッセージ表示

  • MicropostsController
    • store(),destroy()
  • UserFollowController
    • store(), destroy()
  • 表示部分はresources/views/commons/messages.blade.php

エラーSlack通知機能(2種類)

  • app/Exceptions/Handler.php sendSlack()で通知
  1. 自作Slackファサード機能版の呼び出し方法
    \Slack::send('メッセージ');
  2. guzzleで簡単に送信する方法
    app/Exceptions/Handler.phpのsendSlackByGuzzle()を実行

実際にSlackに通知させる方法

  • laravel/slack-notification-channelインストール
    • composer require laravel/slack-notification-channel
  • .envに以下を追記(値は任意のもの)
    • SLACK_USERNAME=TestUser
    • SLACK_ICON=:fire:
    • SLACK_CHANNEL=test-microposts
    • SLACK_WEB_HOOK_URL=url

testコード追加

以下にtestコードを追加

  • tests/Feature/
  • tests/Unit/
  • 実行はvendor/bin/phpunit

Cloud9でcould not find driverが出た場合

  • mysqlにテスト用データベースを作成create database microposts_test;
  • phpunit.xmlを以下のように修正
<server name="DB_CONNECTION" value="mysql"/>
<server name="DB_DATABASE" value="microposts_test"/>

circeciでテスト、HerokuへデプロイするCI、CD環境

  • Herokuへ初回デプロイが完了していることが条件
  • .circleci/config.yml 58行目のHEROKU_APPを自分のアプリ名に変更
  • circleciでプロジェクトを作成し、以下の環境変数設定が必要
    • HEROKU_API_KEY
    • HEROKU_LOGIN
      • loginメールアドレスを入力
  • Chat NotificationsにSlackのWebhook URLを記入するとCI結果を通知可能
  • 設定が正しいとgit push origin masterでcircleciが起動しtest実行、成功時のみHerokuへデプロイ
  • Heroku以外にデプロイする場合はdeployphp/deployerを使うと簡単でオススメ

CIで使用するツール

  • 以下のCI実行時の成果物は./build/*に格納される

  • circleciで実行した場合はcircleciの「Artifacts」タブに格納されるので各リンクをクリックして確認可能

  • 以下のツールは全て使わなければいけないという事ではなく、必要な物だけを選んで使うようにする

  • Phing

    • ビルドツールで以下の各ツールの実行をbuild.xmlにまとめて記載しコマンド一発で実行可能にする
    • build/tools/phing-2.16.3.phar -verbose
  • phpunit

    • テストとガバレッジ自動生成
    • 単独実行 vendor/bin/phpunit --coverage-html ./build/phpunit
    • ./build/phpunit/index.htmlで成果物を確認可能
  • PHP_CodeSniffer

    • コーディング規約をチェックをしてくれる
    • 単独実行 build/tools/phpcs.phar app/ --standard=PSR2 --report=xml --report-file=./build/logs/phpcs.xml
    • ./build/logs/phpcs.xmlで成果物を確認可能
  • PHPMD

    • PHP Mess Ditector 使われていない変数やコードの潜在的なバグになりそうな箇所や実装上の問題を検出してくれる
    • 単独実行 build/tools/phpmd.phar app/ html codesize,design,naming,unusedcode --reportfile ./build/logs/phpmd.html
    • ./build/logs/phpmd.htmlで成果物を確認可能
  • PHPCPD

    • PHP Copy/Paste Detector 重複コードを見つけてくれる
    • 単独実行 build/tools/phpcpd-5.0.2.phar app/ --log-pmd=./build/logs/phpcpd.xml
    • ./build/logs/phpcpd.xmlで成果物を確認可能
  • PHPLOC

    • プロジェクトのファイルサイズ、構成などの分析
    • 単独実行 build/tools/phploc-6.0.2.phar app/ --log-xml ./build/logs/phploc.xml
    • ./build/logs/phploc.xmlで成果物を確認可能
  • phpDocumentor

    • ドキュメントの自動生成
    • 単独実行 build/tools/phpDocumentor.phar -d app/ -t build/doc
    • ./build/doc/index.htmlで成果物を確認可能

多言語切り替え機能


SEO対策

  • title、descriptionタグをbladeから動的に設定できるようにする
  • SignUp、Loginページのみ実装

Laravel Mix導入

  • node js、npmのインストールが必要
  • npm install後、開発時はnpm run watch、デプロイ時はnpm run prodを実行
  • webpack.mix.jsにcss、jsのコンパイル、ビルド処理、browserSyncの実行を追加
  • 生成されたpublic/css/index.min.css、public/js/index.min.jsを本番、開発環境で読み込みを切り替えるようにviews/layouts/app.blade.phpを変更
  • .git/hooks/pre-commitに以下を記載する事でcommit直前にnpm run prodが実行され、本番環境用のcss、jsファイルがcommitに含まれる
npm run prod
git add public/css/*.min.css
git add public/js/*.min.js