addictionwhite’s diary

考え中のことを整理と忘備録のために綴ります。ここに書かれている考えは翌日には変わる可能性があります

SNSサイト作りの試み3 設計

 

いきおいでログイン画面までは通したものの、
これから具体的な実装に入るので、

具体的にどんなもの作るかを考え、設計しなくてはならない。

 

とはいっても最初は小さいものを作ろうと思うので、

そこまで大変ではないはず。

 

とりあえず忘れないうちにdevelopブランチだけ生成
(おそらく作るブランチはこれだけだと思う)。

 

続きを読む

SNSサイト作りの試み2 ログイン画面の追加

通常のフレームワークならログイン機能は既に用意してくれていると思うので、

実装と書かず追加とした。

 

laravelプロジェクト直下にて以下のコマンドを叩く

php artisan make:auth

 

それでログイン及びユーザー登録機能が追加される。

以下のコマンドでルーティングを確認すると、ログイン画面が追加されていることが確認できる。
php artisan route:list

f:id:addictionwhite:20171011234102p:plain

 

特に凝ったログイン機能でなければ、これでよさそう。

ただ問題がいくつか残っている。

ざっくりいうと
・URLがダサい
・DBの設定(及び構築)ができていない 

 

続きを読む

SNSサイト作りの試み1 Laravelの環境構築

ポートフォリオ的なものが欲しいと思い、

LaravelでSNSサイトっぽいものを作ろうと思った。

 

以前面談で話したときに「モノが完成していなくても、どういうコードを書く人がわかればよい」と聞けて、なるほどと思った。

Webサイトもいいけど、暇があったらAndroidの簡単なアプリも作ってみたいな。

 

以下、Laravelの環境構築なのだけれども、

これは以前、以下の記事で書いている。

Vagrantを用いたLaravel環境構築 - addictionwhite’s diary

 

ただ、忘れてまた一から調べ持ってやるという愚かなことをしてしまったけれど、

少し違う過程を通ったので、参考程度に以下に残しておく。

続きを読む

Docker Toolboxで詰まった話

タイトルが正確ではないような気もするけれど。

 

Docker toolsをインストールし、
Kitematicを立ち上げると、通常であればDocker Hubのログイン画面が開くのだが、
ログイン画面が出るべき画面に赤文字のエラーが表示された。

 

Could not determine IP from docker-machine.

 

いろいろコマンドやらを試して試行錯誤していると、
原因はわからないけど、DockerマシンにSSHできないように見えた。

続きを読む

Vagrantを用いたLaravel環境構築


LaravelはHomesteadの環境を公式で提供されているため、

自分で環境作る必要はないのだが、

ある程度環境を柔軟に自分で作れるようになっておきたかったので。

 

// プロジェクトルートに以下のVagrantfile配置
https://github.com/addictionwhite/vagrant1
// centos7.1のboxを使用しているので、なければ追加しておく(これVagrantfileで自動化できそう)
vagrant box add centos7.1 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box

// 仮想環境立ち上げ
vagrant up

// Hello world確認(プロビジョニングファイルで用意されている
http://192.168.33.10/

// 仮想環境ログイン
vagrant ssh

// ドキュメントルート配下でLaravelプロジェクト作成
cd /var/www/html/
// Laravelコマンド使用しないなら不要かも
// composer global require "laravel/installer"

// Laravelプロジェクト追加
composer create-project --prefer-dist laravel/laravel blog


// document Root変更
sudo vi /etc/httpd/conf/httpd.conf
  ----------------
  DocumentRoot "/var/www/html"

  →DocumentRoot "/var/www/html/blog/public"
  ----------------
  <Directory "/var/www">

  →<Directory "/var/www/html/blog/public">
  AllowOverride None
  # Allow open access:
  Require all granted
  </Directory>
  -----------------

// Apache再起動
systemctl restart httpd.service

// 作成したLaravelプロジェクト配下にてcomposer install 

// *具体的な時間は計っていないがかなり時間食った
composer install
  *composer installがタイムアウトしてしまった場合の注意
  タイムアウト後の処理としてディレクトリを削除しようとしているが、
  裏でgit cloneが動いているのでディレクトリ消えずにエラーになっているとのこ と。
  // composerのタイムアウトを一時的に伸ばす(デフォルト300秒)
  export COMPOSER_PROCESS_TIMEOUT=2000
  // 裏で動いているgitプロセスを切る
  ps aux | grep git
  kill xxxx(プロセスID)

// アプリケーションキーにランダムな文字列を設定
// (ドキュメントには"ComposerかLaravelインストーラを使ってインストールしていれば、php artisan key:generateコマンドにより、既に設定されています。"
// とあるが、以下のコマンドを叩かないと動かなかった
php artisan key:generate

// 以下のURLをブラウザでアクセス。Laravelのトップページを確認できれば成功
http://192.168.33.10/

 

メモ

 DBへの接続、動作検証がまだ。
 Redisやmemcachedのインストールがまだ。
 Laravelプロジェクトのインストールも自動化するべきかもしれないが、
 Laravelプロジェクト特化というよりは、PHPの汎用的な環境を作りたかったので、どこまで自動化の範疇にいれるか微妙。
 ApacheでなくNginxの方がいいかもしれない(Homesteadがそうであったため)。


 少しずつブラッシュアップしていきたいところ。

 


// 参考

// 公式
https://laravel.com/docs/5.5/installation

// composer で Could not delete エラーで先に進めなくなった場合の対処法
https://qiita.com/waterada/items/b47daf501e5fe1a70743

