お湯沸かし対決!電気ケトル VS ジェットボイル風鍋(ヒートエクスチェンジャークッカー)

お湯沸かし対決!電気ケトル VS ジェットボイル風鍋(ヒートエクスチェンジャークッカー)

はじめに 結論から言うと、電気ケトルとジェットボイル風鍋(ヒートエクスチェンジャークッカー)の沸騰タイムは 3分54秒 vs 3分59秒 とほぼ同じでした。 ただし1回あたりの光熱費で見ると、都市ガスのほうが電気より 約2倍ほど安い(前提付きの概算)という結果に。 この記事では、600mlの水を常温から100℃まで沸かすタイムと、東京ガスの単価をもとにした光熱費の概算を実験で比較します。 電気ケトルとジェットボイル風鍋(ヒートエクスチェンジャークッカー)で、どちらがお湯を早く沸かせるのか実験してみました。 条件は同じ。水を600mlきっちり量り、常温から100℃に達するまでをストップウォッチで計測します。 COSORI(コソリ) 電気ケトル 0.8L をAmazonで探す ヒートエクスチェンジャークッカーをAmazonで探す 昨年購入した電気ケトルは、想像以上に効率的で、ビジネスホテルに置いてあるような電熱ケトルとは比べ物にならない速さに驚かされました。 一方、ジェットボイル風鍋もアウトドア用らしく非常に速く、火をつけてからあっという間に沸騰します。果たして、両者の勝負はどうなるのでしょうか。 実験結果 結果は以下のとおりです。 電気ケトル: 3分54秒 ジェットボイル風鍋: 3分59秒 わずか5秒差で、鍋の方が少し遅れる形となりました。とはいえ、この程度の差は誤差範囲であり、実用上は「ほぼ同じ」と言って差し支えないでしょう。 そうなると気になるのはコストです。この場合、電気代とガス代のいったいどちらが安いでしょうか?東京ガスの料金単価をもとに、シミュレーションしてみました。 光熱費シミュレーション 前提条件: 水600ml(常温→100℃) 所要時間4分 東京ガスの料金表を参照(基本料金は除外) 都市ガスの単価は 130.46円/m³ 、発熱量は 約12.5kWh/m³(13A換算) とします。 電気ケトル(1200W・4分) 使用電力量 = 1.2 kW × (4/60) h = 0.08 kWh 第1段階(〜120kWh):0.08×29.70 = 約2.38円/回 第2段階(120〜300kWh):0.08×35.69 = 約2.86円/回 第3段階(300kWh超):0.08×39.50 = 約3.16円/回 都市ガス(ジェットボイル風鍋) 水の必要熱量 ≒ 0.0558 kWh (0.6×4.186×80/3600) 鍋の熱効率をηとすると、必要ガス熱量 = 0.0558/η [kWh] 必要ガス体積 = (0.0558/η)/12.5 [m³] 費用 = 130.46 × (0.0558/η/12.5) [円] ...

公開: 2025年9月21日 · 更新: 2026年6月17日 · Toshihiko Arai

curlとjqで作る便利シェル集|祝日カレンダー・天気・地震・LLM API

