タケユー・ウェブ株式会社のフィード
https://zenn.dev/p/takeyuwebinc
Ruby on Rails によるWebサービス受託開発をしています。 中小規模のWebサービスの新規開発の他、他の個人開発者などから引き継いで保守運用を行ったりしています。 新規開発、お手伝いや顧問、レガシーなRailsプロジェクトの保守など、ニーズにあわせて対応できます。ご相
フィード

Rails Engine で tailwindcss-rails を使う方法
タケユー・ウェブ株式会社のフィード
はじめにRails Engineを使ったモジュラーモノリス構成において、各Engine独立したTailwindCSSの管理方法について、tailwindcss-rails gemを用いた実装方法を詳しく解説します。https://railsguides.jp/engines.htmlhttps://github.com/rails/tailwindcss-rails 課題Rails Engineでtailwindcss-railsを使う際の主要な課題:ソースファイルパスの解決: 親アプリケーションのディレクトリから見た、TailwindCSSソースファイルのパスがE...
17日前

Claude Code で作業プロファイル機能を実装して効率的にAI活用する
タケユー・ウェブ株式会社のフィード
はじめにAI エージェントを活用した開発では、適切なコンテキスト設定が作業効率を大きく左右します。Claude Code では、 CLAUDE.md にコンテキストとして必要な指示や説明を記載することで、プロジェクト固有の事情にも対応することができます。本記事では、私が開発プロジェクトに実装した作業プロファイルについて、設定方法からメリットまでを解説します。 作業プロファイルとは作業プロファイルは、作業の種類(開発・レビューなど)に応じて、Claude Code のコンテキストを動的に切り替える仕組みです。プロファイルごとに特化したプロンプトを用意しておくことで、特定のタス...
18日前

Sentry Logsで実現するRailsアプリの構造化ロギング
タケユー・ウェブ株式会社のフィード
はじめにRailsアプリケーションの運用において、ログの管理は問題発生時のデバッグやサービス監視のために重要な構成要素です。しかし、従来のプレーンテキストログでは、特定の条件に合致するログを正確に抽出したり、ログを集計・分析したりすることが困難でした。この記事では、Sentry Logs と ActiveSupport::Notifications を組み合わせて、Railsアプリケーションに構造化ロギングを導入する方法を解説します。構造化ロギングにより属性ベースのログ検索・集計が可能になり、さらにSentry Logsを使うことで、エラー、トレース、ログを一つの画面で確認できる...
20日前

Real World Kamal
タケユー・ウェブ株式会社のフィード
対象読者Kamal の仕組みを知りたいKamal のメリットを知りたいKamal の実際の運用方法を知りたい※デプロイツールって何?Dockerって?という初学者は対象としていません。※Kamalの基本的なインストール方法、導入方法については詳しく説明していません。 はじめにこの記事では、Kamal v2を実際に案件で使ってみてわかったことをもとに、実践的なKamalの使い方を紹介します。Kamalは、RenderやECS+Fargateなどの商用サービスと違い特定のプラットフォームに依存せず、昔ながらのCapistranoなどと比べてデプロイ先の環境構築が容易...
9ヶ月前

カスタムバリデーションはカスタムバリデータクラスで書こう
タケユー・ウェブ株式会社のフィード
!カスタムバリデータを使うと、モデルクラスから本質的でないロジックを追い出し、コードやテストを見通し良く保つ ことができます。 この記事でわかることActiveModel::EachValidator の使い方テストの書き方 事の起こりある案件で wareki gem を使って入力された日付を和暦に変換して表示しています。ある日お客様が入力した日付に誤りがあり、和暦が存在しない年がデータベースに登録され、ページを表示する際にエラーが発生し、表示できなくなってしまいました。その際はデータを修正することで復旧しましたが、次回から同じ誤りが発生しないよう、バリデーシ...
1年前

現実のRuby/Railsアップグレード
タケユー・ウェブ株式会社のフィード
!この記事は、Kaigi on Rails 2024 で発表した内容の原稿をもとに作成しました。 対象読者課題を感じているけどどのように対処すればよいかわからない中級者課題に気づいていない初級者あるあるを楽しめる上級者 はじめにRuby on Railsアプリケーションを最新の状態に保つことは、新機能の利用だけでなく、セキュリティやパフォーマンスの面でも重要です。定期的なアップグレードは、アプリケーションの堅牢性を確保し、最新のフレームワークの進歩を活用するために不可欠です。Railsアプリケーションのアップグレードは、決して簡単ではありません。計画、テスト、...
1年前

