開発– category –
-
PR TIMESのフロントエンド環境に typescript-go を導入し、typecheck を高速化する
開発
こんにちは、フロントエンドエンジニアのやなぎ(@apple_yagi)です。 先日 PR TIMES のフロントエンド環境に typescript-go を導入し、 tsgo( typescript-go の実行コマンド) で typecheck を実行するようにしました。その結果、typecheck の実行時間が最大で 9 倍速くなったので、導入に向けて行った対応と結果をご紹介します。 【typescript-go とは】 typescript-go は Microsoft によって Go 言語で書き直されている TypeScript のコンパイラです。TypeScript 7 からはこのコンパイラが使用される予定で、... -
新規APIの実装でPATCHメソッドを使用しないようにしました
開発
こんにちは、フロントエンドエンジニアの小張(@kobari41257)です。 今回は特定環境で一部機能が動作しない事象の対応として、PATCHメソッドを使ったAPIをPOSTメソッドに置き換え、新規実装ではPATCHメソッドを使わないという意思決定を行ったことについてご紹介します。 【「メディアリストが保存できない」というお問い合わせ】 先日「メディアリストを保存しようとするとエラーが発生する」というお問い合わせを複数件いただきました。 メディアリスト機能についてメディアリストとは、プレスリリースを届けた... -
Fastlyの設定を手動操作してTerraform Stateが壊れた話と復旧方法
開発
こんにちは、バックエンドエンジニアの田中 湧大 (@Romira915)です。 今回は、Terraformで管理しているFastlyの設定をコンソールから直接変更したことがきっかけで、TerraformのStateが壊れてしまった事例を紹介します。 この記事では、実際にどう復旧したのか、何を学んだのかを共有します。 【】 PR TIMESでは、Fastlyの設定をすべてTerraformでコード化して管理しています。 運用フローは以下のとおりです。 Pull Requestを作成 → GitHub Actionsが terraform plan を実行 問題なければmainにマージ → terrafor... -
@axe-core/playwrightの導入で実現するHTML全体のアクセシビリティ品質担保
開発
こんにちは、フロントエンドエンジニアのやなぎ(@apple_yagi)です。 PR TIMESのフロントエンドではこれまで、MarkuplintやStorybook Testを用いたアクセシビリティ(a11y)テストを実施してきました。以下の記事はMarkuplintを導入した際の記事になります。 https://developers.prtimes.com/2025/03/10/markuplint/ しかし、PR TIMESではReactを利用して開発を行っているため、これまではコンポーネント単位での品質担保が中心となっていました。そこで、@axe-core/playwrightを導入し、HTML全体のa11y品質もチ... -
PR TIMESのOpenSearchをバージョンアップしました
開発
こんにちは。バックエンドエンジニアの筒井(@tsuttsun_wind)です。PR TIMESの検索は、OpenSearchに支えられています。今回、OpenSearchのバージョンを1.3から2.19に上げる対応を行いました。この記事では、経緯や移行方法、移行中に発覚した改善が必要な実装などを交えて紹介していきます。 【背景】 弊社のインフラは主にAWSを利用しています。 OpenSearchはAWSで展開されているOpenSearch Serviceを利用していて、バージョン1.3で運用していました。 最近、OpenSearch Serviceのドメインが一部EOLになることが... -
プレスリリースアワードマイページの技術スタック ~ Hono × React Router SPA Mode のフルスタック TypeScript による効率的な開発 ~
開発
こんにちは、フロントエンドエンジニアのやなぎ(@apple_yagi)です。 PR TIMES では 2021 年からプレスリリースアワードを開催しており、1 年間の内に日本で発表されたプレスリリースの中から、社会性・公共性・共感性・将来性等の視点から、プレスリリースの可能性拡大に貢献したものを審査・選考し、表彰しています。 https://prtimes.jp/pressreleaseawards 今年から新たな取り組みとして、プレスリリースアワード用のマイページをリリースしました。開発にあたっては、フロントエンドとバックエンドの両方で ... -
複雑化したプレスリリース検索の関数を安全に移行する
開発
こんにちは。PR TIMESでインターンを行っている鐘ヶ江 航です。レガシーコードの改善を中心に、バックエンド開発を行っています。 今回はそのレガシー改善の一環として、複雑化したプレスリリース検索の関数を改善した例についてご紹介します。 【背景】 PR TIMESには、一部のバッチ処理などで使われているプレスリリース検索関数が存在します。 検索関数はRSSフィードの作成にも用いられています。PR TIMESのRSSは、転載先メディアとの連携にも使われている、重要な機能の1つです。具体的には1時間に2回、それぞ... -
ソースコード改竄検知ツールkekkaiの設計と導入・運用
開発
PR TIMESでCTOをやっている金子 (@catatsuy) です。 ソースコードの改竄を検知する仕組みを自作してOSSとして公開しました。 https://github.com/catatsuy/kekkai PR TIMESでは、レガシーなPHPアプリケーションをEC2で運用しています。セキュリティインシデントに備えて、ソースコードの改竄を検知する仕組みが必要でした。 既存のツールでは我々の要件に合わなかったため、自作することにしました。 今回はその自作した新しいツールの設計思想・開発方針・導入について説明します。 【前提】 PR TIMESのアプリケ... -
ESLint の設定を Flat Config にして XO のメジャーバージョンを上げました
開発
こんにちは、フロントエンドエンジニアの桐澤(@kiririLee)です。 PR TIMESではリファクタリングデーを月に一回開催しています。今回そのリファクタリングデーを活用してXOのバージョンを v0.60.0 から v1.2.2 に上げたためやったことを紹介します。 XO は2016年から開発されており歴史の長いライブラリですが、メジャーバージョンが上がるのは初めての事で ESLint の Flat Config 対応が主な修正として含まれていました。 【PR TIMESフロントエンドのディレクトリ構成】 PR TIMES のフロントエンドはモノレポで... -
OpenSearchのMulti-search APIによるデータ処理のパフォーマンス改善
開発
皆さんこんにちは!PR TIMESの開発部のThaiです。今回はOpenSearchのMulti-Search APIを利用してWebクリッピングのクリップ調査のパフォーマンスを改善したことについて話します。 https://prtimes.jp/webclipping/service クリップ調査とは、設定したキーワードを含む記事を自動で収集する調査です。調査はクリップ作成後に開始し、期間は最長1年まで指定可能。調査結果はグラフや記事一覧で確認・ダウンロードできます。 https://tayori.com/q/prtimes-faq/search/クリップ調査 クリップ調査の収集された結果は...
