記事一覧(3 / 53)

2025

Guzzleで空配列のパラメータをオブジェクトとして送る方法

GuzzleでJSONをリクエストボディにセットしてPOSTリクエストを送る際、空配列のパラメータは空配列としてJSONに変換される。これはPHPの仕様として仕方ない部分がある。 しかし、空のオブジェクト {} として変換したい場合もある。 例えば弊社で作っているPrintgraphのAPIでは、params というリ…

Xcode 16でSwift Package Managerを使ってGoogle Mapsのライブラリを導入する

10年ぶりぐらいにXcodeとSwiftを触っている。 もはや何もわからない。 Google Mapsのライブラリを使おうと思ってAIに聞いたら、最近はCocoaPodsじゃなくて、SPM(Swift Package Manager)で入れるのが主流らしい。(まじ?) それで、AIにSPMを使ってパッケージを追加する方…

Firebase AuthとNext.jsで認証をする

Next.jsのApp RouterでFirebase Authを使いたい。 その場合に問題になってくるのがRSC(Server Component)での認証をどうするかというところが一番の重要なポイント。 セッションCookieを利用する RSCは従来のサーバーサイドでのセッションCookieの管理と同じ仕組みでいい…

富士山に登ってきた

9月9日から10日にかけて、会社の研修で富士山に登ってきた。 これまで何度も富士登山をしているが、吉田ルートから登るのは初めてだった。 また、いつもは日帰りで登っていたが、今回は初めて山小屋に泊まった。 鎌岩館 今回はグループで行ったので、鎌岩館の個室を利用した。想像以上に綺麗で驚いた。 最近の山小屋はここまで設備が整…

ATOTO X10を自宅で動かしてみた

ATOTO X10を購入したので、とりあえず自宅で起動してみた。 本当は車に取り付けたいんだけど、まだ納車日が未定なので、事前にアップデートや必要なアプリのインストール、Googleログインなどを済ませておきたかった。 電源問題 そもそも自宅でカーナビを起動する場合どうすればいいんだろう、という疑問から始まった。 社内…

トイレの玉鎖が切れたので自分で替えてみた

自宅のトイレの玉鎖が切れてしまって、「小」で流すことができなくなってしまった。 業者に頼んで直そうと思ったけど、なんかもったいないのでとりあえず自分で替えてみることにした。 おそらく玉鎖が切れたんだろうと思ったけど、念の為トイレタンクの蓋を開けて確認したらやはり玉鎖が小のほうだけ切れていた。 ということで玉鎖をamaz…

TailscaleとZellijでiPhoneから自宅サーバーのClaude Codeを操作する

https://twitter.com/polidog/status/1959082986491752458 最近Linux環境で開発しようと思い、余っていたノートPCにUbuntuデスクトップを入れて開発環境を構築した。 環境構築にはOmakubを使い、快適な環境を手に入れることができた。 ただ、最近はやはりMacB…

KilarというCLIツールをVibe Codingで作った

polidog/kilar (キラール)というライブラリを作った。 どういうライブラリなのか? kilarは、Rust製のプロセス確認・削除CLIツール。 macOSとLinuxで動作する。macOSならhomebrewで簡単にインストールできる。 brew tap polidog/kilar && brew inst…

プログラミング言語が読めるけど書けない時代が来そう

プログラマとして働くようになって約20年。 フルリモートワークになって約10年。 文字を全く書かない生活になってしまった。 文字を書かなくても基本的には問題はないのだが、一つだけ困ることがある。 それは漢字がものすごく書けなくなっているということ。 子供が生まれてから、特に問診票などを書くときに苦労している。スマートフ…

AIとしか会話しない仕事はちょっと辛いかもしれない

弊社は毎週火曜に全体MTGがある。 各メンバーがそれぞれ違うプロジェクトに関わっているので、そこ以外で他のメンバーと話す機会はほとんどない。 先々週は会社がお盆休み、先週は自分が休暇を取っていたのでまじで2週間ぐらい会社のメンバーと話していない。 しかも、プロジェクトが違うとどうしてもSlackでもそれほど会話するわけ…

知っていることを勉強会で聞くことは自分の思考を深める

先週末にShizuokaTECH #1に参加した。 久しぶりのオフラインの勉強会で、様々な発表を聞いていてどれも素敵だったし、刺激をもらえた。 知っている話を聞くこと もちろんすべて初めて聞く話ではなくて、もともと知識として知っている内容もいくつかあった。 知らない話題の発表を聞くことは自分の知識を広げるために大切だ。…

Shizuoka TECH #1に参加してきた

Shizuoka TECH #1に参加してきました。 仕事仲間であり友人?でもある@hota1024 さん が主催で勉強会をやるということでパーティーハード社でも会場費のスポンサードをさせていただきました。 久しぶりの発表 スポンサーLT以外でオフラインのイベントで発表するのはものすごく久しぶりでした。 自分はもともと…

LazyVimでLSPをプロジェクト単位で無効化する方法

omakubで開発環境を構築して開発をするようになった。 今のところはすごく快適に開発できている。VSCode使いたいとは全く思わない程度に。 LSP使えるから結構便利なんだけど、プロジェクト単位で無効化したいことがある。 そんなときは .lazy.lua ファイルを用意して以下のように記述すればいい。 return …

GhosttyでOptionキーをAltキーとして認識させる

最近、vim環境の改善のためにlazyvimとzellijを導入しました。zellijは高機能なターミナルマルチプレクサーで、パネルの操作にAlt + キーの組み合わせを多用します。 しかし、macOSでGhosttyを使用している場合、デフォルトではOptionキーがAltキーとして認識されません。そのため、zell…

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」について詳しく解説します。 モノ…