Windowsユーザーがmacを使う必要があるときにしたキーボード設定
タケユー・ウェブ株式会社のフィード
私は普段の開発業務にWindows11(+WSL2)を使用していますが、今回必要があってmac(Sonoma)を使うことになりました。その際キーボードの違いにストレスを感じることが多かったのですが、いくつかの設定を行うことで、これを改善できました。 環境macOS Sonoma 14.4.1REALFORCE 日本語フルキーボード(Windows)KVMによりWindows機とディスプレイと入力機器を共有 設定 Karabinerのインストールhttps://karabiner-elements.pqrs.orgインストール・起動後、案内に従って『セキュリ...
2年前

ActiveRecordでCTEを使ってクエリを分割して個別にテストする
タケユー・ウェブ株式会社のフィード
Rails 7.1 以降では、任意の ActiveRecord Relation をCTEとして使用することができます。 共通テーブル式(CTE)を使うと、複雑なクエリ名前付きの一時結果セットに分割でき、クエリの可読性を高めるのに役立ちます。ActiveRecordでは .with クエリーメソッドに任意の ActiveRecord Relation を渡すことでCTEを定義できます。これは個々の結果セットをテスト可能になることを意味します。複雑なクエリを分割することで、テストしやすくなり、保守性を高めることにもつながります。ただし現時点では再帰的に利用することはできません。https...
2年前

Cache-Control: public にする
タケユー・ウェブ株式会社のフィード
Railsアプリケーションで、特定のページのみCDNやブラウザにキャッシュさせたい場合、Cache-Control: public ヘッダーの付与と、応答に Session Cookie が含まれないようにします。 サンプルコードapp/controllers/concerns/enable_cache.rbmodule EnableCacheControlPublic extend ActiveSupport::Concern included do before_action -> do # このリクエストはSessionを使わないし、応...
2年前

ActiveStorage::DiskController が返すファイルの Cache-Control ヘッダを設定する
タケユー・ウェブ株式会社のフィード
ActiveStorage のディスクアダプタを利用している場合、応答として返すバイナリデータについて、キャッシュ制御したいとき、どのようにするか説明します。 Cache-Control; public を返すことで、ブラウザキャッシュや、CDNでのキャッシュを活用し、サーバとネットワークへの負荷の軽減に役立ちます。動作確認したRailsのバージョン:7.1.3.2オープンクラスを使って ActiveStorage::DiskController に before_action を設定します。config/initializers/active_storage.rbRails....
2年前

自由に働く技術
タケユー・ウェブ株式会社のフィード
はじめに私は長年にわたり自由に働くことを選んできました。その理由を紹介しながら、自由に働くために心掛けていることについてご紹介します。変化し続けるツールの使い方よりも、根本的な考え方・心構えの話になります。 筆者について私は2008年11月に24歳で個人事業主として独立開業し、2016年に法人化しました。2018年には数名の社員を雇用しましたが、現在は一人会社として活動しています。リモートワークは開業当時から行っていますので、15年 ほどのキャリアとなります。現在はWebサービス開発の受託開発や事業会社の技術支援を行う傍ら、Saitama.rbという地域Rubyコミュニテ...
2年前

CDKで別のリージョンのリソースを使用する方法
タケユー・ウェブ株式会社のフィード
はじめにCDKを使用していると、時々異なるリージョンにまたがるリソースを利用したい場合があります。例えば、CloudFrontディストリビューションで使用する証明書は必ず us-east-1リージョンである必要があります。このような場合、CDKでどのように対処すればよいかを調べました。 この記事の対象読者CDKで構成管理しているエンジニア この記事に書くことカスタムリソースの使用例 この記事に書かないことCDKについての説明カスタムリソースとは何か? 方法こちらのIssueが参考になりました。[lambda] Lambda@Edge supp...
2年前

自宅PCとDevPodで実現する Self-Hosted な Codespaces
タケユー・ウェブ株式会社のフィード
はじめにGitHub Codespacesは、Web版VSCodeでクラウド上のDevContainerを使用できる便利なツールです。しかし、自作PCやサーバーが趣味の私たちにとっては、手元の高性能端末をサーバーにできないのは不満です。そこで、DevPodを試してみました。 この記事の対象読者自己ホストできるCodespaceを探している方DevContainerで動くWeb版VSCodeを使いたい方日常的にDockerを使っている方 この記事に書くことDevPod のインストールと最初のセットアップ方法Tailscaleと組み合わせて便利に使う方法 ...
2年前

