WHITEPLUS TechBlog
https://blog.wh-plus.co.jp/
株式会社ホワイトプラスのエンジニアによる開発ブログです。
フィード

openapi-typescript で型安全なAPIクライアントを作成する
WHITEPLUS TechBlog
こんにちは!コアシステム開発Gでテックリードをやっている古賀です。 以前に OpenAPI の紹介をしました。 blog.wh-plus.co.jp 今回はその続編として、OpenAPI スキーマ定義を活用し、TypeScript で型安全に API 通信を実現する方法を紹介します。 最終的な成果物を先に見たい方は、末尾の動画をご覧ください。 TypeScriptにおける型安全とは TypeScriptにおける型安全とは、型の不一致をコンパイル時に検出し、ランタイムエラーの発生を未然に防ぐプログラミングスタイルです。 例えば、次のように文字列型の変数に数値を代入しようとすると、コンパイルエラー…
11日前

GKEの新機能と不具合情報まとめ 2025年7月
WHITEPLUS TechBlog
2025年7月にGKEのReleaseNoteに流れてきた情報から、新機能と変更内容、stableチャンネルに影響のありそうな不具合情報のみをまとめて紹介します。 7月はリリース数は少なかったですが大きなリリースが複数あり長文になっています。メンテナンスが告知されたため影響を受けないように適切にメンテナンスウィンドウを設定する必要があります。また、GFEsのTLSハンドシェイクに変更が入っています。現時点の発表内容を見る限り直接アクセスしている場合は影響はありませんが、中間プロキシ等を使用している場合は正しくRFCに準拠していることを確認する必要があります。 メンテナンス情報 7/28 コント…
14日前

DBバージョンアップって何が大変?気をつけたことまとめました
WHITEPLUS TechBlog
こんにちは、アプリ開発グループのdomonrです。 今回は CloudSQL の DB バージョンアップを実施した際に感じた、「技術的な話以外で、何が大変だったか」をまとめました。 本記事では、互換性チェックやSQL構文のような技術的内容ではなく、「どう段取りを組み、どう判断し、どう連携したか」といったマネジメントの観点にフォーカスしています。 DBのバージョンアップを予定している方にとって、準備のイメージがつかめるきっかけになれば幸いです。 1. スケジュール設計 リリースのスケジュールは、ユーザー影響や運用リスクを最小化するための基盤です。週末やアクセス集中時間を避けるだけでなく、他プロジ…
18日前

GKEの新機能と不具合情報まとめ 2025年6月
WHITEPLUS TechBlog
2025年6月にGKEのReleaseNoteに流れてきた情報から、新機能と変更内容、stableチャンネルに影響のありそうな不具合情報のみをまとめて紹介します。 6月はリリース数こそ少なかったですが、運用に影響を与える可能性のあるリリースが1つありました。クラスターオートスケーラーの仕様に変更が入り、ノードのスケールダウンの挙動が変わりました。今までスケールダウンしなかったタイミングで発生する可能性があるため注意が必要です。 新機能 6/25 C4DマシンシリーズがGAとして公開されました 以下のバージョン要件が適用されます。 Standard clusters 手動ノード作成 GKE 1.…
1ヶ月前

OpenAPI Specification で API スキーマを定義する
WHITEPLUS TechBlog
こんにちは!コアシステム開発Gでテックリードをやっている古賀です。 APIを改修しようとすると、「どのようなリクエストを送るべきか?」「レスポンスはどのような形式か?」といった疑問に直面することは少なくありません。 コードを読まなければ分からなかったり、ドキュメントがあるものの埋もれていたりすると、そのたびに調査が必要になり生産性を下げてしまいます。 これを防ぐには、API仕様を事前に定義し、誰でも簡単に参照できるようにしておくことが有効です。 APIスキーマを定義する手段としては、gRPCのProtocol Buffersや、GraphQLのスキーマ定義言語など、目的に応じていくつかの方法が…
2ヶ月前

「Shift」を使って laravelcollective/html から spatie/laravel-html へ移行する方法と注意点
WHITEPLUS TechBlog
この記事では、laravelcollective/html から spatie/laravel-html への移行を例に、Shift の利用方法をお伝えします。Shift は laravelcollective/html の移行だけでなく、Laravel や PHPUnit のバージョンアップ対応も行えるので、移行・バージョンアップを検討中の方にご覧いただけると幸いです。
2ヶ月前

