アウトドア用品ブランドに「笑's」ってのがあって、そこの「笑's・B-6君」という B6 サイズの小型焚き火グリル(コンロ)を持っている。もう 10年近く経つかなあ。
最近はあまり使ってないんだけど(^^;

20261029_shos1.jpeg
この週末、久しぶりにバイクツーリングに行こうかと思って(結局風邪をひいてしまったので行けないんだけど)、この笑's・B-6君専用の熱燗セットを購入した。

グリル用の網に酒を寒するため燗するためのカップがついてるやつ。
実はB-6君を買ったときに同時に購入してたんだけど、一、二度使ったあとに紛失してしまった(^^;;;
なので、今回再購入である。

そして今回は専用の銅製ちろりも一緒に。

以前は普通のアルミ製一合ちろりを使ってたんだが、これもどっかいっちゃったので、今回思い切って専用のやつを。5千円もするんだけど、ここのところ俺、残業続きで頑張ってるから、このくらいのささやかな贅沢ええやろ(笑)

やっぱ、サイズ感が B-6君とあってるんでいいわあ。酒飲むには気分も大事やけんね。一人呑みには一合くらいのサイズがちょうどいいし。

ちゅうわけで、風邪でキャンプ行けないので横川の仕事部屋での晩酌で使ってみた。
うん、良い!!あいにく仕事部屋には純米大吟醸しかおいてなかったんだけど、うまくぬる燗にできてて美味い。

ああ、早くキャンプに行きたいものよ・・・
今日は祖生に朝帰りなので、いつもの辰屋で天ぷらうどん、550円也。
いやあ、昨日も残業だったし、実は今週ひどい風邪をひいてしまい、昨夜バタバタと岩国に帰るのが面倒だったのよね。

というわけで朝帰り。朝飯は朝イチの「立ち喰いうどん 辰屋」。なんか朝イチの辰屋は色々面白い。

俺が天ぷらうどんを啜っていると次々に入ってくるお客さん。

20261031_tasuya1.jpeg
ネギ抜き、純粋に「肉だけ」の肉そばを注文する中年オヤジ、チンピラ風。大人なんだからネギくらい食えと密かに思う(笑)。ま、嫌いなものを食べない自由を満喫するのも外食だけどね。

仕事帰り(?)風だが、いまいち正体不明のジャージを羽織った初老のオヤジは、店の前のショーケースからビールを持ってきて湯豆腐を注文。メニューにそんなもんないけど、常連メニュー?通すぎる(笑)。朝7時前からビールという生き様も素敵(笑)

18、19歳くらいの若いアベックは、女の子は真っ金々の髪の毛のギャル風、男の子は大人しそうなオタク風。関係性がわからん(笑)
二言三言話をしたあとは、女の子は店に置いてあるスポーツ新聞読んでるし、男の子は漫画ゴラクみたいな大人向け漫画雑誌読んでる。男の子の方だけ荷物を持ってたんで、女の子は見送りに来た?兄妹かな?ほんま関係性がわからん(笑)
男の子が「肉ぶっかけ。あったかいの」と小さな声で通なメニューを注文したのも気になる(笑)

もっと観察していたかったが残念ながらうどんを食べ終わってしまった。俺は嫁さんへのお土産におつとめ品の80円のおはぎを買って、後ろ髪引かれる思いで店をあとにしたのであった。
20260920_shirasudon1.jpeg
ちょうど一ヶ月ほど前。

尾道市でランイベントのスタートの計測をして、ゴールである広島市内に戻る途中。

山陽自動車道下り線の「小谷SA」に寄り、スタッフとちょっと早めの昼食を取った。

注文したのは「広島県産釜揚げしらす丼」。1,410円也。

丼一杯で 1,410円か・・・貴族が食べる丼だな、こりゃ。

実は少し前に娘と小谷SAで食事をしたのだが、そのときに娘が注文したのが「広島県産釜揚げしらす丼」であった、俺が注文したのは「汁なし担々麺」で、まあ、娘が食べるしらす丼の方が美味く見えたのである。(ちなみに俺は他人が食べてるものを見て「うまそう」とか「あっちにすればよかった」などと思うことはほとんどない(まったく無いとは言わないが(笑))

なので、娘が食べていたしらす丼のことは頭に残っていたのである。

で、食べてみた感想だが、うむ、美味い。しらすもたっぷりでいい。
で、この大量のしらすのワタ(内臓)が原因なのか、少し苦みがあるんだけど、それがまた良い。大人の味や(笑)
Windows で開発している Electron のプロジェクトを、Dropbox でフォルダを共有して、俺のモバイル環境である macOS でも開発できるようにできないか・・・と思って、macOS で起動した VSCode でそのフォルダを共有したんだけど、ターミナルで npm start をすると何のエラーも出ないが、すでに作り終えている画面も出てこないという状態に。

ども俺は誤解していたのだが、そのフォルダにインストールされた Electron の node_modules フォルダ以下は、Windows 用、macOS 用でそれぞれ別の「バイナリ」ファイルが入ってるのね。なんとなく「JavaScript で書かれたライブラリ集」だと思い込んでた(^^;;;

というわけで、プロジェクトフォルダを Dropbox で共有(同期)したあと、node_modules フォルダだけを「同期しない」設定にして共有から外し、中身を一旦全て消してから、他の macOS 上の Electron プロジェクトの node_modules を上書きコピーしてやる。これで、node_modules 以外のファイル(js、HTML、CSSなどのファイル)だけ同期されるので、Windows と macOS で同じプロジェクトを触れるようになる。

こうして文章で書くとややこしく感じられるが、要は「node_modules は同期しない」だけのことなのでそんなにややこしい話ではない。
例えば macOS 側で「同期する」設定のまま node_modules を更新してしまい Windows でうまく動かなくなっても、node_modules だけ他の Winodows のプロジェクトからコピーしてくればいいだけの話である。(install し直してもいいが、修正した JSON ファイルとかに新しいファイルが上書きされたりするといやなので、他のプロジェクトからコピーしてくるのが一番じゃないかと思う)

ちなみに、上記の作業をしたあとで、PostgreSQLに接続するための pg モジュールなども各 OS 用にインストールし直す必要がある。

それをせず実行すると、

~/Dropbox/timetron % npm start  
npm notice run timetron@1.0.0 start
npm notice run electron .
App threw an error during load
Error: Cannot find module 'pg'
<以下略>

こんな風にエラーでエラーになっちゃう。こういう時はその OS 上で install をしなおせばいい。

~/Dropbox/timetron % npm install pg
npm error code EEXIST
npm error syscall mkdir
npm error path /Users/shinoda/.npm/_cacache/content-v2/sha512/f9/ba
npm error errno -13
npm error EACCES: permission denied, mkdir '/Users/shinoda/.npm/_cacache/content-v2/sha512/f9/ba'
npm error File exists: /Users/shinoda/.npm/_cacache/content-v2/sha512/f9/ba

あり?エラー。どうも、npm install のときに、一度 sudo して実行してしまったため、shinoda ではなく root 権限でキャッシュが書かれてしまったようだ。

~/Dropbox/timetron % sudo chown -R 501:20 "/Users/shinoda/.npm"
Password:<shinoda のパスワード>
~/Dropbox/timetron % npm install pg

これでOK

~/Dropbox/timetron % npm start     
npm notice run timetron@1.0.0 start
npm notice run electron .
Downloading Electron binary...

20261025_mac_electron1.jpg

これで、ばっちり Windows で開発していた画面がちゃんと起動した。動きもOK!!
案件がある度に開発環境をセットアップするため、いつの間にか macOS に PostgreSQL がバージョン 14 と 18 の二つ入っていた。
Homebrew で 14 を入れて、公式サイトの dmg ファイルで 18 を入れたようだ。

Homebrew のリストには 14 が、

~ % brew list | grep postgresql
postgresql@14

/Library/PostgreSQL の下に 18が入っている。

~ % ls -ld /Library/PostgreSQL/18
drwxr-xr-x@ 21 postgres  daemon  672  5月 28 06:49 /Library/PostgreSQL/18

ちなみに、18 は自動起動が設定されているようで、何もしなくてもデーモンが起動している。

~ % ps aux | grep PostgreSQL 
postgres           534   0.0  0.0 435512752   1120   ??  Ss   11 7月26   6:33.81 /Library/PostgreSQL/18/bin/postgres -D /Library/PostgreSQL/18/data
shinoda          78278   0.0  0.0 435300560   1360 s000  S+    4:24午後   0:00.01 grep PostgreSQL

しかし、psql コマンドは 14 の方にパスが通っているようだ。

~ % which psql
/opt/homebrew/bin/psql

というわけで、PostgreSQL 環境をきれいに一本化したいので、当然最新版の 18 の方を生かすことにする。

14 については自動起動の設定はされていないようなので(brew services start postgresql@14 すれば起動する)、単純に 14 のアンインストールと、psql のパスの付け替えをする。

~ % brew uninstall postgresql@14
Uninstalling /opt/homebrew/Cellar/postgresql@14/14.22... (3,337 files, 48.3MB)
==> Autoremoving 6 unneeded formulae:
<略>

途中、

Warning: The following openssl@3 configuration files have not been removed!
Warning: The following ca-certificates configuration files have not been removed!

というような警告が出るが、これは「postgresql@14 はアンインストールしたけど、openssl@3 は他に使ってるソフトがあるかもしれないので念の為残しておくね」というものなので無視。

次に、psql のパスを 18 に向ける。

~ % echo 'export PATH="/Library/PostgreSQL/18/bin:$PATH"' >> ~/.zshrc
~ % source ~/.zshrc
~ % which psql
/Library/PostgreSQL/18/bin/psql
~ % psql -V
psql (PostgreSQL) 18.3

これで OK。

~ % psql -U postgres
Password for user postgres: <パスワード入力:表示されない>
psql (18.3)
Type "help" for help.

postgres=# \db
       List of tablespaces
    Name    |  Owner   | Location 
------------+----------+----------
 pg_default | postgres | 
 pg_global  | postgres | 
(2 rows)

ちゃんと 18.3 の psql が起動している。
開発用のフォルダを作成し、そこをカレントディレクトリとして VSCode を起動する。

~ % cd ~/Desktop
~/Desktop % mkdir electron-test
~/Desktop % cd electron-test
~/Desktop/electron-test % code .
zsh: command not found: code

ありゃ?パスが通ってない?

パスを通すには、VSCode を使って登録するのが一番簡単である。
まず、アプリケーションフォルダの Visual Studio Code.app を実行。それから Shift + Command + P で検索バー(コマンドパレット)を表示。
「shell command」と入力してコマンド候補が表示されるので、
 
 Shell Command: install 'code' and optionally 'copilot' command in PATH
 ※ copilot を使ってない場合は、and optionally 'copilot' は表示してないかも
 
 を選択して実行。これでパスが通る。実際はどこかのファイルに実際のパス(/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code)が登録されたわけではなく、これ、/usr/local/bin の下に code のシンボリックリンク(Windows で言うショートカット、macOS のエイリアスと一緒)が作られている。
 
 ~/Desktop/electron-test % ls -la /usr/local/bin/code
lrwxr-xr-x  1 root  wheel  68 10月 24 20:43 /usr/local/bin/code -> /Applications/Visual Studio Code.app/Contents/Resources/app/bin/code

/usr/local/bin は元々コマンド入力時の検索パスに入っているので、これでどこで 'code' と入力しても、ちゃんと VSCode が起動するようになる。

VSCode が起動したら、早速そこでターミナルを開き(Shift + Command + P で検索バーを開き「Terminal: Create New Terminal」を選択、実行)、そこで、npm init -y を実行。

~/Desktop/electron-test % npm init -y
  },
  "keywords": [],
  "type": "commonjs"
}

フォルダに package.json というファイルが作成される。
次に、このフォルダに Electron をインストールする。

~/Desktop/electron-test % npm install electron --save-dev

added 13 packages, and audited 14 packages in 1s

1 package is looking for funding
  run `npm fund` for details

found 0 vulnerabilities

ちゃんと入った。フォルダの下(って言うのは DOS 時代の名残か(笑)。Windows や Mac で最初から「フォルダ」生活の人たちは「下」じゃなく「中」って言うのよね(笑))に node_modules フォルダなどができているはず。
これで開発の準備はできたので、次に main.js というファイルを作成。VSCode のエクスプローラー窓で右ボタンメニューを開き「新しいファイル...」を選択。ファイル名を main.js にする。

【main.js】

const { app, BrowserWindow } = require('electron')

function createWindow () {
  const win = new BrowserWindow({
    width: 800,
    height: 600
  })

  win.loadFile('index.html')
}

app.whenReady().then(() => {
  createWindow()

  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

// ウィンドウがすべて閉じられたときの挙動
// Windows や UNIX系の Window システムならアプリも終了
// Mac(darwin)なら窓を全て閉じてもアプリは生かしておく(Mac的な動き)
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') app.quit()
})

同じように index.html を作成。

【index.html】

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Electronアプリ</title>
</head>
<body>
    <h1 style="text-align: center; margin-top: 50px;">
        ★見事に起動成功!(笑)
    </h1>
</body>
</html>

最後に、package.json を以下のように修正。

【package.json】

{
  "name": "electron-test",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "keywords": [],
  "type": "commonjs",
  "devDependencies": {
    "electron": "^45.0.0"
  }
}

ここまで作ったら実行してみる。
ターミナルのコマンドラインから実行。

~/Desktop/electron-test % npm start
Debugger attached.
npm notice run electron-test@1.0.0 start
npm notice run electron .
Debugger attached.
Downloading Electron binary...
Debugger attached.
Waiting for the debugger to disconnect...
Debugger attached.

最初の1回目はちょっと起動まで時間がかかるが、無事画面が表示された。成功。

 20261024_electron1.jpg

これが一番シンプルな Electron のプログラム。

今更俺が説明するまでもないが(というか、俺が説明してしまうと間違いが混入してしまう恐れがあるが(笑))、Electron というのは Node.js(JavaScript) + Web 開発技術(HTML,CSS など)でデスクトップアプリを開発するためのライブラリ集&フレームワークである。

言葉をもう一度整理しておくと、

  • JavaScript ... 開発言語
  • Node.js ... 本来、ブラウザ(Chrome 等)上でしか実行できない JavaScript をローカルで実行できるようにした実行環境
  • npm .... Node.js 用の部品(ライブラリ等)の管理ツール。簡単に部品のインストールなどが行える(Perl で言えば CPAN みたいなもの)
  • Electron ... Node.js でデスクトップアプリを開発するためのライブラリ集&フレームワーク(開発基盤)

である。
ついでに、

  • VSCode ... テキストエディタと IDE(統合開発環境)を組み合わせたソースコードエディタ(実は Electron で作られている)

も。なんか、以前に比べるとひとつひとつのソフトウェアの役割が明確に分けられてなくて、説明が難しくなってるよね、最近は。

では、早速、npm で Electron をインストールする。

~ % npm install electron --save-dev

added 13 packages in 2s

1 package is looking for funding
  run `npm fund` for details
npm notice
npm notice New major version of npm available! 11.19.1 -> 12.2.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.1
npm notice To update run: npm install -g npm@12.2.1
npm notice

あっという間にインストール終了。
なんか、notice(通知)がたくさん出ている。
ただ、これは Electron のインストールが失敗をしたわけではなく、「npm のバージョンが 11.19.1 だけど、最新バージョンは 12.2.1 よ。 install コマンドで最新版が入るで」と言ってる。

今朝、Node.js を最新版にしたとき 11.19.1 に上がったんだけど、ああ、もしかして安定版が 11系で、開発版(不安定)が 12系なん?

よく知らないけど、最新版にする。

~ % sudo npm install -g npm@12.2.1
Password:XXXXXXXX<実際には表示されない>

removed 8 packages, and changed 77 packages in 3s

15 packages are looking for funding
  run `npm fund` for details
~ % npm -v                         
12.2.1

さあ、これでばっちり。macOS 上で動く Electron アプリを作ってみよう。
macOS 上に Electron の開発環境を作るために、まずは Node.js を最新にしたい。

~ % node -v
v22.11.0
~ % npm -v
10.9.0

・・・さて、以前、どうやってインストールしたかわからない
最新版にアップデートするには、最初にどうやってインストールしたかで方法が変わってくる。

~ % which node
/usr/local/bin/node

こうして、どこに Node.js が存在しているかで推測できる。
/usr/local/bin/ なら、Node.js 公式サイトからインストーラー(.pkg ファイル)をダウンロードして入れた可能性が高いようだ。
そんな気がしてきた(笑)

それでもまだ Homebrew で入れた可能性もあるので、インストールリストにないかチェック。

~ % brew list node
✔︎ JSON API cask_tap_migrations.jws.json                                       Downloaded    2.2KB/  2.2KB
✔︎ JSON API formula_tap_migrations.jws.json                                    Downloaded    2.2KB/  2.2KB
✔︎ JSON API formula.jws.json                                                   Downloaded   34.9MB/ 34.9MB
✔︎ JSON API cask.jws.json                                                      Downloaded   20.9MB/ 20.9MB
Error: No such keg: /opt/homebrew/Cellar/node

やはり、公式サイトからパッケージを落としてきて入れた可能性大。

というわけで、Node.js 公式サイト(日本語) にアクセスし、最新のパッケージインストーラをとってくる。
から
を落とすんやね。

で、インストーラ実行。

20261024_node.jpg

普通に次へ次へといけば問題なく終了。

~ % node -v       
v24.22.1
~ % npm -v        
11.19.1

新しいバージョンになっている。ばっちし(笑)

というわけで、Electron のインストールに移るか。
これまた一ヶ月ほど前の話、

段原の俺の通勤道沿いに、何やら唐揚げの店が出来てるなあ・・・と気づいたのが訪店の二週間くらい前。それから「あれ?カウンターで酒呑んでるな?もしかして居酒屋?」と思ったのが一週間前。そしてついに「居酒屋なら訪ねてみないわけにいくまい」と訪店したのが今から一ヶ月前だった。

それが「もはめ」である。店名、謎だな(笑)。

20260914_mohame1.jpeg 20260914_mohame2.jpeg 20260914_mohame3.jpeg

日本酒は置いてない。焼酎はあったかな。生ビールはあった。どうも酒はウイスキーソーダ、つまりハイボールが中心の店のようだ。元にするウィスキーがけっこうな種類あって、そういうのが好きな人にはたまらんのではないだろうか。やっぱ、「唐揚げに合う酒」ということでそういう感じなんかな?

俺は生ビールと、肴に「鶏のたたき青唐辛子ポン酢」980円也を注文。
「時間をちょっといただきますが」ということだったので、「何が早いですか?」と聞くと「うちは唐揚げが得意で」とのこと。そうだよね。俺は完全に唐揚げ専門店だと思っていたし、店の前の立て看板にも「カラアゲは国民食です」なんて書かれてるしな(笑)

唐揚げは「ノーマル」80円/個、「ネギまみれ」100円/個、「タルタル」100円/個の三種類がある。一個から注文可能ということだったので、ノーマル 2個とネギまみれ 2個を注文。すぐに出てきた。揚げて置いてるのか・・・と思ったが、衣も揚げたてのようにサクサクで美味い。
これは、あれだ、酒の肴は唐揚げだけで十分だ(笑)。いや、鶏のたたきも美味かったんだけど、ビールとこの唐揚げがあればそれで十分や・・・

お勘定のとき、正直に「今度来る時はビールと唐揚げしか注文しないかも。客単価を下げてごめんなさい」と言うと、「いえいえ。うちは唐揚げを食べていただければ嬉しいので」ってことだった。

そうか、そうか。では遠慮なくビールと唐揚げだけ食べに行こう・・・と思ったんだが、それから残業続きで一ヶ月行けてない・・・(^^;;;
9/8 は土橋のお客さんのところで夕方から作業があったので、いつものように小網町の「汁なし担々麺専門店 楽(らく)」にて晩飯。

毎度のことですが、汁なし担々麺専門店で注文するのは二郎インスパイア系ラーメン(^^;;;
この日は「汁なし二郎インスパイア」の「森二郎」を「にんにく増し」「細麺」「ご飯サービスあり」で。

20260908_raku1.jpeg 20260908_raku2.jpeg 20260908_raku3.jpeg

このまるで山の裾野に降り積もった雪のような美しいにんにく・・・。チョモランマのように高くそびえ立つヤサイタワー・・・ああ、たまらん。

フィニッシュにご飯ぶち込み、ただただにんにくの味のするおじやを掻き込み満足、満足(笑)
呼吸するたびに、俺の口から吐き出される強いにんにく臭のする息がそのまま俺の顔を天女の衣のように包み込む。臭っ!!その強い刺激に、いつものように涙が滲む。俺の息は凶器か!!

この状態では公共交通機関に乗ることもできないので、俺はとぼとぼと横川の仕事部屋まで歩くのであった。

それはそうと、この日はお客さんが多かったわあ。
俺が入店したときはまだ2,3席空いてたんだが、ほどなく満席に。「楽」が満席になったの初めて見たわ。若いかわいいお姉ちゃんもいる。

店の中に「お店と凄麺 ダブルde 担担! 広島汁なし担々麺W制覇キャンペーン」というポスターが貼ってあり、こいつが 2026/9/1~10/31まで開催されているようだ。
その参加者?ああ、この間からスーパーとかでちらちら見ることがあった汁なし担々麺のカップ麺のキャンペーンなのね。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら