- 1. 情弱がMovable TypeのAPIをさわってみたよ
- 2. (archtechx/enums) Enum Helper の使い方 対話篇
- 3. SI→Web業界への転職に利用したポートフォリオのDocker環境を振り返る
- 4. 他のアプリケーションにメッセージを送信、”Messenger”
- 5. 【PHP Next】PHPにclamp関数がほしい
- 6. 年間400リリースを実現するSTYLYのサーバーサイド開発体制
- 7. PHP laravel CarbonのオブジェクトをCarbonImmutableに変換する
- 8. FuelPHP で PHPUnit を導入する際に、はまっとところ
- 9. 【SEO対策】自社サイトのSEO対策で実施したこと
- 10. PHPでPDFに文言の埋め込みをする方法を試す
- 11. いろいろなサービスで通知する、”Notifier”
- 12. SerializerとValidatorでPOSTを処理する
- 13. [Laravel × AWS Lambda] Brefを使って、サーバレスでLaravelを実行してみた!
- 14. 14年間継ぎ足し続けられた課金ページを分離して整理した話
- 15. php スタンプ
- 16. 【Laravel + ajax】画面遷移しないでフォームに入力した内容を表示する
- 17. 自宅のネットワークからMAMPのlocalhostにアクセス
- 18. PHP laravel セッションに値が入っているかテストする
- 19. ワイ「タイプヒントしただけなのに、、、」
- 20. for文の追加によってテスト環境が停止しかけた話【PHP】
情弱がMovable TypeのAPIをさわってみたよ
先日Movable Typeが提供しているRest APIに弄ばれてみたので、その内容を書いていこうと思います。
# 書いた人のスペック
– 2021年ごろまでwebディレクターっぽいことをしていた
– html・cssがほんのり書ける
– phpはwordPressでさわったことがある程度(雑魚)
– プログラミングの教育は受けていない# Movable TypeのAPIって??
> Movable Type 6 から搭載されている Web API です。さまざまなプログラム言語から REST/JSON方式で Movable Type にアクセスし、データの取得や更新ができます。
>
> Data API を使えば、CMSで管理しているデータを、サイト上で自由に呼び出したり、また、独自の管理画面やアプリの開発や、他のプラットフォームとの連携などを容易に行うことができます。https://www.movabletype.jp/developers/data-api/getting-started/
なるほど~~?
テンプレートの再構築をしなくても記事のデータとかをいろんな
(archtechx/enums) Enum Helper の使い方 対話篇
[PHP Enum(列挙型)基礎 対話編](https://qiita.com/KeijiYONEDA/items/b300048b1b45e7d68b27)の続きです
*PHPとLaravelを利用した血液型占いアプリを作成することになった”後輩エンジニアくん”。*
*ちょっと前に登場した、PHPのenum(列挙型)型を使おうとしたが、
正直そのまま使うにはキツいところもあり、いい感じのヘルパーがないか探していると…*後「”Laravel Enum Helper”でググったら、早速使えそうなのをみつけましたよ。[Laravel News](https://laravel-news.com/enum-helpers-for-php)で」
先「どんなん?」[archtechx/enums: Helpers for making PHP enums more lovable.](https://github.com/archtechx/enums)
先「どうやって使うの?」
後「traitとして使います」
先「trait..そういえば、enumは継承使えないんだっけね」
SI→Web業界への転職に利用したポートフォリオのDocker環境を振り返る
# 概要
これはWano Group Advent Calendar2022 13日目の記事です。
https://qiita.com/advent-calendar/2022/wano-groupWanoで[Video Kicks](https://www.tunecore.co.jp/video-kicks?via=115&gclid=Cj0KCQiAnNacBhDvARIsABnDa69Iao9-3UA-EV_kKfrduesrPQv0iY11LOWSoHOxNWMAhM-GxBE64qcaAskqEALw_wcB)という
ミュージックビデオをiTunesやApple Music、レコチョクMUSICストア、dミュージック、GYAO!、LINE MUSICなどのビデオ配信ストアで配信/販売できるサービスを開発しています。私は2022年の4-5月に転職活動を行い、SI業界からWeb業界に転職しました。
その中でdockerを利用していましたが、今思うと見よう見まねでなんとなく使ってしまっていました。
今後業務として本格的にDockerを使っていくために、転職時に利用したポー
他のアプリケーションにメッセージを送信、”Messenger”
[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の13日目の記事です。半分きた。
## 最初に
[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のコンポーネ
【PHP Next】PHPにclamp関数がほしい
CCさくらとは何の関係もありません。
clampは何かというと、[CSSには既に実装されている](https://developer.mozilla.org/ja/docs/Web/CSS/clamp)のでそれを見るとわかりやすいですが、引数の数値を範囲内に納めてくれるというものです。
たとえば`clamp(min=100, max=200)`に150を渡すと150が返ってくる、0を渡すと100が返ってくる、300を渡すと200が返ってくる、という感じです。ということでPHPにもclampがほしいというRFCが提出されました。
以下は該当のRFC、[PHP RFC: clamp](https://wiki.php.net/rfc/clamp)の紹介です。# PHP RFC: clamp
## Introduction
clampは、値が範囲内にあるかをチェックします。
範囲内であればその値を返し、範囲外であれば境界値を返します。ユーザランドの実装は幾つか存在しますが、[min](https://www.php.net/manual/en/function.min.p
年間400リリースを実現するSTYLYのサーバーサイド開発体制
# STYLY APIの開発体制について
この記事は【STYLY主催】XR Advent Calendar 2022の12月12日分の内容です。
私自身、色々な記事を書いていますが、実はPsychic VR Labでサーバーサイドの責任者をやっています。ここでは、今まであまり多く語ってこなかった、STYLYのサーバーサイド開発の話をしようと思います。**STYLYのサーバーサイドを開発する専業の正社員は私だけです。**
STYLYのサーバーサイドの開発はPOが1人、50%稼働の業務委託エンジニアさんが2,3人います。実際にコードを書くのは、2~2.5人/月ぐらいで開発を行っています。
**そんな中でSTYLYのAPIのリリースは11月末時点で2022年中に418回行っています。一番多かったのが8月で1ヶ月あたり60回でした。**![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/4c749381-f42d-f48a-a647-2fa162785fb6.png)
たぶ
PHP laravel CarbonのオブジェクトをCarbonImmutableに変換する
:::note info
この記事は[miriwoお一人様 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/miriwo)の12日目の記事です
:::# 概要
– CarbonのオブジェクトをCarbonImmutableに変換する方法をまとめる
# 方法
– `toImmutable()`関数を用いることでCarbonのオブジェクトをCarbonImmutableに変換する事ができる
– 下記の様に使用する。(laravelのtinkerで確認)“`php
use Carbon\Carbon;$now = Carbon::now();
$nowImmutable = $now->toImmutable();$nowImmutable->isImmutable(); // true
“`
FuelPHP で PHPUnit を導入する際に、はまっとところ
備忘録
## PHPUnit のバージョンが分からない
FuelPHP は開発が進んでいるようで、進んでいるか分からない([core](https://github.com/fuel/core)は開発されているが、[fuel](https://github.com/fuel/fuel)は開発が止まっているので…)ので、PHPUnit は安全に昔めの 4.8 台をインストールしました。
新しい PHPUnit だと、`PHPUnit/Autoload.php` がないので、使えません。“`json:composer.json
“require”: {
… 省略,
“phpunit/phpunit”: “^4.8”
},
“`## PHP7 以前 の each などに関わるエラー
PHP8 を使っている場合は、出てきます。
黙って、PHP7 をダウンロードしましょう。自分は 7.3.33 にしました。
今回は、phpbrew というツールを使ってダウンロードします。https://qiita.com/Nedward
【SEO対策】自社サイトのSEO対策で実施したこと
こんにちは、
今回は、弊社自社サイトの[madree(マドリー)](https://madree.jp/)で実施したSEO対策をご紹介したいと思います。実際に検索順位が1位を獲得したものもあるので、SEO対策でお困りの方はぜひご覧ください。## 実施したSEO対策
実施したSEO対策は以下のとおり。
+ タイトルやディスクリプション、H1タグなどの改善
+ サイトのスピードアップ
+ 記事リライト## タイトルやディスクリプション、H1・H2タグなどの改善
SEO(検索エンジン最適化)とは、検索エンジンの特性を理解し、それを利用してウェブサイトの自然検索順位を向上させることを指します。H1タグはHTMLの1つの要素で、テキストを大きな見出しとして表示するために使用されます。
SEO対策では、H1タグを適切に使用することで、検索エンジンがウェブサイトの内容を理解しやすくなり、サイトの自然検索順位が向上する可能性があります。しかし、H1タグを過剰に使用すると、逆に検索エンジンからの信頼が失われることもあるため、適切な使い方が重要です。
[madree(マドリー)](https:/
PHPでPDFに文言の埋め込みをする方法を試す
# はじめに
PDFを作成する方法の1つとして、以下の方法を試してみました。
– ひな形PDFを用意する
– 空欄に文言を埋め込んで最終形のPDFにするサンプルとして中央区の申請書を利用しています。
https://www.city.chuo.lg.jp/smph/kurasi/sinsei.html
↑から取得したPDFがこちら。
このPDFの空欄に文言を埋め込みました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273897/626772f7-8e51-a6ef-641b-f52ac04a58fe.png)
# 前提事項
– 環境
– Windows 10
– PHP 7.4.28
– Composer 2.4.4# 成果物
完成したものがこちら。ソースは詳細の方を参照ください。
ひな形のPDFに赤字で文言を埋め込むことができました。– 良い点
– 空欄に文言を埋め込むだけで良いのは楽
– レイアウトと中身が分離
いろいろなサービスで通知する、”Notifier”
[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の12日目の記事です。
## 最初に
[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
SerializerとValidatorでPOSTを処理する
[Symfony Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony) 12日目の記事です✨
普段、フォームなどのPOST処理をするときは[Formコンポーネント](https://symfony.com/doc/current/forms.html)を使うと思います。
今回はSerializerとValidaotrを使って、POST処理をします。APIで以下のようなJSONが送られてきた想定で、書籍の登録をします。
“`json
{
title: “ちょうぜつソフトウェア設計入門”
price: 3080
authorId: 1
}
“`なお、authorId:1で紐づく著者は田中ひさてるさんです。
## Entity側
いつも通りつくればOKです。
“`php:Author.php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Vali
[Laravel × AWS Lambda] Brefを使って、サーバレスでLaravelを実行してみた!
## まえがき
こんにちは。
[bref](https://bref.sh/docs/)を使って、AWS LambdaでLaravelを実行してみました。そこで、この記事では、brefの簡単な紹介をしつつ、主に「使ってみて感じたメリット」を書いています。
感想のみが気になる方は、この記事の[使ってみて感じたメリット](#使ってみて感じたメリット)だけ読んでもらえると。## brefとは?
brefは、AWS Lambda上でPHPを実行するためのランタイムを提供するパッケージです。
紹介は公式を読んでもらった方が早いです。https://bref.sh/docs/
> PHP サーバーレスを実行する場合:
> – サーバーをセットアップする必要はありません。クラウドプロバイダーがそれを処理します.
> – 使用した分だけお支払いいただきます。
> – アプリケーションは自動的にスケーリングします。まんまサーバレスのメリットって感じですね。
ただ、bref特有のキモは下記です。
– LambdaでのPHPのランタイムを手軽に準備できる
– Laravel・Sym
14年間継ぎ足し続けられた課金ページを分離して整理した話
こんにちは。
(ニコニコ)プレミアム課金開発チームに所属しております @ingen084 です。
去年は [ニコニコで13年運用された決済システムが移行されてからのその後の改善](https://qiita.com/ingen084/items/17cc2be96727271061a8) を投稿させていただきましたが、この投稿は前座で、実際に環境が整ったところでシステム上でどのような変更を加えていったかなどを書いてみたいと思います。
## (改めて)ニコニコプレミアムについて
|入会ページ|退会ページ|
|:-:|:-:|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100304/a918b144-3c4e-fbff-d6f9-01c95079f71c.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100304/9c0cd971-d2af-bbdd-a86e-eddf
php スタンプ
“`
echo date(‘Y年m月d日’,strtotime(‘1670565554’));
⇒1970/01/01
echo date(‘Y年m月d日’,’1670565554′);
⇒2022/12/11
【Laravel + ajax】画面遷移しないでフォームに入力した内容を表示する
## サンプル
![qiita.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218398/ea89e25e-f5f7-c14e-db9f-15504814ad85.gif)## コード
### ルーティング処理
“`\routes\web.php
// 表示するメイン画面
Route::get(‘/splite_blade/’,’SpliteBlade\SpliteBladeController@index’)->name(‘splite_blade.index’);
// フォームの内容を受け取って、処理をして返す
Route::post(‘/splite_blade/ajax/’,’SpliteBlade\SpliteBladeController@ajax’)->name(‘splite_blade.ajax’);
“`### コントローラー
“`\app\Http\Controllers\SpliteBlade\SpliteBladeController.php
自宅のネットワークからMAMPのlocalhostにアクセス
## 経緯 ##
自宅のみで利用するWEBアプリケーションを作成し共有するにあたって、レンタルサーバを利用するにはレンタル費もかかってしまう為、合理的ではないと思い普段開発時に利用しているMAMPのローカルサーバでどうにかできないかと調べた結果、案外簡単に設定できそうなのでやってみることにする。## 必要なもの ##
* MAMP
* httpd.conf
* Wi-FiのIPアドレス## 手順 ##
![スクリーンショット 2022-12-11 12.14.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952182/a165534d-30d8-e967-171f-0b50263eb044.png)
![スクリーンショット 2022-12-11 12.33.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952182/1e56ed3a-1715-8b4b-1143-0a8034555f8e.png)
PHP laravel セッションに値が入っているかテストする
:::note info
この記事は[miriwoお一人様 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/miriwo)の11日目の記事です
:::# 概要
– セッションに任意の値が格納されていることをチェックするテストを記載する方法をまとめる
# 方法
– 下記の様に記載することでセッションに値が格納されているか否かをチェックする事ができる。
“`php
$response->assertSessionHas(キー名, 値);
“`– 例えば、キー名が「name」の値が「テストユーザー名」がセッションに入っているかチェックする場合下記の様に記載する。
“`php
$response->assertSessionHas(‘name’, ‘テストユーザー名’);
“`
ワイ「タイプヒントしただけなのに、、、」
Laravel Advent Calendar 2022 11日目の投稿です。
頭空っぽで読めると思います。# ある日の仕事中
YouTube 「ーーー!ーーーーーー!」
ワイ 「やっぱYouTubeは最大の娯楽やな!ガハハ!」
先輩 「ワイくん、ちょっといいかな?」
ワイ (ビクッ!
ワイ 「もちろんです!」(ショートカットポチー
先輩 「実は改修をしたい部分があって」
先輩 「このメール送信の部分なんだけど、、、」
先輩 「かくかくしかじかで、、、」
先輩 「今お願いできそうなのがワイくんしかいないんだけど」
先輩 「お願いできるかな?」
ワイ 「任せてください!」
先輩 「じゃあどれくらいで終わりそうか見積もりができたら教えてくれるかな?」
ワイ 「はい!」# 一時間後
YouTube 「ーーー!ーーーーーー!」
ワイ 「やっぱYouTubeは最大の娯楽やな!ガハハ!」
ワイ 「、、、!」
ワイ 「そういえば見積もりを依頼されてたんやった」
ワイ 「しゃーない、続きは見積もりが終わってからやな」
ワイ 「確かメールの処理って言っとったからこの辺やろか」ポチー#
for文の追加によってテスト環境が停止しかけた話【PHP】
# 0.はじめに
SaaSの開発・保守運用をしています。
今日は、**たった数行の改修**で、大規模サービスのテスト環境が全て停止しかけた話をします。# 1.経緯
PHPで書かれたシステムの改修時に発生した問題になります。
“`php
for ($i = 0; $i <= $num; $i++) { // ~~~数百行に渡る処理 } ``` 上記のような処理があり、`$num`にはユーザーが任意で入力した1~100の値が入ります。 この処理の内部を改修する事になりました。 ```php for ($i = 0; $i <= $num; $i++) { // ~~~数百行に渡る処理 for ($i = 0; $i <= 3; $i++) { // ~~~簡単な処理 } // ~~~数百行に渡る処理(PDOを介したデータベースへのインサート処理) } ``` 大雑把な内容はこのような改修になります。 この時点で何が起きるかは分かると思いますが、外側のループ変数に使われる`$i`は、内部ループに入った時にリセット