GKEの新機能と不具合情報まとめ 2025年5月
WHITEPLUS TechBlog
2025年5月にGKEのReleaseNoteに流れてきた情報から、新機能と変更内容、stableチャンネルに影響のありそうな不具合情報のみをまとめて紹介します。 今月はk8s 1.33がRapidチャンネルで利用可能になったことが大きなリリースとしてあげられます。近い内にstableチャンネルにもリリースされるはずなので非推奨の対応は早めに行っておきたいですね。また、分析情報と推奨事項でアラートされる項目が順調に増えているのも安定稼働を考えると嬉しいリリースですね。 新機能 5/30 分析情報と推奨事項でetcdのデータベースサイズが限界に近づいているクラスタを特定し表示するようになりました…
3ヶ月前

MCPを理解するための MCP Server 構築入門
WHITEPLUS TechBlog
こんにちは!コアシステム開発Gでテックリードをやっている古賀です。 MCP(Model Context Protocol)はAIエージェントと外部システムをつなぐための重要な仕組みとして注目を集めており、私も MCP Server を Cursor に繋いでみて利便性が高まることを実感しています。 一方で次のような悩みが出てきました。 MCP の挙動を理解できていない → 使いこなせているか? 自分の用途に合った MCP Server が提供されていない → 自作できないか? 自社サービスの MCP Server を立てられないか → ビジネスチャンス!? そこで、ドキュメントや MCP ライ…
3ヶ月前

活用しているAIツール紹介
WHITEPLUS TechBlog
こんにちは、CX開発グループでテックリードを担当している德廣です! 今回は、ホワイトプラスの開発チームで現在活用しているAIツールについてご紹介したいと思います。 また、2025年6月28日(土) に開催される PHP Conference Japan 2025 に協賛することになりましたので、そちらのお知らせもさせていただきます! phpcon.php.gr.jp 現在活用しているAIツール Cursor - AI統合開発環境 Cursor は最近導入しました。まだ使い方を模索中ですが、MCP然りその可能性の大きさに日々驚かされています。 PhpStormのような痒いところに手が届かない部分…
3ヶ月前

タスクを分解して結局どうだったの?機能ごとに集計してみた
WHITEPLUS TechBlog
この記事では、分解したタスクを機能ごとに集計したらどのような傾向が見られたかをご紹介できればと思います。 タスクを分解する・しないの比較に興味がある!という方の参考になれば幸いです。
3ヶ月前

継続的に安全なコンテナでサービスを稼働するために行ったこと
WHITEPLUS TechBlog
サイバー攻撃による個人情報の流出が多数ニュースになっている状況で、お客様に安心してサービスを利用してもらうためには防御を一層高める必要があります。今回はインフラチームが主導して、Goで書かれたサービスをセキュリティが高く安全な状態で稼働できるように改善したのでその内容を紹介します。 改善前の状況 Goで書かれたサービスをDocker公式のDebianイメージを使いGKE上で稼働させていました。このDebianイメージは長年更新されておらず、バージョンはDebian 8 (Jessie) で2020年6月にEOLを迎えています。加えて脆弱性のスキャンも行っておらず、たくさんの脆弱性が入っているイ…
3ヶ月前

エンジニアリング(プレイング|ノンプレイング)マネージャー
WHITEPLUS TechBlog
はじめに マネジメントスタイルの概要 ノンプレイングマネージャーとは? プレイングマネージャーとは? ノンプレイング体制での学び 主なタスク 取り組んだタイミング 良かった点(Pros) 苦労した点(Cons) プレイング体制での学び 主なタスク 取り組んだタイミング 良かった点(Pros) 苦労した点(Cons) 行き来して見えたこと まとめと今後の挑戦 はじめに CX開発グループ・アプリ開発グループでエンジニアリングマネージャー(EM)をしている仲見川です。昨年9月よりCX開発グループのEMを担当することになり半年がたちました。プレイングマネージャーと、ノンプレイングマネージャーの両方を経…
3ヶ月前

