Blogs

3 / 39 ページ

2025

Ubuntu Desktopを余っているノートPCに入れた

DHHがMacやめたということで、自分も脱Macしようと思って使ってなかったWindowsのラップトップにUbuntuをとりあえず入れてみた。 もちろん、omakubを使って環境を設定している。 特にまだubuntuマシンで作業(仕事)しているわけではないので、そこまで良い/悪いの判断はつけられない。 しかし、思ったよ…

Rust入門:基本的な概念と機能の解説

Rust入門:基本的な概念と機能の解説 Rustは安全性、パフォーマンス、並行性に優れたシステムプログラミング言語です。この記事では、Rustの重要な基本概念について説明します。初心者の方からRustに興味を持った方まで、参考になれば幸いです。 目次 Cargoの--featuresオプション 構造体とアクセス修飾子 …

ローカル環境でSupabaseのSlackログイン機能を実装する方法

はじめに SupabaseでSlackログイン機能を実装する際、ローカル開発環境で直面する最大の問題は一つです。それは、Slack側が指定するredirect_urlがhttpsでなければならないという点です。この記事では、この問題を解決するための実践的なアプローチを紹介します。 問題の背景 Supabaseにはcon…

Vitestでのモックの使い方を調べてみた

はじめに 単体テストを書く際、外部依存関係をモックすることは避けられない作業です。特にNext.jsやVue、Reactなどのモダンなフロントエンドフレームワークを使用したプロジェクトでは、コンポーネントやサービスの独立したテストを行うためにモックが必須となります。 Vitestは、Viteをベースにした高速なJava…

PlaywrightでHTML5バリデーションをテストする方法

HTML5バリデーションとE2Eテストの課題 E2Eテストでは、実際のユーザー操作をシミュレートしてアプリケーションが正しく動作するかを検証します。HTML5のフォームバリデーションは多くのWebアプリケーションで使われている基本機能ですが、Playwrightなどのテストフレームワークで適切にテストするのは少し工夫が…

FlutterモノレポをMelosで効率的に管理する方法

はじめに 複数のFlutterアプリケーションやパッケージを開発している場合、それぞれを個別のリポジトリで管理するのは非効率的です。そこで役立つのが「モノレポ(モノリシックリポジトリ)」という開発アプローチです。今回はFlutterプロジェクトのモノレポ管理に特化したツール「Melos」について詳しく解説します。 モノ…

Zendesk APIでプライマリメールアドレスを更新する方法

はじめに Zendeskを利用しているとき、ユーザーのプライマリメールアドレスを変更する必要が出てくることがあります。特にAPIを使って自動化する場合、少し複雑な手順が必要になります。 今回は、Zendesk APIを使ってユーザーのプライマリメールアドレスを更新する方法についてご紹介します。 なぜ複雑なのか? Zen…

git switchコマンドの使い方 - モダンなブランチ切り替え手法

はじめに Git を使った開発では、複数のブランチを行き来しながら作業することが日常的です。従来は git checkout コマンドを使ってブランチを切り替えていましたが、Git 2.23(2019年にリリース)から新しく git switch コマンドが導入されました。 この記事では、git switch コマンド…

PHPカンファレンス小田原2025にスポンサーしたら最高だった話

https://twitter.com/phpcon_odawara/status/1910911200256573688 PHPカンファレンス小田原2025に弊社がスポンサーとして参加してきました。久しぶりのオフラインイベントだったということもあり、本当に素晴らしい体験ができました。今回は、その体験について書いていき…

Turborepoでの環境変数管理完全ガイド

はじめに モノレポ管理ツールとして人気のTurborepoを使用していると、複数のアプリケーションやパッケージ間での環境変数の扱いに悩むことがあります。この記事では、Turborepoにおける環境変数の管理方法、特にNext.jsアプリケーションでの設定方法を詳しく解説します。 Turborepoにおける環境変数の基本…

VS Codeのシェル統合エラーを解決する方法

VS CodeでRooCode/Cline使用時にシェル統合エラーが発生した 最近VS Codeを使用していると、特にRooCode/Clineを使っている際にターミナルで2種類のエラーメッセージが表示されるようになりました。これらのエラーは開発作業の妨げになっていたため、それぞれの解決方法を紹介します。 エラー1: …