はじめに ターミナルでよく使う処理は、ブラウザを開くより curl や jq でそのまま呼び出す方が手早く済みます。 この記事では、外部のデータや API を使って、手元のシェルを少し便利にする実例をまとめました。zshrc にそのまま入れやすいものを中心にしています。 この記事で扱う内容は次のとおりです。 祝日付きの3か月カレンダーを表示する 気象庁データから天気を表示する 地震情報を一覧で見る LLM API をシェルから呼び出す 後半では、API ではないものの一緒に置いておくと便利だったエイリアスも載せています。 祝日付きカレンダーを表示する まずは、cal コマンドを少し便利にする例です。 cal コマンドはlinuxやmacOSのターミナルでカレンダーを表示できるシェルです。ターミナルで高速表示できるカレンダーは地味に便利で重宝しています。 項目 コマンド 今月のカレンダーを表示 cal 指定した月のカレンダーを表示 cal 3 2024 年間カレンダーを一覧で表示 cal 2024 先月、当月、翌月のカレンダーを表示 cal -3 とくに先月・当月・翌月をまとめて表示する cal -3 が便利なのですが、標準では祝日が出ません。そこで、内閣府が公開している祝日 CSV を合わせて表示するようにしました。 cal -3; curl -s https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv | iconv -f SHIFT-JIS -t UTF-8 | grep -E "`date -v-1m '+%Y/%-m/'`|`date '+%Y/%-m/'`|`date -v+1m '+%Y/%-m/'`" calコマンドの実行イメージ: calコマンドの実行イメージ % cal3 4月 2026 5月 2026 6月 2026 日 月 火 水 木 金 土 日 月 火 水 木 金 土 日 月 火 水 木 金 土 1 2 3 4 1 2 1 2 3 4 5 6 5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13 12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20 19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27 26 27 28 29 30 24 25 26 27 28 29 30 28 29 30 31 2026/4/29,昭和の日 2026/5/3,憲法記念日 2026/5/4,みどりの日 2026/5/5,こどもの日 2026/5/6,休日 内閣府が公開している祝日 CSV を curl で取得し、iconv で SHIFT-JIS から UTF-8 に変換しています。そのうえで cal -3 の表示に合わせて、先月・当月・翌月の行だけを grep で拾っています。 ...

公開: 2025年9月10日 · 更新: 2026年4月20日 · Toshihiko Arai

バニラJSのモダンな書き方・チートシート

React や Vue などのフレームワークを使わず、ブラウザ標準のJavaScriptだけで書くとき(いわゆるバニラJS)に毎回調べがちな構文をまとめました。非同期処理・配列操作・オブジェクトコピー・DOM操作・ストレージなど、実務でよく使うパターンを用途別に整理しています。Node.js でも動く構文は多いですが、主にブラウザ環境を想定しています。 ストレージ — sessionStorage / localStorage sessionStorage.setItem('myData', '保存したい内容'); // 保存 const savedData = sessionStorage.getItem('myData'); // 読み出す sessionStorage.removeItem('myData'); // 削除 sessionStorage.clear(); // 全て削除 sessionStorage は同一タブ内でのみ保持され、タブを閉じると破棄されます。最大容量はブラウザによりますがおおむね5MB。保存形式は文字列のみなので、オブジェクトを保存したい場合は JSON.stringify() で変換が必要です。 sessionStorage を localStorage に書き換えるとデータを永続化できます。 オブジェクトの凍結 — Object.freeze const Trial = { ok: true, ng: false }; Object.freeze(Trial); // オブジェクトを凍結 Trial.ok = false; // 非 strict mode ではエラーにならないが値は変わらない(strict mode では TypeError) console.log(Trial.ok); // true const ではプロパティの書き換えを防げません。Object.freeze() はトップレベルのプロパティ変更を防ぎますが、浅い凍結なので入れ子のオブジェクトは変更できます。JS で Enum を表現したいときに便利です。 非同期処理 — fetch / async / await async function fetchUser(userId) { const response = await fetch(`/api/user/${userId}`); if (!response.ok) throw new Error("通信エラー"); const data = await response.json(); return data; } fetchUser(1).then(user => { console.log(user.name); }).catch(err => { console.error(err); }); fetch() はブラウザ組み込みのHTTP通信APIです。await で非同期処理の完了を待てるため、Promise のチェーンよりも読みやすくなります。await を使う関数は async で宣言する必要があります。 ...

公開: 2025年9月3日 · 更新: 2026年5月24日 · Toshihiko Arai

【JetBrains系IDE】 IntelliJ IDEA の便利な設定(WebStorm・PhpStorm)

