PHP関連のことを調べてみた2022年12月06日

PHP関連のことを調べてみた2022年12月06日
目次

画像サーバーをLambda移管した時のお話

# 0.はじめに

無尽蔵にアクセスが考えられる画像に対して、まずnginxへアクセスを行い、キャッシュを挟んだ上でリバースプロキシでApacheへアクセスし、S3から画像を取得し、指定サイズにリサイズを行った上で返すアプリケーションを運用していました。

サーバーへのアクセス数は月間で数億あったため、水平スケールを拡大して数年間動いていました。

ただ、ある日突然のアクセススパイクが発生し、サーバーが応答しない事態が発生しました。

応急的にサーバーの水平スケールを拡大して対応しましたが、そもそもこれアプリケーション挟む必要あるのか…と考えてサーバーレスサービスへの移管を検討しました。

旧環境はオンプレ環境だったため、S3へのアクセスも物理的コストが高かったため、Lambdaを採用して環境を移管する事にしました。

# 1.Lambda環境の構築

以前はPHPでAWS SDKでS3から画像を取得⇒imagemagickでリサイズを行っていましたが、Python3.9を採用したため、PILとbotoで画像処理とS3からの画像取得を行いました。

**※パスはお使いのS3に最適化

元記事を表示

Laravel 開発者に!俺はなる!と意気込んでいる人々へ

