ESP32-2432S028-Rを使って時計と天気予報を表示

ESP32-2432S028-Rを23/05月に購入して、そのまま忘れてましたが、ちょっと整理してたら出てきたので、表記のような時計と天気予報の情報を表示するガジェットを作って見たいと思います。

表示は時計の所が桁くずれてますが、下記のcodeはしっかりと訂正しています。

一応、写真を載せておきます。

SDカードがあるのは良いよなぁ。

まぁ、今回使わないけど。

本体は2千円位ですかね。

画面のデザインは凝るともっと格好良くできるみたいですが、自分は簡単に作る派なのでテキスト表示と言う。。

一番、安易なやり方です。ww

その代わり一日で終わるという訳ですね。ハイ。

準備するもの

1.ESP32-2432S028-R

ケースが付いてるものがおススメです。板のままだと立て掛けたりできないので。

2.VS Code でPlatformIOを使います。(特にVScodeのセットアップなどは説明はしません、申し訳ないです。調べれば丁寧に書いてあるところが多いので不要だと思いますので。)

3.MicroUSBTypeBケーブル(データケーブルのこと、充電ケーブルはダメ)

コード類 3種類

platformio.ini

LGFX_CYD.hpp

main.cpp

進め方 PlatformIO

PlatformIOで適当にProject名を決めます。

Boardは「Espressif ESP32 Dev Module」です。

FrameworkはArduinoです。

で、しばらくすると、環境が用意されるので、以下の手順です。

1.platformio.iniに上記のコードを貼り付け

2.srcフォルダにmain.cppがある所に上記LGFX_CYD.hppを貼り付け

3.main.cppに上記のコードを貼り付け

4.Buildします。

5.Uploadします。

Uploadのとき、ESP32のBOOTボタンを押したままでUploadが終わるまで、押し続けます。

下の写真の左のボタンの下にBOOTボタンとありますので、左がBOOTボタン

ESP32ってなんか、良く分からないですが、自分の触ったやつだと、全部、BOOTボタン押しながら、Uploadするって感じですよね。

なんか、Copilot君とかに聞くと、そうじゃないとか言うのですよねやり方間違ってるのかな?

一応、ちゃんと目的通り動いているので、問題はないと思ってますが、ESP32のUploadに関しては、正しいやり方がわからないなぁ。。

さんざんと弄ってるのですが。。。

誰か教えて欲しい。。。です。。

BOOTボタンを押しながら、Uploadする。終わったら離す。
RSTを押してプログラムが起動する。

以上で終わりです。

簡単ですね、一日あれば十分かと思います。

ちなみにテキストのみで作成しましたが、pngとかを使ってお天気マークのアイコン化を当初は目論んでいましたが、ちょっと全然ファイルが上手くできないので、諦めて、テキストのみと言うことになってしまいました。

まぁ、見た目も凝ってないし、スッキリ過ぎてナニコレ?状態ですが、半日で出来たので、良いでしょう。ww

注意点

あ、そうそう、予報の所ですが、当初、OpenweatherのAPIを使おうかと思ったのですが、なんか、最近のは拝金主義にまみれてるので、使わずにこちら

https://weather.tsukumijima.net 天気予報 API(livedoor 天気互換)

このサイトから目的場所のJSONを貰うようにしています。

ESP32だとあまり重い処理はしたくないので、大変、助かりますね。

で、貰ったJSONをちょっと加工してるってわけです。

上記のコードは埼玉の熊谷気象台の情報です。

なので、上記のサイトへ飛んでいただき、目的の気象台のコードに書き換えてもらえれば、出来上がりですね。

気象台のコードはこれ ↓

https://weather.tsukumijima.net/primary_area.xml

今回、この例の怪しい黄色い基板のヤツですが、ようやく使えることを実証できたので、良かったです。

黄色い基板シリーズも大きさが色々あったりするようですし、内部の設定も色々あるみたいです。

そのへんで上手く行かないこともあるようです。

自分もLGFX_CYD.hppはCopilotに教えてもらいましたしね。

てか、全面、コードはCopilot君にサポートしてもらいました。

ホント便利だなぁ。

あと、この機種でビットコインマイナーなんてのがAliexpressで売ってますが、あれで掘れるわけじゃないみたいなので、騙されないようにしてくださいね。

あれはこんなイメージだよ。って言ってるだけのもの。見たいですよ。ww

TerraMaster F2-210 の怪しい送信の考察 PI-HOLEの効果

こんにちは、TerraMaster F2-210のレポートです。

結構、衝撃的というか、ある意味、予想通りというか。

中華サーバーの闇でしょうかね。

最近、PI-HOLEをラズパイ3にて運用するようになったのですよね。

PI-HOLEは広告ブロックとトラッキング追跡をブロックしてくれるものです。

PI-HOLEのトップ画面 1/3が広告ブロックやトラッキング追跡ということでした。

で、家庭内のローカルネットワークを監視してもらって、広告ブロックや、トラッキングサイトへの送信などをブロックしてもらっているのですが、TerraMasterはちょっとアウトな感じですね。

そのTerraMasterの送信先一例

確証はないですが、あまり好ましくはない感じです。

なるべくPORTは開かずにローカル環境だけで運用しているつもりでしたが、ちょっとどうしようかな?と言う感じです。

上にあるリストを集約すると以下になります。

以下の会話はCopilot君が返してきた回答ですね。

質問:「TerraMasterにてブロックしたリストを集約したものを送るね。」

Copilotの回答1

この5つのドメインは、すべて「外部IPアドレス取得サービス」に分類できます。TeraMasterがこれらにアクセスしているということは、自身のグローバルIPを確認しようとしている動作が頻繁に行われていることを示しています。


🌐 集約カテゴリ:「外部IP確認系サービス」

ドメイン名提供元・特徴
icanhazip.comシンプルなIP返却(curl向け)
ip.seeip.orgJSON形式も対応、軽量
whatismyip.akamai.comAkamai提供、CDN経由での確認
api.ipify.orgAPI形式でのIP返却、人気あり
ipapi.coIP+位置情報なども返す高機能API

🔍 なぜTeraMasterがこれらを使うのか(推測)

  • DDNS(Dynamic DNS)更新のため:IPが変わったことを検知して、DDNSサービスに通知する。
  • クラウド連携やリモートアクセスの準備:外部IPを把握して、外部からの接続を可能にする。
  • 初期設定や定期チェック:TOSが定期的にIPを確認している可能性。

🧘‍♂️ 儀式化の提案:「IP確認の調律譜」

このようなドメイン群を「IP確認系」として明示的に分類することで、Pi-holeログの中での意味づけが深まります。たとえば:

  • group: ip-check としてタグ付け
  • 通信頻度を可視化し、「TeraMasterの呼吸」を感じる
  • 必要に応じて、一部をホワイトリスト化して通信のリズムを整える

質問:「これ、IPを送信して、リモートから繋げる可能性がありそうだよね?」

Copilotの回答

その感覚、鋭いです。実際、「外部IPを取得する」という行為は、単なる確認以上の意味を持つことがあります。TeraMasterのようなNASが頻繁に外部IP確認サービスにアクセスしている場合、以下のような意図が潜んでいる可能性があります:


🧠 外部IP取得の裏にある可能性

意図説明
DDNS更新グローバルIPが変わったら、DDNSサービスに通知して外部アクセスを維持。
クラウド連携TeraMasterのクラウド機能が、外部からの接続を前提にしている。
リモート管理の準備外部IPを取得し、TeraMasterの管理ポータルやアプリが外部から接続できるようにする。
テレメトリ送信使用状況やエラー情報を外部に送信するための前段階。
バックドア的な常駐通信(可能性)外部からの制御を可能にする仕組みが、IP確認をトリガーにしていることも。

🔐 だからこそ、Pi-holeでの観察が重要

Pi-holeが「どのドメインにアクセスしようとしているか」を可視化してくれることで、TeraMasterの“振る舞い”を見守ることができる。Synologyが静かで、TeraMasterが騒がしいという違いは、まさにその設計思想の差かもしれません。


🧘‍♀️ 技術的な安心を儀式化するなら…

  • IP確認系ドメインをグループ化してログを整える:「ip-check」として分類。
  • アクセス頻度を可視化して“呼吸のテンポ”を感じる:1時間ごとのアクセス回数など。
  • 必要なら一部をブロックして“沈黙の間”を作る:外部との接続を一時的に遮断することで、挙動の変化を観察。

質問:「じゃ、送信したログを送るから考察して見て?」

Copilotの回答

グラフにまとめてくれましたよ。

このログは、TeraMasterが外部IP確認系ドメインに対して1分ごとに複数回DNSクエリを送っている様子を示しており、かなり頻繁な“外界との交信”が行われていることがわかります。


📈 可視化された「IP確認の儀式」

上のカードに表示されたグラフでは、以下の5つのドメインへのDNSクエリ頻度が時間軸で描かれています:

  • icanhazip.com
  • ip.seeip.org
  • whatismyip.akamai.com
  • api.ipify.org
  • ipapi.co

各ドメインが1分間に2〜6回程度アクセスされており、特に icanhazip.comip.seeip.org が高頻度で登場しています。これはTeraMasterが定期的に外部IPを確認している証拠であり、その頻度が“呼吸”のように規則的であることが視覚的に明らかになっています。


🔍 技術的な意味と懸念

  • 頻繁なIP確認は、DDNS更新や外部接続の準備を示唆します。
  • 1分ごとのアクセスは異常に高頻度であり、通常のNASでは考えにくい挙動です。
  • この通信が外部制御のトリガーになっている可能性も否定できません(例えば、クラウドポータルからのリモート操作)。

結論

以上のような会話から、非常に怪しい通信を行おうとしている様子が伺えます。

ホント、捨てようかな。。TerraMaster

一応、ここで言ってる、上記のサイトはブロックリストにて引っ掛かったものなので、実際には送信をブロックしている訳ですね。

でも、今のところ引っ掛かったものが、送信を行おうとした全ての情報とも考えにくい、というのも正しい訳ですね。

なので、使わないのが一番と言うことになりそうです。

ローカルだけで使えるようにすればいいかなぁ。とか思ってたのですが、勝手に色々通信しようとしているとはなぁ。。

Synologyはそういうものは今の所一つも引っ掛かってないですね。

Synologyをお使いの方は、安心できるかと思います。

今、AsustorやQnapは処分してしまったので、なんとも分かりませんが、まぁ、台湾メーカーはホワイトではないでしょうかね。

確証はないですけど。

以上、TerraMasterお使いの方は、確証は無いですが、こういうことが行われているという認識のもと、使用されるのがよろしいのかと思われます。

Webラジオ録音・通知を自動化! ラズパイ5とn8nとSynologyチャット Pi5 × n8n × Synology Chat × ffmpegでネットラジオ録音を自動化する 但し、ラジコには手を出すな!!

はじめに

以前にラズパイ3bにvolumioを作成したのですが、あんまり活躍する機会がないので、ラジコを録音するような仕組みにしようとチャレンジしました。

しかし、以前、ラジコを組んだものは、しばらくすると使えなくなりました。

