tmuxのセッション管理を簡単にする「tmuxist」の紹介

こんにちは、K@zuki.です。 tmuxを使った開発環境の構築は便利ですが、毎回手動でウィンドウやペインを設定するのは面倒です。 実は約7年前から自分用に開発・使用している設定ファイルからtmuxセッションを自動生成できるtmuxistというツールがあります。 g…

Vue.jsコンポーネントの依存関係を可視化する「Voyager」を暫定公開しました

約半年ぐらい前にVoyagerというツールの開発を始めたことを書きました。 khasegawa.hatenablog.com 全然進められていなかったんですが、少しだけ時間ができたので暫定的に公開しました、という紹介です。 github.com Voyager 改めてVoyagerについて紹介する…

2分の壁を突破する!Claude Codeで長時間実行コマンドのタイムアウト解決法

英語で書いた記事をまだ日本語にし直していない K@zuki. です。 Claude Codeを使っていて、テストの実行やビルドが途中でタイムアウトで止まってしまった経験はありませんか? Claude Codeにはデフォルトで2分のタイムアウトが設定されています。 今回は、こ…

macOS用常駐アプリにMCP Serverを実装する

この記事は部分的にLLMで生成している箇所があります ネタはたまっているので、どこかのタイミングで放出していきたい K@zuki.です。 今回は久しぶりの投稿になりますが、自作しているmacOSのメニューバー常駐アプリにMCP Serverを実装する話ですが、とにも…

近況

雑に近況についてまとめていく。 会社員 役割の変化 主要事業の技術責任者としてのロールをやっていたけど、気づいたら全社を見ることになってた(≠ CTO)。 徐々にこなす業務の範囲が広がり、今では技術面全体に関わる立場になっています。 んで、結局お前…

Vue.jsコンポーネントの依存関係を可視化する「Voyager」の開発をはじめました

昨日、Vue.jsのコンポーネント依存関係を可視化するツール「Voyager」の開発をし始めました。 このツールは、Vue.jsプロジェクトのコンポーネント間の関係性を簡単に、インタラクティブに表示することを目指しています。 CodePenで動作確認できるようにして…

またねMUI、ようこそshadcn/ui

noteに最近のSnack Timeのアップデートについて書いたんですが、そこで脱MUIをしたことについて書きました。 note.com 今回は、MUIを導入していた経緯から脱MUIに至る理由、そして脱MUIでの具体的な作業について紹介します。 TL;DR MUIを導入した経緯 MUIを…

公開済みのChrome Extensionのタイトルを変更する

公開済みのChrome Extensionのタイトルを変更する方法について紹介します。 TL;DR マニフェストファイルのnameを変更して、package.jsonのversionをあげて審査に出せばOK github.com 経緯 ChromeでSnack Timeという便利な拡張を公開しているんですが、名前か…

テストでFactoryBotを使う理由・使わない理由

はじめに 先日、チームの若手エンジニアから「テストが成功しなくてデータがおかしい」という相談を受けました。 相談を受け一緒に調査を進めると、同じモデルに対してテストではFactoryBotでのデータ作成と、実際のアプリケーションでは作成ロジッククラス…

画面共有しながら使えるフローティングタイマー「Snack Time」を公開しました

オンラインミーティングで画面共有しながら使える、シンプルなタイマー拡張機能を公開しました。 chromewebstore.google.com まず初めにインストールの方法と使い方について紹介し、その後開発の経緯や今後の展望について紹介します。 インストール 上記のリ…

tmuxistを見直してv1リリースした話

個人でTmuxのセッション管理を行うためのツールとしてtmuxistというのを6年前から細々と開発・使用しています。 github.com 今回はそのtmuxistを区切りとしてv1リリースした話です。 TL;DR 設定ファイルの位置を変更 $HOME/.config/tmuxist/{PROFILE}.toml -…

RBSファイルを自動生成したい

最近はRBSが浸透しつつつあり、私もSteepを使った開発を行うことが増えてきています。 今回はそういったユースケースでrbs-inlineで定義を生成している場合にファイルに変更があったら自動で更新するような仕組みについての紹介です。 TL;DR rbs-inline推奨…

Railsプロジェクト向けの.devcontainer/Dockerfileの一例

未来の自分用のメモです。 ベースイメージが存在していないToyアプリなどで利用することが多いDockerfileについて紹介します。 Railsで動作させることが前提ですが、空行で表現しているグループごとに説明します。 Localeの設定 設定しないとrails consoleな…

IaCを利用したクラウドリソース管理の4つの壁

今回の話はポエム寄りの話になります。 クラウドリソースの管理において、Infrastructure as Code(IaC)は今や欠かせない存在となっています。 しかし、IaCの導入や学習には見えない壁が存在します。 今回は、この壁についての持論について述べていきたいと…

SwiftUIで言語とカラースキームを同時にプレビューするいい感じの方法

前回の記事では、SwiftUIでダークモードとライトモードを効率的にプレビューする方法を紹介しました。 今回は、さらに一歩進んで、言語設定も含めたプレビュー方法を解説します。 PreviewHelperの実装 まず、言語とカラースキームの両方を管理するPreviewHel…

SwiftUIでダークモード・ライトモードをいい感じにPreviewする方法