この記事は、[Lancers(ランサーズ) Advent Calendar 2022](https://qiita.com/advent-calendar/2022/lancers) の6日目の記事です。

https://qiita.com/advent-calendar/2022/lancers

昨日投稿された @igara さんの遊び心満載の記事もぜひ読んでみてください!

https://igara1119.hatenablog.com/entry/2022/12/04/153340

## はじめに

初めまして。
ランサーズのバックエンドエンジニアの[wadakatu](https://github.com/wadakatu)です。
社会人1年目から今に至るまで業務時間のほとんどを[Laravel](https://laravel.com/)に費やしてきました。
現在もランサーズ内のプロジェクトでLaravelを用いて開発を行なっています。

## 本稿の目的
この記事では、Laravel開発者として1歩を踏み出す際にチェックすべき**人物**・**Webサイト**をまと

元記事を表示

DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑥docker-compose.ymlの作成&MySQLの導入(全8回)

# はじめに

かくかくしかじかで、Docker で Amazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。
![スクリーンショット 2022-11-30 23.31.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/930bcd24-38e9-316e-bebd-cef83aea5924.png)

全 8 回を予定しています。

[① 作成する環境の確認](https://qiita.com/ryamate/items/47183e1ffd4843ef18fa)
[② Apache の導入](https://qiita.com/ryamate/items/e5ca19aece61717b6a01)
[③ PHP 8.1 系のインストール](https://qiita.com/ryamate/items/7a38eb11d64d504a7a22)
[④ Composer のインストール](https://qiita.com

元記事を表示

環境変数を扱う、”Dotenv”

[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の 6日目の記事です。

## 最初に
[Symfony](https://symfony.com)はPHPのフレームワークのひとつです。しかし、公式サイトの説明文には

> Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)

と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、S

元記事を表示

DoctrineとEloquent比較大全6: 条件指定で絞り込み

day6の今日はid以外の項目に条件をつけてレコードを取得する方法を見ていきます。

## Doctrine

“`php
getRepository(Book::class)->findBy([
‘price’ => 1000,
]);

// priceが5000円の本を1冊取得
$book = $entityManager->getRepository(Book::class)->findOneBy(

元記事を表示

【Laravel エラー編】 Migration/Seeder/Factory作成

こんばんは〜

今回は、Factory作成で出会ったエラーちゃん達の紹介と解決方法を書いていきます!

1)`[“SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint”]`
![エラー テーブル作成順番が原因.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748934/def22d05-d7ba-8d30-1fb1-3872bc31da3c.png)

[参考URL]
https://qiita.com/kitakrazy/items/6a3e1936da727dbd92b3

[主な原因→解決方法]
・テーブル生成順序がおかしい → テーブルの生成順序を変えてみる
・外部キーの参照と、のっけるのが違う → 外部キーの箇所を見直す、変えてみる

2)`SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry`
![エラー 被

元記事を表示

【2.設計編】MENTA使ってメンターと開発

こんちわ!

モデリングとDB設計にかなりてこずりました。。。。。

ーーーーーーーーーーーーーー
【開発手順】
⑴画面デザイン(ワイヤーフレーム)    (8〜10h)
✔︎Figma 画面遷移図作成

⑵画面デザインからhtmlコーディング  (15h〜20h)

⑶ワイヤーフレームからモデリング(情報設計)とDB設計 (7h)
✔︎Figamで機能設計図作成
✔︎spreadsheetでテーブルレイアウト作成
✔︎モデリングをgoogleスライド書き出し
✔︎ER図をDraw.ioで作成

⑷URL設計 (1h~1.5h)
✔︎spreadsheetで設計

⑸htmlをlaravelに組み込み ←NOW
⑹DBへ永続化するなど、処理をlaravel内に作成
⑺テスト
⑻デプロイ
ーーーーーーーーーーーーーーー

⑶ワイヤーフレームからモデリング(情報設計)とDB設計
[参考URL]

<<4ステップで作成する、DB論理設計の手順とチェックポイントまとめ>>
https://qiita.com/nishina555/items/a79e

元記事を表示

Web開発でgitのコミットにprefixをつける

## 導入してよかったこと
gitを使い始めてしばらくしてもコミットに何を書けばいいのか迷う時期がありました。
そこでOSSのとあるJSライブラリ開発ではprefixを付けていることを知り取り入れてみたところ
– コミット内容のカテゴリ付けされているみたいになりコメントの取っ掛かりになる。
– コミットに含める内容を意識しやすくなった。
– prefixを見ればロジックに影響がある変更なのかわかりやすくなった。
– 漠然と使っていても体験すればするほど理解が深まっていく。

という効果を実感してきました。
ただライブラリ開発とWeb開発の違いから補足したところや2,3年使ってみて理解が進んだ部分があったのでそれらも一緒にまとめてみます。

## prefix付きコメントについて

コメント例
`feat: Validation種類追加のためValidator追加`

やってることはこのように prefixは `feat:` の部分で内容に合うものを付けてからコメントを書くようにするだけです。

元は Angular.js でのcommit format 内の `` 部分で他

元記事を表示

Docker環境のLaravel 9 + VITEでハマったこと

# はじめに
Docker環境でLaravel9のbreezeを使用した時にcss, jsの参照問題で地味にハマったのでその解決法の共有です。

## 環境
Docker環境と構成: [リポジトリ](https://github.com/hellomyzn/docker_laravel)
– PHP
– Nginx
– Node
– Mysql
– Mysql(test db)
– PHP My Admin
– Ngrock
– Schemaspy
– Schemaspy Server(Nginx)

それぞれのVersion
– PHP: 8.1.13
– Laravel: 9.42.2
– Composer: 1.10.26
– Node: 16.18.1

## 前提
– Dockerを使用してLaravel環境を構築している。
– Breezeをインストールしている。
– Nodeサーバーではnpm run devをしている状態。

## 現象
下記の画像のようにcssとjsの参照がうまくできていませんでした。
![image.png](https://qiita-imag

元記事を表示

データベースとCUIアプリケーションの接続(独学エンジニア レッスン5より)

# 目標
今回やること
* CUIアプリケーションをデータベースに対応させる

タスクばらし
* 読書ログを保存するテーブルを作成する
* PHPからデータベースに接続する
* 読書ログをデータベースに登録する
* 読書ログをデータベースから表示する

# 補足

MySQLの操作の流れ
接続→命令→切断

* MySQLに接続する
* MySQLに命令する
データベースを作成する
テーブルを作成する
テーブルにデータを登録する
テーブルからデータを取得する
* MySQLとの接続を切断する

接続はMySQLに電話をかけて、相手が「今いいよ」といってから命令を出すイメージ
MySQLとの間に確立された接続のことを「コネクション」という

# 読書ログを保存するテーブルを作成する
目的

DockerでMySQLに接続し、読書ログを保存するテーブルを作成する

必要な知識

* MySQLと接続するに

データ分析者の自分にも front end の作業に着手する切っ掛けが!

こちらは今年の [HowTelevision Advent Calendar](https://qiita.com/advent-calendar/2022/howtelevision) の7日目の記事と成ります。
技術的知識の共有と言うよりは、個人的な業務体験を素朴に語って行きたいと思います!

# 背景

元々留学生として初めて来日した自分[^1]が大学時代の長い間、とある抽象的専門分野をいくつかの修士・博士課程を通して追求してから就職する時がいずれ自分にも訪れた。アルゴリズム・プログラミングの基礎知識とは高校時代から親しんでいた学歴で、選んだ職種はデータ分析にしました。HowTelevision との出会いが自分を訪れるまでの段階で、食事配達サービス中心の国際企業の BI (Business Intelligence) チームにおいてデータ分析の経験も積んで来ておりますが、そこの部分を省かせて頂きます。

今年の初夏に HowTelevision と出会って、そのデータ分析チームに加わる事と成りました。6月からの入社で、振り返って考えると当時から現時点まで数ヶ月しか経っていない

勉強が苦手でもプログラミング学習を継続できる方法3選

# はじめに/前提

今回の記事では、本職を継続しながらプログラミング学習を行う会社員の方を対象にした「勉強が苦手でもプログラミング学習を継続できる方法3選」という記事を書いていきたいと思います。

個人的な意見満載なので、その点ご容赦頂けると幸いです。
人それぞれ自分に合った学習方法は異なるので、参考程度に読んでいただければと思います。

# 1. 1日2回勉強を開始する

勉強が苦手な方でも継続できる大事なこと1つ目は、「1日2回勉強を開始する」です!
勉強をする時間帯は朝と夜で、朝は「復習」、夜は「予習」を心掛けます。
ここでの注意点は、夜更かしし過ぎないことです。
開始できる時間が遅くなってしまい日付が変わりそう・・・よくありますよね。
そのような時間になってしまった場合は、学習時間は「10分」でもいいので、まずは始めることが大事です。
短時間の学習でも、向き合う時間が少しでもあれば学習には大きな差が生まれます。

# 2. 月間の目標を決める

勉強が苦手な方でも継続できる大事なこと2つ目は、「月間の目標を決める」です!
人間は目標を持っていないと、だんだん怠けていってし

Webp画像の真髄に迫る!!

皆様こんにちは、玉ちゃんです!!!!

いきなりですが皆様、画像の拡張子といえば何を思いつくでしょうか、pngやjpgなどでしょうかね?

いいえ、時代はwebpです。ウェッピーと読みます。

本日は、まだまだ馴染みないであろうWebpの真髄に迫っていこうと思います。

# Webpについて

> webp(ウェッピー)とは、Googleが開発した次世代画像フォーマットのことであり、2010年に公式発表されました。webpは画像の圧縮率が高く、表示速度の高速化に有利に働きます。

Google先生が開発いたしました。たまーにwebサイトから画像を保存したりするとwebp拡張子のことあります。(テンション上がります)

## ズバリwebp画像を利用するメリット

### 1:画像サイズの軽量化

画質もpngやjpgに劣らない上に、可逆圧縮にも非可逆圧縮にも対応しています!そしてとにかく軽い、軽すぎるのです!!

Webpとjpegを比較した場合約25%程度は軽量化することが可能と言われています。

### 2:ページスピードの改善

画像サイズが軽量化されるということは、Webサイト

PocketMine-MPで任意コードを実行して遊ぼう!(色々と役に立つ EvalBook のご紹介)

# EvalBook ってなに?

PocketMine-MP サーバーの中で書いたコードを即座に実行できるプラグインです。
名前の通り `eval()` 関数を使って、任意コード実行を実現しています。

## どうして使うの?

皆さん、一度はこんなことを思ったことがあるのではないでしょうか。

– デバッグ用のコードを書き直すたびにサーバーを再起動するのがめんどくさい
– 小さな機能を実装して確認するのにいちいちプラグインを作るのがめんどくさい
– Minecraftの中でコードが書けて実行できればいいのになぁ…

EvalBook はそんなあなたのお悩みをすべて解決します!

# EvalBook の導入

## EvalBook のダウンロード

[EvalBook の最新リリース](https://github.com/NeiroNetwork/EvalBook/releases/latest) から `EvalBook_vX.Y.Z.phar` をクリックしてダウンロードします。
ダウンロードしたファイルは、`plugins` フォルダーに入れましょう。

https://

DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑤timezone, localeの設定(全8回)

# はじめに

かくかくしかじかで、Docker で Amazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。
![スクリーンショット 2022-11-30 23.31.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/930bcd24-38e9-316e-bebd-cef83aea5924.png)

全 8 回を予定しています。

[① 作成する環境の確認](https://qiita.com/ryamate/items/47183e1ffd4843ef18fa)
[② Apache の導入](https://qiita.com/ryamate/items/e5ca19aece61717b6a01)
[③ PHP 8.1 系のインストール](https://qiita.com/ryamate/items/7a38eb11d64d504a7a22)
[④ Composer のインストール](https://qiita.com

依存性の注入、”DependencyInjection”

[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の5日目の記事です。

## 最初に
[Symfony](https://symfony.com)はPHPのフレームワークのひとつです。しかし、公式サイトの説明文には

> Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)

と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、Sy

【初心者向け】Symfony6を使ってプロジェクトの作成からフォームを作成しその内容の表示まで

[Symfony Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony) 5日目の記事です✨
昨日は @ttskch さんの「[API PlatformのOpenAPI生成で、プロパティのrequiredをreadのスキーマにだけ適用する](https://zenn.dev/ttskch/articles/c748455b8478d7)」でした!

今回はSymfony Formを使って簡単なフォームを作成しその内容を表示まで行っていきたいと思います!
↓こちらの記事とSymfony4の本が参考になりました!

https://tech.quartetcom.co.jp/2019/12/18/hello-symfony/

https://amzn.asia/d/9yk1K0J

## 目次
– [1.動作環境](#動作環境)
– [2.作成済みリポジトリ](#作成済みリポジトリ)
– [3.手順](#手順)
– [3-1.Composerでプロジェクトを作成する](#composerでプロジェ

LAMP + WordPressの環境構築とサイトのhttps化(第2編)

## はじめに

本記事は、

– 「これまでサーバ構築を行ったことがない」、もしくは「これからサーバ構築をしてみたい!」と考えるエンジニアの卵に向けての記事とする。

– 最低限必要な知識としてLinuxOSに触れ、LAMP環境を構築することによりLinux基本設定の仕方を身に着け、サーバエンジニアとしての勉学の初歩とする。

※また、工数の多さから、記事を3部に分けることとする。本編は第1編である。
※自身のPCがMacであるため、必然的にMacユーザー視点になることを断る。

第1編 『仮想マシンの構築』『仮想マシンとホストのSSH接続』
第2編 『Apache』『PHP』『MariaDB』の環境構築←ここ
第3編 『WordPress』『特定IPアドレス以外からのアクセス拒否制限』『SSL証明書の取得とhttps化』

## 目次