あしたのチーム Tech Blogのフィード

https://zenn.dev/p/ashita_team

株式会社あしたのチームの Tech Blog です

フィード

記事のアイキャッチ画像
OpenAPI の API 定義で response schema を強制する rake task を導入する
あしたのチーム Tech Blogのフィード
既存の API 定義のレスポンススキーマの変更により未修正のファイルを洗い出したい、また、今後の定義作成時に旧スキーマを使わないように強制したい欲が出たので、これを検出する rake task を作成したので紹介する。 作成のきっかけAPI 作成時は OpenAPI の YAML 形式で API 定義を作成しており、これらのステータスコード 401, 403 のレスポンススキーマを変更したいとなった。元々使っていたスキーマは別のステータスコードで引き続き利用されている。変更対応した後、漏れがないかを grep -n -A 10 '"ステータスコード"' -R path/to/di...
8ヶ月前
記事のアイキャッチ画像
「シンプル」の4分類
あしたのチーム Tech Blogのフィード
はじめに - 「シンプル」は合意を装った分裂である「もっとシンプルにできないか」この言葉には不思議な力があります。発した瞬間、全員がうなずく。誰も反対しない。なぜなら「シンプル = 良いこと」という暗黙の了解があるからです。でも、その5分後に起きることを私たちは知っています。エンジニア A「ファイル数を減らせばシンプルになる」エンジニア B「いや、責務を分けた方がシンプルだ」デザイナー「そもそもユーザーから見てシンプルかどうかが大事では」全員が「シンプル」に賛成したはずなのに、議論は空中戦になる。これは偶然ではありません。「シンプル」という言葉は、合意しているように...
8ヶ月前
記事のアイキャッチ画像
Claude Code プラグインをチームで共有する
あしたのチーム Tech Blogのフィード
はじめにClaude Code を使い込んでいくと、便利な MCP サーバー設定やカスタムコマンドが手元に増えていきます。チームのみんなにも使ってほしいのに、設定ファイルを共有するのは意外と面倒です。そこで活用したいのがプラグイン機能です。MCP サーバー設定、カスタムコマンド、スキルなどをひとつのパッケージにまとめて、チームで共有できます。各メンバーがコマンド一発で導入できるため、「設定ファイルをコピーして、ここを書き換えて...」といったやり取りから解放されます。この記事では、チーム専用のプラグインマーケットプレイスを構築し、プラグインを共有する方法を紹介します。http...
8ヶ月前
記事のアイキャッチ画像
OpenSpec で始める仕様駆動開発
あしたのチーム Tech Blogのフィード
はじめにClaude Code や Cursor を使って開発していると、「曖昧な仕様のまま実装が進んでしまう」問題に直面することが多いです。AI は与えられた指示に忠実に従います。しかし、指示自体が曖昧だと意図しない実装になりがちです。また、生成されたコードの仕様がどこにも残らず、後から「このコードは何をするものだったのか」わからなくなることもあります。この課題へのアプローチとして OpenSpec を試してみました。仕様を明確にしてから実装に進むワークフローを提供するフレームワークで、AI と協働しながら仕様駆動開発を実現できそうです。 OpenSpec とはOpen...
9ヶ月前
記事のアイキャッチ画像
Claude Code Plugin を開発するプラグイン plugin-dev で自作プラグイン開発のハードルを下げる
あしたのチーム Tech Blogのフィード
Claude Code プラグイン活用の課題Claude Code のプラグイン機能は Commands、Agents、Skills などのカスタム機能をチームで共有できる便利な仕組みですが、実際に使い始めると2つの課題に直面します。 課題1: 既存プラグインは自身のワークフローに適合しないGitHub などで公開されているプラグインは探せばたくさんありますが、それらが自分のワークフローにそのまま適合することは稀です。 公開プラグインはあくまで参考であり、基本的には自分のワークフローに合わせたプラグインを自分で育てていく必要があります。 課題2: プラグインの自作に要求さ...
9ヶ月前
記事のアイキャッチ画像
レビュー待ちの Pull Request を Slack に通知する
あしたのチーム Tech Blogのフィード
Pull Request のレビュー完了までの時間を短くするため、Slack にレビュー待ち Pull Request のリンクを通知するようにしたので、実施した内容を紹介する。この記事では、Slack の通知設定は済んでいることを前提としている。 どのようなものを作りたいと思ったのかレビューが放置されることを避けたい。かと言って、通知が多いのもアテンションを奪われるので避けたい。ということで、定期実行で日に数回、Slack に Pull Request を通知してみることにした。通知内容はその時点でレビュー待ちとなっている Pull Request をリンクにしたものとし、...
10ヶ月前
記事のアイキャッチ画像
SSMドキュメントのパブリック共有ブロック設定を全リージョンに対してサクッと設定した話
あしたのチーム Tech Blogのフィード
はじめにAWS Security Hubを運用していると、様々なセキュリティコントロールに対応する必要があります。今回は、その中でも「SSM.7 - SSM documents should have the block public sharing setting enabled」というコントロールに対応した話です。このコントロールは、Systems Manager (SSM) ドキュメントが誤ってパブリックに共有されることを防ぐための重要な設定です。しかし、この設定はリージョンごとに行う必要があり、手動で全リージョンに設定するのは非常に手間がかかります。そこで、AWS CL...
1年前
記事のアイキャッチ画像
ActiveRecord から取得した DB 情報で ER 図を作(ってい)る(途中)
あしたのチーム Tech Blogのフィード
要望により、いわゆる DB 項目書のようなテーブルとテーブル間の関係、テーブルにどのような項目があるかがわかる資料が欲しいとなったため、これらを出力するものを作ったのでそのメモをまとめて置いておく。 要望(欲しいもの)DB にもっているテーブルと、そのテーブル内のカラム、テーブル同士の簡単な関係を理解できるものが欲しい。継続的な成長を伴うシステムだと作成しているそばからテーブルやカラムが追加されて陳腐化するので、自動で生成したい。 自作することになったきっかけ既存のライブラリや仕組みを使って楽をしたかったが、以下の要望を満たそうと思ったら自作することになった。テーブル数...
1年前
記事のアイキャッチ画像
SSHコマンドを切り替える .gitconfig の工夫
あしたのチーム Tech Blogのフィード
前回の記事では、1PasswordのSSHエージェント機能を活用して、WSL環境でWindows側のssh.exeを使用する設定について紹介しました。git config --global core.sshCommand ssh.exehttps://zenn.dev/ashita_team/articles/5b9d7f374d17acこれでWSL上からでも、Windowsに保存されたSSHキーを使ってGitHubなどにアクセスできるようになりました。しかし、開発環境で devcontainer を利用している場合には、少し問題が発生します。 devcontainerでの問...
1年前
記事のアイキャッチ画像
WSLで1PasswordをSSHエージェントとして利用する
あしたのチーム Tech Blogのフィード
WSLで1PasswordをSSHエージェントとして利用するWSL2でGitを使う際1PasswordのSSHエージェント機能を使うと安全かつ快適にSSH接続ができます。 1PasswordでSSHエージェントを有効にする1Passwordデスクトップアプリの設定から、SSHエージェントをONにします。設定 → 開発者 → 「SSHエージェントを使用」をON SSHキーを1Passwordに登録する 方法A:GUIから登録新規アイテム → SSHキーを追加して「秘密鍵を追加」 方法B:CLIから登録(op item create)デフォルトでは Ed25...
1年前
記事のアイキャッチ画像
Raycast × OpenAI API × Obsidian で始めるお手軽ジャーナリング
あしたのチーム Tech Blogのフィード
はじめにRaycast・OpenAI API・Obsidian を組み合わせて構築したお手軽ジャーナリングを運用してみて、とても便利だったので紹介します。 Raycast の Script Commands からテキストを投げると、AI が体裁を整え、タイトル・タグ・感情などを自動生成して Obsidian のノートとして保存してくれます。 どのアプリを開いていてもホットキーから一発で起動できるため、入力のハードルを極限まで下げることができます。コードは以下のリポジトリで公開しています。 README に従ってセットアップすれば数分で導入できます。https://github....
1年前
記事のアイキャッチ画像
grep の -A オプションが便利
あしたのチーム Tech Blogのフィード
grep 系のツールを使うときに -A オプションを知っていると便利なのだが、私自身 -A オプションを知って活用できたのは grep を知ってからかなり時間が経ってからだったため、ここで紹介しておきたい。 grep の -A オプションとは以下の文は、私の手元の macOS で man grep を実行した際に表示される -A オプションの説明である。-A num, --after-context=num Print num lines of trailing context after each match. See also the -B and -C o...
1年前
記事のアイキャッチ画像
Raycast AI Commands でテキストコミュニケーションにおじさんを宿す
あしたのチーム Tech Blogのフィード
はじめに日常のテキストコミュニケーションにおいておじさん構文を使いたい場面は意外と多いです。 しかし、おじさんの独特なクリエイティビティを再現することは難しい作業です。そんな課題を解決できるのが Raycast の AI Commands 機能です。 本記事では、Raycast AI Commands を活用して、テキストコミュニケーションにおじさんを宿す方法を紹介します。 結論まず手動で伝えたいメッセージを入力し、Raycast AI Commands を用いておじさん構文っぽく変換します。 デモこのように、選択したテキストを内容は変えず文体のみを瞬時におじさん構...
1年前
記事のアイキャッチ画像
依存関係アップデートにおける QA テストのバッチサイズを最適化する
あしたのチーム Tech Blogのフィード
はじめにわたしの所属するチームでは Renovate を用いて依存関係のバージョンアップ Pull Request を自動生成しています。 また、プロダクションコードに一定の影響を与える更新に対しては QA チームによるテストを実施して品質を担保しています。QA テストにおいては Renovate が作成した複数の Pull Request をまとめてバッチ化することで効率化を図っています。 このとき、どのくらいのバッチサイズが最もコスト効率が高いかは感覚で決められがちです。本記事では、最もシンプルな前提から数学モデルを構築し、最適バッチサイズが概ね n^{*} \approx...
1年前
記事のアイキャッチ画像
ignored_columns の削除漏れを検出する rake task を実装する
あしたのチーム Tech Blogのフィード
テーブルのカラムを削除したいとなった際、稼働中のシステムに影響を与えないよう ApplciationRecord を継承したモデルの self.ignored_columns をオーバーライドして対象のカラムを追加し、該当カラムを無視して無きものとして扱うことがある。追加したのはよいものの、カラムの削除を忘れたりカラムを削除してオーバーライドした self.ignored_columns を削除し忘れたりすることがあるため、そうなった場合に気がつける仕組みを用意したいと考えたので、実践した内容を記録として残しておく。 self.ignored_columns を設定しているモデルを...
1年前
記事のアイキャッチ画像
WSLのArchLinuxでGUIアプリを動かす
あしたのチーム Tech Blogのフィード
Windows Subsystem for Linux(WSL)の最新版では、WSLg(WSL GUI)機能により、LinuxのGUIアプリケーションをWindows上で直接実行できます。WSLgを使ってGUIアプリケーションを動かす方法を、定番のxeyesアプリを例に解説します。 WSLgとはWSLgは、WSL2に統合されたGUI機能で、X11やWaylandアプリケーションをWindows上でネイティブに実行できる仕組みです。従来のようにX11サーバーを別途インストールする必要がなく、より簡単にLinuxのGUIアプリケーションを利用できます。 基本的な使い方 xeye...
1年前
記事のアイキャッチ画像
Copilot Chat を “コードレビューの達人” にする実践的プロンプト設計と運用のコツ
あしたのチーム Tech Blogのフィード
はじめにコードレビューは高品質なソフトウェア開発において欠かせないプロセスですが、時間と労力を要する作業でもあります。 自身の Pull Request やメンバーの Pull Request において、GitHub Copilot にコードレビューをしてもらうことで、問題になりそうなコードをかなり見つけられるようになりました。この記事では、GitHub Copilot を使ったコードレビューの方法を比較しながら、特に柔軟性の高い Copilot Chat を活用したアプローチについて詳しく紹介します。 GitHub Copilot によるコードレビューの3つの方法 コ...
1年前
記事のアイキャッチ画像
エラー: Authorization server not configured with default connection を回避する
あしたのチーム Tech Blogのフィード
エラーの概要Auth0 で、Multi-factor Auth や machine to machine application で token を取得したいとなった場合に、API POST /oauth/token にリクエストするとAuthorization server not configured with default connection. というエラーメッセージが返ってくることがある。この場合、Default Directory を設定するという解決方法があるが、同一テナント内で複数のデータベースを使い分けている場合 には Default Directory の設...
1年前
記事のアイキャッチ画像
WSL公式イメージになったArchLinuxをつかう
あしたのチーム Tech Blogのフィード
ArchLinuxがWSLの公式イメージとしてリリースされたので、改めてWSLの設定をしてみました。 WSL への Arch Linux インストール インストール可能なディストリビューションの確認以下のコマンドで、インストール可能な公式イメージに Arch Linux が含まれていることを確認できます。> wsl -l -oインストールできる有効なディストリビューションの一覧を次に示します。'wsl.exe --install <Distro>' を使用してインストールします。NAME FRI...
1年前
記事のアイキャッチ画像
before_action, skip_before_action を強制する Custom Cop をつくる
あしたのチーム Tech Blogのフィード
特定の before_action / skip_before_action の記述を強制する Custom Cop を作りたくなったため、作成の過程で検討したことと、実施したことを記録する。 on_class を使う着手当初、on_send で作成しようとしたが、before_action には only オプションがあるため、controller class に対して定義されているメソッドを知る必要があると考えた。そのため、クラスで定義、利用されているメソッドの情報を Node から取得できる on_class を利用することとした。尚、controller なのかどうかを...
1年前