SwiftUIでダークモード・ライトモードをいい感じにPreviewする方法 SwiftUIでアプリを開発する際、ダークモードとライトモードの両方でUIをチェックすることは非常に重要です。 この記事では、SwiftUIのPreviewを使って両方のモードを効率的に表示する方法を…

VSCode拡張のScrapsの紹介

こんにちは、K@zuki. です。 今回は、私が開発したVSCodeの新しい拡張機能Scrapsをご紹介します。この拡張機能は、コードを書く際にちょっとしたメモを取りたい時に役立つ、非常に便利なツールです。 Scrapsとは Scrapsは、VSCodeのサイドバーにメモを書き込…

DartでDNSクエリを投げてみる

ゴールデンウィーク中に書いているコードで、DNSクエリを一から書いてみるかということで雑に実装したコードを残しておきます。 ちゃんとした仕様通りの実装をしているわけではないので解説はしませんが、UDP通信したい人や別のものを参考にする場合には利用…

WEB+DB Press総集編のファイル名をいい感じにする

WEB+DB PRESSが休刊してからしばらく経ち、総集編が販売開始されました。 gihyo.jp 今回はこのDVDに含まれるファイルの名前をPowerShellでいい感じに変更する話になります。 前提 DVDには、webdb_vol01.pdfのような形式でファイルが保存されています。 これ…

法人設立した話

先日法人を登記してきたので、その大まかな流れについてお話ししたいと思います。 法人設立を検討している方にとって、参考になる情報があれば幸いです。 TL;DR K@zuki. は、会社員 兼 個人事業主(茨谷企画) 兼 代表社員 の掛け持ち状態になっている 個人…

Docker Composeを使ってPalWorldのサーバを建てる

最近はPalWorldにどっぷりハマっています。 マルチプレイをする場合は、24時間起動し続けたいわけでなければ無理してサーバを建てるメリットはないんですが、 それでも建てたいかつ、比較的環境を汚したくない人向けの簡単な記事です。 ポート開放や正式な建…

Helm ChartでデプロイしているWordPressにads.txtを配置する

元々広告を設置しているWordPressのサイトがあったんですが、本格的にk8sクラスタへ移行するにあたってads.txtを配置する必要がでてきました。 今回はその備忘録になります。 TL;DR BitnamiのWordPressのChartを使っている場合の話に限る このイメージは /op…

個人開発したアプリをストア申請するまでの手順とハマりどころ

最近個人用にアプリを作っていたのですが、ついでにアプリストアに申請した時のハマりどころがあったのでメモとして残しておきます。 TL;DR 基本的に https://zenn.dev/moutend/articles/feebf0120dce6e6426fa に従って進めるでOK 5.5 inchのシミュレーター…

GitHub PagesとGoogle Formでアプリ申請に必要なページを最小限の労力で作成する

最近個人用にアプリを作っていたのですが、ついでにアプリストアリリースする気持ちになったので、そこで必要になるページをGitHub Pages+Google Formで作成した話です。 執筆時点ではまだ申請中なので、申請が却下されたり許可が通ったらしたら追記します。…

iOSアプリでファイル取得処理にRepositoryパターンを活用してPreviewする

年末にやっていた個人アプリ開発でアプリでのTipsの1つです。 他に良いやり方もあるかもしれませんが、Swift触り始めて4日目ぐらいの感想になります。 TL;DR Previewでドキュメントディレクトリにアクセスするとエラーが出る、もしくはクラッシュして2度と起…

2023年買ってよかったもの

2023年に買ってよかったものを書いておきます。 2023年も色々細かい買い物してたんですが、かなり印象に残ってるのは1つしかないので、それを書いておきます。 Cleer Arc 2 イヤホンは外耳炎になりがちなのでヘッドホンを使っていたんですが、これに切り替え…

SwiftDataで動的なキーワード検索を実装する

最近は自分向けのPDFリーダーアプリを開発しています。 このアプリではSwiftDataを使って読書履歴をモデル化して管理しているのですが、これを踏まえてちょっと自分のメモがてらにTODOアプリを例にしたメモを残しておきます。 Swiftを触り始めて3日目ぐらい…

Argo CD, Helm, Renovateを使ったコンポーネントの継続的アップデート

皆さん、こんにちは! この記事はSRE Advent Calendar 2023の16日目の記事になります。 今回の話は、k8sクラスタでのコンポーネントの継続的アップデートを行うための工夫についての紹介です。 SREとして信頼性や安定性を担保するためにアップデートの話は必…

おうちクラスタにCDIをデプロイしてUbuntuを動かす

前回の続きでContainerized Data Importer(以下、CDI)を導入してUbuntuの仮想マシンを動かします。 khasegawa.hatenablog.com マニフェストを用意する マニフェストの取得コマンドは省きしますが、マニフェストをkustomization.yamlから参照するように定義…

おうちクラスタにKubeVirtをデプロイする

おうちクラスタにKubeVirtをデプロイした時の話を書いておきます。 実際に変更したコミットは以下にあるので参考にしてください。 github.com マニフェストを用意する 公式のInstalling KubeVirt on Kubernetesを元に必要なファイルを書いていきます。 まず…