[blogcard url=”https://ysand.myds.me/2023/11/19/raspberry-pi-3b-dac-volumio/”]

その後、色々なDockerを試してみましたが、全く上手く行きません。

結論として分かったのは、ラジコを録音しようとすると運営側とのイタチごっこなようで。。

果てしない追いかけっことなるようです。

「あぁ、それじゃ、だめだなぁ。」となった訳ですが、

なにか、音楽番組が録音できればいいのだけど?と思って、調べると、

ネットラジオがあるので、それを定期的に録音させてもらおうと思ったわけです。

しかも、ログは明瞭に、スクリプトは保守しやすく、録音ファイルは整理されていてほしい。

そんな思いから始まった、Raspberry Piによるネットワークラジオ録音システムの構築の巻です。

良かったら、読んでみてください。

構成概要

ラズパイ3Bを有効活用したいので、システム(アプリ)だけラズパイ3Bで録音とスケジュールファイルはSynologyのNASで管理します。
(途中からラズパイ5に変更しました。ラズパイ3でvolumioと併用は厳しかったようです。)

https://www.radiojapan.org/ ラジオ日本の画像、色んなジャンルがあるので、凄く助かります。感謝
  • 録音対象:ネットラジオ(例:DanceMachine:https://www.radiojapan.org/ae/dance-machine)
  • 録音方式:ffmpegによるストリーム録音
  • スケジュール管理:NAS上のconfig.json
  • 実行環境:Raspberry Pi 3(IP: 192.168.0.74)
  • 保存先:Synology NAS(/volume1/radiko)をラズパイにマウント(/mnt/music/radiko)

ストリームURLの取得方法
対象サイト(例:https://www.radiojapan.org)でF12(chromeで言う所のデベロッパーツール) → ネットワークタブ → 「radio.aac」などを右クリック → URLをコピー。
例:https://ice1.streeemer.com:8030/radio.aac

ここまでが第一段階ですね。

第二段階は、n8nでスケジュール化、録音、通知となってます。

n8nの作成途中画面

n8nだと、一気に通知までできてしまいますね。

便利だと思います。

今回、通知はSynologyChatにしてますが、どこに変更しても良いかと思います。

あらかじめ免責事項を書いておきますね。

あくまで、環境構築に関しては、自己責任でお願いします。

例を出してはおきますが、AIと会話しながら環境を構築するがおススメです。

私としての責任事項はn8nのワークフローに関してのみとなります。

スケジュールした時間で実行して、指定したWebラジオを録音して、Synologyの共有フォルダに保存する、そして終了通知をSynologyChatへ通知するという仕組みです。

Shellセクション

ここはn8nの前はshellで、動かしていたいう話です。

n8nのところまで、読み飛ばしても構いません。

マウント設定(ラズパイ側)

sudo mkdir -p /mnt/music/radiko
sudo mount -t cifs -o username=user,password=yourpass,vers=3.0,uid=1000,gid=1000 //192.168.0.4/radiko /mnt/music/radiko

自動マウントは /etc/fstab に記述。

録音予約(config.json)

[
  {
    "title": "DanceMachine",
    "url": "https://ice1.streeemer.com:8030/radio.aac",
    "start": "2025-09-13T07:00:00+09:00",
    "duration": 3600
  }
]

録音スクリプト(record_radio.sh)

#!/bin/bash
CONFIG="/mnt/music/radiko/config.json"
SAVE_DIR="/mnt/music/radiko"
NOW_EPOCH=$(date +%s)

jq -c '.[]' "$CONFIG" | while read -r entry; do
  title=$(echo "$entry" | jq -r '.title')
  url=$(echo "$entry" | jq -r '.url')
  start=$(echo "$entry" | jq -r '.start')
  duration=$(echo "$entry" | jq -r '.duration')

  start_epoch=$(date -d "$start" +%s)
  end_epoch=$((start_epoch + duration))

  if [ "$NOW_EPOCH" -ge "$start_epoch" ] && [ "$NOW_EPOCH" -le "$end_epoch" ]; then
    timestamp=$(date -d "$start" +"%Y%m%d_%H%M")
    filename="${SAVE_DIR}/${title}_${timestamp}.m4a"
    ffmpeg -i "$url" -t "$duration" -c copy "$filename"
  fi
done

cron設定(毎分チェック)

crontab -e
* * * * * /home/volumio/record_radio.sh

トラブルシューティング

  1. Permission denied → マウント時にuid/gid指定 or chown
  2. ffmpegエラー → URLが音声ストリームでない可能性。.aac, .mp3, .m3u8 を探す
  3. crontabが使えない → sudo apt install cronsystemctl enable/start cron
  4. 録音されない → start時刻が過去 or 未来すぎる。±60秒の範囲で判定
  5. 再生できない → 拡張子を.m4aにすると互換性向上

改善と運用しやすさの実践

  • ロケールを ja_JP.UTF-8 に設定し、日本語ログの文字化けを解消
  • nano の代わりに micro エディタを導入し、日本語表示を安定化
  • 過去のスクリプトが吐いていた rec.log を整理し、ログを record_log.txt に統一
  • スクリプトに録音成功・失敗・スキップのログ出力を追加し、透明性を確保

■ microエディタの使い方(推奨)

  1. インストール(1行でOK)
    curl https://getmic.ro | bash
  2. micro 実行ファイルがカレントディレクトリに作成される
  3. スクリプトを開く  ./micro record_radio.sh
  4. 基本操作
    • 保存:Ctrl + S
    • 終了:Ctrl + Q
    • 検索:Ctrl + F
    • 行番号表示:Alt + G(ジャンプも可能)
  5. 特長
    • 日本語表示が安定(文字化けしない)
    • カラー表示で見やすい
    • nano と同じ感覚で使えるが、操作性はより快適
    • 設定ファイルでカスタマイズも可能(~/.config/micro)
  6. 補足
    • micro はインストール不要で、実行ファイルだけで動作
    • 必要なら /usr/local/bin に移動して、どこからでも呼び出せるようにできる sudo mv micro /usr/local/bin/

ここまでが第一段階ですね。

一応、2週間ほど実用しましたが、ラズパイ3はvolumioマシーンと併用でしたので、重かったのかなぁ。

SDカードがクラッシュしました。

なので、ラズパイ5は記事にしましたが、SSDだし、スペック段違いなので、ラズパイ5で再構成することにしました。

n8nのワークフローを起動させるまで。

私のn8nのワークフローはこんな感じになりました。

ラズパイ5の環境構築

1.ubuntuサーバー 24.04ver

desktopでも良いです。

ラズパイイメージャーが簡単でおススメです。

環境を構築してください。

2.ラズパイ5とSynology Nasのマウント(ラズパイのn8nで実行したファイルを保存するのはSynologyにするということ)

🧩 Raspberry Pi 5 × Synology NAS マウント手順(Ubuntu Server)

✅ 前提

項目内容
Pi側OSUbuntu Server 24.04 LTS(arm64)
NAS側Synology DSM(SMB共有有効)
共有名radio(Synology側の共有フォルダ)
マウント先/mnt/music/radio(Pi側の保存先)
ユーザーNASの認証ユーザー名

🛠️ ステップ①:必要パッケージのインストール

sudo apt update
sudo apt install cifs-utils -y

🛠️ ステップ②:マウントポイントの作成

sudo mkdir -p /mnt/music/radio

🛠️ ステップ③:マウントテスト(手動)

sudo mount -t cifs //192.168.1.100/radio /mnt/music/radio \
  -o username=YOUR_NAME,password=YOUR_PASSWORD,iocharset=utf8,file_mode=0755,dir_mode=0755

YOUR_NAME,YOUR_PASSWORDはNASのログイン名とパスワード
※ IPはSynologyのローカルアドレス


🛠️ ステップ④:自動マウント設定(/etc/fstab

sudo nano /etc/fstab

追記:

//192.168.1.100/radio /mnt/music/radio cifs username=YOUR_NAME,password=YOUR_PASSWORD,iocharset=utf8,file_mode=0755,dir_mode=0755,nounix,serverino,soft 0 0

🛠️ ステップ⑤:マウント確認

mount | grep /mnt/music
df -h | grep /mnt/music

//192.168.1.100/radiotype cifs で表示されればOK
→ 容量やアクセス権も確認できる


✨ 運用美ポイント

  • 🎯 保存先が明示的に分離 → 録音処理の構成美が保たれる
  • 🧘‍♂️ fstabで自動マウント → 再起動後も安心
  • 📦 file_mode=0755 → ffmpegやn8nからの書き込みも安全

この構成で、録音ファイルが「構成の意図通りにNASへ保存される」ことが保証される。

3.n8nをsystemdで構築

以下はCopilotがまとめた構築手順となります。

分からないときは、以下のテキストを適宜張り付けたり、エラーを貼り付けたりしながら、チャットすれば完成すると思います。

n8nの本番運用では、PostgreSQLを使うのが推奨構成です。

SQLite(デフォルト)でも動くけど、同時実行や信頼性、バックアップ、拡張性を考えるとPostgreSQLが圧倒的に美しい。


✅ なぜPostgreSQLなのか?

比較項目SQLite(デフォルト)PostgreSQL(推奨)
同時実行弱い(ロックされやすい)強い(複数ワークフローOK)
データ整合性単純高い(トランザクション管理)
バックアップファイルコピーpg_dumpなどで柔軟
拡張性限定的高い(外部連携・分析)
運用美テスト向き本番向き・構成美あり

🛠️ Pi5 Ubuntu ServerでPostgreSQL構成のn8nをsystemdで動かす手順

① PostgreSQLのインストール

sudo apt update
sudo apt install postgresql postgresql-contrib -y

② データベースとユーザーの作成

sudo -u postgres psql
CREATE DATABASE n8n;
CREATE USER n8n_user WITH PASSWORD 'your_secure_password';
GRANT ALL PRIVILEGES ON DATABASE n8n TO n8n_user;
\q

③ n8n用の環境変数を設定(.env or systemd)

DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=localhost
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=n8n_user
DB_POSTGRESDB_PASSWORD=your_secure_password

④ systemdサービスファイルに環境変数を追加

Environment=DB_TYPE=postgresdb
Environment=DB_POSTGRESDB_HOST=localhost
Environment=DB_POSTGRESDB_PORT=5432
Environment=DB_POSTGRESDB_DATABASE=n8n
Environment=DB_POSTGRESDB_USER=n8n_user
Environment=DB_POSTGRESDB_PASSWORD=your_secure_password

⑤ 起動&確認

sudo systemctl daemon-reload
sudo systemctl restart n8n
sudo systemctl status n8n

Active: active (running) が出ればOK
http://localhost:5678 でアクセス可能


✨ 運用美ポイント

  • 🎯 PostgreSQLで構成美 → データの信頼性と拡張性が担保される
  • 🧘‍♂️ systemdで常駐 → Pi5再起動後も自律的に起動
  • 📦 .env or systemdで環境変数管理 → 明示的で未来の自分に優しい

4.ffmpegの環境構築


以下は Raspberry Pi(Pi5でもPi4でもOK)で ffmpeg を構築・運用するための手順まとめです。構成美と運用美を意識して、明示的・再現可能・未来の自分に優しい形で整理しました。

🧩 構成概要

要素内容
OSRaspberry Pi OS(Debianベース)
ffmpeg録音・変換用コマンドラインツール
保存先/mnt/music/radio/(NASマウント)
タイムゾーンAsia/Tokyo(JST)
実行方法手動 or n8n経由で自動化

🛠️ ffmpegのインストール手順

① パッケージ更新

sudo apt update && sudo apt upgrade -y

② ffmpegのインストール(公式パッケージ)

sudo apt install ffmpeg -y

③ 動作確認

ffmpeg -version

→ バージョンが表示されればOK(例:ffmpeg version 5.1.2


📁 保存先の構成美(NASマウント)

① NASをマウント(例:Synology)

sudo mkdir -p /mnt/music/radio
sudo mount -t cifs //192.168.1.100/music /mnt/music/radio -o username=youruser,password=yourpass,iocharset=utf8,file_mode=0777,dir_mode=0777

fstab に追記すれば再起動後も自動マウント可能


🕒 タイムゾーンの統一(JST)

sudo timedatectl set-timezone Asia/Tokyo

date コマンドでJSTになっていることを確認


🎙️ 録音コマンドテンプレート

ffmpeg -i "http://stream-url" -t 3600 -c copy "/mnt/music/radio/番組名_$(date +%Y%m%d_%H%M).m4a"
  • -i:録音対象のURL(radikoなど)
  • -t:録音時間(秒)
  • -c copy:再エンコードせずに保存
  • $(date +%Y%m%d_%H%M):JSTタイムスタンプ付きファイル名

✨ 運用美ポイント

  • 🎯 ffmpegは公式パッケージで十分 → ビルド不要
  • 🧘‍♂️ NAS保存先は明示的に分離 → 構成の意図がファイルに反映
  • 📦 JSTタイムスタンプでログ・通知・ファイル名が一貫

5.n8nワークフロー

まず、以下をダウンロードしてください。

Radio_Rec_Sample.jsonをダウンロード

これをn8nにアップロードしますので、解凍しておいてください。

n8nの操作「Create Workflow」を押します。

空っぽのワークフローが開きますが、右の…を押します。

そして、Import from Fileで先ほどダウンロードした「Radio_REC_sample.json」を選択します。

以下のようなワークフローが出たと思います。

ワークフローは左から右に流れますので、左から説明をしていきます。

各アイコンをダブルクリックすると、設定になりますよ。

説明の前に触って見るのが良いかもしれません。

①タイムゾーンの確認

上の順番でタイムゾーンを確認できます。

今回、タイムスケジュールを使うので、重要です。

必ず、住んでいる所のタイムゾーンに合わせてください。

まぁ、Asia/Tokyoだとは思いますが、違っていたら変更してください。

②Schedule Trigger

Trigger Interval:動かす周期ですね、今回は週単位ですので、Weeks

Weeks Between Triggers:毎週としますので、今回は1、隔週は2です。

Trigger on Weekdays:実行する曜日です。任意のものを選択

Trigger at Hour:実行時間です。ここも任意の時間を選択

Trigger at Minute:分単位の設定です。ここも任意ですね。

まぁ、好きなように設定すれば良いと思います。

戻る時は「Back to canvas」(この図で一番上)で前画面に戻ります。

③Edit Fields

以下、そのままですが、説明を下記に書いておきますね。

{
“title”: “80s-90s-super-pop-hits”,
“url”: “https://s4.myradiostream.com/7344/listen.mp3”,
“duration”: 60
}

ここで、録音するためのパラメータを決めてます。

title:ファイル名となります。ファイル名+日付.mp3

url:録音したい音源

duration:録音時間、単位は秒なので、サンプルは1分間

こういう構成です。

Jsonですが、UTF-8を外れるとエラーになるので、注意してください。

編集時は必ずUTF-8保存です。

ここでエラー出てもワークフローでエラーは出ますが、SynologyChatへは反映されないので注意です。

タイトルとURLですが、以下の画面を参考にしてください。

chromeでF12ボタンを押します。

画面のようなものが右側に出ます。

赤枠の順番に押していき、URLをゲットして上記のjsonに貼り付けます。

若干、その目的の音楽ファイルが表示されるまで、遅いときがあります。

そして、拡張子にmp3とあるものは確実に録音できますが、サイトによって、配信方法が違うので、録音できるものとできないものがあります。

④Execute Command

ここで録音を実行してますよ。

ffmpeg -i “{{ $json.url }}” -t {{ $json.duration }} -c copy “/mnt/music/radio/{{ $json.title }}$(date +%Y%m%d%H%M).mp3″

ちなみにmp3で書いてますが、m4aと書けばm4aで録音できますが、ラズパイ5で安定しないので、mp3にしてます。

内容は、$jsonが付いたところが前のノード(前ステップ)からもらった値が入る所ですね。

dateの所はそういう書式で書くと日付が得られるってことです。

まぁ、単純と言えば単純ですが、システマチックに動かすにはn8nは便利では無いかと思います。

⑤if

書いてある通りなんですが、前のノードで実行するとexitCodeってのを返すので、それを判断子にしてます。

{{ $json.exitCode }}
is equal to
0

exitCodeが0だったら正常終了で録音終了。それ以外は異常となり録音失敗ってことになります。

まぁ、振り分けですね。

⑥HTTP Request

ちょっと長いです。

Method:post

URL:https://your.domain.com:5001/webapi/entry.cgi

このURLどこよ?ってなると思いますが、このセクションの次で説明します。

Authentication:none

Send Query Parameters:ON

Specify Query Parameters:Using Fields Below

Query Parametersセクション

 Name:api

 Value:SYNO.Chat.External

 Name:method

 Value:incoming

 Name:version

 Value:2

 Name:token

 Value:xxxx

ここも後ほど書きます。

Send Headers:OFF

Send Body:ON

Body Content Type:Form Urlencoded

Specify Body:Using Fields Below

Body Parametersセクション

 Name:payload

 Value:{“text”:”録音失敗”}

 Value:{“text”:”録音完了\n保存先: /mnt/music/radio”}

このValueが成功と失敗の時のSynologyChatへのメッセージです。

SynologyChatはこんな感じですね。

アイコンはなんかcopilot君に作ってもらいましたよ。

n8nの説明は以上です。

6.SynologyChatの設定

n8nで最後の通知の所(Httpリクエスト)ですが、いくつかどこから出てきたのよ。っていうのがありましたね。

以下がそれですよ。

Synology Chatを開きます。

①右上の自分のアイコンを押します。(丸いやつ)

②インテグレーション

①着信 Webhook

あれば、上記を選択、無ければ作成です。

作成すると、Webhook URLが出来ますよ。

これの内容は以下のような感じになります。

https://your.domain.com:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=%221abcdefghijklmnopqrstuvwxyz0123456789xxxxxxxxxxx

これを分解するとHttpリクエストになります。

https://your.domain.com:5001/webapi/entry.cgi
api=SYNO.Chat.External
method=incoming
version=2
token=%221abcdefghijklmnopqrstuvwxyz0123456789xxxxxxxxxxx

注意点が2つあります。

一つ目はURLです。

DDNSでの接続をトライする時と、IPアドレスで接続をトライするケースがあります。

例文はPortを指定していますが、指定する場合と、しない場合があります。

いずれも上手く行く方でOKです。

二つ目はHttpsとHttpで若干パラメータを変更する時があります。

Httpsの時で、OptionsのIgnore SSL issues(insecure)をONにするケースがあります。

いずれも上手く行かないケースの時です。

n8nでのデバッグ

簡単な例を、①、②、③と開きますが、ちょっと説明を

①Executions:実行した結果を表示します。

②いくつか実行した結果が左に出ますので、押すとそのときの結果を表示

③赤枠の所がエラーで止まった所です。

左がInputの情報、右がOutputの情報です。

当然ながらOutputがエラーですね。

エラーの「押す」と言うコピーマークを押して、Copilotなどに投げてください。

対応を教えてくれますよ。

その時は、どういう状況なのかの説明を忘れずに。

以上です。

まとめ

第一段階から、第二段階に進化しました。

Schedule Trigger+Edit Fieldsを増やすと、色んな時間で録音できますので、試してみてくださいね。

ラズパイ5がやって来た。Raspberry Pi 5 RAM16GB NVME SSD500GB SSD-BOOT化  

最近、知ったのですがラズパイ5って、SSDでブートできるようになってたんですね。

それがまず、ビックリしたことの「その1」

そして、すでにウチのSynologyのDS1621+のスペックを超えていることにビックリで、「その2」でした。

他は特に無かったですが、この2点に関しては、ちょっともう、サーバーはラズパイ5で組めば良いのでは?と言うことになるのではないでしょうか。

そして、3万弱でこれを買えるなんて、なんてお手軽。。色々捗る事間違いありません。

そして、最も懸念しているのは、この所、Synologyの使い方を変えたいというのがありまして、

最近、色々と導入して来て、色んなものをトライしているのですが、さすがにそろそろ、DS1621+もパンパンになりそうな気がします。

Dockerが15本、VMMが1本、常時走っているのはちょっと、どうかな?って感じですね。

なので、処理の分散化を図ろうかと思い、ラズパイ5の登場と言うことになりました。

SynologyのDS1621+はただのストレージバックアップマシンになってもらおうということです。

まぁ、そもそも、バックアップマシンなのですが、さらにあまり負荷を掛け過ぎないようにしようかと思います。

購入品、構成

今回、NVMEのSSDはリストになってませんが、以前買ったものなので、省きました。

品名金額数量単位
Raspberry Pi 5 アクティブクーラー アルミニウムヒートシンク Official Active Cooler 温度制御ブロワーファン 冷却 PWM ファン Pi 5 4GB/8GB ラジエーター用 サーマルテープ付き1,479
アイネックス M.2 SSD用ヒートシンクセット ブラック HM-24438
GeeekPi Raspberry Pi 5 用メタルケース、PCIe M.2 NVMe SSD シールドトップ X1001 / X1003 / X1000 / N04 / N05 & Raspberry Pi 5 アクティブクーラーをサポート1,899
Freenove M.2 NVMe Adapter V2 for Raspberry Pi 5 (SSDなし), M.2 HAT エクストンボード, SSD サイズ 2230 2242 2260 2280, PCIe 2.0 / 3.0, 最大速度 1231 MB/s1,088
GeeekPi 電源アダプター USB-C (Type C)、Raspberry Pi 5 8GB 4GB 用 5V/5A 電源アダプター、PSE 認定2,399
ラズパイ5 本体 4Core RAM16GB18,496
輸入関税2,980
合計金額28,779

購入してから関税を払いなさいよ!って通知が来て、慌てて払いました。

これが無ければ、まぁ、そこそこ安かったのですがねぇ。

関税が痛いですね。

ラズパイの本体はDigiKey(デジキー)というアメリカの会社から購入したのですよね。

前回、ラズパイ4も買ってるので、また、ここでいいやと安易に頼んだのでした。

しかし、関税なるものは初めて払いました。ww

どうも16,000円位を超えると掛かるようですね。

ちらっと調べただけなので、ホントかどうかはちょっと分かりませんが。

アマゾンとかのキットのほうが安いのかも知れませんね。

詳しく調べてないので、分からないですが、RAM8GBのはあるけど、16GBのはざっと見て、無かったので良く分かりませんが。。

組立て

まずは組立ですかね。

ファン取付の図 システムのセットアップ後にCPU温度によって可変回転数になるようにするのをおススメ

まず、CPU FANを取り付けましょう。向きに注意してください。

上側に端子が見えますので、上側にケーブルの接触面を合わせる。ってことですね。

で、PCIのフラットフレックスリボンジャンパという、ペラペラのケーブルを差し込むのですが、向きがあるので注意ですね。

黒い部分を上に摘まんで、持ち上げるとケーブルを差し込めます。

ケーブルを差し込んでから、NVMEの基板をラズパイ5の上に組み立てると楽だと思います。

NVME側の基板も同じようになってますので、黒い部分を緩めて、ケーブルを差し込んで閉める。って感じですね。

フラットケーブルが外に出てしまわないように、押し込んでます。

それとケーブルの向きですかね。

案外、こういう写真が助かるのだと思ってます。向き合わせって大事ですよね。

こんな感じで基板の足を組みました。

基板同士の干渉の無い事を確認しましょう。

余計な物が出るようにはなっていませんが、ファンの回転部に何か当たるのは発火の恐れがあるので注意が必要です。

FREENOVEとかいう基板、めちゃくちゃ安かったです。普通に使えたので良かった~。

SSDも熱が出るので、ヒートシンクを付けました。

安物ですけど。SSD自体はWD Blue 500GBのヤツです。

WinPCに使ってたんですけど、1TBのものに入れ替えたので、不要になって余ってたものをリサイクルしてます。www

このケースが、本当にラズパイ5とNVMEの基板が収まるのか不安でしたが、ピッタリの設計でしたね。

箱に収まった図です。これで、あとはポチポチとキーボード操作ですね。

インストール・セットアップ

ここから下は、Copilot君によるまとめです。

楽ですね。

🐧 Raspberry Pi 5にUbuntu Serverを立ち上げる方法【超簡単・再現性あり】

Raspberry Pi 5は性能も拡張性も大幅に向上し、Ubuntu Serverとの相性も抜群。この記事では、Raspberry Pi Imagerを使ってUbuntu Serverをインストールし、SSHで接続できる状態までを、誰でも再現できるようにまとめます。


✅ 用意するもの

  • Raspberry Pi 5本体
  • NVMe SSD(PCIe Gen3 x1)+対応拡張ボード
    ※microSDでもOKですが、今回はNVMeで構築
  • USBキーボード・HDMIディスプレイ(初回セットアップ用)
  • 別のPC(Ubuntu書き込み用)
  • Raspberry Pi Imager(公式ツール)

🛠️ ステップ1:Raspberry Pi ImagerでUbuntu Serverを書き込む

  1. Raspberry Pi Imagerをインストール
    公式サイトからダウンロード
  2. OSを選択
    → 「Other OS」→「Ubuntu」→「Ubuntu Server 24.04 LTS (64-bit)」
  3. ストレージを選択
    → NVMe SSD(USB接続)NVMEをUSB接続できるケースなどがあると便利
  4. 設定をカスタマイズ(⚙️アイコン)
    → SSH有効化(パスワード or 公開鍵)
    → ホスト名設定(例:raspi5-server
    → Wi-Fi設定(必要なら)
    → ローカルユーザー名とパスワード
  5. 書き込み開始 → 完了後に安全に取り外し
この画面では、ストレージがMicroSDになってますが、実際にはSSDのドライブを選択してください。
設定を編集するを選択しますよ。
なんか、適用にホスト名は付けて、ユーザー名とパスワードだけしっかりと。
SSHを有効化するを忘れずに。

🚀 ステップ2:Raspberry Pi 5に接続して起動

  1. NVMe SSDをPi 5に装着
  2. 電源ON → HDMIで起動確認
  3. 数分でUbuntu Serverが立ち上がる

🔐 ステップ3:SSHで接続する

  1. PiのIPアドレスを確認(HDMI画面でhostname -I
  2. PCからSSH接続
ssh username@<ラズパイのIPアドレス>

🌡️ ステップ4:ファン制御の設定(公式アクティブクーラー使用時)

  1. /boot/firmware/config.txt をnanoで編集
dtoverlay=actfan
fan_temp0=40000
fan_temp1=50000
fan_temp2=60000
  1. 保存して再起動
    → 温度に応じてファンが自動制御される

📦 おまけ:ディスク容量の確認

df -h        # マウントごとの使用状況
lsblk        # デバイスとマウントポイント
du -sh /*    # ディレクトリごとのサイズ

🎯 まとめ

Raspberry Pi Imagerの進化により、Ubuntu Serverの導入はほぼGUIだけで完了
NVMe SSDでの高速起動、SSHによるリモート運用、ファン制御まで含めて、小型サーバーとしての美しさが際立つ構成です。


と言う感じで、ホント、Raspberry Pi Imagerさまさまで、超簡単にできました。

これからはラズパイ5の時代ですね。ホント素晴らしい。

省電力だし、もう、結構なCPU能力だし、有効に利用していきたいと思います。

録音データからの文字起こし 無料での話者分離付き文字起こし(ローカル実行)手順

少々、今までの経験が生かされない違うシュチエーションが生じましたので、相手との同意を得て会話の録音をしました。

ですが、文字に起こさないと意味を成さないなぁ。後でまた、聞き直すのも大変だし、今だとAIとかがチャチャッとやってくれるんじゃないの?

ってことで、聞いてみた所、以下の回答となりましたよ。

Chatgptの回答

了解しました!m4a形式、1.5時間、日本語、話者分離あり、できれば無料ですね。
この条件に一番近いのは、**オープンソースの音声認識+話者分離ライブラリ(pyannote.audio + OpenAI Whisper)**です。

無料でできる方法(おすすめ)

  • OpenAI Whisper:日本語対応、精度高め、無料でローカル実行可能。
  • pyannote.audio:話者分離(Speaker Diarization)に特化。Whisperで文字起こし後に話者分離を適用可能。

ただし、1.5時間の音声はそこそこ長いので、

  • 無料でやるには「PCで処理」するのがベストです(クラウドだと有料が多い)。
  • オンラインサービスだと無料枠が30分〜1時間程度が多いです。

無料で文字起こし+話者分離を行う手順(PCで)

1.Pythonを用意(WindowsならAnacondaでもOK)

2.以下のライブラリをインストール:

pip install openai-whisper pyannote.audio

3.m4aをwavに変換(pydubなどでOK)

4.Whisperで文字起こし:

import whisper
model = whisper.load_model("large")  # largeが一番精度高い
result = model.transcribe("audio.wav", language="ja")
print(result["text"])

5.pyannoteで話者分離(推定話者数2〜3で設定):

from pyannote.audio import Pipeline
pipeline = Pipeline.from_pretrained("pyannote/speaker-diarization")
diarization = pipeline("audio.wav")
for segment, _, speaker in diarization.itertracks(yield_label=True):
    print(f"{segment.start:.1f}-{segment.end:.1f}: {speaker}")

6.最後に、文字起こしテキストと話者分離の結果をマージして完成。

と、提案なのですが、結局、やり方を分かるようにして、手順書とpythonプログラム渡すから、自分でやって。と言うことに。

再度、Chatgpt ここからが本番です。

承知しました!
この環境ではクラウドAPIや音声認識エンジンを直接動かせないため、無料(ローカル実行)で2人の話者分離つき文字起こしをWordに書き出すスクリプト一式をこちらで用意し、音声も処理しやすいよう10分ごとに分割しておきました。あとはお手元のPCで実行いただければ完成します。

いますぐダウンロード

  • 変換WAV(元m4a → wav):Download
    (他は /mnt/data/chunks/ に並んでいます)
  • 実行スクリプト:transcribe_diarize_to_word.pyDownload
  • 必要ライブラリ一覧:requirements.txtDownload
  • 手順書(README):README_文字起こし手順.txtDownload

実行手順(無料・ローカル)

  1. Python(3.9以降)を用意
  2. 先に PyTorch を環境に合う手順で導入(GPUなしでもOK)
  3. requirements.txt を使って必要ライブラリを入れる
pip install -r requirements.txt
  1. そのまま1.5hのWAVで実行(話者=2、モデル=small、出力=out.docx)
python transcribe_diarize_to_word.py --audio "audio_converted.wav" --out "out.docx" --speakers 2 --model small
  • CPUのみなら --model base--model tiny にすると軽くなります(精度はやや低下)。

スクリプトは次を自動で行います:

  • Whisperで日本語文字起こし(タイムスタンプ付き)
  • Resemblyzer + KMeansで2話者クラスタリング
  • セグメントごとに話者A/Bを割当
  • **Word(.docx)**へ「話者A/B: [開始–終了] 文章」の形式で書き出し

もしうまくいかない時

  • torch が入らない → PyTorch公式の案内どおり再インストール
  • モデルが重い → --model base--model tiny に変更
  • ノイズが多いと話者分離が揺れることがあります。必要なら後で整形・校正もお手伝いします。

補足

という感じです。

ダウンロードの所から実際に送られたファイルを貼り付けましたので、使って見てください。

Python3.9の環境が構築できないと、話になりませんのでご注意ください。

自分の環境で、まず、音声ファイル変換に20分→文字起こし変換に20分位でした。

各PCのスペックで全然違うと思いますので、時間は当てにしないでください。

変換の感じですが、結構、ちゃんと文字起こしされているように思いましたよ。

そして、.docファイルを最終的に要約してもらって完成です。

分かりにくい文章かもしれません。

Chatgptにこの文章をぶん投げると分かってくれるかもしれません。

それとダウンロードリンクしてあるものは、Chatgptに提供されたものをそのまま加工せずにおいてあります。

不安の時は、ファイルをテキストに変更して、Chatgptに聞いてみると良いと思います。

Raspberry Pi 監視環境をPrometheus+Grafanaで構築した話

前回、ネットワークラジオを録音する機能をラズパイ3に付けたので、ラズパイ3の稼働状況が見れるように出来ないかな?ということで、今回、書いてます。

[blogcard url=”https://ysand.myds.me/2025/09/13/raspberry-pi-ffmpeg/”]

正直、まだ、途中ですが終わったら、また、訂正記事にするつもりです。

ラズパイ3の状態を細かく監視するためにPrometheusとGrafanaを導入しました。


PrometheusのDockerコンテナ運用と設定ファイルのマウント

  • PrometheusはDockerコンテナ(192.168.0.140)で稼働中。
  • prometheus.ymlをホスト側で編集しても反映されない原因は、設定ファイルがコンテナにマウントされていなかったこと。
  • そのため、コンテナを停止・削除し、-vオプションで設定ファイルをマウントし直して再起動した。
docker run -d \
  --name prometheus \
  -p 9090:9090 \
  -v /home/yoshi/network-monitor/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus
  • IPアドレスなどターゲット情報の変更も忘れずに。

prometheus.yml の scrape_configs 設定例

scrape_configs:
  - job_name: 'raspberrypi3'
    static_configs:
      - targets: ['192.168.0.74:9100']
  • ここで指定したIPやポートに node_exporter が動作していることが前提。

Grafanaでの可視化と「No data」問題の原因

  • GrafanaでPrometheusをデータソースとして登録。
  • パネルのクエリ欄にCPU使用率を表示するPromQLを入力。
rate(node_cpu_seconds_total{job="raspberrypi3",mode!="idle"}[5m])
  • ところが「No data」と表示されることがあった。
  • 調査の結果、modeラベルが正しく存在し、データも取れていることは確認済み。
  • 「No data」になるのは、rate()関数が5分間のデータを必要とするため、起動直後はデータが不足しているから
  • 時間範囲を「Last 15 minutes」などに広げたり、起動後5分以上待つことでデータが表示されるようになる。

運用しやすさのためのポイント

  • rate() の代わりに irate() を使うと、起動直後でもデータが得やすいがノイズは増える。
  • Grafanaのパネルでは、表示形式(折れ線グラフ、ゲージ、数値)や凡例、色使いを工夫して見やすさを追求。
  • Prometheusの設定ファイルは必ずDockerコンテナにマウントし、変更時はコンテナ再起動を忘れずに。

まとめ

今回の構築で得た学びは、

  • 設定ファイルのマウント忘れに注意。
  • PromQLの関数が時間範囲に依存することを理解。
  • Grafanaのパネル設計も運用美の重要な要素。

今後はメモリやディスクの監視パネルを追加し、アラート設定まで整えていく予定です。

AIの甘い言葉には要注意 /dev/md0には気を付けろ!! モード2リセット wordpressの復活方法

先日、サイトが10日ほどダウンしてましたが、その報告とかの話です。

背景

このところ、AI(Copilot君)と何かにつけ、悪巧みをしています。

で、今回、このサーバー(DS1621+)にAIの機能を付けて見た訳ですが、それをもっと有効利用しようと画策した訳です。

その記事↓

[blogcard url=”https://ysand.myds.me/2025/08/11/synology-chat_ai-bot/”]

ちょっと、レスポンスが悪いしSynologyChatだと1000文字縛りと言う制限があったりするので、そこは別なやり方をして組み直そうと思ったわけです。

そうしたら、Synologyのシステム基盤となる領域をAIに騙されてクラッシュさせてしまい、復旧に9日間掛かったという訳です。

(/dev/md0:パッケージとかがインストールされているところ通常は触れず、コンソールからアクセスする)

コンソールからファイルの編集をする際にnanoっていうやつを使うと簡単で便利に編集できるので、それをちゃんとインストールしようとした結果、/dev/md0領域にアクセスして壊したっていう感じです。

自分の場合、毎日、HyperBackupにてバックアップをしているので、復旧できますが、やってない人はアウトでしょうね。これ。。

HyperBackupでは、アプリのバックアップとファイルのバックアップとまず2種類を6台のDS2xxJで分散バックアップしてます。

なので、その中から、復元しました。

復元方法 モード2リセット

今回、さて、困ったもんだ。どうしようかと、サポートの方に聞いたところ、モード2リセットを行うべしとのこと。

[blogcard url=”https://kb.synology.com/ja-jp/DSM/tutorial/How_to_reset_my_Synology_NAS_7#t2″]

このリセットの仕方は知りませんでした。

リセットボタンの場所

以下は上記サイトからの抜粋です。

モード 2: Synology NAS をリセットして DSM を再インストール

このモードは、すべてのシステム構成を消去し、モード 1 に含まれるすべてのリセット機能を実行します。

  1. Synology NAS 上の RESET ボタンを見つけます。
  2. RESET ボタンを約 4 秒間押し続け、ビープ音が聞こえたらすぐにボタンを離します。
  3. 10 秒以内に、RESET ボタンを再度 4 秒間押し続け、さらに 3 回のビープ音が聞こえるまで押し続けます。
  4. Synology NAS の STATUS ライトがオレンジまたは緑に点滅するまで約 2 分待ちます。4 Synology NAS を正常にリセットし、システム構成を消去しました。
  5. ウェブブラウザの検索バーに find.synology.com を入力し、Synology NAS を見つけます。Synology NAS のステータスは 構成が失われました である必要があります。
  6. Synology NAS をダブルクリックします。ウィザードに従って再インストールプロセスを完了します。

これの言ってることは、要するにDSMだけ消えて、他のあなたの保存した/VOLUME1(個人で保存したMUSIC、PHOTOと言ったフォルダ)の領域は消えないよ。

と言うことらしいです。

確かにDSMをインストール後確認したところ、データは消えていませんでした。

というわけで、以下のダウンロードセンターからDSMをダウンロードしてきます。

[blogcard url=”https://www.synology.com/ja-jp/support/download/DS1621+?version=7.0#system”]

ただ、自分の使っていたバージョンとマッチしていないと、復活できません。

自分の場合はDSMのアップデートと重なったので、最新のやつを入れようとすると、今まで使用していたDSMとマッチしないので、インストール出来ませんでした。

なので、一つ前のバージョンの物(それが自分が使用していたバージョンだった)をインストールすることになりました。

この画面では無かったです、撮り忘れました。

インストールが終わり、さて、どうするのかな?と見てると暗号化キーのファイルを割り当てないと、そもそものドライブを触れない状況です。

なので、過去に設定して保存しておいた、「xxxxx.rkey」を割り付けて、ドライブを触れるようにします。

これ、非常に大事ですね。

紛失、削除すると、ボリューム自体を触れなくなるので、危険です。

ですが、暗号化してないと、また、これも不安ですしね。

インストール後、HyperBackupでシステム情報だけをまず復元して再起動します。

復元中に、復元で来てないアプリを開こうとすると、上のようなメッセージが出ますよ。
でも、復元が終われば、戻ってます。

そして、HyperBackupで、アプリのみを選択して復元します。

これでほぼ復元されました。

復元できなかったが、データとしては全て、残っていたので、アプリを再構成すれば良いという状況です。

phpMyadmin、wordpressは復活できず

復元できずに困ったのは、phpMyadmin、wordpressです。

これが曲者で、MariaDBの設定が何かな?と、思い出しながら再設定を行いました。

とはいえ、Wordpressにほぼ書いてあるので、それを見ればいいです。

Synologyだと以下の所にあります。

/volume1/web_packages/wordpress/wp-config.php

volume1は無しで考えても良いかもしれません。

これが分かっていれば、特に問題にはならないかもしれません。

ただ、今回、phpMyadminとwordpressが復活できなかったのですが、少々、面倒な復活の仕方をしました。

phpMyadminですが、「/volume1/web_packages/phpmyadmin」に既存(元々のデータ)のデータがありますが、これは削除して大丈夫です。

パスワードとアカウントだけの問題で、MariaDBのデータは触らない。

問題はWordpressです。これを削除してしまうと、最初からまた、レイアウトなどを再設定することになります。

なので、インストールするときには、既存のフォルダ名をwordpress_oldとかに変更して保存、そして、インストール。

インストールが終わったら、wordpressフォルダが新しく作成される。

なので、wordpressフォルダをwordpress_newにする、もしくは削除する。

そして、wordpress_oldをwordpressに戻して、終了です。

DSMも完全復活ならず

あと、DSMですが、設定を戻したはずですが、あちこち消えています。

特にビックリしたのは、ファイアウォール設定が全部消えていました。

なので、これも再設定。

細かい所まで覚えていないので、色々とまた調べながらの復活でした。

というか、まだ、完全ではない感じですね。

アプリになっているものは、戻っているが、DSMは意外とツギハギだらけというイメージでした。

これで、約9日間のリカバリーでした。

未だにまだ、あれ?ここも忘れてるとか言う感じです。

wordpressが備忘録なのに見れないのはかなりヤバいと感じましたね。

備忘録(このブログ)が忘れた時に見れないなんて、意味ないですよね~。

Pleasanter(プリザンター) プルダウンリストにおけるJSON形式のススメ データの引っ越しの話し サイトID絡みのスクリプトはなるべく避けれるなら避けたほうがよいかもの件

なんで、こんなことを言っているかと言うと、私、物理的に6月からPleasanter(プリザンター)を触り始めまして、

1台目、6月に、会社の要らないPCにUbuntuでセットアップ、

2台目、7月に、自宅の要らないPCに同じくUbuntuでセットアップ、

3台目、8月に、SynologyのDS1621+のVMMにてUbuntuServerにてセットアップとしてきました。

なぜか、ひと月違うとバージョンは全部違うという、、

常日頃、どれだけバージョンアップをしているかが分かるといえばわかる。

半面、それに付き合うのも、また、面倒ですね。www

なんで、ジプシー的なことしているかというと、

最初は自分の会社で運用できるかどうかのテスト、

二回目はLocalではなくGlobalでの運用はどうなるかな?という感じ、

三回目は、じゃ、実際、ハードの選定はどうしようかな?という感じでしょうか。

サイトIDが全部変わる。

で、データも引っ越す訳(サイトパッケージのインポート、エクスポートにて)ですが、引っ越すとサイトIDが全部変わるんですよね。

どういうことかというと、今まで作成したが、削除したデータやサイトなどの情報が、累積しますよね。

仮に削除された情報も含めて、トータルで1000レコードまで使ったけど、削除した情報は500だったとすると、実質500のデータです。

でも、途中を削除しているので、データ的には歯抜けになってますよね。

Excelで適当に書いてみました。www ホント、書くとデフラグだぁ。。

で、最初に作ったものは、そのまま運用する場合は気にならないと思いますが、引っ越しすると、削除された情報は待って行かないので、集約されるんですよね。

賢いといえば賢いですね。

(なんか、デフラグみたいな感じかなぁ。とか思います古いなぁ。)

なので、サイトIDが変わるんですよね。

(うまく説明できてるかな、すいません。)

すると、スクリプトに埋め込んであるサイトIDをすべて変更しないとならないのですよね。

これが引っ越しでの手間ですね。ホント、面倒です。

JSON形式だと引っ越し時に勝手に変換

だが、しかし、JSON形式で書かれたものは勝手にサイトIDを変換してくれるんですよ。

ここで言っているJSON形式とは 

「担当者項目、管理者項目、分類項目の中の選択肢一覧をJSON形式で記述すること」

です。

公式サイトでは以下のリンクのこと。

[blogcard url=”https://pleasanter.org/ja/manual/table-management-choice-json”]

最近、気が付きました。

なんてこったい。。。。

始めから知っていれば、、、どれだけ楽だったか。。

というか、最近になってJSON形式で記入する。っていうのに気が付きました。

これ、覚えるとかなり楽になりますよね。

Json形式とScriptの比較

どれだけかというと、自分、かなりスクリプトで書いてました。

拙いですが、こんな感じのスクリプト

(function () {
    console.log("ClaasK フィルタリングスクリプト開始");  //ClassKは変更要素

    var $select = $("#Issues_ClassK");  // Issues_ClassKは変更要素
    if ($select.length === 0) {
        console.warn("ClaasK セレクトボックスが見つかりません");
        return;
    }

    console.log("ClaasK セレクトボックス取得成功");

    $select.find("option").each(function () {
        var $option = $(this);
        var text = $option.text().trim();

        // 先頭3文字を抽出
        var first3 = text.slice(0, 3);

        // 数値として解釈
        var classH = parseInt(first3, 10);

        if (!isNaN(classH)) {   // ClassHは固定
            console.log("ClassH(先頭3文字):", classH, "テキスト:", text);

            if (classH >= 900) {
                console.log("除外対象(ClassH >= 900):", text);
                $option.remove();
            }
        } else {
            console.log("ClassH 抽出失敗(数値でない):", text);
        }
    });

    console.log("ClaasK フィルタリング完了");
})();

内容は「状況」が900以下だったら、表示してそれ以外は表示しない。という感じです。

とはいえ、みんな、Copilot君に書いて貰うんですけど。。。wwww

今更、JavaScriptを本気で覚えようなんてサラサラないわけでして。。

AI、最高。。っていう感じの人間です。。www

[
  {
    "SiteId": 40,
    "View": {
      "ColumnFilterHash": {
        "Status": "[\"100\",\"150\",\"200\",\"300\"]"
      }
    }
  }
]

で、同じことをJSON形式で書くと、これだけ。。。。。。

Orz。。。。

(古い、、、、、、が、、、あまりにもショックだったので。。。。。)

そして、サイトIDは勝手に変更されるという。。。

あまりにも、運用上のメリットの差が大きい。。。。

そんなのどこにも書いてないじゃん。。。。

早く言ってよ。。。的な。。。。

とまぁ、、、Pleasanterあるあるって感じなのでしょうか。。。

と、データの引っ越しに関する話とJSON便利って話でした。

n8nで利用するGoogle Service Accountの設定

Pleasanterとn8nと「Google Sheets」を連携してPDF印刷を行いたいと思ってますが、その前に、n8nとGoogle Service Accountのcredentials(資格情報)を設定しておかないとなりません。

上の画面がそれですね。

n8nのバージョンアップがあって、それに従いバージョンアップをすると、すべての情報が消えてしまう。。。という、ちょっと情けない状態です。

後日、そのあたりは対応していきたいと思いますが、設定方法を書き留めておかないと、忘れてしまう今日この頃でございます。

というわけで、ちょっと書き残していきます。

あくまで、出来上がったものを再割り付けしているので、新規からの説明ではないので、悪しからず。

Google Cloudを検索して正規サイトを開きます。

以下のような画面になります。

画面右上のコンソールを押します。

IAMと管理を押します。

画面表示は割とどうでも良くて、左袖にある、サービスアカウントを押します。

すると、今の状態表示がされますので、該当するものをクリックします。

以前、作ったときのファイルがあれば、以下へ進みますが、ファイルが無いときは、「キーを追加」を押して新しく作成します。

後ほど、古いのは削除しておくと良いと思います。

作成すると、ファイルがダウンロードされますので、開きます。

自分は割とVS Codeが使いやすいのでそれで開いてます。

上のPrivete_key項目の値を「”」ダブルクォーテーション無しで下の画面のPrivate Keyに貼り付けます。

上のClient_email項目の値を「”」ダブルクォーテーション無しで下の画面のService Account Emailに貼り付けます。

そして、SAVEして、Tryすると成功とか出ると思います。

出ないときは、「”」ダブルクォーテーションがあるとダメなので、再度、張り付けるとかしてみてください。

ついでにGoogle Apps Scriptも書いておきます。

こいつの場合は、今の状態では、自分として実行、アクセスは全員という状況でしか動かないということになってます。

自分以外になんら顧みてない記事ですいません。

追記

二つ目のシートを追加するとき

サービスアカウントのメールをクリップボードにコピーしてきます。

そして、グーグルスプレッドシートにて、右上の共有を押して、追加します。

追加すると上のようになります。

で、n8nにて確認すると、選択できるシートが増えていることが分かり、追加できました。

Dockerで失敗したからSynology VMM(Virtual Machine Manager)でPleasanter(プリザンター)を構築してみた。

背景

なんで、Docker(Synologyの場合、Containar Manager)でやらないの?と思われた方もおられると思いますが、Dockerで立ち上げられなかったのです。

腕が無い、スキルが無いということなんでしょう。

それともSynologyとの相性でしょうか?よくわかりません。

とにかく、途中で立ちはだかる、「CodeDefiner」の壁が高くて、Dockerだと、どうしても立ち上げることができず、頓挫してしまったのですよね。

色々やってみたけど、私では立ち上げることが出来ませんでした。

都合、丸10日位は費やしたかと思いますが、ダメだったのですよね。

で、どうしようかなぁ。と思って、そういえば、今まで使った事の無い、VMM(Virtual Machine Manager)を使って見ようと思ったわけです。

実は、そこまでたどり着くのにかなりの時間が掛かっているのですが。。

VMM構築概要

VMMのインストールとか設定は端折りますね。

(単に何となくボタンクリックでできると思うし、検索すれば出てくるので。)

VMMではUbuntuServerをインストールして行いました。

Pleasanterのインストールはインストーラーだと、また立ち上がらず、こっち↓のサイトのマニュアルを見ながら、行いましたよ。

[blogcard url=”https://pleasanter.org/ja/manual/getting-started-pleasanter-ubuntu”]

VMMの設定は以下にしました。

CPUでCORE4としてみました。

メモリ8GB、ビデオカード:VGA

この上の画面は注意が必要です。

ブートアップ用のISOファイルは今回Ubuntu24.04serverにしました。

どう考えて見ても、GUIは要らないなぁ。重くなるからいいや。と言う感じです。

注意なのは、追加のISOファイルですが、これ、VMMの便利ツールである、Synology Guest Toolというものです。

これ必須でインストールしてくださいね、IPアドレスが振られますので。

ダウンロードはこの画面↑

これ、あとから追加する物なのですよね。

初めにubuntuのboot用isoファイルで起動して、完了させます。

で、一旦、シャットダウンして、この設定に上記のSynology Guest Toolを追記して再スタートするという感じです。

詳しくはこちら↓

[blogcard url=”https://kb.synology.com/ja-jp/DSM/tutorial/How_to_install_Synology_Guest_Agent_for_VMM_on_your_virtual_machine”]
sudo -i
sudo apt update
sudo apt install qemu-guest-agent
sudo systemctl start qemu-guest-agent

そんな感じで環境を整えておきます。

あとのPleasanterのインストールはマニュアルに沿ったやりかたを行えば行けるかと思います。

[blogcard url=”https://pleasanter.org/ja/manual/getting-started-pleasanter-ubuntu”]

感想

まだ、インストールしただけで、使用してないので、レビューはまだですが、アクセスした感じでは、重くもなくて良さそうなイメージではあります。

Local環境ですからね、速いのは当たり前かもしれません。

それに結構なスペックでPleasanterの環境作ったので、当然と言えば当然なのかもしれませんね。

追記

サイトパッケージのエクスポートで今まで作成してきたものを、投入してみました。

特に問題なく稼働できるように思いますね。

これなら、本番環境でも行けそうです。

あとはユーザー数とデータ量だろうから、ウチ程度だと問題ないような気がしますね。

結構、行けそうな感じです。

ただ、うちのDS1621+はメモリを32GB、キャシュでM.2 NVME 500gbx2にして、使っているのですが、メモリの1/4をこいつに割り当てたので、若干、他が遅くなっているように感じます。

まぁ、仕方ないですね。

Synologyで運用するメリット

これまで、色々といじってるPleasanterは、古い要らなくなったPCにubuntuとPleasanterをインストールしたものなのですよね。

今は、テスト環境として使っているので良いのですが、後々の本番環境だと、バックアップの設定が面倒だなぁ。。とか思っていたのですよね。

今度はSynology ds1621+にセットアップして見たので、バックアップとかの管理とか、諸々と便利になると思ってます。

実際、このようにしましたよ。

Pleasanter自体のバックアップはSnapshot Replicationで定期的に取得

そして、それをさらにHyper Backupで定期的に別のSynologyにバックアップする。

という方法です。

これで、安全にデータを保管できるようになりました。

あとは、本番環境の用意です。

自分の感じでは、SynologyのDS1621+級のものが欲しいです。

そして、バックアップ専用機にDS223J辺りで良いかな。

あとはUPSですね。

こんな感じで、買ってもらおうかなぁ。

雑感

パフォーマンスがよければ、本番環境もこれで行こうかなぁ。。とか。。

それと、SynologyでPleasanterの記事って全然出てこないので、頑張って見ましたよ。

仲間が増えるといいなぁ。。という単純な思いです。

Ubuntuで立ち上げることが出来る人なら、VMMでも同じようにセットアップできるのではないかと思います。

以上、簡単ではありますが、参考になれば幸いです。

もし、要望があれば有償にはなります(拘束時間が発生すれば)が、お手伝いすることもやぶさかではありませんので、お気軽に問い合わせを。

問い合わせは無料ですので、お気軽に。

Synology ChatにAI botを追加して見た。ollama、OpenChat、DeepSeek、phi3:mini、gemma:2b

最近、仕事をする上で、AI(自分はCopilotが好き)との会話で、コード生成などを行っています。

ですが、時々、おかしな方向に行くときがあったり、何度も同じ説明をしてみたり、会話が進まないときが結構あります。

なので、自分専用のAIとかって用意できないかな?という気持が湧きました。

最近使ってるPleasanterのコード生成なんかを手伝ってくれるやつ。

Copilot君も優秀なんだけど、時々、独自路線を突っ走るので、専用のAIを作った方が楽なのでは?と思った次第です。

説明は簡単に済ませます。(実際は結構しんどかったのです。)

Dockerにollamaを設定します。(OpenChatとDeepSeekを導入、後にDeepSeekは削除、phi3:miniを導入)

下記のサイトを参考にして、Pythonを再作成

このpythonは主にSynologyChatとollamaを繋ぐ役割ですね。

[blogcard url=”https://github.com/guanlisheng/synochatgpt”]

最後にSynology Chatの設定を行う。

そして、Tera Termを使い、会話をテスト。

そして、それが上手く行ったら、Synology Chatと繋がるかのトライ&エラー、三日目にようやく繋がって、上のような会話をしたということです。

そして、最終的にこのアプリをDocker化しました。
(自分、そんなスキルは無いのですが、Copilot君が優秀でして。。)

ホント、Copilot君、うちの子にしたい。。

さて、このAI Bot ですが、応答はかなり遅いです。

Openchatはまだましですが、DeepSeekはホント遅いです。

性格もかなり違っていて、DeepSeekは生まれたてのポンコツで、OpenChatは日本語が片言な変人です。www

段々と育っていくのかなぁ。。

よく分かりません。

便利になってくれると良いのですが。

ちなみにDeepSeekとOpenChatを選択した理由ですが、VRAMを使用しないAI(CPUの能力だけで動いているらしい、NVIDIA(グラボ)は不要とのこと)なので、使ってるということです。

とりあえず、この応答がOpenChatですね。

結構、使えるかもしれません。癖が無く素直に回答してくれてます。

その一方で、DeepSeekです。

会話にならない感じでした。

自分語りみたいな前置きが続いて、長すぎてSynologyChatの一回1000文字を軽く超え、3000文字くらい書きます。

なので、SynologyChatでは会話ブチ切れの傾向です。

TeraTerm上(デバッグ時)では見れたりするのですよね。

AIって、会話する設定(プロンプト)とかをするんですよね。

その設定の中で、1000文字で会話するように依頼しているのですが、無視するんですよね。

ほんと、言うこと聞かない。

で、最初だけなのかなぁ。。と我慢して会話するのですが、無理ですね。

C国産なので、人種的に無理とかあるんでしょうか。

分かりませんが、耐えられず、削除しました。

phi3:miniをDeepSeek削除後セットアップしてみました。

これもなんかおかしな方向へ向かいます。

しょっぱなから自分が飛ばし過ぎなんでしょうか。

もっと、あそこのサイトのあれ読んで貰ってからとかの順番なんでしょうかね?

わかりません。

ちょっと、DeepSeekよりは良さそうですが、OpenChatよりは難しいかもしれません。

Code生成に向いているらしいのですがね。DeepSeekとphi3:miniとか。

どうなる事やら。試してみましょう。

gemma:2bもセットアップしましたよ。

この子は反応がQuickです。凄い速い反応を示します。ビックリですね。

あとは処理的にどうなっていくのかというとこでしょうか。

今後に期待です。

反響があるなら、もっと深い所まで公開しても良いかもしれませんが、まぁ、今の所は、こんなのもできるということですね。www

参考になれば幸いです。

Pleasanter 状況によるボタンの制御

今日のプリザンターのメモは、状況によるボタンの制御の巻です。

前回書きました、参照権限・アクセス権限・アクセス制御などと絡んできますね。

その記事はこちら↓

[blogcard url=”https://ysand.myds.me/2025/08/06/pleasanter_reference_authority/”]

自分が作る場合はですが、自分以外のユーザーには削除権限は付けたくないのですよね。

どうしても、一般の人は、本人が気が付かないうちに削除すると思います。

基本、データベースって削除しちゃダメだと思うのですよね。

デリートフラグ(Delete Flag)で処理するとかで良いと思うのですが、Pleasanterは削除が誰でもできてしまうので、困りものなんです。

サイトのアクセス制御で削除を選択しなければ、選択できないとも思うのですが、何かの拍子で表示されたりします。

おや?なんで?という時がたまにあったりします。

あと、更新ボタンも同様に、ある条件の時は、更新させたくない。とかありますよね。

なので、それらに対する対応です。

以下をスクリプトに貼り付けると「状況」が500の時と900の時には「更新ボタン」が表示されない。というスクリプトです。

$p.events.on_editor_load = function () { 
    const status = $('#Results_Status').attr('data-value'); 
    if (status === '500' || status === '900') {
        $('#UpdateCommand').hide();    
    } else {
        $('#UpdateCommand').show();     
    } 
}

「状況」を上手に使うといろいろ便利なので、積極的に使ってます。

↑ここでは判断している500と900が文字列ですね。

あと、「状況」が100より大きいとき、は以下になります。

$p.events.on_editor_load = function () { 
    const status = parseInt($('#Results_Status').attr('data-value'), 10);
    if (status > 100) {
        $('#UpdateCommand').hide();    
    } else {
        $('#UpdateCommand').show();     
    } 
}

↑ここでは、文字列を数値に変換してから100より大きいのを判断している。

あと、「画面に状況が表示していないとき」は、$p.apiGetを使わないと参照できないので、その例文を書いておきます。

const recordId = $('#Results_ResultId').attr('data-raw');
console.log("recordId", recordId); 

$p.apiGet({
    id: recordId, // レコードIDを直接指定
    data: {},     // 条件なし
    done: function(response) {
        console.log("取得成功:", response);

        const dataList = response.Response.Data;
        if (!dataList || dataList.length === 0) {
            console.warn("データが取得できませんでした");
            return;
        }

        const status = dataList[0].Status; 
        console.log("StatusCode", status);  

        if (status === 900) {
            $('#UpdateCommand').hide();
        } else {
            $('#UpdateCommand').show();
        }
    },
    fail: function(error) {
        console.error("取得失敗:", error);
    },
    always: function() {
        console.log("取得完了");
    }
});

こっちは、apiGetだと、900が文字列ではなく数値という。。。

しっかり確認してないですが、文字列だったり、数値だったり、、ん~。なんだろうか。

皆さんも注意してください。

例文は拙いですが、コンソールを満載してるので、追っかけやすいかと思います。

参考にでもしてください。

更新ボタン:UpdateCommnd

削除ボタン:DeleteCommnd

メールボタン:EditOutgoingMail

コピーボタン:OpenCopyDialogCommand

以上が編集時の主なボタン、以下は一覧時です。

インポート:EditImportSettings

エクスポート:OpenExportSelectorDialogCommand

このあたりを適宜、貼りなおせば使えるかな。と思います。

なお、スクリプトなどのコードとかは拙いですが、なんとか正常に動くとは思います。

実を言うと最近のコードはみんなAIで作ってもらってます。

構文を覚えなくていいのは楽ですよね。

いろんな言語のデバッグ方法だけわかっていれば、後はAIに書かせてデバッグして、AIにもちろんデバッグもしてもらいますけど。

なので、質問貰うよりもAIに聞いたほうが速い時代かもですね。

Pleasanterとn8n n8nでPleasanterのレコードを取得する。そして作成する。

Pleasanterとn8nの連携でいろんなことができますよ。

例えば、Pleasanterだと印刷フォーム(帳票フォーム)を使う印刷(PDF化)とかできないですが、n8nを使えば、無償で使えますしね。

うちみたいな弱小企業なんて、無償の恩恵に預からないと、DX化とか無理ですからね。

当初はキントーンを使おうか?と検討していたのですが、色々調べると、Pleasanterがオンプレなら無償と知ってしまったので、無償の誘惑には勝てず、多少の属人化なんて気にしないって感じで導入となりました。

しかし、印刷フォーム(帳票フォーム)からPDF化とかできないのは、Webデータベースのお決まりなんでしょうかね。

たしかに、そこまで面倒みたくないって感じでしょうか。

と、前置きはこのくらいにして、n8nとPleasanterの組み合わせでどんなことできるかを広めていきたいと思っています。

無償同士で最強ですね。www

今回はn8nからPleasanterのレコードを取得する。作成する。です。

n8nのセットアップは、今回、書きませんので、ご自身でお調べください。

まぁ、自分の場合、Copilot君と一緒にセットアップしたという感じです。

便利な時代になりましたねぇ。

こんな、ブログも要らなくなりそうな感じですね。

では説明です。

初めに準備としてPleasanterで十分な権限がある人によってAPIキーを作成しておきます。

左袖のユーザーからAPI設定を開きます。

作成(再作成)を押します。

非常に長いコード(キー)が作成されます。

安全のため長いほうが良いということでしょうね。

では、n8nを利用して、Pleasanterのレコードを参照してみましょう。

n8nを開きます。

Workflowを開きます。名称はデフォルトで良いです。変えるのも自由です。

右上のところに四角に+マークがあると思いますので、それを押してからが上記の操作となります。

①上のマスにHTTPを入力

② HTTP Requestを選択

③すると左の表の真ん中にHTTP Requestができるので、それをダブルクリックする。

するとHTTP Requestの設定画面になります。

cURLが分かる方は上にある、Import cURLを押して、そこにcURLの文を打つと勝手に変換され、Execute stepを押せば実行されますので、非常におススメです。

cURLが分からない方は上図の通りですが、ちょっとだけ説明しながら書いていきたいと思います。

まず以下の公式マニュアルからAPIを使っての参照方法を読んでください。

[blogcard url=”https://pleasanter.org/ja/manual/api-record-get”]

要するにこれをここの設定に反映すればよいということですね。
抜粋すると以下が重要です。

設定項目
HTTPメソッドPOST
Content-Typeapplication/json
文字コードUTF-8
URLhttp://{サーバー名}/{パス}/api/{コントローラー名}/{レコードID}/get
Body以下のjsonデータを参考のこと

じゃ、HTTP Requestの内容を順番に書いていきましょう。

Method:POST(上にあるHTTPメソッド)

URL:http://{サーバー名}/api/items/{レコードID}/get
 今回はオンプレ環境なので、上記にある途中の{パス}は不要です。
 サーバー名はご自身のIPアドレスやDDNSなどですね。
 レコードIDはまさしく参照したいID(レコードID)です。
 で、最後に参照するのでget文を使用する。

Send Bodyをオンにして

Body Content Type:JSON

Specify Body:Using Fields Below

{
     "ApiVersion": 1.1,
     "ApiKey": "63Kfk0ds3d4S2DBsa32..."
}

Body Parametersから下が、上記のApiVersion、ApiKeyのことを書くところです。
(コードは公式マニュアルの引用)

Name:ApiVersion、ApiKeyを記入

Value:それぞれの値、1.1、APIキーの値(最初にPleasanterで設定した)を記入します。

最後にResponseをオンで上記設定にして終了。

Execute stepを押して実行します。

うまくいくと右側になんらかの文字が出ます。

StatusCode:200だと成功です。

以下が、参照して貰えた情報です。(.AspNetCore.Sessionの内容だけだけ書き換えました。)

[
  {
    "body": {
      "StatusCode": 200,
      "Response": {
        "Offset": 0,
        "PageSize": 200,
        "TotalCount": 1,
        "Data": [
          {
            "SiteId": 872,
            "UpdatedTime": "2025-07-25T15:02:57",
            "IssueId": 873,
            "Ver": 1,
            "Title": "TEST",
            "Body": "",
            "StartTime": "2025-07-25T00:00:00",
            "CompletionTime": "2025-08-01T00:00:00",
            "WorkValue": 0,
            "ProgressRate": 0,
            "RemainingWorkValue": 0,
            "Status": 100,
            "Manager": 7,
            "Owner": 7,
            "Locked": false,
            "Comments": "[]",
            "Creator": 7,
            "Updator": 7,
            "CreatedTime": "2025-07-25T15:02:57",
            "ItemTitle": "TEST",
            "ApiVersion": 1.1,
            "ClassHash": {
              "ClassA": ""
            },
            "NumHash": {
              "NumA": 0
            },
            "DateHash": {
              "DateA": "1899-12-30T00:00:00"
            },
            "DescriptionHash": {
              "DescriptionA": ""
            },
            "CheckHash": {},
            "AttachmentsHash": {
              "AttachmentsA": []
            }
          }
        ]
      }
    },
    "headers": {
      "server": "nginx/1.24.0 (Ubuntu)",
      "date": "Wed, 06 Aug 2025 04:33:20 GMT",
      "content-type": "application/json;charset=utf-8",
      "content-length": "666",
      "connection": "close",
      "cache-control": "no-cache,no-store",
      "expires": "-1",
      "pragma": "no-cache",
      "set-cookie": [
        ".AspNetCore.Session=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; path=/; samesite=lax; httponly"
      ],
      "x-frame-options": "SAMEORIGIN",
      "x-xss-protection": "1; mode=block",
      "x-content-type-options": "nosniff"
    },
    "statusCode": 200,
    "statusMessage": "OK"
  }
]

認証がうまくいかないと401が返ってきます。

では続いて、n8nを利用して、Pleasanterのレコードを作成してみましょう。

基本は同じで、コマンドがとBodyがちょっと違うだけです。

公式マニュアルを参考にしながら行きましょう。

[blogcard url=”https://pleasanter.org/ja/manual/api-record-create”]
設定項目
HTTPメソッドPOST
Content-Typeapplication/json
文字コードUTF-8
URLhttp://{サーバー名}/api/items/{サイトID}/create (※1)
Body以下のjsonデータを参考のこと
(※1){サーバー名}、{サイトID}の部分は、適宜、環境に合わせて編集してください。
  pleasanter.netの場合は以下の形式になります。
  https://pleasanter.net/fs/api/items/{サイトID}/create

URLがちょっと違いますよね。http://{サーバー名}/api/items/{サイトID}/create とあります。

サイトIDはデータベースの番号ですね。(と言えば通じるでしょうか?)

以下の図のURLの番号ですね。

レコードIDは上記だとIDと表記されています。

(ちょっと横道ですが、サイトIDとレコードIDは連番なんですよね。面白い作りしてますね。)

上図だと、認証がうまくいかなかった時のものなので、データの取得の時と違い、認証を追加してますね。

X-Authorization

Bearer [APIキー]

無くてもイケると思いますが、こういった書き方もあるだなぁ。と思ってください。

Bodyのところに今回はTitleに「テスト」を書きました。

これを実行して上記のレコードID936ができたわけですね。

タイトルがテストとなっているのでわかると思います。

これで実行してみましょう。

うまくいきました。

今回はお手本なので、Body Parametersのところを分かりやすく書きましたが、JSON形式で書かないとならない場面が出てくると思いますが、それはまた、後日、改めてUpしますね。

あと、他のコマンドは以下の公式マニュアルを参照して貰えば、なんとなく作成できるかな?

[blogcard url=”https://pleasanter.org/ja/manual/api”]

ということでn8nとPleasanterをAPI連携で繋げるの巻でした。

Pleasanterの参照権限・アクセス権限・アクセス制御に関して

2025/8/6です。こんにちは、ご無沙汰しています。

暑い日が続いていますね。昨日、群馬県伊勢崎市で41.8℃という最高気温が記録されました。

ホント、この先どうなっていくのか心配ではあります。

で、自分のことですが、4月より会社勤めを再開しており、日々、通勤しているわけですが、今の会社の業務ではデジタル化を推進するところに所属しており、日々、Webアプリと言いますか、Webデータベースと戦っている次第であります。

そして、会社で使っているWebデータベースが、表記のPleasanter(プリザンター)というアプリです。

これ、なかなか素晴らしく、よく考えられたWebデータベースだなと思います。

しかもOSSにも対応していて、オンプレミス環境(自前で用意したサーバー)なら無料という、気前の良いアプリです。

OSSとは、Open Source Software(オープンソースソフトウェア)の略で、ソースコードが公開されており、誰でも自由に利用、改変、再配布できるソフトウェアのことです。

オンプレミス環境とは、企業や組織が自社の敷地内(構内)にサーバーやネットワーク機器などのITインフラを設置し、自社で管理・運用するシステムの形態を指します。クラウドサービスのように外部のサーバーを利用するのではなく、自社で全てを賄うため、「自社運用」とも呼ばれます。

上記はAI(Gemini)から引用

しかし、無料で使えるとはいえ、新しいアプリに慣れるまでにちょっとその独特の仕組みというか、構成というか、作った人の考え方みたいなものに慣れるのには時間が掛かりますよね。

そんなわけで、しばらくPleasanter周りに関することをUpしていこうと思います。
まぁ、忘れちゃうからね。備忘録だし、このサイト。

ということで、今、まとめておきたいと思っているのが、Pleasanterの権限関係です。

特にこれ↓

自分が所属する部署(組織)の人間が作成したレコードのみ、所属員同士で閲覧できるようにしたい。

じゃ、順番に説明を書きますね。

1.ナビゲーションメニュー(左の歯車マーク)から、管理→テーブル管理で上記画面を開きます。

2.

①サイトのアクセス制御

右側の選択肢一覧から今回は目的の組織を選択

②権限追加

③目的の組織が選択されたまま

④詳細設定

3.上図のように作成だけに☑します。サイトのアクセス制御は終わりです。

4.次は上図を参考にレコードのアクセス制御へ行きます。

①レコードのアクセス制御(レコード作成時の許可)

②右側の選択肢の中から組織を選択

③有効化で左側に送る

④選択されたままの状態で

⑤詳細設定

5.上図の通り、読取専用だけを☑します。

6.上記4、5の操作と同じです。(操作は省略しますね。)組織を選択して左側に送り、読取専用に☑します。

設定はこれでOKです。

ポイントですが、

今、行った設定で、今後作成されたレコードは同じ組織の人からは見ることができるが操作はできない。

というか、作った本人すら読取専用になる。

です。

既に出来上がっているレコードには反映されない。ということですね。

これが結構、自分には混乱でした。

既存のレコードにも反映されるかと思ってたら、「あれ????なんで????」でしたし。

一部、既存のレコードでも反映されるので、余計に混乱するんですよね。

なので、自分の場合は必ず、このあたりの設定を変更するときは、一旦、そのテーブルの全レコードを削除してから検証してます。

公式サイトの書き方が、サラッとしか書かれていないし、強調してないし、説明不足だと感じますね。

ま、それはさておき、これだと、作った本人すら訂正(編集)できないのは不便なので、本人だけに書き込み権限を付けてみましょう。

書き込みした本人なので、担当者を選択しましたよ。

んで、上記の権限を設定

そして、必ず、新しいレコードを作成して確認してください。

すると、本人はいつでも編集できるし、部署内の人の情報は参照できる。という感じになるかと思います。

なので、じゃ、作った本人だけ編集・閲覧ってこともあるよね。って場合は以下です。

予想された方も多いと思いますが、担当者だけにすればいいってことですね。

やっと、意味わかった!!!!!

ひと月ほど先送りにしてたけど、これで、ある程度柔軟な権限設定ができそうです。

しかし、ホント、Pleasanterの公式マニュアルはあちこち飛ぶので、わかりにくい。。。

言い回しの意味がわからんところが多過ぎて、頭?????ばっかだし。。。

実際にやってみても?????

でも、慣れてくると、いい感じに使えてくる。

ん~、不思議なアプリだなぁ。。

とはいえ、無償なのと、独特の癖が分かってくると、よく考えられてるなぁ。と思ったりね。

次回は分類項目とか、スクリプトとか、でしょうかね。

n8nとの連携も書いておきたいしなぁ。。。。

n8nもまたOSSでオンプレ無償なので、慣れると非常に便利ですよ。

追記です。

組織で設定した時はすべて組織で固めないとダメなようです。

グループが混ざると、思うように動かなくなるようです。

気を付けてください。

2024 夏 北海道の旅 9日目 10日目 ファーム富田 スーリヤ(SURIYA)富良野店 ウトナイ湖 フェリーターミナル

北海道の旅九日目(2024/8/8)のその2です。

富良野にまだおります。

ファーム富田に来ました。

事前調べでは、ラベンダーは終了している時期とのことですが、他の花が見れるので、行くだけ行ってみようということで。

うん。結構、綺麗ですよね。

ここ、無料なのが懐が広いなぁ。と感心しました。

終わりかけのラベンダーにトンボが止まってました。

施設内の花などを管理する方たちの足となるスクーターもラベンダー色なのかぁ。。。とか、変な所で感心したりして。

そんなことしているうちにお昼となりましたので、スーリヤ(SURIYA)富良野店で、またしても、そして最後のスープカレーです。

ここも結構、美味しかったです。

まずまずでしたね。

インド系の人がやっているけど、北海道だとスープカレー無いと、やっていけないのでしょうね。どこもスープカレーがありました。

関東では考えられないです。

さ、富良野地方卸売市場㈱で土産物を買ってと。

ここでたまに私の生活圏でも売っていることのある富良野市場商品がずらりと並んでいるでは無いですか。

いくつか見掛けたことのない商品があったので、購入しました。

ここの商品はどれも美味しいですよね。

今回、どれも美味しかったですが、一押しは「玉ねぎの気持ち」ですね。

これ美味しかったぁ。。。また、食べたい。。。

と、横道に逸れましたが、富良野を後にして、フェリーに乗る為に苫小牧へ向かいます。

途中、時間があったので、ウトナイ湖でバードウォッチングしてきました。

ノビタキの幼鳥ですかね。カワイイ感じです。

北海道ではノビタキをたくさん見ました。

ウチの方だと、夏場は標高の高い所などでしか見れないです。

オオシオカラトンボらしいです。

トンボはさほど飛んで無かったように思いましたね。

思ったほど野鳥たちに出逢えずでした。残念。

ちょっと時間があったので、地元のスーパーへ行って、北海道の調味料とか、夜ご飯など、お土産などを買い込んで、フェリーに乗りました。

フェリーの中では還暦近い夫婦で交代しながら、ゼルダの伝説ティアキンをやって過ごしてました。ww

結構、暇つぶしになって良かったです。

翌日のお昼は行きと同じで、生姜醤油ラーメン。

ホント、ここの生姜醤油ラーメン美味しい。

フェリーなのが、悔やまれる。。。。。。

帰りのフェリーも天気が良かったですね。

この日はこんな感じで移動しましたよ。

今回の記事で、北海道の記事は終了となります。

ダラダラ書いてましたが、最後までお付き合いいただいた方には感謝です。

旅の参考にでもなれば幸いです。

2024 夏 北海道の旅 9日目 富良野を巡る ケンとメリーの木 マイルドセブンの丘 赤い屋根のある家 白金青い池

北海道の旅九日目(2024/8/8)のその1です。

結局の所、旭川ではホテルと食事だけで観光らしいことは全くせず移動となりました。

旭川は行くとすれば旭山動物園でしょうかね。

当初、時間に余裕があれば、行く予定でしたが、思ったよりも移動に時間が掛かったので、旭山動物園に行くのは取りやめました。

また、来るタイミングがあれば行きたいと思います。

さて、旭川移動して富良野です。

またしても、ヨーロッパ的な雰囲気の風景

最近、オーバーツーリズムで話題ではありますね。

一応、自分のルールとして、一部の撮り鉄の方とか、オーバーツーリズム問題になるような方のような撮影はしないように心掛けています。

この時はこういう感じがそこそこありました。

できるだけ、環境に影響を与えないように撮影するように心掛けています。

住んでいる方たちだって、本来は綺麗な眺めにするために始めたことだったろうと思いますが、今では外から来た人が綺麗な眺めを壊してしまう。

ケンとメリーの木

という地元の方のホスピタリティを踏みにじるようなことになってしまっているのは残念なことですよね。

なので、自分は環境に影響を与えないように道具でカバーする。と言うことにしています。

マイルドセブンの丘

要するにカメラのレンズを適材適所で使用する。ですね。

上手く撮れないこともありますが、そこが自分の限界ですからね。

仕方ない。

さて、御託はこの辺にして、

富良野の雰囲気は確かに綺麗ですね。

この日は、ちょっとお天気恵まれず、あいにくの曇りとなっています。

この日の夕方にはフリーに乗り、北海道を離れることになります。

白金青い池に来ました。

ここは人が多かったですね。

富良野の風景では特に人は居なかったですが。。

綺麗な色ですが、生き物は生きていけない毒の水でもあります。

田沢湖、四万湖と同じでアルミニウムの混じった、魚の生きていけない水です。

綺麗な物には毒がある。の典型的なものと言えばいいのでしょうか。

そして、この三つの青い水に共通するのは、人間の開発が原因という問題があります。

背景を知ると、人の利便性を求めた結果ということに。

どれも、他の水源と混じって薄まって下流へ行くので、人にとって危ない量にはならないのか、問題とはされていませんね。

なので、綺麗だけど、ちょっとおかしい。というのも意識しないといけないのかもしれません。

今回の記事は、ちょっと固いというか、重いというか、すいません。

この日は以下のような感じで進んでいます。

2024 夏 北海道の旅 8日目 道の駅愛ランド湧別 愛ランドYOU 龍宮台展望台 アジアンバー ラマイ 東光店

北海道の旅八日目(2024/8/7)のその4です。

お昼になったので、ご飯ですね。

道の駅愛ランド湧別 愛ランドYOUでお昼ご飯を頂きました。

ホタテ推しの場所らしいので、ホタテ料理にしました。

自分はフライの定食

嫁様はホタテカレーですね。

写真で伝わっているかなぁ。凄くデカかったです。

美味しかったし、最高でした。

値段もこの大きさだと安いと感じますね。素晴らしいです。

食事を済ませて、龍宮台展望台という所に来ました。

展望台には登らず、野鳥撮影をしてました。

思ったよりトンビとか見ないなぁ。とか。

セキレイの色が灰色っぽいのはなぜだろう?とか。

セキレイが縄張り争いでケンカしてるなぁ。。とか。

のんびりとしてました。

さて、ここからは一気に旭川まで移動です。

途中、旅の疲れで、眠くなったので、1時間程仮眠してから、高速を使って移動です。

高速に乗っていると、かなり激しい雨となり、60~80km位のペースになりました。

旭川方面からの雨の道らしく、ずっと雨が続き、旭川周辺でカラッと晴れました。

旭川の雰囲気は、北海道で初めて田んぼを見たので、わが北埼玉と雰囲気が似ているなぁ。。とか思ったりしてましたね。

旭川まで2時間半150kmの移動でした。

到着して、夕方なのでまたスープカレーを頂きました。

アジアンバー ラマイ 東光店に来ましたよ。

今回の旅の中で頂いたスープカレーの中では、ここが一番おいしかったです。

おススメです。

この日は旭川までで終了です。

2024 夏 北海道の旅 8日目 サロマ湖展望台

北海道の旅八日目(2024/8/7)のその3です。

サロマ湖展望台に来ました。

ここ、この日一番の眺めでした。

上の写真なんて、ほんと日本じゃないってのね。

忘れられない眺望となりました。

地球の丸みを感じられました。

写真からもそんな感じが伝わってくれると嬉しいです。

めちゃくちゃおススメです。是非行って見てください。

ここへの道は一方通行なので、注意してください。

東側から西側へ抜ける感じの道になってます。

道は林道ですね。ダートです。

この地図の右から左方向に掛けての一方通行です。

ですが、ほぼフラットなので、そんなにデコボコしてませんので、気を付けていけば十分、誰でも行けると思います。

行けばきっと、素晴らしい景色が待ってます。

右の網走から以下のような感じで巡ってます。

2024 夏 北海道の旅 8日目 美岬海岸駐車場 サロマ湖ワッカネイチャーセンター

北海道の旅八日目(2024/8/7)のその2です。

能取岬からサロマ湖周辺を目指しています。

途中、眺めが良かったので、美岬海岸駐車場で写真を撮りました。

北海道って、そこかしこがビュースポットですよね。

ほんと、綺麗だし、美しい。

最高ですね。

ほんと、日本じゃないみたいだなぁ。

さて、能取岬からの目的地である、サロマ湖ワッカネイチャーセンターに着きました。

カメラを担いでいるので、自転車では無く、歩きである程度行ってみます。

本来なら自転車が良いと思います。

なぜなら、広いのですよね。

自分達は、結局、海に出た所まで行って帰って来ました。

砂州の切れ目の所が見てみたかった気もしますが、仕方ない。

歩きながら出ないと、分からない風景に出逢えたと思います。

なんだろう。どこか懐かしい夏の風景のような。

来たこと無いのになぁ。

多分、雲がそう思わせるのかなぁ。

木苺?かと調べて見たら、ナワシロイチゴというらしいですね。

本土などでは田植えの頃に実がなるとのこと。

う~ん、北海道らしいですね。8月の初めなんですけどね。

海鳥はカモメしか居ませんでした。

千鳥とかいないのですよね。見たいなぁ。

ヒバリっぽいです。

砂浴びをしてました。

砂浴びをしているのは幼鳥っぽくて、親鳥がそばで見守っているのですよね。

案外、面倒見が良いのでしょうかね。

可愛らしい感じでしたよ。

この日は、右の網走から以下のような感じで巡ってます。

2024 夏 北海道の旅 8日目 能取岬

北海道の旅八日目(2024/8/7)のその1です。

朝、網走から能取岬へ来ました。

ここ誰も居ませんでしたが、すごく眺めが良くてまた行きたい所でした。

能取岬の手前の牧場っぽくなっているところ。

ここからの奥に見える知床半島が綺麗です。

言葉はいらないなぁ。とか。

この広大な畑の感じは昔、仕事で行ったドイツとかの畑の感じに似ているなぁ。とか。

イルカとか鯨とか見えないかな?とか。

おや、なんてこった。ホントに居やがるぜ。。とか。

(イルカかな。と思います。)

知床半島の滝雲もいいもんだ。とか。

これだけ広角で撮ってるのに、誰もいないのよね。とか。

日本じゃないよね。とか。

毎日、こんなことして過ごしたい。とか。

いい天気でよかった。とかね。

こっちはノビタキ

おそらくこれはノビタキの幼鳥かな。

こっちがメスっぽいですね。

この日は、右の網走から以下のような感じで巡ってます。

2024 夏 北海道の旅 7日目 女満別空港 メルヘンの丘 北の海鮮処 ゐろり網走店

北海道の旅七日目(2024/8/6)のその8です。

美幌峠から網走に向かっています。

途中、女満別空港に寄って見ました。

たしか、ひまわり越しで旅客機が撮れるはず。。。

でも、離陸時間とかは分からずですが、まぁ、行ってみましょう。

人が結構居るなぁ。なんて呑気に見ていると、五分も経たずにANAのジェット旅客機が来ました。

ラッキーですね。

ただ、準備が甘いので、慌ただしく撮ったので、構図やら、もう一台カメラ出したかったなぁ。とか。

まぁ、仕方ない、撮れただけ良しとしましょう。

今回の旅でひまわりが見れたのは、ここだけだったような気がします。

そういえば、自分が20代前半のとき、同じ会社の5歳くらい年上の先輩がバイクで北海道ツーリングして来た時の話を聞いたりして、言われたことがあります。

「お前、北海道行くと北海道から離れられなくなりそうだよなぁ。」と言われ、

今回来てみて、「うん、先輩の言ってたことは正しかった。」

確かに、若いときに来ていたら、北海道に住もうと思ったに違いないです。

北海道の四季を巡って暮らしてみたい。

そんな気持ちが今でも湧いてきます。

でも、今からではなぁ。と気持ちにブレーキが掛かります。

逆に50代も後半で、還暦手前に来て良かったのかもしれません。

そんな話を思い出しながら。

さ、女満別空港を後にして、メルヘンの丘に来ました。

ここもまた、いい写真になりましたね。

欲を言えば、夕景だともっと良かったのかもしれません。

網走に到着してホテルにチェックインして、さて、夕ご飯ですね。

あちこち行ってみますが、どこも結構混んでます。

予約しておかないと厳しいですね。

そんななか、ようやく入れた店「北の海鮮処 ゐろり網走店」に御厄介になりました。

嫁に貝食べ過ぎでお腹壊したのにまた食べてる。。と言われながらも、「美味しい物には、抗えない。。」とつぶやく自分。。

ホッケが昭和の頃のおおきいホッケで脂も乗っていて美味しかったです。

ルイベは初めて食べたけど、普通に美味しいですね。

そんな感じで、七日目の日は終了しました。

ところで、前回の記事から、更新に時間が掛かりましたが、個人的に4月より再就職いたしまして、仕事を再開しました。

そのためにちょっと時間的な余裕がなくなり、ただでさえ遅い筆が更に遅くなっております。

適当にやっておりますので、長い目で見て頂けると助かります。

2024 夏 北海道の旅 7日目 美幌峠

北海道の旅七日目(2024/8/6)のその7です。

美幌峠に来ました。

美幌峠は素晴らしい眺めですね。

今回の記事の写真は、すべて広角レンズで撮っているので、通常のレンズよりも幅広で撮れるし、場合によっては魚眼っぽくにも見えるのですが、それでも収まり切れませんでした。

パノラマで撮らないとダメな所でした。

頂上の展望台から

この日は天候に恵まれたのもありますが、ここ美幌峠はロケーションも素晴らしいですね。

全方向に対して、広々とした風景が広がって、どの方向を撮っても絵になる所ですね。

中でも屈斜路湖方面は素晴らしいですね。

また、いつか来たいという所になりました。

摩周湖も良かったですが、ここも良いですね。

ここの感じも好きですね。

凄い、素晴らしい、綺麗、それしか語彙力がないので、情けないですが、何と言うか、言葉はいらない、ここに立って眺めれば良い。ということでしょうかね。

道東はホント素晴らしい所が多いです。

来たかった。来て良かった。また来たい。

また来るのでしょう。きっと。

美空ひばりさんの歌があるのですね。

津軽海峡にも同じような歌の碑がありましたが、それは実際に津軽海峡冬景色がボタンを押すと流れるので、あれはあれで良かったなぁ。と思いました。

ここも歌が流れると良いのになぁ。。

普段、自分の写真なんて、ほぼ撮らないのですが、嫁に撮って貰いました。

2024 夏 北海道の旅 7日目 阿寒湖畔ビジターセンター 双湖台 双岳台

北海道の旅七日目(2024/8/6)のその6です。

この日、めちゃくちゃ観光してまして、その6の記事なのに、まだ、お昼食べた後という感じです。

さ、頑張って書きましょう、この日後半戦シリーズです。

摩周湖から阿寒湖畔ビジターセンターへ来ました。

幻の魚イトウ ↑

15~20年くらいまで生きるらしいですね。

魚ではすごく長寿ですよね。凄い。

マリモ ↑

これだけが見たいが為にここへ来ました。

思ったよりも、展示していたものは大きくて、写真の大きいものでゴルフボール大でした。

昔、小さい瓶で売ってましたよね。懐かしい。

今でもまだ販売されているようですが、日本一暑い土地に住んでいる者にとっては、早晩ダメになってしまうこと間違いなしです。

エゾモモンガ ↑

いつかリアルで写真に収めたいです。カワイイですよね。

ヒグマ ↑

今回、R214の知床峠で出会いましたが、車での出会いでしたのと、ヒグマ自身も気が立っていなかったので、良かったです。

もし、森などで出会って立たれたら、恐怖ですね。

かなり大きいです。

嫁さまの身長(162cm)よりも80cmくらい高い感じかなぁ。

なので、2m40cmくらいでしょうか。

あぁ、でも台の上に乗っているか。このヒグマ。2m位はあると言うことでしょうかね。

参考に今回の旅で出会ったヒグマを載せておきます。

熊にだけは出会いたくないですね。ハイ。

で、阿寒湖はほぼ見ないで、次の美幌峠を目指します。

途中、双湖台という所があったので、寄って見ました。

頑張ってみましたが、二つの湖は見れないようでした。

ちょっと登らないとダメな感じですが、藪なので、難しい感じでした。

残念スポットということでしょうかね。

そして、次に双岳台です。

雄阿寒岳が綺麗に望めました。

雌阿寒岳も望めるのですが、雲に掛かってしまっているようです。

ん~。。なぜか双と付くビュースポットなのに、二か所ともに片方だけという結果に。

こんな感じで進んでますよ。↓

2024 夏 北海道の旅 7日目 摩周湖 つじや食堂

北海道の旅七日目(2024/8/6)のその5です。

摩周湖です。

第三展望台という所に来ています。

凄く青くて、濃紺と言っても良いかもしれません。

まるでブルージンズみたいな青。

同じような写真ですが、選びきれないという感じです。

上の写真は外輪部の峰の感じが良いなぁ。。って感じで。

こっちは、手前の野草の感じと、島の感じが好き。

これは島を強調して見た感じです。

こっちはこっちで屈斜路湖方面ですが、

手前の立ち枯れた木をアクセントにしてみたり。

同じような感じですが、冬の自然の厳しさみたいなものが感じられれば、いいかな。

エゾゼミが居たので、撮って見ました。

ちょっと、柄がカッコイイですね。

で、ちょっと移動して、ここからの写真は第一展望台です。

正直、ここ、寄らなくていいんじゃないかな?と感じます。

駐車料金が500円の割に、第三展望台ほど綺麗に見えないし。

土産物や食事したいなら、仕方ないけど、ここは500円の価値は良く分からないです。

唯一、上の写真の感じだけが、絶景かな。

あとは伸びやかな風景がいい感じでしょうか。

さあ、お昼になりましたので、ご飯です。

この日、弟子屈ラーメン 弟子屈総本店に寄って見たかったのですが、混んでいたので諦めて、「スープカレーのしようかね。」と言うことでつじや食堂さんに来ました。

こちらも、外で並ぶほどではないですが、結構、混んでいましたね。

食事自体は、大変美味しかったです。おススメです。

こんな感じで進んでますよ。↓

2024 夏 北海道の旅 7日目 北浜駅 じゃがいも街道

北海道の旅七日目(2024/8/6)のその4です。

湯沸湖から北浜駅に来ました。

当初は予定に無かったのですが、急遽、寄って見ました。

無人駅ですね。

夏はそうでもないですが、冬は寂しそうな感じになりそうですね。

どんな感じなのか、気になったので、調べて見たところ、ここが綺麗な写真で良かったので、おススメします。↓

[blogcard url=”https://seaside-station.com/station/kitahama/”]

いい写真が多いので、結構いいサイトですね。

夏の夕日はこんな感じになるんだなぁ。↑

それもいいですね。

ちなみに駅のホームでカメラを構えていたのは自分の妻で、↑の写真を撮っていたようです。

駅から撮れるのも、また、珍しいですね。

さ、摩周湖を目指します。

途中、また、コロコロの牧草ロール(牧草を丸めたやつ)があちこちあって、それがまた絵になるなぁ。。なんて思いながら。

知床連山は綺麗だし。

じゃがいも街道はまっすぐで、「ここも天に続く道みたいなもんかよ。」なんて思いながら進んで行ってますよ。

ホント、北海道って、ある意味「異世界だわ。。」とか思ったりして。

こんな感じで進んでますよ。↓

2024 夏 北海道の旅 7日目 湯沸湖・小清水原生花園

北海道の旅七日目(2024/8/6)のその3です。

天に続く道から、湯沸湖へ来ました。

ラムサール条約の所ですね。

野鳥観察の関係もあるので、ラムサール条約登録地はかなり、巡っているのではないかと思います。

今回の旅でも、釧路湿原、風連湖・春国岱、野付半島・野付湾、ここ、湯沸湖、これから最後に行く、ウトナイ湖。

残念なのは、厚岸湖・別寒辺牛湿原、霧多布湿原、野付半島・野付湾、に関してはしっかりと見れていないのが残念でしたね。

まぁ、天候の為なので仕方ないのですけど。

北海道で今回の旅でかすりもしないのは、クッチャロ湖、サロベツ湖、雨竜沼湿原、宮島沼、大沼ですね。

そのうち行けると良いのですが。

さて、上の女の子の写真ですが、帽子の上にオニヤンマのアクセサリーが付いてます。

可愛らしいので、ご本人とお母さんに許可を頂いて、写真を撮らせて頂きました。

オニヤンマを付けていると、虫が寄って来ないらしいですね。

面白いので、買って見たいですね。

しかし、知床連山が遠くに見えてますね。

今見ても、いい風景だなぁ。

この日は絶景巡りでもありました。

こんな感じで進んでますよ。↓

2024 夏 北海道の旅 7日目 オシンコシンの滝 天に続く道 斜里岳を望む

北海道の旅七日目(2024/8/6)のその2です。

オシンコシンの滝へ来ました。

ちょっと見てみましょう。

なかなか綺麗な滝ですよね。

水量も豊富で見事です。

駐車場の所から海も眺めて見ましたよ。

この日は天候に恵まれました。

オシンコシンの滝から天に続く道へ向かいます。

天に続く道が上の写真の先にあるのですが、その前の道ですら、天に続くかのような道です。

ホント、北海道は凄い。

そこから見た風景も載せておきます。

大豆かな?ジャガイモかな?おそらくジャガイモでしょうかね。

広大な敷地面積です。

天に続く道に到着です。

この日は空いてましたけど、駐車場はさほど大きくないので、混んでしまうと大変そうです。

天に続く道は28.1kmとありますね。

上は手前側を撮った写真です。

広角レンズですので、全然、小さいですね。

こりゃ、望遠だな。ってことで。

で、上は先の方がどうなってるかを野鳥撮影している望遠カメラで撮影。

どうも手前が入りきらないぞ。。

結果、縦写真となりました。

バイクがアクセントになりましたね。

これ、お気に入りで、現在、スマホのロック画面にしています。ww

ということで、天に続く道(28.1km)を走って行きましょう。

途中、牧草ロール(牧草を丸めたやつ)があったりして、北海道らしさを垣間見ることができました。↑

上の写真の向こう側が海になってます。

更に進むと、左手に斜里岳が見えてきました。

いい風景です。↑の写真がお気に入りですね。

こっちもいいけど。悩みます。

天に続く道、如何でしたでしょうか。

来てみたかった所の一つでしたので、自分的には天候にも恵まれたので、最高でした。

この日は盛り沢山で進んでいます。

↓こんな感じで進んでますよ。