VercelのEdge FunctionsでPrisma(Supabase)を使う際の注意点

Vercelが提供するEdge Functionsは、世界中のエッジノードで実行されるサーバーレス関数で、低レイテンシーを実現しつつグローバルなデプロイが可能です。 しかし、Edge環境でデータベースにアクセスする際には、いくつかの制約や注意点があります。今回は、VercelのEdge FunctionsでPrisma…

Hugoブログのリニューアル - Tailwind CSSとClaudeのプロンプトエンジニアリングで実現したデザイン改善

はじめに 最近、当ブログのデザインをリニューアルしました。デザインの参考元として Tailwind UI の Spotlight テンプレート を使用し、AI アシスタント Claude と対話しながら改修を行いました。今回は、そのプロセスと技術的な側面について共有します。 リニューアルの目的 ブログのリニューアルには…

Git Revertで特定コミットに戻る方法

リポジトリの管理中、「大量にrebaseしてpushしてしまったコミットを戻す方法」という質問はよくあります。 特に、特定のコミットハッシュまで戻りたいというケースでは、Gitのrevertコマンドが非常に役立ちます。 結論から言うと、答えは「はい」です。Git revertを使えば、特定のコミットハッシュまで状態を戻…

今期は受託開発を増やしていきます!

2月でパーティーハード株式会社は創立8周年を迎えました。 関口との2人で立ち上げた小さなWebシステム開発会社も、皆様のご支援のおかげで8年の節目を迎えることができました。 心より感謝申し上げます。 2025年の新たな挑戦 以前Facebookでも触れましたが、今年は受託開発事業の拡大に注力してまいります。 昨年はPr…

QStashをDockerで動かす!ローカル開発環境の構築手順

QStashをローカル環境で使うためには2つの方法があります。 Local Tunnel(ローカルトンネル)を使う方法 qstash-cliを使う方法(Docker環境でのセットアップが可能) QStashはクラウド環境でのメッセージキューやジョブスケジューリングに便利ですが、開発時にはローカル環境でのテストが不可欠で…

JavaScriptでJSON.stringifyを使って関数をシリアライズする方法

JavaScriptでオブジェクトをJSON化する際、JSON.stringify を使うと、関数を含むオブジェクトをシリアライズしようとしたときに関数が自動的に削除される という仕様になっています。 JSON.stringify の仕様と関数の省略 JSON.stringify はデフォルトでは関数をJSONに含めま…

Symfonyで tailwind:build が失敗?原因と解決策を解説

SymfonyでTailwind CSSを導入する際、便利なバンドルとしてsymfonycasts/tailwind-bundleを利用することができます。このバンドルを使うことで、Tailwind CSSを簡単にビルドし、Symfonyのアセット管理と統合できます。 しかし、ある日 tailwind:build コマ…

2025年に学びたいこと

Flutter周りのスキルを上げるために、Flutterでアプリを1つリリースする いい加減Haskellを覚えたいので、すごいH本を絶対に終わらせる vimを覚えたいので、実践VIMを終わらせる Rustに入門する AWSの資格を一個ぐらい取りたい ブログを週1回は更新する マネージメントスキルを上げるために、マネー…

2024

2024年振り返り

2024年一年の振り返りをしようと思う。 仕事 今年はさらに会社の人数が増え、勢いを感じる一年でした。 日々、弊社に関わってくれるメンバーには感謝の気持ちでいっぱいです。 マネジメント メンバーが増えてきたことで、マネジメントの視点が必要だと強く感じた一年でもありました。 ただ、自分はマネジメントが得意ではなく、知識も…

Guzzleでbase_uri指定したときに遭遇したトラブル

GuzzleはPHPでよく使われるHTTPクライアントの一つです。 しかし、Guzzleを使う際に base_uri に関連するトラブルに頻繁に遭遇することがあります。この問題を解決するために、base_uriの使い方と、その際に注意すべき点をこの記事でまとめます。 base_uriの使い方 Guzzleのクライアント…