テクノシップブログ

田舎育ちで文系でもITの世界へ

『週刊』PHP+Laravel6 奮闘記⑤【第13号】

f:id:technoship0329:20220320090005p:plain

 

こんにちは!

テクノシップブログです!

 

先週から「『週刊』PHP+Laravel6 奮闘記」と題しまして、

オリジナルアプリケーション第2段の開発記録を記事にしています。🔥

 

今回は前回から1週間が経過したので、目標の達成の有無の確認と

学習の振り返りをしていきたいと思います!!!

 

f:id:technoship0329:20220320094901p:plain

 

 

1.前回の目標の成果の確認

前回立てた目標は以下の通りでした。↓↓↓

---------------------------------------------------------------------------------------

gyazo.com

---------------------------------------------------------------------------------------

 

結果はどうだったのか。

 

目標達成です!!

 

herokuへのデプロイが完了し、挙動に問題がないかどうかを確認するまでにかなり

手こずりましたが、何とか実装を終えることができました🎉🎉

 

以下のURLから制作したアプリケーションにアクセスできます!!

haiker575.herokuapp.com

 

2.目標達成の要因

 目標達成の要因を自分なりに分析してみると、

 

 エラーを細かく分解し、段階的に解決していく手段を徹底できたから

 

 この1点につきます。

 

 laravelで制作したアプリケーションをデプロイするのは中々難しく、

エラーに出会い、そのエラーを調べているうちに分からない用語と出会い、、

 

 結局負のループに陥りそうになるということの繰り返しでした💦💦

 

 しかし、エラーに出会ったときにどのように対処するのか、、

 

 自分の中で以前から決めていた方針をもう一度思い出し、なんとか切り抜け

ました!!

 

 それは、

 

 「エラー内容の分解と段階的な解決」

 

 です。

 

 エラーが起こると焦って頭が混乱しがちです。

 しかし、そのような時こそまずは「紙とペン」を取り出し、現在起こっている

エラーを書き出します。そして、その中で解決する順番を考え、解決したら線で

消していくということを愚直にこなすのです。

 

 遠回りなように見えて、この方法が一番近道だと信じています。

 

 「分からない点が視覚的に理解でき、尚且つ解決するたびに消していく」

 

 この感覚を持てるだけでエラー解決がかなり楽になるはずです!!

 

 「焦った時こそ原点に帰る」

 

 ということを今後も徹底していきたいと思えました。

 

 

3.ワンポイントアウトプット

 ここでは、先週1週間の中で力を入れた部分や難しかった部分について

アウトプットしておきます。

 

 今回は「Herokuへのデプロイ作業」です。

 

3-1. Herokuへの基本的なデプロイ手順

 まず、herokuにデプロイするまでの基本的な流れを説明します。

 

①laravelアプリケーションを実装する

 composerを用いてlaravelアプリケーションの雛形をインストールし、

自分の作りたいアプリケーションを実装していきましょう。

 

laravelプロジェクトインストールコマンド

composer create-project laravel/laravel --prefer-dist アプリケーション名

「アプリケーション名」のところには自分の好きな名称をつけましょう。

 

②laravelアプリケーションに「Procfile」と呼ばれるファイルを設定する

 自分でもこのファイルを設定しなければならない理由は深く理解できていないの

ですが、これを設定しておくことで、Webサーバーにアクセスしたときに、正しい

方法でアプリケーションを表示できるようになるそうです。

 

 以下、heroku公式ページの説明↓↓↓

アプリケーションを Heroku にデプロイするには、正しい設定で Web サーバーを起動するために使用するコマンドを Heroku に指示する ​Procfile​ を最初に作成する必要があります。

デフォルトで、Heroku は、PHP とともに Apache Web サーバーを起動して、プロジェクトのルートディレクトリからアプリケーションを提供します。

ただし、アプリケーションのドキュメントルートは ​public/​ サブディレクトリであるので、​正しいドキュメントルートを設定​する ​Procfile​ を作成する必要があります。

 ということで、以下のコマンドを打ち、設定を完了します。

echo "web: vendor/bin/heroku-php-apache2 public/" > Procfile

 

③Heroku上にアプリケーションの雛形を用意する

 ご存じのように、HerokuではGithub上にpushしたアプリケーションの内容を