この記事は、IntelliJ IDEA / WebStorm / PhpStorm を毎日の開発で使っている人向けに、自分が実際に使っていて効果が大きかった4つの設定(File Watchers での SCSS 自動コンパイル、分割 JS の自動結合、フォントとサイズ、Markdown の Run gutter icon)を忘備録としてまとめたものです。全部を一度に入れる必要はなく、気になったものから1つずつ試して、合わなかったら戻せばOKです。JetBrains 系で UI が共通なので、PhpStorm や GoLand でも同じ手順で設定できます。 ショートカット系の設定や使い方は別記事に分けています。あわせて読むと作業効率がさらに上がります。 【macOS】IntelliJ IDEA ショートカット チートシート Clion x PlatformIOでESP32(Arduino)開発 はじめての Spring Boot 〜 JavaでWebアプリケーション 私は多くの言語でJetBrains系IDEのお世話になってます。もちろん、JetBrains All Products Pack を購入してます。 言語 IDE Java・JSP・Spring Boot IntelliJ IDEA JS・HTML WebStorm PHP・Laravel PhpStorm C++・Arduino・ESP32 CLion PostgreSQL・MySQL・SQLite DataGrip Python PyCharm GO言語 GoLand Android Android Studio こんな具合に、よく使う言語のほとんどが JetBrains からIDEがリリースされています。インターフェースや操作感も統一されているので、一度慣れてしまうとJetBrains以外のIDEで開発したくなくなります。以前はiOSアプリ開発のためにXCodeをよく使ってましたが、使い勝手が違いすぎて触りたくありません(笑)。 VS Codeもすっかり出番が少なくなりましたねぇ。 さて、そんな JetBrains系IDEの便利な設定を忘備録として残します。IntelliJ IDEA や WebStorm で使う設定が中心ですが、JetBrains系で他のIDEでも応用できる設定だと思います。ご参考ください。 ...

公開: 2025年9月2日 · 更新: 2026年5月30日 · Toshihiko Arai
アジのタタキ

アジのタタキ

アジの3枚下ろしに、生姜、みょうが、大葉、小ネギを合わせるアジのタタキです。中骨を取り除いてから5mm厚くらいに刻み、薬味と軽く和えます。 薬味をたっぷり使うと、アジのうま味と香りがまとまり、醤油だけで食べやすくなります。刺身用の新鮮なアジを使い、調理後は早めに食べ切る前提の一品です。 アジのタタキの材料と作り方 <材料(2人分)> 食材 分量 アジの3枚下ろし 2匹分 生姜 1片 みょうが 1個 大葉 4枚 小ネギ 適量 <作り方> 生姜・みょうがは千切りに 大葉は硬い芯の部分を取り除いて千切りに アジの身の中央に包丁を入れて中骨を取り除く アジを5mm厚に刻む アジの上に小ネギ、大葉、みょうが、生姜をチラシ、包丁を入れながら軽く和える 器に入れて醤油をかけて完成 <動画> レシピ動画はYouTubeの キッチンノート channel で公開中です。ぜひこちらの動画もご参考になさってみてください。 動画を再生 作るときの要点 アジの身の中央には小骨が残りやすいので、包丁を入れて取り除いてから刻みます。薬味は細く切っておくと、アジと軽く和えたときに全体へなじみやすいです。 タタキにするときは、細かく叩きすぎず、身の食感が残るくらいで止めると食べごたえが残ります。生で食べる料理なので、刺身用の魚を使い、まな板や包丁も清潔な状態で手早く作ります。 関連記事 魚介を使う関連記事です。刺身系、〆もの、煮付けを読み分けたいときにどうぞ。 ヒラメの昆布締め 真鯛のゆず〆 さばの味噌煮の作り方 関連アイテム 刺身包丁 生姜 醤油

公開: 2025年8月31日 · 更新: 2026年5月2日 · Toshihiko Arai

GitHub CI/CD で VPS へ自動デプロイするまで