GKEの新機能と不具合情報まとめ 2025年4月
WHITEPLUS TechBlog
2025年4月にGKEのReleaseNoteに流れてきた情報から、新機能と変更内容、stableチャンネルに影響のありそうな不具合情報のみをまとめて紹介します。 4月はAI/ML関連のリリースが少しあっただけで全体のリリース数は少なかったです。AI/ML関連で非推奨が告知されたため利用している場合は確認する必要があります。 新機能 4/17 GKE Inference Gatewayが利用可能になりました GKE上の生成AIワークロードのパフォーマンス、効率、および可観測性が大幅に向上します。 GKE Inference Gatewayは以下の機能を提供します。 パフォーマンスの向上 推論に…
4ヶ月前

go.mod で管理されていないライブラリを Renovate で更新する
WHITEPLUS TechBlog
こんにちは! コアシステム開発Gでテックリードをやっている古賀です。 Renovate 連載の第一回・第二回を通じて、Go のライブラリや Go 本体のバージョンを自動更新できるようになりました。 これまで見てきた通り Renovate は go.mod を監視しており、go.mod で管理しているライブラリは Renovate で更新することができます。 逆に、go.mod で管理されていなければ Renovate で更新できないのか?と聞かれるとそうでもありません。 今回は go.mod で管理されていないライブラリを Renovate で更新するための方法を紹介します。 やり方としては2…
4ヶ月前

GKEの新機能と不具合情報まとめ 2025年3月
WHITEPLUS TechBlog
2025年3月にGKEのReleaseNoteに流れてきた情報から、新機能と変更内容、stableチャンネルに影響のありそうな不具合情報のみをまとめて紹介します。 3月は大きなリリースや変更はなく小さな改善が主でした。HPAのdecisionsに関するログが見られるようになったのは有り難い改善です。また、k8sのJobSetに関するメトリクスも取得できるようになったので使用している場合はしっかりと監視していきたいですね。 新機能 3/28 GKE コンピュートクラス内のnodeSystemConfigフィールドを使用して、sysctlsやhuge pagesなどの特定のkubeletおよびLi…
4ヶ月前

Renovate で Go バージョンを自動更新する
WHITEPLUS TechBlog
こんにちは! コアシステム開発Gでテックリードをやっている古賀です。 最近、セキュリティインシデントのニュースを目にすることが増え、自分の業務においても身が引き締まる思いです。 例えば弊社には Go で構築したシステムがありますが、Go バージョンを適切に上げることが脆弱性対策になります。 Go メジャーバージョンのリリースサイクルは約6ヶ月で、2つ先のバージョンがリリースされるまでの約1年間がサポート期間になります(Release Policy)。 サポート期間中にセキュリティの問題が発生したら更新版がリリースされ、それを取り込むことでセキュリティパッチを当てることができます。 これを踏まえ…
5ヶ月前

GKEの新機能と不具合情報まとめ 2025年2月
WHITEPLUS TechBlog
2025年2月にGKEのReleaseNoteに流れてきた情報から、新機能と変更内容、stableチャンネルに影響のありそうな不具合情報のみをまとめて紹介します。 2月はメトリクスや推奨、クラスタ通知といった運用面で便利になる新機能が追加されました。より安定した運用ができるようになるため有り難い改善ですね。また、Identity Service for GKEが非推奨になったりwhenUnsatisfiableのデフォルト値が変更になったりもしているため影響がないか確認する必要があります。 新機能 2/28 新しい推奨NODE_SA_MISSING_PERMISSIONSがGKE Recomm…
5ヶ月前

PHPカンファレンス名古屋2025登壇記「タスク分解の試行錯誤〜レビュー負荷を下げるために〜」
WHITEPLUS TechBlog
こんにちは! ホワイトプラスのコアシステム開発Gエンジニアのさとうです。 先日、PHPカンファレンス名古屋2025にて「タスク分解の試行錯誤〜レビュー負荷を下げるために〜」という内容で登壇しました。 この記事では、発表した「タスク分解の試行錯誤〜レビュー負荷を下げるために〜」の内容と、Ask the Speaker やコメントでいただいた質問への回答をご紹介できればと思います。 現地で聞いたけど改めて内容を確認したい! 現地に行けなかったから内容を知りたい! 質疑応答が気になる! という方のお役に立てれば幸いです。 「タスク分解の試行錯誤〜レビュー負荷を下げるために〜」の発表内容 はじめに 弊…
5ヶ月前

