15日目の記事になります。(ちょうど空いていたのでぎりぎりですが参加させていただきました。6.xではデフォルトでは含まれなくなりました。6.xでBootstrapを利用するには、フロントエンドのScafolding機能を提供するlaravel/uiのコマンドを使用してJavascriptのビルドとCSSのプリプロセッサ設定を生成する必要があります。6.xのプロジェクトにlaravel/uiを利用してBootstrapをプロジェクトに導入する手順についてシンプルなアプリケーションを例に解説しています。4の基本的な機能を使ってマークアップと多少画面の動きをつけたい(DatePickerを利用したいなど)といった構成のアプリケーションです。Mixについても学ぶ必要がありますが、デフォルトのwebpack.mix.jsの設定でできる範囲にとどめて深堀りしません。記事の中で解説していないソースコードについてはこちらを参照ください。Redisに保存する設定する手順についてまとめてみます。Redisを利用できます。Disk(揮発性ディスク)なのでRedisなどに保存しておかないとsleepするたびにセッションが切れてしまいます。Hobby以上のDynoの場合でも1日一回は再起動されるとのことなのでやはりキャッシュストレージに入れておいた方が良さそうです。Affinityを使えば問題ないかもしれません。2019年10月31日HerokuにデプロイしたLaravelアプリのアセットのURLをhttpsにする手順HerokuではSSLの処理をロードバランサーで行っているので、Dyno上のLaravelアプリケーションはデフォルト設定ではhttpで動いていると判定されアセットのURLがhttpになってしまします。そのまま表示すると以下のようにブラウザの警告が出てしまいます。Routingで説明されています。Proxies」に記述されている通りApp\Http\Middlewar\TrustProxiesクラスのproxiesの値にロードバランサーのIPアドレスをセットします。DynoにはグローバルIPアドレスは割あたってない(はず)ので、すべてのプロキシからのリクエストを信頼する「*」をセットします。SESが標準で選択できます。バージョンによっては、MandrillやSparkPostもサポートしていたようです。Transportのクラスは残っているので設定すれば使えるかもしれません。この記事を書いている2019年10月時点でHerokuアドオンとして利用可能なメールサービス(SMS含む)のラインナップは以下の通りです。標準サポートで、Herokuのアドオンとして利用可能なサービスはMailgunのみとなります。CSV出力を実装する(レスポンスストリームにそのまま返す版)LaravelでCSV出力を実装してみたので手順をまとめます。6でしていますが、この記事の内容は5.6以降で利用可能です。CSVのサイズが大きくなる場合は、コントローラはCSV生成タスクをバックグラウンドキューに入れて非同期ジョブでCSVを生成してS3などのストレージに追加、処理が完了したらファイルのURLを応答に含めて通知するというのが正しい実装な気がしますが、ここではCSVに含めるレコードが少なくファイルサイズが小さめな限定的なケースを想定し、CSVを生成しながらそのまま応答ストリームに流すような実装について解説します。小さめと書きましたが、プロセスのメモリーを節約して実行するのでネットワーク環境と多重度が低くプロセスを長めに専有することを許容できるシステムであれば大量レコードでも使えるのでプロジェクトによっては大量レコードのダウンロードにも使える仕組みとなっています。利用するLaravelフレームワークの機能を整理まずサンプル実装に使うLaravelの機能について解説してみます。ストリームを応答として返す大容量のファイルをストリームで帰す場合は、streamDownloadメソッドを利用します。5.6から導入されたメソッドです。Schedulerを使って、定期実行する手順に確認したのでまとめてみました。Laravelのバージョンは、2019年9月時点での最新6.0で確認しています。Schedulerは、cronジョブ的な仕組みを提供するHeroku公式アドオンです。ドキュメントによると実行間隔は10分、1時間、1日のみです。この要件で問題なければ非常に便利な機能です。Processを利用する必要があります。jobs」には、実行時間が数分を超えるような長いタスクを実行する場合は、バックグラウンドキューに入れてワーカーDynoでタスクを実行するべきと書いてあります。スケジューラーで起動されたDynoは、次のスケジュール実行時間になると停止するとも書いてあります。よって、基本的にはLaravelの場合QueuesをワーカーDynoで起動しておいて、スケジュールジョブではジョブをディスパッチするのみにするのが正しい実装になります。commandを直接実行して動作を確認してみます。6のログをPapertrailに出力するHerokuにデプロイしたLaravelアプリケーションのログメッセージをHerokuのログシステムに出力して、Papertrailに連携する手順と説明をまとめました。Laravelのバージョンは、2019年9月時点での最新6.0で確認しています。Center」によると、Herokuのログ管理システム(Logplexという)はstdoutおよびstderrに出力されるメッセージをログストリームとして集めます。logsコマンドで確認できるログメッセージは各Dynoからここに集められたログを見ているわけです。そこで、Laravelの場合もstrerrにログが出力されるように設定します。Herokuのドキュメントの「Laravel」に記載されている通り、環境変数LOG_CHANNELにerrorlogをセットするだけでOKです。APIをOAuth認証プロバイダとして利用する手順について確認しました。Socialiteを使いたいところです。Socialiteは非常に多くの認証プロバイダーに対応しています。Providersで確認できます。Graphについてももちろん対応しています。ADのアカウントで認証を実装する手順について確認します。middlewareを使って要認証のルーティングを保護する手順についても説明しています。ADに登録されたアカウントによる認証にのみフォーカスして説明しています。APIを利用したデータの取得については説明しません。よって、アクセストークンの更新についても言及していません。手順を確認してみたメモになります。Rails版の確認をしていますが、そのPHP版になります。Socialiteを利用すると簡単に実装できます。ADに登録されたアカウントのアクセストークンをLaravelアプリから取得する流れを体感することができるようにまとめてみました。管理センターがリリースされていました。GA!2017年なのですでにだいぶ前ですね。Directoryを選択して開くことができます。l5scaffoldの動かし方LaravelにはRailsはCakePHPのようなScaffoldingがありません。Laravel用のScaffoldパッケージはいくつかありますが、調べてみるとlaralib/l5scaffoldが最もよく使われているようです。最後のコミットは2年前くらいで現在メンテナンスされていないようで、2019年8月時点でのLaravelのバージョン5.8では動きません。最新版のコミットからパッケージをインストールして、1箇所ソールを修正すれば動きますので、対応した手順をまとめておきます。‘laralib/l5scaffold’をインストールcomposerでインストールします。5.4でIlluminate\Console\AppNamespaceDetectorTraitの名前がIlluminate\Console\DetectsApplicationNamespaceへ変更された点については対応されています。--devProviderを登録config/app.phpのprovidersにLaralib\L5scaffold\GeneratorsServiceProvider::classを追加します。