この記事では、GitHub で管理している JS ライブラリプロジェクトに対して、タグをpushするだけで VPS へ SSH + rsync で自動デプロイされる GitHub Actions ワークフローを最小構成で作った手順をまとめています。SSH 鍵の準備・GitHub Secrets の登録・deploy.yml の作成まで一通り実装でき、手作業でのデプロイが不要になります。CI/CD の仕組みが「GitHub上のLinuxでシェルを実行するしくみ」だと分かると、他のプロジェクトへの応用も簡単です。 はじめに 2025年の今回初めてGitHubのCI/CDを使ってみてとても便利だったので、やり方・手順を備忘録として残しました。 今回対象となるプロジェクトは個人で開発している小さなjsライブラリプロジェクトです。 https://apppppp.com/kit/nu-js/ https://github.com/aragig/nu-js GitHubで管理・公開しているこのnu.jsにタグをつけてプッシュした時点で、以下の処理をCI/CDで自動化させます。 バージョンタグを取得する コンテンツをビルドする プレースホルダーに①を埋め込む 公開用のVPSサーバーへSSHで接続 rsyncでコンテンツを同期する と、こんな感じです。シェル一発でもできる作業なので、わざわざCI/CDで実現しなくても良さそうではありますが、実際やってみるとこれが結構便利で楽しかったです。なるほど、CI/CDというのはGitHub上にLinuxを立ち上げて、pushなどをトリガーにしてシェルを実行させるような仕組みなのですね! 仮想のmacOSなども実行できるので、iOSアプリのリリース作業もできそうです。ちょっと今まで使ってこなかったのが、損した気分になるほどCI/CDって便利かもです。 CI/CDとは CI/CDは、ソフトウェアを「こまめに作って、こまめに届ける」ための自動化の仕組みで、まさに先に示した通りです。 CI(Continuous Integration)は、開発者がコードをpushするたびに、自動でビルド・テスト・静的解析を実行して、早い段階で不具合を見つけるしくみ。 CD(Continuous Delivery / Deployment)はテストを通った成果物を「いつでも本番に出せる状態」に自動で用意する(ステージング配置やアーティファクト化まで)。テスト通過後に「本番へ自動リリース」までやる。 こうすることで、早期にバグ検知、手作業ミス削減、リリース頻度向上、レビューと承認の見える化できます。 手順① サーバ側:デプロイ鍵を用意 ここからは実際に個人プロジェクトのデプロイをCI/CDで自動化させた手順をご紹介します。 ローカル(macOS)で鍵を作って、サーバーの authorized_keys に登録します。 # macOS 側で ssh-keygen -t ed25519 -f ~/.ssh/nujs_deploy -C "nu-js deploy" -N "" # cat 方式 cat ~/.ssh/nujs_deploy.pub | ssh [email protected] 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys' 手順② GitHub Secrets を登録 リポジトリ Settings → Secrets and variables → Actions に以下を追加します。 ...

公開: 2025年8月31日 · 更新: 2026年5月30日 · Toshihiko Arai

C++でOpenCVをはじめる|撮影したレシートを自動でトリミング

はじめに OpenCV を使って画像を処理するプログラミングを練習していきます。最終的に 撮影したレシートを自動でトリミング できるところをゴールとして、画像の読み込みからエッジ検出、輪郭抽出までを4つの LESSON で順番に進めます。 前提となる環境とゴールは次の通りです。 OpenCV4(C++版)を使います C++11 で書きます(iOS アプリへの移植も視野に入れたい都合) macOS(Homebrew)でコンパイルします JetBrains 社の IDE CLion で開発します ゴール: スマートフォンで撮影したレシートの四隅を検出して、背景を透過した PNG として書き出す なお、Python で OpenCV を触ったことがある人向けに、図形変換のおさらいとして 【Python】OpenCVで画像をアフィン変換【移動・拡大・回転・剪断】 も参考になります。 OpenCVのインストール ここでは Homebrew で OpenCV 本体を入れます。あとから CLion に同じパスを教えてあげる前提なので、どのコマンドで入れたかを覚えておきます。 項目 インストールコマンド 最新版 brew install opencv バージョン4 brew install opencv@4 ダウンロードとビルドに、それなりの時間がかかるので気長に待ちましょう。 プロジェクトの準備 CLion 側で OpenCV を #include できる状態を作るのがこの節のゴールです。プロジェクトを作って、CMakeLists.txt に OpenCV を組み込んで、CLion から OpenCV のヘッダを解決できるようにします。 プロジェクト構造 CLion でC++11のプロジェクトを作成します。C++11をあえて選んでいるのは、iOSアプリへの移植も考慮に入れたいからです。 tree -I cmake-build-debug . ├── CMakeLists.txt ├── main.cpp └── sample.jpg CMakeLists.txt CMakeLists.txt の設定は以下です: ...

