サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
新内閣発足
r7kamura.com
複数のGemfileを並行運用する際に便利な情報を幾つか挙げておく。 更新漏れの検知 複数のGemfileを並行運用していると「Gemfile.lockを変更したがもう1つのlockファイルの更新を忘れてしまった」という事態が起き得る。これを避けるために、差分検知を行うworkflowを設けておくと有用である。 以下はr7kamura/gemfile-diffというactionで実現する例: name: gemfile-diff on: pull_request: paths: - Gemfile.lock - Gemfile_rails_8_0.rb.lock jobs: run: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: r7kamura/gemfile-diff@v0 with: gemfile
長年の運用で「Gemfileはこう運用すると上手くいった」という知見が蓄積されてきたので、ここに書き出してみておく。 Bundler/OrderedGemsを有効化する RuboCopの Bundler/OrderedGems Copを有効化する。 悪い例: gem 'puma' gem 'jbuilder' 良い例: gem 'jbuilder' gem 'puma' セクションを分けない 基本的に、独自の判断で空行を入れてセクションを分けたりしない。 ここで言うセクションとは「空行で区切られた1つのまとまり」のことである。Bundler/OrderedGems は、このまとまりの中で辞書順であることを要求する。 悪い例: gem 'aws-sdk-rails' gem 'aws-sdk-s3' gem 'graphql' gem 'graphql-batch' 良い例: gem 'aw
よく考えたら作業机いらなくね?と思い、手放すことにした。「机捨てた」と言うと相手の思考が止まりがちなので、普段は「テレビでパソコンしてる」って説明してる。これが一番伝わりやすい。 現在の作業場 立ち座りしやすく、疲れづらいのがいいところ。あと掃除がしやすい。 トラックボール付きのキーボードが椅子についてて、動画編集やプログラミングなど、意外とこれで十分作業できている。ゲームパッド非対応のPCゲーム等でどうしてもマウスが必要なときは、椅子の隣に袖机的な何かをもってきている。上の写真ではソファの一部を場当たり的にもってきていますね。 この環境で重宝しているものとして、DJI Mic 2がある。これは無線のピンマイクで、Discordや会議なんかで通話するときにワイヤレスイヤホンと併せて使っている。元々カメラの撮影用機材として入手したものだけど、通話用マイクとしても意外と使い勝手が良かった。家の
r7kamura/bump-requestを改善して、ボタンをポチポチやるだけでパッケージの新しいバージョンをリリースできるようにした。 https://github.com/r7kamura/bump-request r7kamura/bump-requestは、新しいバージョンのリリースを自動化するためのGitHub Action。何個もパッケージをメンテナンスしていると、流石にこういうものがないと生きづらくなっていく。詳しくは以前の記事でも触れている。 リリースの自動化 これを使う際、以前までは新しいバージョンを都度手入力する必要があったが、今回これを major, minor, patch の選択肢を元に自動計算してくれるようにできた。semantic versioningのバージョン形式に則っているだろうということを前提として、最新のリリースのバージョンを元に次のバージョンを計算
現在自分が利用しているキーマップについて。 基本情報 Keyball39 ローマ字入力 日本語キーボード Windows プログラミング、動画編集等で利用 レイヤー0 デフォルトのレイヤー 全体構想として、モディファイアキー・レイヤーキー・クリックキーを左右両方に配置することで、取れる選択肢を増やしつつ負担を減らすことを目指している。このために、特徴的な設計としてホームポジションにモディファイアを配置している。この方式は、英語圏ではよくHome Row Modsと呼ばれている。単押しで文字入力、長押しでモディファイアキーになる。 この方式の利点は、小指を使わなくて済んだり、親指のキーを他の用途に明け渡せたり、複数モディファイアを組み合わせやすかったりする点。例えば、プログラミングをしているとエディタでCtrl+ShiftやAlt+Shiftを活用できる場面が多く、この方式だとそれが扱いやす
左右分割型のキーボードを椅子に固定してみた。 今回使ったキーボードは、Keyball39。左右に分かれているタイプで、左右合わせて合計39個のキーが搭載されており、右手側にトラックボールが付いているキーボード。 このキーボードの底面に鉄板を貼り、椅子から生やしたアームに磁気式の雲台で固定し、磁気式のUSBケーブルで配線してみよう、というのが今回の試みです。なお、以前には別のアプローチとして、机に固定する方法を紹介しました。 分割キーボードを机に固定 Corne V4 Chocolateのときはケース内底面に鉄板を貼りましたが、今回は底面のアクリル板に直接鉄板を貼ってみることに。剥がしやすくするために、マスキングテープの上から貼り付けました。 Amazon | [エムティ]スチールプレート (マグネット吸着用) シルバー 正方形 ■ 24x24mm / 裏面超強力1mm厚シール付 10枚入(
左右分割型のキーボードを机に固定してみた。 今回使ったキーボードは、Corne V4 Chocolate。左右に分かれているタイプで、左右合わせて合計46個の背の低いキーが搭載されており、はんだ付け不要な簡単組み立てキットが販売されている、初心者にもおすすめのキーボード。 このキーボードのケース内底面に鉄板を貼り、机から生やしたアームに磁石型マウントで固定しよう、というのが今回の試みです。 このキーボードのケース内底面には格子状にでっぱりが付いているので、大きな鉄板一枚を貼るのは難しい。そこで、小さな鉄板を複数枚貼り合わせていく。世の中には両面テープ付きの小さな鉄板がまとめて売られているので、それを使います。今回はこの正方形のやつと円形のやつをそれぞれ10枚ずつ貼ってみたところ、十分な磁力を得られました。 Amazon | [エムティ]スチールプレート (マグネット吸着用) シルバー 小
新しいPCを組んだ。 自作PCを組むのはこれで二台目。一台目については以下の記事で紹介している。 自作PC2021 前回の組み立て時に基本的な部分を学べたので、今回は一度やってみたかった本格水冷に挑戦してみることにした。 組み立て後 組み立て前 この記事では、利用した各部品を紹介していく。前半では水冷にあまり関係無い部分、後半では水冷に関係する部分に触れる。自作PC2027を書くことになる頃合いで読み返したい。 ケース Lian LiのO11 EVO RGBを利用した。 Amazon | LIANLI E-ATX対応ミドルタワーPCケース O11D EVO RGB Black リバーシブルデザイン E-ATX(幅280mm以下) / ATX/Micro ATX/Mini-ITX規格対応 RGBストリップ標準搭載 420mmラジエーター搭載可能 日本正規代理店品 | リアンリー(Li LIA
台所の排水溝のゴミ受け (目皿) を銅製のものに交換してみたところ、全然ヌメヌメしなくなった。 買ったのはこれ。もっと早く交換しておけば良かった。 Amazon|Talea Ø14.3cm,H:4.2CM,バスケット,キッチン はいすいこう ゴミ受け,ステンレス 排水口 ゴミ受け,QS588C004|排水口水切りカゴ オンライン通販 この使い捨ての網を被せて使っている。 Amazon.co.jp: キチントさん ダストマン○(マル) 浅型 (50枚入り) : ドラッグストア
コードレスドライヤーはいいぞ。 ドライヤー本体の様子 自分が使っているのは、Zuviという会社の製品。 Zuvi Halo 光ヘアケアコードレスドライヤー Zuviは香港のスタートアップ企業で、製品開発は深センで行っているとのこと。日本法人はZuvi Japan株式会社。 充電時間は30分ぐらいで、最大風量でも約15分は使える。風量は前まで使ってたDysonのドライヤーより強いぐらいなので、かなり強力。温度はぬるめ。高温多湿な脱衣所で乾かすより、リビングで落ち着いて乾かす方が好きなので、最近は専らリビングに持ち込んで使っている。自分以外 (特に小さい子とか) を乾かすのにも便利かも。テレビでも見てもらっておけばいいし。 充電スタンドに置いた様子 重量は630g。例えば最近のPanasonicの良いやつ EH-NA0J-W だと本体重量が550g、Dysonの良いやつ Supersonic
vscode-ruby-lightの開発中に考えたことを書いていきます。今回は、内部で利用しているRuby用パーサーのtree-sitter-rubyからPrismへの移行について書きます。 @ruby/prismパッケージの概観 Prismは、JavaScriptからもその実装を利用できるよう、@ruby/prismという名前でnpmパッケージを公開しています。 何が含まれているパッケージなのかというと、まずWASMバイナリという形でコンパイルされたPrismの実装と、それを便利に使うためのJavaScriptの実装、それからTypeScript向けの型定義ファイルが含まれています。これらはESModuleという形式に従ってモジュール化されています。またruby/prismのリポジトリ内に、JavaScript向けの簡単なドキュメントも含まれています。 もちろん、本拡張でもこのnpmパッ
vscode-ruby-lightの開発中に考えたことを書いていきます。今回は、2022年末に初期版を開発してから1年ほど経った2023年末時点でのふりかえりを行います。 vscode-ruby-lightとは 1年ほど前に、Ruby用VSCode拡張: vscode-ruby-lightという記事を書きました。要約すると、Rubyがインストールされていなくても使える、Rubyを書くのがちょっと便利になるVSCode拡張をつくってみているという話です。具体的には、シンタックスハイライトやトークンの選択など、VSCode標準の機能よりちょっと良い編集体験を提供しようという目的の拡張です。 あまり真面目に開発している訳ではなく、VSCode拡張やLSPについての勉強も兼ね、ちょっとした趣味プロジェクトとして開発したりしなかったりしているというのが実情です。開発自体は1年ほど停滞していたのですが
r7kamura.comドメインをAmazon Route53からCloudflareに移管したので、手順等を書き残しておきます。 Cloudflareのアカウント作成 自分の場合、2016年にアカウントを作成していたので、このアカウントを利用しました。無い場合はここで作成することになります。 https://www.cloudflare.com/ja-jp/ ドメインの移管や維持にはお金が掛かります。ドメイン移管時に支払い情報の登録が必要になるので、ここで予めクレジットカードの情報等を設定しておくと事が円滑に進みます。 Cloudflareにドメイン名を登録 Cloudflareにログインし、管理画面右上の "Add a site" から、ドメイン名を登録してサイト情報を用意します。 ドメイン名を入力すると、このサイトに対して利用する料金プランを選択することになります。自分の場合、今回は
結論から言うと、node_modulesをキャッシュしてnpm ciの実行を省略するのが、多くの場合には有効そうです。 はじめに CIで npm ci を使うとき、実行時間短縮のためにキャッシュの利用を検討することになると思います。このとき、どのようにキャッシュするのが良いのでしょうか? よく知られているキャッシュ方式として、以下の二通りの方式があります。 ~/.npmをキャッシュする方式 node_modulesをキャッシュする方式 それぞれの違いについて、詳しく見てみましょう。 ~/.npmをキャッシュする方式 npm ci を実行すると、POSIX系のOSではデフォルトで ~/.npm にキャッシュデータが書き込まれます。package-lock.json をキーにこのディレクトリをキャッシュしておくことで、次回以降の npm ci 実行時にこのキャッシュデータを利用しよう、というの
作業机の配線の記録をまとめておきます。 現在の様子 2020 2020年は牧歌的な時代で、子供の頃から使っていた机の上に、必要な機器を乱雑に並べていました。当時はゲームの録画や配信をはじめた頃だったので、それ以前と比べると、キャプチャーボードやオーディオインターフェースが増えていっていました。 乱雑に積まれた機器達 2021 2021年には作業机を買い替えたり、はじめて自作PCを組んだりしました。この辺りでようやく、配線に真面目に向き合い始めました。この年には、天板下にクランプで取り付けられる、サンワサプライのケーブルトレーを導入しました。 電源ケーブルはカーペット下を通している あらゆる機器が詰め込まれたケーブルトレー 電源タップはマグネットシートで設置 PC裏にはゲーム機 2022 引越しを済ませ、生活が落ち着いてきた頃合いで、半年間、朝6時から12時まで毎日作業配信をやってみました。
良かったものを年末にまとめる回、2023年版。 上の方が生活用品系で、下の方がPC周辺機器などのガジェット系。 ラブリコと扇風機 脱衣所に大きな扇風機を設置できたおかげで、年中入浴後に快適に過ごせて、お風呂に入るのも楽しかった。入浴は健康に生活を送る上で重要な習慣だと感じているので、今年はそこの快適度を上げる努力をできたのが良かった。ラブリコは、賃貸物件でも問題無く設置できるし、最終的な処分も難しくはないし、自分で自分の環境を良くするDIYの楽しみがあるので、良いものだと思う。羽が大きい扇風機はいいぞ。 『脱衣所に壁掛け扇風機』という記事でも触れた。 Amazon.co.jp: 平安伸銅工業 LABRICO DIY収納パーツ 2×4アジャスター強力タイプ オフホワイト 最大使用荷重40kg EXO-1: ホーム&キッチン あっちこっちふきん 12年ほど食器用に使っているふきん。めちゃくちゃ
Elgatoの『HD60 X』というキャプチャーボードが優秀って話。 Nintendo Switchと接続しているHD60 Xの様子 要点 HD60 Xの良い点は以下の通り。 設定の手間が少ない 遅延が非常に少ない Elgatoが信用できる 設定の手間が少ない 例えば以前まで使っていたAVerMediaの『AVT-C878 PLUS』だと、音声をまともに扱うには公式サイトのダウンロードページからユーティリティーツールをインストールし、そのツールを利用してドライバーをインストールする必要があり、更に映像入力と音声入力が別のデバイスとして認識されるため、そのための追加設定を行う必要があった。 一方でHD60 Xは、特にドライバーをインストールする必要もなく、接続するだけで利用可能。環境によってはデバイスのファームウェアアップデートが必要になる場合もあるが、自分の環境ではその必要もなかったため、
最近記事を書いていなかったので、取り留めのない近況について。 仕事 相変わらず業務委託で様々なRailsアプリの開発現場に携わっている。 仕事内容は主に「全般的にこのRailsアプリいい感じにしてください」という話を受けて、以下のような仕事を進めることが多い。 RubyやRailsのバージョン変更 それ伴う様々な変更の調査と実装 その後の継続的なバージョン変更 自分が居なくなった後に手順をなぞれるように情報を整理 CIの改善 高速化、安定化 Flakyなテストとの戦い テストコードの根本的な改善 静的解析ツールの整理 開発者の教育 開発環境の改善 開発環境構築手順の整理 その組織向けのRailsやRSpecに関するガイドラインの策定 Docker環境との棲み分け方の整理等 その他ドキュメンテーション その他改善できそうなところの調査と実装 普段からたまにrubocopやrubocop-ra
参加しているプロジェクトで、RailsアプリのCIの高速化を行った。 まだ進行中の部分も幾つかあるが、結果から言うと、元々8分前後だったテストが3分半程度に短縮された。行った作業を幾つかの観点に分け、どのように高速化を行ったか、どの程度高速化されたか等を記述する。 プロセス数とマシン性能の調整 元々は2コア1プロセス4マシンで8分程度掛かっていたが、8コア8プロセス1マシンに変更することで5分程度に短縮された。 このプロジェクトではCIにGitHub Actionsを利用している。GitHub Actionsではデフォルトで2コアのマシンが利用されるが、Large runnerを利用して8コアに変更した。コア数を2倍にした代わりにマシン数も半分に減らしたので、結果的に費用は変わっていない。 また同時に、8プロセスで並列実行するためにparallel_testsを導入した。このプロジェクトで
AmazonプライムセールでAirPods Proの第2世代が安くなっていたので、2台運用している内の古い方のAirPods Proを買い替えた。 Amazon.co.jp: Apple AirPods Pro(第2世代) ホワイト : 家電&カメラ 作業中、ノイズキャンセリング目的と気軽に通話に参加したい目的で常時AirPods Proを付けている。数時間で充電が切れるので、常時着用するとなると充電中にもう1台持つ必要があり、2台持つことにしている。2台持つとなるとまずまずの金額になるものの、そこは作業用の経費と割り切って使っている。 他社製品との比較 完全ワイヤレスイヤホンは選択肢が多く、用途的には別にAirPods Proでなくても良いのだけど、問題が起きたときにその製品固有の問題なのかどうかを切り分けるのが面倒。利用者が多く、最悪Appleストアに持ち込めば対応して
ラブリコと2x4材を使って、脱衣所に壁掛け扇風機を設置した。 扇風機はTEKNOSのKI-W488Rという製品。羽が40cmあり比較的大きい。羽は大きい方が同じ電力で風量が大きくなると聞いたので、羽が大きめで比較的安い物を選ぼうということでこの製品にした。 扇風機設置後の様子 2x4材の方は、適切な長さに切られた2x4材の両端に部品をはめて、壁にはめ込み、上側のネジを手で回すことで設置できた。ここでの適切な長さとは「設置場所の最大長 - 120mm」である。 ラブリコの公式サイトから辿れるオンラインショップでは、「柱セット」という形で、2x4材のカットや染色までやってくれるサービスがある。自分で2x4材を用意する場合と比べて価格は高くなるが、楽ではあるので、これを利用するのも良いと思う。 ラブリコで2x4材を設置した様子 扇風機に壁掛け金具とネジが付属しており、ドライバーで金属のネジをぐり
やっておくと安心。 手順 まず利用しているライブラリのソースコードを、適当な場所にコピー。 cp -r vendor/bundle/gems tmp/gems 各ライブラリに .rubocop.yml が含まれているとその設定が利用されてしまうので、削除する。前述のコピーはこのために必要。 rm tmp/gems/**/.rubocop.yml 適当なオプションを付け、Rubyのバージョン変更に関係がありそうなCopを指定しながら、RuboCopで静的解析する。 bundle exec rubocop \ --ignore-disable-comments \ --ignore-parent-exclusion \ --ignore-unrecognized-cops \ --only Lint/DeprecatedClassMethods,Lint/DeprecatedConstants
GitHub Actionsでテストファイルを複数ノードに適切に分割するためのカスタムアクション、r7kamura/split-tests-by-timingsを作った。 CircleCIに同様の仕組みがあり、今回はこれのGitHub Actions版が欲しかった。 既存ツールとして、Go製のleonid-shevtsov/split_testsというCLIツールがあり、これを利用するchaosaffe/split-testsというカスタムアクションがある。 このカスタムアクションでも不足は無かったが、幾つかの理由で今回自作するに至った。 しばらく使いそうなので、保守性を上げるためにも、不要な機能を取り除いて必要最低限の機能にしたかった GitHub Actionsは仕様変更が多いため、自分で保守できるようにしたかった 今回、内部実装としてRust製のmtsmfm/split-testとい
GitHub Codespacesをちょっと試した。 初期導入時にハマりどころも多いけど、真面目に設定しておけば、普通にCodespacesの環境だけで開発することは十分できそうだなと感じた。リポジトリ単位で環境を用意するのが基本で、多くのリポジトリに対して毎日のようにレビューをしたりPull Requestを出したり、みたいな開発フローには綺麗にはまらないと思うけど、普通に仕事で単一のリポジトリに対してだけ作業する用途であれば上手くはまると思う。Zoomで会議しながら重い処理を実行していても影響が無いのは良かった。Zoomで会議しながら重い処理を回すべきではないという意見もある。 Codespacesの利用の流れ Codepsacesを利用するときの流れについて。まず、予め .devcontainer/devcontainer.json を配置したリポジトリを用意しておく。Codespa
年始にシレン5 Plusを原始99Fクリアまで遊んだ。 不思議のダンジョン経歴 不思議のダンジョン系は、以下の作品を昔遊んで以来。 風来のシレン1 風来のシレン2 風来のシレン外伝 アスカ見参 チョコボの不思議なダンジョン1 チョコボの不思議なダンジョン2 不思議の幻想郷 ストーリーダンジョンの感想 他作品と比べてストーリーダンジョンの単純な難易度はそこそこ高めで好印象。ポイントカードシステムによって、実質的に毎度死んでもアイテム持ってやり直せるので、これありきだと初心者にはかなり丁度いい設計になっていると感じた。ストーリーも台詞回しはあっさりした演出ながらもしっかりと物語が構成されていて良かった。 個人的には、やはりもっと不思議なダンジョン系の雰囲気が好きということもあり、昼夜システムはあまり肌に合わなかった。夜ありダンジョンは、夜待ち、引き寄せ混乱で一掃、階段探知で即降りという行動がテ
良かったものを年末にまとめる回、2022年版。 ストレスレストーキョー PC作業用のデスクチェアとして使い始めたら大成功。元々はリビング用だった。 前に書いた記事: ストレスレストーキョーで作業 前に書いた記事: ストレスレストーキョーのリクライニングチェア Amazon|EKORNES [正規品]ストレスレス®トーキョー スター ブラック/マットブラック チェアのみ mサイズ|リクライニングチェア オンライン通販 エルゴトロンLX デュアル 長身ポール ディスプレイを支える技術。横長ディスプレイ上下2枚×リクライニングチェアの組み合わせが絶妙に噛み合っている。たまに縦長の絵を大きく表示したいときがあり、上側のディスプレイを引っ張って回すだけですぐ縦長にできるのも便利。 前に書いた記事: エルゴトロン LX デュアル Amazon.co.jp: エルゴトロン LX デスク デュアル モニタ
2022年にやって良かったゲームを振り返る。 一番良かった作品 ELDEN RING 期待の大作として登場し、その期待を更に超える出来だった。戦技の大幅強化とオープンワールド化により、難解なストーリーやボス戦を辿らずともただ世界を探索しているだけで楽しめるようになり、初心者への裾野も広がった。しかしロールプレイや縛りプレイでの難易度の高さはしっかりと保証され、根幹となるストーリーも考察しがいのある良い内容だった。文句無しの2022年優勝作品。 自分の遊び方はというと、1周目はしっかりと全探索し、2周目は2時間ほどでサクッと終わらせ、3周目はLv1で苦労しながらやりきった。 良かった作品達 他に2022年にやった中で良かった作品達を挙げておく。作品名の表記はSteamあるいはWikipediaに準拠、並び方は辞書順。 Backpack Hero CHRONO CROSS CORE KEEPE
最近は下記のようにライブラリ等のリリースを自動化している。 バージョンを入力するとPull Requestを生成 Mergeするとリリース ラベルの管理 前回のリリース以降にMergeされたPull Requestからリリースノートが自動生成されてほしい。このとき、Keep a Changelogの形式を参考に、変更点が以下の7種類に分類されてほしい。 add change deprecate fix remove security other そこで、Pull Requestに予めラベルを付けておくことで、どの節に分類するかを決定させる。またこのようなラベリングの習慣を設けることで、各Pull Requestの粒度の是正もねらう。ラベルを利用したリリースノート自動生成機能自体はGitHubが備えているので、.github/release.ymlでそのラベルを使う旨を指定すれば良い。 この
開発機をMacからWindowsに移行して2年ほど経った時点での振り返り。 年表 2009年07月 MacBook Pro 1を購入、プログラミング開始 2014年07月 MacBook Pro 2を購入 2016年12月 Windows機1を入手、PCゲーム開始 2017年07月 MacBook Pro 3を購入 2018年06月 Windows機2を購入 2020年09月 MacからWindowsへ開発機を移行 2021年01月 Windows機3を購入 2022年10月 現在 過去記事 開発機を移行してすぐの頃の感想は、次の記事に書いた。 Windowsで開発 Windowsへの回帰 自作PC2021 デスクトップPCを譲渡 Macからの移行という観点だと、次の記事も幾らか関連があるかもしれない。 AirPodsをWindowsで使う Windows10でMagic Trackpad
次のページ
このページを最初にブックマークしてみませんか?
『r7kamura.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く