障害対応の予行演習会を実施しました
WHITEPLUS TechBlog
株式会社ホワイトプラスでは、システム障害に備えた障害対応の予行演習会を定期的に実施しています。本記事では、『インシデント指揮官』フレームワークに沿った障害対応訓練の流れや、訓練用のバグ埋め込み方などについて詳しくお話ししています。
6ヶ月前

Renovate で Go の依存ライブラリを自動更新する
WHITEPLUS TechBlog
こんにちは! コアシステム開発Gでテックリードをやっている古賀です。 私たちのチームで管理しているGoアプリケーションでは、可能な限り最新バージョンのライブラリを使うように「手動でこまめに」メンテナンスを行っていました。 具体的には、Google Cloud のリリースノートを見てSDKのアップデートをキャッチアップして、対象のライブラリを手動で更新するというものです。 しかし、ライブラリの更新頻度が高いため直近の業務を優先させている期間は更新が止まってしまうことや、Google Cloud 以外のライブラリでも更新有無を定期的にキャッチアップする手間があることに課題を抱えていました。 そこで…
6ヶ月前

GKEの新機能と不具合情報まとめ 2025年1月
WHITEPLUS TechBlog
2025年1月にGKEのReleaseNoteに流れてきた情報から、新機能と変更内容、stableチャンネルに影響のありそうな不具合情報のみをまとめて紹介します。 1月ということで新機能の数は控えめですが、非推奨やセキュリティイシューがいくつか告知されています。運用しているクラスターに影響がないか確認する必要がありますね。 新機能 1/23 GKEロードバランサーサービスのユーザー管理ファイアウォールルールがGAになりました。 GKE 1.31.3-gke.1056000以降で利用可能です。 GKEロードバランサーサービスのユーザー管理ファイアウォールルールを許可することで、高度なファイアウォ…
6ヶ月前

【Go】golangci-lintでカスタム静的解析を統合する
WHITEPLUS TechBlog
はじめに Goの代表的な静的解析ツールには「go vet」「errcheck」「staticcheck」などがあります。 ホワイトプラスでは当初これらの静的解析ツールを個別でインストール・実行する方法を取っていました。 当初の実行コマンドのイメージ go vet ./... go vet --vettool=nilness ./... go vet --vettool=shadow ./... errcheck --asserts ./... staticcheck ./... しかしこの手法ではパッケージのインストールがツールごとに必要だったり、それぞれの実行コマンドを追加する必要があったり…
7ヶ月前

GKEの新機能と不具合情報まとめ 2024年12月
WHITEPLUS TechBlog
2024年12月にGKEのReleaseNoteに流れてきた情報から、新機能と変更内容、stableチャンネルに影響のありそうな不具合情報のみをまとめて紹介します。 12月ということでリリース数は少なめになっていますが、k8s 1.32の対応やcgroup v2への自動更新など注意しておく必要のあるリリースがあります。 新機能 12/17 Rapid channelでKubernetes 1.32が利用可能になりました Kubernetes 1.32の詳細は以下のリリースノートを参照してください。 github.com 12/16 1.28.3-gke.1430000以降を実行しているGKEク…
7ヶ月前

Docker Desktop 4.35で追加されたApple Silicon Mac専用のハイパーバイザーが開発体験を改善するか検証する
WHITEPLUS TechBlog
先日リリースされたDocker Desktop 4.35でApple Silicon Mac専用のハイパーバイザーである Docker VMM (Virtual Machine Manager) がベータ版として追加されました。 docs.docker.com www.docker.com これはApple Silicon Macでのみ利用できるコンテナに最適化された新しいハイパーバイザーです。Linuxカーネルとハイパーバイザーレイヤーの両方が最適化されていて、一般的な開発タスクにおいて従来のApple Virtualization Frameworkと比べ大幅にパフォーマンスが向上されるよ…
8ヶ月前