公開: 2025年4月15日 · 更新: 2026年5月30日 · Toshihiko Arai

文章AとBの類似率を数値化するJaccard係数をシェル・sqlite・mecabで実現してみた

はじめに このブログの記事Aと記事Bがどれだけ類似しているかを検出して、関連記事を自動化したいと思った。そこで簡単に思いつく方法は、それぞれの記事のキーワードを抽出し、お互いどれだけ共通のキーワードを持っているか調べれば良さそう。 そこでJaccard係数という手法を見つけた。 Jaccard係数とは Jaccard係数は、2つの集合 ( A ) と ( B ) の類似度を測る数学的なアプローチ。 $$ J(A,B)=\frac{|A\cap B|}{|A\cup B|} $$ 記事Aと記事Bのキーワードに当てはめて集合を考えると、 重複を取り除いた記事Aと記事Bのキーワードの合計が分母 重複する部分のキーワードだけを抽出したのが分子 となる。そしてこの割り算の結果をJaccard係数とし、 係数が大きいほど類似度が高いことを意味する。 Jaccard係数はsqliteで簡単に計算できる 次は、実際にこのブログサイトで関連記事を作成するために使っているSQLである。 全ての記事に対してJaccard係数を計算し、係数が0.1以上のものを関連記事として抽出する処理をさせている。 WITH target_words AS ( SELECT word FROM keywords WHERE filename = '__FILENAME__' ), intersections AS ( SELECT k.filename, COUNT(*) AS intersect_count FROM keywords k JOIN target_words t ON k.word = t.word WHERE k.filename != '__FILENAME__' GROUP BY k.filename ), unions AS ( SELECT k.filename, COUNT(DISTINCT k.word) + (SELECT COUNT(DISTINCT word) FROM target_words) - COUNT(DISTINCT CASE WHEN k.word IN (SELECT word FROM target_words) THEN k.word END) AS union_count FROM keywords k WHERE k.filename != '__FILENAME__' GROUP BY k.filename ) SELECT i.filename, CAST(i.intersect_count AS REAL) / u.union_count AS jaccard FROM intersections i JOIN unions u ON i.filename = u.filename WHERE CAST(i.intersect_count AS REAL) / u.union_count >= 0.1 ORDER BY jaccard DESC; 複雑に入り組んでいて読みにくいが、Jaccard係数を計算するために共通部分の要素を求めるintersectionsと、キーワードの和集合を求めるunionsがポイントである。 ...

公開: 2025年4月3日 · 更新: 2026年3月25日 · Toshihiko Arai

Ubuntuでnginxを導入して最初の公開設定をする手順

Ubuntu で nginx を触り始めるとき、最初に迷いやすいのは「どこまで設定すればひとまず公開できるのか」が見えにくいことです。この記事では、nginx をインストールしてブラウザから確認できる状態にし、必要なら HTTPS 化と www ありなし統一まで進める流れ をまとめます。 最初に読むべき範囲は次の4つです。 nginx のインストール 起動確認と公開確認 ドキュメントルート変更 HTTPS 化と www ありなし統一 後半の PHP、404、ログ、rewrite は、必要になったときに読む応用設定として残しています。 nginx をインストールして最初の公開確認をする アプリケーションインストール前のおまじない 初回実行時は時間がかかる場合があります。 以下のコマンドでパッケージ情報を更新・アップグレードします。 sudo apt-get update sudo apt-get upgrade nginx のインストール 次のコマンドで nginx をインストールします。 sudo apt install -y nginx インストール確認 以下のコマンドで nginx のバージョンが表示されれば、インストールは成功です。バージョン番号は環境によって異なるため、出力例と完全一致する必要はありません。 nginx -v # 出力例: nginx version: nginx/1.xx.x (Ubuntu) nginx の起動と公開確認 起動確認 nginx のインストールと同時にウェブサーバーは自動起動されます。 起動状況は以下のコマンドで確認できます。 sudo systemctl status nginx 出力例: ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2022-10-20 15:15:44 JST; 53s ago Docs: man:nginx(8) Process: 36839 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 36840 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 36934 (nginx) Tasks: 3 (limit: 1033) Memory: 7.0M CPU: 40ms CGroup: /system.slice/nginx.service ├─36934 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─36937 nginx: worker process └─36938 nginx: worker process 自動起動設定 起動・有効化: ...

