tewi_log

Swift / Flutter / Ruby on Rails / xR

Laravelの学習を始めました

いままでバックエンドの学習として、CakePHPの学習をしていました。 最初の頃は環境構築で躓いたりと苦労しましたが、最終的にはVagrantを使って簡単に環境が構築できる段階まで行きました。

qiita.com

公式チュートリアルCMSの構築を終え、ログイン機能の実装など基礎的なCMSアプリケーションの動作についてはなんとなく分かったと思います。

GitHub - 7ew1r/CakePHP-tutorial: CakePHP-tutoral

しかしCakePHPの学習を進めていくと、あまり情報が出てこなかったり最近のトレンドも下降傾向にあるため、同じPHPフレームワークであるLaravelの学習に切り替えました。

環境構築については以下を記事を参考にしました。

qiita.com

次のコマンドでデータベース含め環境が整います。

docker-compose up -d nginx mysql phpmyadmin

本当に数分で構築出来るので非常に楽でした。

LaravelのバージョンはLTSである、5.5に変更しました。

composer create-project "laravel/laravel=5.5.*" firstapp

デフォルトだとMySQLバージョンは8.0が導入されるのですが、このバージョンはセキュリティが強化されているようで、手順通りではデータベースにアクセス出来ませんでした。

【Docker】MySQL8.0系を使う時に発生する問題について - websandbag ブログ

今回はチュートリアルとしてさくっとやりたかったので、バージョンを5.7に落としました。

LaradockのMySQLのバージョンを指定して再インストールする

  • コンテナを一旦全部止める
$ docker-compose stop
  • MySQLのコンテナを削除する
$ docker rm laradock_mysql_1
  • MySQLのイメージを削除する
$ docker rmi laradock_mysql
  • 「laradock/.env」を書き換える
 ### MYSQL #################################################
    
 # MYSQL_VERSION=latest
 MYSQL_VERSION=5.7
  • 再度立ち上げる
$ docker-compose up -d nginx mysql phpmyadmin

これで大丈夫かと思いきや、マイグレーション時にエラーが発生。

Laravel5.4以上、MySQL5.7.7未満 でusersテーブルのマイグレーションを実行すると Syntax error が発生する - Qiita

charsetの違いによるエラーらしいので、今回は使用するcharsetをutf8mb4 -> utf8に変更することで解決しました。

  • 「config/database.php」を編集
         'mysql' => [
            // 略
             // 'charset' => 'utf8mb4',
             // 'collation' => 'utf8mb4_unicode_ci',
             'charset' => 'utf8',
             'collation' => 'utf8_unicode_ci',
                // 略
         ],

参考 : Laravelの開発環境をLaradockを使って構築する方法 - タダケンのEnjoy Tech

チュートリアルとして以下のサイトを参考にさせて頂きました。

beiznotes.org

取りあえず一通り出来ました。

f:id:R_Tewi:20190522042217p:plain

機能はタスクの追加と削除だけです。(編集はまだ)

もう少しこのアプリケーションを弄って基礎的な動作を確認出来たら、オリジナルアプリケーションの作成に移ろうと思います。


やはり明確な目標があると学習意欲が違いますね。

学生時代にドットインストールのRuby on Railsチュートリアル等をやったりはしていましたが、写経しているだけでは全然身につかず、よく分からない状態で終わってしまいました。

現在は、一刻も早く人に見せられる成果物を作れる段階までスキルアップしたいという思いが強く、毎日新しい知識を習得出来ています。
(分からない事だらけで、詰まってしまうことも多いですが・・・)

明日からも頑張ろう