猫でもわかるWebプログラミングと副業

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

PHPStan の「スタブファイル」について

はじめに スタブファイル スタブファイルについて スタブファイルも PHPStan の解析にかけたほうがいいのか? スタブファイルに関する設定 スタブファイルで Class not found エラーが発生した場合 訳者補足: 最後の「“Class not found” in a stub file?」と…

Java の Web フレームワーク Quarkus を Google App Engine で使ってみる with Gradle

Quarkus について 構成 とりあえずローカルで動かすまで Quarkus コマンドのインストール Quarkus プロジェクト作成 Quarkus ローカルサーバー起動 Google App Engine に Quarkus をデプロイする Google App Engine について Google App Engine の有効化 Goo…

手順書がすぐに陳腐化してしまうのはなぜなのか【ドキュメント管理】

どこの組織でも手順書が陳腐化しているのをよく見る。(「陳腐化」とは、ドキュメントのメンテナンスがされておらず、古い状態になっていることを指すものとする) 組織に入って、リリース作業をしようとして、手順書どおりにやっても動かない。そもそも手順…

AWS ECS + Java アプリケーションの立ち上がりが遅い場合のヘルスチェック設定【AWS CDK】

AWS ECS + Java の場合の注意点と解決方法 ヘルスチェックの猶予期間(healthCheckGracePeriodSeconds)について AWS CDK で healthCheckGracePeriodSeconds を設定する ECS のログでヘルスチェックの様子を確認する AWS CDK でヘルスチェック周りの設定 参…

ポケモンスリープでごはんを作るのが面倒な件【雑談】

2019年に発表された『ポケモンスリープ』(Pokémon Sleep)。2020年リリースと発表されましたが、その後何も音沙汰がなく、2023年7月になり突然リリースされました。 リリースから半年くらいは私もプレイしていたのですが、飽きてしまい、しばらくプレイして…

CDK for Terraform の multi-stack 構成の設計

はじめに スタックをどのように分けるか 複数のスタックをまとめてデプロイしたい場合 ワイルドカードでのデプロイの注意点 複数スタックのデプロイ時には --parallelism コマンドを利用する cdktf diff コマンドは multi-stack に対応していない その他ベス…

Terraform / CDKTF で google_monitoring_dashboard が常に差分として出てきてしまう

結論としては、dashboard_json.gridLayout.columns を string で指定しないといけないところ、 int (number) で指定していたことが原因でした。 型が間違っていると常に差分として検出されてしまうようで、以下のような差分をよく見ると、型がずれているのが…

Laravel の Scheduler を AWS ECS と CloudWatch Logs に最適化させるには

前提 Laravel のスケジューラーを Docker で動かす ログ(CloudWatch Logs)の課題 JSON 形式でログを出す まとめ 前提 PHP + Laravel で、Web サービスを開発しており、Laravel で実装した Web API が WAS ECS (Elastic Container Service) で動いているの…

AWS CloudWatch Logs 向けに Laravel のログを JSON で出力する方法

はじめに JSON 形式のログを送ると何がいいのか 今回のサーバー構成 Laravel から JSON でログを送るには スタックトレースも出したい 課題 まとめ はじめに この記事は Qiita Laravel Advent Calendar 2023 の3日目の記事です。 1日目はこのカレンダー作成…

AWS CDK では既存の VPC Endpoint に Security Group を追加することはできないようだ

やろうとしたこと VPC Endpoint の仕様について VPC Endpoint に Security Group を追加しようとした どう解決したか もう少し詳細に調査してみる CDK の InterfaceVpcEndpoint について アクセスが Interface VPC Endpoint を経由しているかどうかの確認 他…

AWS CDK で ECS Exec を有効にしてコンテナのシェルに接続する

はじめに ECS Exec が有効になっているかどうか確認する方法 ECS Exec の有効化 AWS CDK の修正 タスクを再起動 AWS Exec 実行例 参考 はじめに ECS Exec を使うと、コンテナのシェルに接続できるので(docker exec ができる。SSH みたいな感じ)、AWS ECS …

Code Pipeline で CloudFront のキャッシュを飛ばす【React, S3, CloudFront】

概要 CodeCommit を使うメリットはあるのか? AWS CDK のスタックの分け方について S3 と CloudFront の構築 CodePipeline, CodeBuild の構築 CodePipeline と CodeBuild の関係について CodePipeline のプロジェクト作成 CodePipeline に CodeCommitSourceA…

AWS CDK と CDK for Terraform 比較 実際のプロダクトで使ってみた

はじめに AWS とそれ以外(Google Cloud 等)を混ぜて使う場合は? AWS CDK には便利なライブラリがついている AWS CDK 実行時の IAM 管理が複雑 どっちのほうがデプロイが速い? AWS CDK のほうが AWS 謹製だからいいのでは? ドキュメントの充実さ まとめ …

【PHPStan】単に Error と表示され、ファイル名がわからない: Ignored error pattern ... was not matched in reported errors.

PHPStan を実行していると、以下のように、単に Error とだけ表示された XXXXXXXXXX の部分には人によって色々な文章が表示される -- ----------------------------------------------------------------------------------------------- Error -- ---------…

AWS CDK で構築した AWS CodeBuild の docker build で NO_PUBKEY エラー

発生した現象 結論 詳細 発生した現象 AWS CDK で CodeBuild のプロジェクトを作成し、Docker のビルドを行ったところ、 Dockerfile の RUN apt-get update で以下のようなエラーが発生しビルドに失敗してしまった。 Err:1 http://security.ubuntu.com/ubunt…