公開: 2025年3月15日 · 更新: 2026年4月19日 · Toshihiko Arai
クロスバイクのシングルスピード化への道

クロスバイクのシングルスピード化への道

クロスバイクをシングルスピード化!シンプルな走りで80kmも楽々完走 ピストバイクとは無縁だった私が、シングルスピードというシンプルな世界に興味を持った。調べていくうちに、その無駄を削ぎ落とした考え方に惹かれたのだ。以前の クロスバイクの軽量化10kg台→8kg台 の流れもあり、挑戦する価値は十分にあると感じた。 最初に結論を書くと、クロスバイクのシングルスピード化は「古いクロスバイクを軽く、静かに、シンプルに乗りたい人」にはかなり相性がいい。一方で、激坂を楽に登りたい人や、細かくケイデンスを合わせたい人には向かない。 この記事でわかること クロスバイクをシングルスピード化するのに必要なパーツ 実際に選んだギア比とチェーンライン調整の考え方 80km、110km、山手線一周57kmを走って感じたメリット 既存のクロスバイクをベースにカスタムするのが向いている人 先に結論だけ知りたい人向け 最小構成は4点 : チェーンリング、シングルスピード変換キット、1/8チェーン、チェーンテンショナー まず試しやすいギア比 : 私はフロント38T × リア17Tから始めた 実走の印象 : 変速の手間が消え、車体が軽くなり、街乗りから長距離までかなり快適 注意点 : エンド幅、チェーンライン、チェーン幅の相性確認は必須 今回使った主なパーツ パーツ 用途 記事内リンク チェーンリング 38T 104BCD Mutte MTB レース バイク シングル フロントをシングル化 38T化で巡航しやすくなった シングルスピード変換キット リアを単速化 コグとスペーサーでチェーンライン調整 シマノ チェーン(内装ハブ&シングルスピード) CN-NX10 1/8 114L 1/8チェーン化 コグとの相性が良かった チェーンテンショナー シングルスピード チェーン張り調整 ディレイラー撤去時に必要 上の4点が揃えば、まずは「変速付きクロスバイクをシングルスピード化して走る」ところまでは持っていける。以下で実際の交換内容と、使ってみて分かった注意点を書いていく。 パーツ検索で見るポイント 自転車パーツは在庫、価格、出品者が入れ替わりやすいので、この記事では商品ページを直接指定せず、Amazonの検索結果へリンクしている。検索画面では、安さだけでなく次の条件を先に確認すると失敗しにくい。 パーツ 検索結果で確認すること チェーンリング 今のクランクに合うPCDか。私の場合は104BCD、38Tを選んだ。 シングルスピード変換キット シマノHGフリーボディ対応か。コグだけでなく、スペーサーが複数入っているものが調整しやすい。 1/8チェーン コグの歯厚に合う幅か。1/8コグなら1/8チェーンを選ぶ。 チェーンテンショナー ディレイラーハンガーに取り付けられるか。プーリー位置を調整できるものが扱いやすい。 まず手持ちのホイールがシマノHGフリーボディかを確認し、次にリアコグの歯数、チェーン幅、テンショナーの固定方式を合わせていくと選びやすい。 ...

公開: 2025年2月10日 · 更新: 2026年7月10日 · Toshihiko Arai