Garnetで加速する?: Railsのキャッシュストアとしての利用
タケユー・ウェブ株式会社のフィード
はじめにhttps://www.microsoft.com/en-us/research/blog/introducing-garnet-an-open-source-next-generation-faster-cache-store-for-accelerating-applications-and-services/Garnetは、Microsoft Researchが開発した新しいキャッシュストアシステムで、最新のハードウェア機能を十分に活用できる設計となっており、Redisなどの既存のキャッシュストアと比べて、優れたスケーラビリティと高いスループットを実現できる、とされ...
2年前

Tailscale Funnelで自宅サーバーのRailsアプリケーションを独自ドメインで公開する方法
タケユー・ウェブ株式会社のフィード
自宅サーバーで独自ドメインのWebサービスを公開するためには、ポートを開けたり、固定IPアドレスを用意するかDynamic DNSを使うか、みたいな手間が必要でした。VPNサービスであるTailscaleには、Tailscaleのネットワーク(Tailnet)上の任意のTCPポートをインターネットに向けて公開できるTailscale Funnelという機能があります。これを活用して、自宅サーバー上のRailsアプリケーションを安全かつかんたんに公開できないか? 試してみたので、その方法をご紹介します。 この記事について 説明することTailscaleからのアクセスをRails...
2年前

DevContainer(Docker Compose)をTailnet(Tailscale)に接続するには
タケユー・ウェブ株式会社のフィード
公式のDockerで使用するガイドを参考に DevContainer をTailnetに接続できるようにしました。これにより、Tailnet内の他のデバイスから、DevContainerで起動したサービスへ接続できるようになります。なお、DevContainerからTailnet内の別のデバイスに接続したい場合は、通常ホストのIPアドレスを共有するので、ホスト側でTailnetに接続していれば、その権限で接続できるため、特別な対応は不要です。本記事は、Tailnet内の他のデバイスから、DevContainer(Dockerコンテナ)に直接アクセスさせたい場合の話です。たとえばロ...
2年前

Procfile.dev を使う場合にデバッガ(vscode-rdbg)を使う
タケユー・ウェブ株式会社のフィード
vscode-rdbg については過去の記事https://zenn.dev/takeyuwebinc/articles/50793a2313824aデバッガ起動時にrails server を実行するなら上記の記事で動くはず。tailwindcss-rails cssbundling-rails jsbundling-rails などを使用する場合、Railsアプリの起動は Procfile.dev に記載します。次のように、 Procfile.dev ではデバッガ付きで起動し、VSCodeのデバッガ起動時は attach のみ行うようにすれば動作します。 設定例Pro...
2年前

Propshaft で node_modules 内のファイルをアセットとして使う
タケユー・ウェブ株式会社のフィード
結論これから作るものについては、 node_modules を assets パスに含めようとするのはやめよう 動機importmap-rails で node_modules 以下のファイルを指定したい。config/importmap.rb の to: は asset_path で解決できるものを指定できるので、アセットパスに追加すれば使える。https://github.com/rails/importmap-rails/blob/ddf9be434e0aca1103eabafe6d34b0e8a5064057/lib/importmap/map.rb#L109h...
2年前

Rails 7.0 から 7.1 で ActiveRecord::Encryption::Errors::Decryption
タケユー・ウェブ株式会社のフィード
Rails 7.0 から 7.1 にアップグレードする際に、Active Record暗号化アルゴリズムの問題でエラーに遭遇しました。class Patient encrypts :mynumberみたいなのでhttps://railsguides.jp/upgrading_ruby_on_rails.html#active-record-暗号化アルゴリズムの変更についてに従って、バージョンアップ前の config.active_support.key_generator_hash_digest_class と同じになるよう config.active_record.encr...
2年前

Rails(Devise)でパスワード認証に加えてパスキー(WebAuthn)でもログインできるようにするステップバイステップ
タケユー・ウェブ株式会社のフィード
パスキーの普及も進んできましたね。私のWindows11でもWindows Helloを使ったりAndroid/iOS端末を使ったローミングができたりととても便利で簡単です。ニンテンドーアカウントでもパスキーによるログインが可能になりました。もちろん設定しましたよね。https://www.nintendo.co.jp/support/nintendo_account/passkey/index.htmlRailsでもパスキーを組み込む方法がいろいろと説明されています。https://techracho.bpsinc.jp/hachi8833/2023_10_19/134237...
2年前