開発– category –
-
GitHub Actionsのparallelを使用してPHPUnitを並列実行する
開発
こんにちは、フロントエンドエンジニアのやなぎ(@apple_yagi)です。 2026年6月25日にGitHub Actionsに追加されたparallelを利用してPHPUnitを並列実行するようにした結果、CIのtest job全体の実行時間を4分42秒から2分58秒へ約37%削減できました。実行時間は、変更前後でそれぞれ複数回計測した結果から代表的な値になります。 本記事では、GitHub Actionsのparallelを使ってPHPUnitを並列化した方法と、並列化する過程で発生した問題についてご紹介します。 【GitHub Actionsのparallelとは】 GitHub Actionsの... -
Amazon ECS のデプロイをCloudWatch Alarm で自動ロールバックする
開発
こんにちは、PR TIMESでインターンをしている河野拓真です。 今回は、PR TIMESのサービスで一部使用しているAmazon ECS on Fargateに、CloudWatch Alarmと連携した自動ロールバックと、ロールバックに気づくためのSlack通知を導入したので、その仕組みと実際にハマったポイントを紹介します。 【背景】 PR TIMESでは、一部のサービスをAmazon ECS on Fargate上で運用しています。 これまでの運用には課題がありました。ECSのデプロイが確認するのは「新しいタスクが起動し、ヘルスチェックに通ること」までであり... -
静的アセットの配信URLにバージョンを含めてアップデート時のキャッシュ不整合を防ぐ
開発
こんにちは。フロントエンドエンジニアの白濱(@shiraha_maru)です。 PR TIMESではプレスキット用PDFのサムネイル生成や、FAX原稿用PDFのページ数取得に PDF.js を利用しています。PDF.jsを使ってサムネイル画像を生成する方法については、過去の記事で紹介していますのでご覧ください。 サムネイル画像をPDFの1ページ目から自動生成する PDF.jsを利用するにあたり、Worker用JavaScriptやCMapなどのアセットはアプリケーション本体とは別に静的ファイルとして配信しています。今回は、この pdfjs-dist の静的ア... -
素材ダウンロード負荷軽減のためにApache – PHP から切り離し、Fastly – S3 経由で配信するようにしました
開発
こんにちは。PR TIMESでエンジニアをしている田中 (@Romira915)です。 この記事では、認可をアプリケーション側に残したまま、素材ダウンロード用ZIPの配信をApache・PHPからFastly・S3へ切り出した方法と、実装時に遭遇したキャッシュ制御の問題を紹介します。 【はじめに】 PR TIMESでは、企業が投稿したプレスリリースに含まれる画像を、まとめてZIPでダウンロードできる「素材ダウンロード」という機能を提供しています。 ZIPファイルは一度生成されるとリリースが更新されるまでEC2ローカルに保持され、配信... -
PR TIMESの認証認可を再設計するときに考えたこと
開発
PR TIMESでCTOをやっている金子 (@catatsuy) です。 2023年に、PR TIMESのログインシステムへJWTを導入したことを開発者ブログで紹介しました。 https://developers.prtimes.com/2023/12/26/implemented-login-system-using-jwt/ この記事では、JWTの仕様や移行の進め方など、実装した仕組みを中心に説明しています。一方で、なぜこの構成を選んだのかについては、あまり触れていませんでした。 本記事では、PR TIMESの認証認可を再設計するときに何を考えていたのか、その設計が現在の構成にどうつながっているの... -
Visual Regression TestのスナップショットにWebPを導入し、容量を削減する
開発
こんにちは、フロントエンドエンジニアのやなぎ(@apple_yagi)です。 PR TIMESでは、2023年からPlaywrightを用いたVisual Regression Test(VRT)を運用しています。VRTの運用方法については以下のエントリーで紹介していますので、ぜひあわせてご覧ください。 https://developers.prtimes.com/2024/04/26/visual-regression-test-using-playwright-in-prtimes/ 先日リリースされたPlaywright v1.62.0では、スナップショットの生成・比較を行うtoHaveScreenshotがWebP形式をサポートしました。PR TIMESではVRTの... -
メール到達性を支える、プレスリリース内URLのドメイン評価の仕組み
開発
こんにちは。バックエンドエンジニアの筒井(@tsuttsun_wind)です。 PR TIMESでは、プレスリリースを個人・メディアユーザーやメディアリストに向けてメール配信しています。 2026年1月中旬ごろ、Microsoft系のメールサービスを利用している一部ユーザーに対して、送信したメールが届かない問題が発生しました。 この事象により、多くのお客さまにご心配とご迷惑をおかけしたことを改めてお詫び申し上げます。 【背景】 同時期には、Microsoft系メールサービス宛てにメールが届かない問題が広く報告されており、P... -
XO から Oxlint に移行しました
開発
こんにちは、フロントエンドエンジニアのやなぎ(@apple_yagi)です。 PR TIMESでは2023年9月から XO をリンター・フォーマッターとして使ってきましたが、先日 Oxlint に移行しました。本エントリーでは Oxlint に移行した経緯や進め方、そして導入した結果についてご紹介します。 XO は、sindresorhus 氏が開発した Opinionated なリントルールを備えたESLintベースのラッパーツールです。フォーマッターの機能も兼ね備えており、 xo というワンコマンドでリントとフォーマットを実行することができます。 【XO ... -
Gmail送信前確認用Chrome拡張の内製化
開発
こんにちは、PR TIMESでインターンをしている工藤(@k8035004287922)です。 今回は、社内の一部部署で必須運用されていたGmail送信前の誤送信確認用Chrome拡張を、社内要件に合わせて内製した取り組みを紹介します。 【背景】 社内の一部部署では、誤送信を防ぐChrome拡張を必須インストールして運用していました。一方で、Chrome拡張はブラウザ上で強い権限を取り得るため、社外製の拡張機能を業務上必須にすること自体が、セキュリティ上の懸念になり得ます。 そこで今回は、誤送信防止という目的は維持したま... -
git worktree × Docker Composeによる並行開発環境の改善
開発
こんにちは、PR TIMESでインターンをしている笹山雷雅です。 レビュー中や検証中に、いま触っているブランチをそのまま残したまま、別ブランチの挙動を確認したくなる場面は少なくありません。 ただ、git switch を繰り返す運用では、未コミット変更を気にしたり、作業の文脈が途切れたりしやすく、修正前後を見比べるにも手間がかかります。 そこで今回は、git worktree と Docker Compose を組み合わせて、作業中ブランチを切り替えずに別ブランチを https://<slug>.app.dev.local で並行確認できるように...