あの「スモークターキーレッグ」風味のパスタスナックが【ディズニーランド40周年】で登場

ディズニーランド40周年グッズの中には様々なお菓子があります。パッケージでイベントの雰囲気を楽しみつつ、他のグッズと違い、食べてしまえばかさばらないので、個人的には結構買ってしまうグッズです。 その中で特に気になったのが、こちらのパスタスナッ…

ディズニーランド40周年 ドリームガーランドを買う

ドリームガーランドについて ドリームガーランド + バッグチャーム 私は何を買ったのか ドリームガーランドについて 東京ディズニーランド40周年のグッズといえば「ドリームガーランド」です www.tokyodisneyresort.jp ディズニーリゾートの各ショップで700…

JavaScript / TypeScript の Logger 選定 on Docker環境

はじめに ライブラリの選択肢 実装 シンプルな実装 凝った実装 はじめに TypeScript + Docker でサーバーサイド開発をしており、コードに Logger を導入したかったため、ライブラリ選定を行いました。 今回は Docker を使っており、 AWS ECS にデプロイして…

Java Jersey 2.26 Release Notes 日本語メモ

これはなに Jersey 2.26 のリリースノートの内容のメモです。 https://eclipse-ee4j.github.io/jersey.github.io/release-notes/2.26.html Jersey 2.26 は、 HK2 系のライブラリが Jersey core ライブラリから分離されるなど、破壊的変更が入ったバージョン…

Mac で VPN 接続が不安定で勝手に切れてしまう場合の設定方法

環境 設定方法 MTU とは何か 参考 環境 仕事でテレワークしているときなど、Mac で VPN 接続して作業しているときに、VPN 接続が定期的に切れる問題に悩まされていました。 大体1〜2時間に1回くらい VPN が切れます。 以下の設定方法である程度改善したので…

【SVダブルシリーズ1】レンタルパ: 使いやすいイエッサングレンアルマ

はじめに レンタルコード(チームID) パーティ解説 基本選出と立ち回り トリックルーム+コータスで勝つ場合 ワイドフォースで勝つ場合 個別ポケモン解説 イッカネズミ コノヨザル イエッサン グレンアルマ コータス バウッツェル はじめに 初心者でも使いや…

サブスクリプションの継続とクレジットカードの更新

はじめに サブスクリプション時代 カードの更新について 各サービスの実装がどうなっているか試してみる ニコニコプレミアム・ニコニコチャンネル ソフトバンク光 LINEMO Nintendo Switch Online Adobe AWS (Amazon Web Services) まとめ はじめに 投稿忘れ…

登山用ザック【Webエンジニアの登山ギア】

はじめに ザック(リュックサック) モンベル ストライダーパック 30L (2021年〜現在) 気になるザック はじめに 私が使ったことがあるザックについて紹介します ザック(リュックサック) モンベル ストライダーパック 30L (2021年〜現在) webshop.montb…

東京 → 筑波山登山(御幸ケ原コース)

筑波山について コース 登山日 アクセス 筑波山あるキップ・筑波山きっぷ 装備 登山道 難易度 筑波山神社 登山道入口 コース 御幸ケ原 御幸ヶ原からの景色 昼食・バーナーエリア 山頂(女体山/男体山)には行きませんでした ケーブルカーで下山 御朱印 筑波山…

Herokuの無料枠がなくなる

内容について Public roadmap Focus on Mission Critical (無料枠の話も含む) Students and Nonprofit Program Open Source Support LGTMoonは? Heroku's Next Chapter という記事が公開されて、Heroku の無料枠がなくなると噂になっています。 blog.hero…

PHP Laravel + Carbon で曜日を日本語で表示する

isoFormat メソッドを使うのが便利 Carbon 単体で使う場合 Laravel + Carbon で使う場合 isoFormat メソッドを使うのが便利 Carbon には isoFormat というメソッドがあり、非常に便利です。 Carbon 単体で使う場合 Carbon 単体で使う場合は以下のように使い…

Laravel 9 からは Vite がフロントエンドのビルドの標準となる

新しい Laravel では Vite がフロントエンドのデフォルトに 6月にこのようなニュースが出ていました laravel-news.com Laravel の開発チームは、以前から Vite というツールの開発に力を入れていたようで、 Laravel 9 からは Vite が導入されるとのことです…

GitHub Actions + GitHub Container Registry (ghcr.io)で target ごとの Docker ビルド

はじめに GitHub Container Registry (ghcr.io)について ghcr.io マルチステージビルドで target を指定したい場合 はじめに 私はある個人プロダクトで、Docker を使って開発しており GitHub Actions で Docker イメージをビルド GitHub Container Registr…

AWS CDK と CDK for Terraform を使ってみた感想

AWS のサーバー構築 Terraform の欠点 AWS CDK の登場 CDK for Terraform の登場 AWS CDK を使ってみる AWS CDK コマンドラインツールのインストール AWS CDK で S3 を立ててみる コード デプロイ リソースの全削除 AWS CDK のメリット/デメリット CDK for T…

PHP Laravel の HTTP テストで HTML のテストを書くときの書き方

Laravel の HTTP Test Laravel には HTTP テストという機能がある https://readouble.com/laravel/8.x/ja/http-tests.html このテストはめちゃめちゃ便利で、実際にリクエストを送って、返ってくるレスポンスをシミュレートできる。 get('/'); $response->as…