GKEの新機能と不具合情報まとめ 2024年11月
WHITEPLUS TechBlog
2024年11月にGKEのReleaseNoteに流れてきた情報から、新機能と変更内容、stableチャンネルに影響のありそうな不具合情報のみをまとめて紹介します。 11月も多数のリリースがありましたが、中でも最大65,000ノードのクラスタに対応したこととコントロールプレーンに対するDNSベースのアクセスは大きなリリースでした。一般的なWebサービスではそこまでの数のノードが必要になることはないため影響はありませんが技術的に面白いですし、コントロールプレーンに対する新しいアクセスはBastionサーバーを用意しなくてもセキュアにアクセスできるようになって便利になります。どちらも公式のブログで…
9ヶ月前

LaravelのGateとPolicyの仕組みを理解!認可を使いこなせるようになるために
WHITEPLUS TechBlog
こんにちは! ホワイトプラスのコアシステム開発Gエンジニアのさとうです。 開発をしていく中で、複雑化したシステムを改善するのに認可を整理すると良いかも…という話題が上がりました。 PHP・Laravelを使って開発をしているのですが、Laravelの認可機能については「そういうものがあるらしい」程度の理解しかありません。 そこで、この記事では改めてLaravelの認可について調べてみたことをまとめました。 Laravelの認可の設定がよくわからない ユーザーの属性を調べるif文がいろいろなところに散りばめられている こんな悩みをお持ちの方は、ぜひご一読いただけると嬉しいです。 認可とは? 認可…
9ヶ月前

GKEの新機能と不具合情報まとめ 2024年10月
WHITEPLUS TechBlog
2024年10月にGKEのReleaseNoteに流れてきた情報から、新機能と変更内容、stableチャンネルに影響のありそうな不具合情報のみをまとめて紹介します。 先月のリリースが少なかった影響か10月は多数のリリースが行われました。中でも GKE control plane authority によってコントロールプレーンのaudit logを見ることができるようになったり、メトリクスが追加されたことにより観測できる範囲が増えたりと、安定運用に繋がる機能が強化されたことは嬉しく思います。 新機能 10/31 Cloud Tensor Processing Unit (TPU) v3のマシン…
10ヶ月前

Flutterアプリに最適なWebViewパッケージを選ぶ方法
WHITEPLUS TechBlog
1. WebViewとは? WebViewは、モバイルアプリ内にWebページを表示するためのコンポーネントです。通常はブラウザで表示されるWebコンテンツをアプリ内に直接埋め込み、操作できるようにします。 2. FlutterでWebViewを使用する理由 FlutterアプリでWebViewを利用する理由は、Webコンテンツをアプリ内に埋め込む必要がある場合や、ネイティブアプリとWebアプリの両方の利点を活かしたハイブリッドアプリを開発する場合などがあります。特にFlutterを利用したアプリ開発を行う場合では、より工数を削減する目的でWebViewを利用する場面が多くあります。 3. Fl…
10ヶ月前

GKEの新機能と不具合情報まとめ 2024年9月
WHITEPLUS TechBlog
2024年9月にGKEのReleaseNoteに流れてきた情報から、新機能と変更内容、stableチャンネルに影響のありそうな不具合情報のみをまとめて紹介します。 9月は新機能のリリースが少ない月でした。以前と比べリリースは減っていてGKEも少しずつ成熟してきているのかもしれません。 新機能 9/11 gpu-driver-versionフラグを使用しない場合GKEバージョンに対応したデフォルトのNVIDIA GPU driverを自動的にインストールするようになります GKE 1.30.1-gke.115600以降で作成されたGPU node poolsが対象です。 9/4 GKE 1.29…
10ヶ月前

コードの削除しやすさを考慮した設計の重要性
WHITEPLUS TechBlog
こんにちは、CX開発グループでWeb開発を担当している德廣です! 早速ですが弊社は創業から15年が経過し、その間にサービスが進化し続けてきました。それに伴い、システムも複雑化し、コードベースも肥大化してきました。 長い年月の中で追加され続けたコードの中には、現在のサービスに不要なものも少なくありません。 しかし、複雑な依存関係が増えるにつれ、不要なコードの削除が容易ではなくなっています。 今回の議論は、PHPやLaravelの最新化プロジェクトを振り返った際に、「不要なコードが見つかったが、削除するのが困難だった」という声が挙がりました。 そこで、チームで「なぜコードの削除が困難だったのか」「…
1年前