- 0.0.1. PHP メモ
- 0.0.2. PHPでGoogleログインの実装をする方法(2023年11月時点動作)
- 0.0.3. PHPUnitでよく使うMockeryまとめ
- 0.0.4. コマンドを実行、”Process”
- 0.0.5. 郵便番号から住所を自動入力する時に極力ライブラリに振り回されない実装をしたい時の話
- 0.0.6. ChatGPTを使って自動FAQ回答Chatbotを作ってみた
- 0.0.7. Laravelでcsvファイルを簡単インポート
- 0.0.8. GPTsでドキュメント生成ツールを作成しました。
- 0.0.9. 個人的メモ (PHPなど)
- 0.0.10. Laravelでドメイン別にルーティング
- 0.0.11. RUN pecl install imagickでインストールできないからソースからインストール
- 0.0.12. 【TypeScript × PHP】ReactとLaravelで経路共有アプリを作った話
- 0.0.13. 【PHP/Slim4】1.軽量フレームワーク(Slim4-skeleton) 環境構築
- 0.0.14. 【PHP】ファイルサーバーをPHPで作ってみた
- 0.0.15. ローカル環境にLaravelのプロジェクトを作成し、実行するだけ
- 0.0.16. ブラウザでやり取りできるようにしてみた。
- 0.0.17. Amazon SESを用いてHTMLメールを送信する
- 1. AWS Amazon Simple Email Service Test Email
PHP メモ
## PHPについて
### PHP
– PHPとは動的にWebページを生成することができるサーバーサイドのスクリプト言語です。
– [公式サイト](https://www.php.net/)
– [GitHub](https://github.com/php)### Composer
– Composerは、PHPプログラミング言語向けのソフトウェアおよび必要なライブラリの依存関係を管理する標準形式を提供するアプリケーションレベルのパッケージ管理シス テムである。
– [公式サイト](https://getcomposer.org/)### XAMPP/MAMPP
– XAMPPは、インストールすることで完全無償で利用できるApacheディストリビューションです。
– Webサーバ + データベース + Perl, Php, Rubyを一括してインストールすることができます。
– XAMPPは、Windowsで使用できます。
– MAMPPは、MacOSで使用できます。
– [公式サイト](https://www.a
PHPでGoogleログインの実装をする方法(2023年11月時点動作)
本記事は、[めんどい太郎の Advent Calendar 2023](https://qiita.com/advent-calendar/2023/mendoitarou_first_calendar) 1日目の記事です。
# はじめに
この記事は初心者が書いています。
皆さんは普段、様々なサービスにどのようにしてログイン・登録していますか?
今話題のPass Keyを使っている方や、登録したIDとパスワードを使用する人など様々だと思います。
そんなログイン・登録であると非常に便利なのがSNSログインです。
今回はそんなSNSログインの一つである「Googleでログイン」の実装方法をご紹介いたします。
正直、Googleのドキュメントはめちゃくちゃわかりやすいので[公式ドキュメント](https://developers.google.com/identity/gsi/web/guides/overview?hl=ja)を読んで見ることをおすすめします。
案外仕様変更が行われていたりします。
:::note info
2023年にGoogleログインが非推奨になり、
PHPUnitでよく使うMockeryまとめ
# 背景
業務でモックを使用する機会があったのと、以前Mockeryを使用する際に苦戦したこともあって、業務で使用するMockeryの記法をまとめようと思いました。
# モックとは
モックとは、ある機能に似せたメソッドなどを簡易的に用意できるものです。中身を実装していない状態でも見かけだけ似せたものを簡単に作成できます。
※mock up = 実物に似せた模型という意味
PHPで使用できるモックにはMockeryというライブラリがあります。
## モックを利用できる場面
「メソッドAの中で、メソッドB、Cを使用している。しかし、メソッドBを実装していない段階でメソッドAのテストを行いたい」といった場面で使えます。
この例でメソッドBのモックを用意していない場合は、メソッドAのUnitテストを行った際にメソッドBが用意されていないことでエラーが発生してしまいます。
“`php
class A
{
public function a(int $number)
{
if ($this->b($number) && $this->c($num
コマンドを実行、”Process”
[Symfony Component Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony-component)の1日目の記事です。
## PHP内でコマンドを実行 “Process”
[Process](https://symfony.com/doc/current/components/process.html)は、PHP内でサブプロセスとしてコマンドを実行します。PHPでは、`exec`などでコマンド実行できますが、このコンポーネントはOSにより異なる引数のエスケープ処理を行ってくれます。Symfony以外でも使えます。
### インストール
“`shell
composer require symfony/process
“`### サブプロセス実行
指定のコマンドで`Process`オブジェクトを作って、 `run()` を呼び出すことで実行できます。
“`php
use Symfony\Component\Process\Exception\ProcessFailedE
郵便番号から住所を自動入力する時に極力ライブラリに振り回されない実装をしたい時の話
ラノベみたいなタイトルになっちゃいましたが許してください。
# 郵便番号から住所を自動入力させたい
そんな事よくありますよね。世の中には便利なAPIがたくさんありますが、有料だったりAPIの制限があったり、Formの形式にしか対応していなかったりで、実際のサービスに組み込む時に制限を受けてしまう事が多々あります。既に作ったformに良い感じに当てはめる方法を共有します。## 前提
厳密なデータ管理は前提としません。もし厳密にデータを管理する必要があるのであれば、公開されている情報を取得し、自前でDBを用意して更新なども自分でやる必要があると思います。
郵便番号に対して紐づけられる住所は1:1ではないので、そこも考慮してのデータ設計が必要です。
今回想定している用途としては、ディレクターから「郵便番号を入力したらそれっぽい住所が補完される機能って欲しいよねー」って言われた時ぐらいのフランクなやつです。## 使うもの
– https://github.com/yubinbango以上です。
## 使い方
とにかくサンプルコードをクレ!って人のためにフロントっぽい感じのもの
ChatGPTを使って自動FAQ回答Chatbotを作ってみた
## はじめに
はじめました。BitStar CTOの山下です。
BitStarでは主に160万件のデータを取り扱う日本最大級のソーシャルデータベースを開発しています。## 開発の背景
2023年で一番盛り上がった話題といえばChatGPTではないでしょうか?
おそらくエンジニアの方であれば一度は触ったことあるのではないでしょうか?
BitStarでも社内でCPOの出水より「BitStar Labo」というワーキンググループを立ち上げまして、社内で勉強会を実施していました。エンジニアはもちろん映像企画・編集や営業の方も参加してChatGPTを活用したディスカッションを行っておりました。
大きく2つのチーム、画像生成系のCreationチームと、文章生成系のTransformationチームに分かれて週次で意見交換を行ってきました。
今回はその中でも実際に社内運用を始めたChatGPTによる自動FAQ回答Chatbotを作りました。**BitStar Labo Kickoff 資料**
Laravelでcsvファイルを簡単インポート## はじめに
選択したCSVファイルがインポートされるまでの流れを簡単に作ってみたいと思い、必要最低限で実装。## テーブル定義
| カラム | 型 | CSVファイル読み込み対象 |
| —- | —- | —- |
| id | bigint(20) | |
| name | varchar(255) | ○ |
| age | varchar(255) | ○ |
| address | varchar(255) | ○ |
| created_at | timestamp | |
| rpdated_at | timestamp | |### 今回使うcsvファイル
![スクリーンショット 2023-11-29 22.22.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634151/45383963-be4f-4bef-0e80-d7a707793b09.png)## 実際の動き
### インポート画面
![スクリーンショット
GPTsでドキュメント生成ツールを作成しました。
# GPTsでドキュメント生成ツールの作成
GPTsでプロンプトにコードを貼り付けるだけで関数のドキュメントや1行1行に処理の説明を入れてくれる「**Coding Documentation GPT**」を作成しました。使ってみてください。
使用した後に意見をいただけると幸いです。https://chat.openai.com/g/g-6V7SNo6F2-coding-documentation-gpt
—
## 使い方
ドキュメントや生成したいコードを貼り付けるだけです。
下記みたいに雑にプロンプト投げてもらって大丈夫です笑プロンプト例
“`text
User
import os
import tweepydef tweet(consumer_key, consumer_secret, access_token, access_secret):
#オブジェクト作成
client = tweepy.Client(
consumer_key = CONSUMER_KEY,
consumer_secret = CONSUMER_
個人的メモ (PHPなど)
PHPやSQLなどの学習内容などを追加していく。
特にメモしておいた方が良さそうなことなど。
学習リポジトリは[ここ](https://github.com/Hiro710/PHP_learning)頑張る🐘~
# PHP
### 共通事項
変数定義、代入、出力などの後ろに「;」を必ずつける。
つけないとエラーになる。HTML内にPHPタグを挿入
PHPタグの詳しい説明は[公式サイト](https://www.php.net/manual/ja/language.basic-syntax.phptags.php)へ。“`
“`PHPではechoタグの省略形も使える
“`
// 以下は と同じ意味
= 'Hello' ?>
“`### PHPを外部ファイルから読み込みたい時
非常によくまとめられている。
https://qiita.com/nogson/items/db15d6e35433154fce8e
ほか参考
https://kanda-
Laravelでドメイン別にルーティング
Laravelでドメインごとにルーティングを分ける方法は、公式ドキュメントにて丁寧に説明してあります。
その上で、実際に開発していく中で必要になった応用的な内容をまとめます。
## 基本形
https://readouble.com/laravel/10.x/ja/routing.html公式ドキュメントから抜粋して追記
“`php:routes/web.php
Route::domain(‘{account}.example.com’)->group(function () {
Route::get(‘user/{id}’, function (string $account, string $id) {
// accountとidのように、パスとドメインからパラメータを取得できる。
});
Route::post(…
// ルーティングルールを列記していく
});
“`
この例の場合、例えばECプラットフォームやブログサービスのように、アカウントごとにサブドメインを分けたりする時に便利に使えるかと思います。
サブドメインの
RUN pecl install imagickでインストールできないからソースからインストール
先日までpecl install imagickができていたのに出来なくなって
昔とった杵柄(phpize configure make make install)で頑張ってみた## 駄目だったパターン
Dockerfile
“`Dockerfile
FROM php:8-apache-bullseye
〜〜
RUN apt install -y imagemagick libmagickwand-dev
RUN pecl install imagick
“`
“`
#17 15.94 PHP-Parser-5.0.0alpha3/lib/PhpParser/PrettyPrinterAbstract.php
#17 15.94 PHP-Parser-5.0.0alpha3/lib/PhpParser/Token.php
#17 15.94 PHP-Parser-5.0.0alpha3/lib/PhpParser/compatibility_tokens.php
#17 15.94 PHP-Parser-5.0.0alpha3/phpstan-baseline.neon
【TypeScript × PHP】ReactとLaravelで経路共有アプリを作った話
# 🚙 はじめに
ReactとPHPを用いてwebアプリを開発したので制作記録として解説を掲載したいと思います.また筆者はフルスタック開発初心者であるため,至らぬ点があるかと思われますがご了承くだいさい.# 🚙 自己紹介
初めまして.趣味でweb開発を勉強している273*(ツナサンド) / Kei.と申します.関西の大学生です.最近はフルスタック開発を行なっています.初心者です.# 🚙 完成品
以下のリンクからwebアプリにアクセスできます.https://github.com/273Do/Route8
[サイトURL](URL)
最終調整につき公開停止中
# 🚙 制作に至った経緯
私は趣味で友人とサイクリングやドライブによく行くのですが,経路を選定する際に他の人の経路を参考にしたいと感じたことが多々ありました.「経路を共有できるサービス」は既に存在しますが,私調べではただ経路を共有するだけのものばかりでした.そこで,独自のサービスを開発したいと思いました.走行時の感想や天候,移動手段なども併せて投稿できるようにすることで,より詳しく経路を選定することができるように
【PHP/Slim4】1.軽量フレームワーク(Slim4-skeleton) 環境構築
軽量な機能のWeb APIを作成したい
Laravelのようなフルスタックではなく、軽量なフレームワークで簡単に構築したい
ということで、Slim4を使ってみたときのメモ書き## Step1.Slim4-skeleton環境の構築
git bashなどcomposeが使える環境を用意し、以下のコマンドを実行
Slim4-skeletonプロジェクト一式がダウンロードされる
~~~js
composer create-project slim/slim-skeleton [任意のプロジェクト名]
~~~#### 補足.フォルダ構成について
最上位の親ディレクトリは、上記のコマンドで入力した「プロジェクト名」でフォルダが生成される
|階層1|階層2|階層3|編集|概要|
|—|—|—|—|—|
|app|dependencies.php||〇|ライブラリのコンテナ生成
Twingなどのライブラリをcomposeで追加後、依存関係の解決|
||settings.php||〇|環境変数設定やライブラリの設定
||middleware.php||〇|ライブラリを
【PHP】ファイルサーバーをPHPで作ってみた
こんにちは、技術猫です。
(初投稿です)ApacheとPHP(とTailwind CSS)でファイルサーバーを作ってみました。
この記事では、ログイン機能に必要なJSONファイルの読み取りの方法や、
ファイルのアップロード機能の実装方法などを紹介します。
そしておまけで、PHPでのコマンドの実行方法などを紹介します。:::note info
コード内のコメントアウトされてる部分を読むと意味がわかるよ!
::::::note alert
この記事で紹介するコードの一部は、セキュリティが万全ではない可能性があります。
社外などに公開することは推奨しません!
:::## ソース
https://github.com/DiamondGotCat/tcloud
作成した全部のソースコードはGitHubのreleaseにてMITライセンスで配布しています。
一応ApacheとPHPがあれば使えます。(テスト環境はmacOS)
## ログイン機能
ログイン機能は、最初はパスワードハッシュをPHP内で書いていましたが、
後から出てくる「ユーザー追加機能」という機能が必要なため、
ローカル環境にLaravelのプロジェクトを作成し、実行するだけ
開発環境はWindows10 Pro(64bit) + PHP 8.1.9 + Composer version 2.4.1。
1 コマンドプロンプト上でカレントディレクトリをCドライブ直下に移動
“`bat
cd c:\
“`2 コマンドプロンプト上でLaravelのプロジェクトを実行
“`bat
composer create-project laravel/laravel laravel_test_repo
“`:::note info
インストールが実行されるので、しばらく待機する。
Laravelのバージョンは10.2.9。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739418/f7d8d072-f93f-c0fd-a670-322663e63721.png):::
3 インストールが終了したら、コマンドプロンプト上で、プロジェクトのディレクトリへ移動する
“`bat
cd laravel_test_repo
“`4 コマンドプロンプ
ブラウザでやり取りできるようにしてみた。
![Animation_xampp_on2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625232/9c1feb9c-b853-c831-814d-665762e559a8.gif)
備忘録 ホームページにも忘れずに書いておくこと。
やったことは、インストールと立ち上げ。
apache のconfigに書き足す事。
textを作り、書き込んで保存すること。
アドレスは忘れないようにメモをしておくこと。
Apach2_4 php8apach2_4.dllのためXampp3を導入。ruby,pythonはapache2.2でも動く。
サーバーアドレスは127.0.0.1 ネームはlocalhost メールアドレスは内緒や。
後は、出たとこ勝負。xamppは警告出すから、フォルダーを作っておく。他もアドレスのため独立させた「-」はプログラムでまいなすに間違わない様に「_(アンダースコア)」わからんことはcopilotiに聞く。
VSCoodo,terapad,Screen To Gif,Visual S
Amazon SESを用いてHTMLメールを送信する
# SDKをインストールする
“`
composer require aws/aws-sdk-php
“`# SDKを用いたコード
“`PHP
use Aws\Ses\Exception\SesException;
use Aws\Ses\SesClient;$ses = new SesClient([
‘profile’ => ‘default’,
‘region’ => ‘us-west-2’, //任意のもの
‘version’ => ‘2010-12-01’
])//送信対象のメールのリスト
$mailList = [‘aaa@aaa.com’, ‘bbb@bbb.com’];//HTMlメールのボディ
$html = ‘AWS Amazon Simple Email Service Test Email
‘.
‘This email was sent with ‘.
‘Amazon SES
あなたの作った画像アップローダー、投稿者の個人情報ダダ洩れだよ!
# 自前のアップローダーで起きる問題
## 開発者 ――
インフルエンサーとファンをつなぐコミュニティサイト「Qitter」を作ったぞ!
テキストと画像をPOSTするだけのシステムだから、全部自前の実装で作っちゃったぞ。![job_programmer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151137/c22ba9e5-5df0-8906-6dbf-ca44cccc30b2.png)
## 投稿者 ――
今日もQitterに投稿しなくちゃ!
「晩ご飯なう!」![photo_jidori.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151137/be600a9a-44fa-5be4-6d0b-353de9dec033.png)
## 閲覧者 ――
「推しちゃんの投稿キター!」
「推しちゃんの投稿した画像は全部保存しちゃうぞ!」![kanki.png](https://qiita-image-s
ドメイン駆動設計(DDD)とクリーンアーキテクチャの違いについて覚え書き
[こちら](https://qiita.com/remi_ts/items/cf6d1b3b131db4cd1e79)の記事にも書いた事のおさらいと補足。
その後、サンプルプログラムによる差異を掲載。# 二つの違い
:::note info
ドメイン駆動設計(DDD)
焦点
DDDは、複雑なビジネスロジックの専門知識をソフトウェア設計の中心に置き、ドメイン内での言語(ユビキタス言語)やモデルを重視主要概念
* ドメインモデル
ビジネスドメインの概念とその関係をモデル化したもの。
* ユビキタス言語
ビジネスと開発チーム間のコミュニケーションギャップを埋める共通言語
* 集約
関連するオブジェクトの集まりで、一貫性のある変更単位を提供メリットとデメリット
利点
ビジネス要件と密接に連携した設計が可能。欠点
* 複雑性
ビジネスロジックが複雑なアプリケーションに適している分、小規模あるいは単純なアプリケーションでは過剰となる。
* 実装の難
【PHP8.3】ランディングページが日本語訳されてなかったので深い悲しみに包まれた
[PHP8.3のランディングページ](https://www.php.net/releases/8.3/)がありますね。
右上のChange languageに日本語がありませんね。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/86f5c968-9802-a18c-fabf-889824e4204f.png)
深い悲しみに包まれたので増やした。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/eb7a4ef4-3541-d577-3c91-d537afc638fa.png)
# fork
ランディングページの最下段、`View Source`ってところから[ドキュメントのソース](https://github.com/php/web-php)に進めます。
そこで右上の`Fork`ボタンを押せば、自分のスペースにforkされます。# branch
作業用にブ