// composer install でタイムアウトする場合の対処法
https://qiita.com/nyanchu/items/d3f3a278e8953cb2ebf3
// Vagrant入門~仮想Webサーバ構築~
http://ferretdayo.hatenablog.com/entry/2016/03/12/000753

 

言語、フレームワークのバージョンについて

この業界入りたての頃、

営業の人に

「できる人ってなんか自分の使った言語のバージョン事細かに覚えてるんだよね」

と言われたことを強く覚えている。


バージョンごとにできることが異なるから

そりゃわかってないとダメだよな

くらいに軽く受け止めて

自分の使った言語やフレームワークのバージョンくらいは覚えておくようにしようと、その日思った。


最近、ドキュメントの読み込みが足りないことをある人から指摘された。

自分的には必要そうな箇所のみをドキュメントからピックアップして調べて実装したのだけれど、

まず最低でも一巡読み通したほうがいいとアドバイスを受けた。

その人のコードは抽象化されすぎて追いかけるのが大変なのだけど、

これがモダンなコードなんだろうなと思わせる美しさがあった。


その人のコードを理解しようとドキュメントを繰り返し読むようになった

(正直ドキュメントを読んで、どう転べばこのコードに到達するか今でもわかっていない)。


当たり前ながら言語やフレームワークのドキュメントにはそのバージョンが記載されてる。

自分の使ったバージョンを覚えようっていうの順番が逆で

ドキュメント読み込んだら嫌でも覚えるんじゃないかって思った。

何回もドキュメント見てたら嫌でも頭にこびりつくよ。


逆をいえば、

自分の使ったバージョン分からないのって

圧倒的にドキュメントの読み込み足りてないってことになる。


自分が1年以上使ってたフレームワークのバージョンを聞いたときに「分からない」と答えられて、ふと思い出した








Lravel5.3 忘備録1

ちょっと前から海外で流行っていると聞き、ようやく最近身近でも名前をよく聞くようになったPHPフレームワークLaravelを勉強することになったので忘備録。

バージョンは5.3。この記事を書いてる時点で最新。

 

とりあえずWin環境で簡単に動きを見たかったのでXammp導入

(本当は仮想環境でやりたいけれど、また今度)。

Xammpを入れたあと、XammpのPHPを環境パスに設定

(このときのPHPのバージョンPHP 7.0.8)。

Laravel5,3を使うにはPHP5.6.4以上が要求されるとのこと。

 

Compserを導入

Composer

(Win用にもインストーラが用意されているので簡単に導入できる)

 

htdocs配下にディレクトリ作成(今回は適当にlaravelStudyとした)。

そこから以下のコマンドを叩く。

composer create-project laravel/laravel:5.3 C:\xampp\htdocs\laravelStudy
( 公式ドキュメントでは --prefer-dist が付随しているがプロジェクトのcompser.json内に指定されているので不要らしい)

これでlaravelStudyディレクトリ配下にフレームワーク一式が生成される。

以下のURLでLaravelの画面が開けば成功。

http://localhost/laravelStudy/public

 

qiita.com

 

localhostだけで表示されるよう修正

C:\Windows\System32\drivers\etc\hosts

127.0.0.1 laravelStudy

 

C:\xampp\apache\conf\extra\httpd-vhosts.conf

<VirtualHost *:80>
DocumentRoot C:\xampp\htdocs\laravelStudy\public
ServerName laravelStudy
</VirtualHost>

<Directory "C:\xampp\htdocs\laravelStudy\public">
order deny,allow
allow from ALL
</Directory>

 

次にDBに接続(今回はMySQL)

ルートディレクトリ直下にある.envファイルを修正

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=root
DB_PASSWORD=

*ローカルで最低限の挙動見るための設定

この.envファイルはバージョン管理から外しておくこと

(プロジェクト生成された際に用意される.gitignoreでデフォルトで管理外にされている)。

 

とりあえず適当な登録更新画面を作りたい(MVC一通り触りたい)と考える。

ドキュメントをみてわかりづらいと思ったら、現時点では5,3にはチュートリアル的なものはないらしい。

ので5,2のチュートリアルを試す。

基本のタスクリスト 5.2 Laravel

 

nabeen.hatenablog.jp

 

 

5.1の情報がある程度見つかる中、最初に躓くのはroutes.phpの配置場所が異なっていることだと思う。

laravel.com

これでLaravelのRouting(ルーティング)は完璧だ! | Reffect Blog -

引用

これまでは、\app\Http\routes.phpファイルにルーティングを記述していましたが、Laravel 5.3からはディレクトリ構造が変わって、 \routesディレクトリの中にルーティングのファイルが格納されています。

3つのファイルがありますが、主に\routes\web.phpにルーティング情報を記述していきます。

 

とりあえずweb.phpにルーティング情報を記載する形でチュートリアルを進めると、

最後までいけた。動くこと優先で確認したのでもう少しコードを振り返りたいと思う。

また、上記のチュートリアルだとすべてコントローラとしての振る舞いをweb.phpに書かれてしまっているので、コントローラに分ける方法を調べたい。

 

用語メモ

artisan(アルチザン)…Laravelアプリケーションを操作するコマンドラインツール

クエリビルダー…メソッドチェーンを使ってSQLを組み立てる。

Bladeテンプレート…PHP公文のラッパー。テンプレートエンジン。

マイグレーション…直接DDLを描くのでなく、PHPのソースとしてテーブル作成、変更を管理する仕組み。

 

備考

XammpのPHPでないPHPのパスが通っていて、Composerのコマンド実行時にOpenSSLのモジュールがないとエラーが出た。

こういうモジュールがあらかた揃っているのでXammpは楽。