Heroku上のアプリケーションの雛形に流し込んでアプリケーションを完成させます。

 そのため、Heroku上にアプリの雛形を作成しましょう。

heroku create アプリケーション名

 

④Laravel暗号化鍵の設定をする

 Laravelアプリケーションに関する情報を暗号化して安全に使用するために

「鍵」を設定します。

 まず、以下のコマンドで「APP_KEY」を設定します。

//keyを生成し、生成したkeyを表示
php artisan key:generate --show
//表示されたkeyを=...に打ち込み設定完了
heroku config:set APP_KEY=…

 

⑤デプロイする

 ここまで設定を終えたら、デプロイします。しっかりとGitHubのコミットが全て

pushされていることを確認した上でデプロイしましょう。

 デプロイのコードは以下です。

git push heroku master

 

3-2.私が出会ったエラーの数々

 ここまで、基本的なデプロイの流れをアウトプットしましたが、私自身一筋縄

ではいきませんでした。勿論デプロイの途中でいくつものエラーに出くわしました。

 今回は私が出会ったエラーを洗いざらい共有しようと思います。

 

①「A post-autoload-dump script terminated with an error」

 これは、「git push heroku master」で最初にデプロイを試みたときに起きました。

 インターネットで検索すると、「composer.json」にいくつか不要な記述がある

ことを知り、以下のサイトを参考に解決させました。

qiita.com

 こちらでは、「clear DB addon」を利用したmySQLのデータベース設定の

方法も詳しく記載されているので参考になりますよ!!

 

②「During inheritance of ArrayAccess」

 これは、「heroku run php artisan migrate」コマンドでマイグレーション

行おうとした時に出たエラーです。

 調べてみると、「開発環境でのPHPのバージョン」と、「herokuでのPHPの      バージョンが合致していないこと」が原因だと特定。heroku側のバージョンを      合わせるため、「composer.json」のバージョン記述を修正。

stackoverflow.com

 私は、「php -v」コマンドで自分のphpのバージョンを確認し、

composer.jsonに記載されていたバージョンをそれに合わせたところ、解決。

 

③デプロイ後のアプリケーションのURLが「HTTPS化」されていない

 phpアプリのデプロイが完了し、アクセスすると、URLが「https」ではなく、「http」になっており、情報が保護されておらず、特定のページにアクセス      できなくなってしまう。

 「herokuでデプロイ時にURLをHTTPS化する方法」と検索したところ、       このようになる原因は、「プロキシ」、「ロードバランサー」という機能が関係    していると判明。公式ページに書いてある対処法を実践し、解決。

 以下、参考にした公式サイト。

devcenter.heroku.com

 

④デプロイも完了し、https化もできたが、cssファイルの内容が反映されていない

 画面を確認すると、Laravelに元から用意されていたBootstrapのcssファイルに

後から追記した分の内容が反映されていないことに気づきました。

 調べると、「Bootstrapのcssファイルに直接追記したことが原因」と断定。

 なぜなのか理由は分かっていませんが、「public/css/app.css」のファイル以外  にファイルを作成し、そちらに追記分を記述して再度試したところ、見事解決!!

 

 エラーの対処法が分かっても原因を理解しきれていない部分も多々あるので、

今後の課題として取り組んでいきたいと思います。

 

 

4.この1週間のまとめ

 この1週間を一言でまとめると、

 

 「焦った時こそ原点に立ち戻れ」

 

 ということです。

 

 学習が進んでいくと、いつの間にか自分のやり方というものを見失っている自分

に気がつく瞬間が来ました。それがまさにこの1週間でした。

 エラーの対処法一つとっても、自分なりの方法があったにも関わらず、焦りから

見当違いの方法をとってしまったりと、危ない状況でした。

 

 しかし、この経験をしたからこそ、

 「焦ったら原点へ」という教訓が得られたと考えています。

 

 これにて、『週刊』PHP+Laravel6 奮闘記

 は終了させていただきます!!

 

 ありがとうございました!!

 

 

5.テクノシップ第13号プチ編集後記

〜先日久しぶりに東京に出てきたのですが、歩くスピードの速さに改めて驚き

 ました。「都会で暮らせば痩せる」。そう思えた1日でした。〜

 

f:id:technoship0329:20220102193453p:plain