諸々が落ち着き、ボードゲームに手を出す余裕が生まれました。
宝石の煌めきソロ

BGGのバリアントを自分なりに調整したもの。固め取り戦略がうまくいき、18点の勝利となりました。
アグリコラ

占い代わりのアグリコラ。強い職業に恵まれました。特に、日雇いと同時に畑を耕す職業や、増築分の石の数を減らす職業のおかげ。
また、小進歩も
- 食物2つを柵に変換
- 麦1つを野菜に変換
も加わり、手番を圧縮。63点という高得点を撮ることもできました。
こういう、物理のコンポーネントは本当に落ち着きます。
諸々が落ち着き、ボードゲームに手を出す余裕が生まれました。

BGGのバリアントを自分なりに調整したもの。固め取り戦略がうまくいき、18点の勝利となりました。

占い代わりのアグリコラ。強い職業に恵まれました。特に、日雇いと同時に畑を耕す職業や、増築分の石の数を減らす職業のおかげ。
また、小進歩も
も加わり、手番を圧縮。63点という高得点を撮ることもできました。
こういう、物理のコンポーネントは本当に落ち着きます。
1ヶ月以上溜めていた万年筆のインク補充が完了。

手持ちの万年筆、全て補充したあと、いよいよ、

『ハリー・ポッター ホグワーツ限定モデル』全てにインクを入れました。


新たに4本ともなれば、大容量のペンケースもギチギチです。
この特別な万年筆は更に特別な場所で行う必要があると理解。

オフィスビルの休憩スペースという、ある意味相応しいところで実施。

の「サブカラーで表現する」色彩戦略は合っていました。
クリスタルエレメントなみに使いやすいフェザードラフトを調合。
は本作では貴重です。
無垢の鍵、解放後。(サルドニカのメインクエスト終了後)。特に、「属性追加・氷」が必要です。
また、品質上限999や投入回数増などのスキルツリーをアクティベートしていきます。
調合メニューから「ルフト」を選びます。

ヴィント鉱を入れ

中和剤を入れます。(賢者の石もしっかりした中和剤です)

属性値増加・中(強があればなおよし)を使います。

シンティラ鉱石を入れて風晶玉にレシピ変化します。

ここでも「属性値増加」の鍵を用います。

適当な位置で超属性「超濃度」を持つ素材を入れます。

巨鳥の風切羽を入れてフェザードラフトに変化します。

ここで「属性追加・氷」を入れます。
あとは様々な効果を発現させておきます。

属性・超属性を決めていきます。
ここでの属性値はなんと15。リビルドでは逆にこの属性値は徒になりますが、全ての属性でこの2桁は大概のマテリアル環をアクティベートできます。
Nextcloud32.0.2にアップデート後に表示された際に出てきた
Client Push
Client Push is not installed, this might lead to performance issue when using desktop clients.
と出てきたので、これを導入しました。筆者のようにIP/クローラー制限やMod_Securityを利用している方でもなんとかなる手順にしています。
正式名称は「High Performance Back-end / notify_push」。
一言でいうと、「ファイルの変更をクライアントに『瞬時に』知らせる機能」です。
郵便受けの確認に例えるとわかりやすいでしょう。
「必須ではありませんが、導入すると劇的に快適になります」
このNextcloudを個人的に運用しているのならばそのまま行って構いません。しかし、これを組織で運用しているとなると話はまるで違います。
など、利用者への周知という名の政治交渉が必要になります。この運用者の政治的な立ち位置(担当者/担当部門が強権を振るえるか否か)でも言い方や手段が決まってきます。そこは状況に応じていきましょう。
※ 検証環境を用意できる程度には時間と予算と環境に余裕がある方は、その環境にいることを感謝しつつ、検証を重ねていきましょう。
もちろん、新サービス(Docker)の追加という文書管理も必要になっていきます。以下の手順は
方向けの手順です。おそらく、組織でNextcloudを運用している方はここが一番のハードルだと思います。
Nextcloudの管理者画面 >「アプリ」> 虫眼鏡アイコンで 「Client Push」を検索 > インストール・有効化します。
ここまでは単純です。
cd /path/to/nextcloud/root/directory && pwd
自分の環境に合わせます。(筆者環境/home/www-data/nextcloud)
sudo -u www-data php occ maintenance:mode --on
運用中のNextcloudのURLにアクセスし、メンテナンスモードであることを確認します。
Client Pushは「WebSocket」という特殊な通信を使用します。Apacheでこれを扱えるようにモジュールを有効化します。
sudo a2enmod proxy proxy_http proxy_wstunnel
systemctl status apache2.service
active(running)を確認します
sudo systemctl restart apache2.service
systemctl status apache2.service
active(runnning)を確認します
このタイミングでサービス再起動が必要なのは何故かというと、
を有効化していないと、この後のApache設定変更時に「これらのモジュールが無い」とサーバは判断するからです。
sudo cp -pi /etc/apache2/sites-available/nextcloud.conf /path/to/backup/directory/nextcloud.conf.$(date +%Y%m%d)
.confやバックアップディレクトリは自分の環境に合わせます。
diff -u /path/to/backup/directory/nextcloud.conf.$(date +%Y%m%d) /etc/apache2/sites-available/nextcloud.conf
差分が無いことでバックアップを確認します。
※余談:執拗なまでのバックアップ
「責任範囲を明確にするため」です。
設定ファイルというものは、どこかのミスであっという間に破綻する「すぐそこにある破滅」です。「起きてしまった破滅」からすぐリカバリーできるため、「何かあったときの責任者は誰か(芋を引くのはどいつか?)」を決める絶好の証拠になります。
○自分の設定でミスが起きた:潔く諦め、原状回復に努めましょう。
○誰かの設定ミス:追求や晒し上げは後にして、原状回復に努めましょう。責任者は誰かと追求してもサーバは止まり続けます。
ここで重要なのは、サービスが止まった「この時点で」重要なのは、「誰がやったか」ではなく「いかに早く復旧させるか」です。
/etc/apache2/sites-available/nextcloud.conf を、任意の方法で編集します。(エディタという宗教問題が絡むため)
他のリダイレクト設定やセキュリティ設定(RewriteRuleなど)に干渉されないよう、<VirtualHost *:443> ブロック内のなるべく上の方に記述するのがコツです。
<VirtualHost *:443>
# (その他既存の設定...)
# ====================================================
# Nextcloud Client Push (notify_push) 設定
# ====================================================
<Location /push>
ProxyPass ws://127.0.0.1:7867/ws
ProxyPassReverse ws://127.0.0.1:7867/ws
</Location>
ProxyPass /push/ http://127.0.0.1:7867/
ProxyPassReverse /push/ http://127.0.0.1:7867/
# ====================================================
# ... (これ以降にDocumentRootやセキュリティ設定が続く) ...
diff -u /path/to/backup/directory/nextcloud.conf.$(date +%Y%m%d) /etc/apache2/sites-available/nextcloud.conf
以下の差分を確認します。
+# ====================================================
+# Nextcloud Client Push (notify_push) 設定
+# ====================================================
+ <Location /push>
+ ProxyPass ws://127.0.0.1:7867/ws
+ ProxyPassReverse ws://127.0.0.1:7867/ws
+ </Location>
+
+ ProxyPass /push/ http://127.0.0.1:7867/
+ ProxyPassReverse /push/ http://127.0.0.1:7867/
+# ====================================================
+
sudo apache2ctl configtest
Syntax OKを確認します。
systemctl status apache2.service
active(running)を確認します
sudo systemctl restart apache2.service
systemctl status apache2.service
active(runnning)を確認します
Client Pushは、Webサーバーとは別に裏方で動くプログラムです。これを常駐させるための設定ファイルを作成します。
`/etc/systemd/system/notify_push.service`
を、任意の方法で作成します。
※ User や WorkingDirectory、ExecStart のパスは、ご自身のNextcloudインストール環境(例: /var/www/nextcloudなど)に合わせて必ず修正してください。
[Unit]
Description = Nextcloud Client Push Node binary
After = network.target
[Service]
Type = simple
User = www-data
Group = www-data
# 【重要】環境に合わせて変更してください。特に、ExecStartは2カ所、修正箇所があります。
WorkingDirectory = /var/www/nextcloud
ExecStart = /var/www/nextcloud/apps/notify_push/bin/x86_64/notify_push /var/www/nextcloud/config/config.php
Restart = on-failure
[Install]
WantedBy = multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now notify_push
systemctl status notify_push.service
active(running)を確認します
ここがつまずきポイントでした。
サーバーが自分自身のURL(https://your.domain.com)にアクセスした際、ネットワーク環境(ヘアピンNATなど)によっては一度外に出てグローバルIP経由で戻ってくる場合があります。
この場合、Nextcloudは「外部からのアクセス」とみなして通信を拒否してしまいます。これを防ぐため、config.php に自身のグローバルIPを信頼済みプロキシとして登録します。
sudo cp -pi /path/to/nextcloud/root/config/config.php /path/to/backup/directory/config.php.$(date +%Y%m%d)
格納場所は自分の環境に合わせます。
sudo diff -u /path/to/backup/directory/config.php.$(date +%Y%m%d) /path/to/nextcloud/root/config/config.php
差分が無いことを確認します。
ここでsudoをつけるのは、NextcloudのファイルパーミッションがNextcloudの実行ユーザとrootしか読み取れないため(640)のためです。
Nextcloudの config/config.php を開き、trusted_proxies 配列に追記します。
'trusted_proxies' =>
array (
0 => '127.0.0.1',
1 => '::1',
2 => '203.0.113.123', // ← 【ここに追加】あなたのサーバーのグローバルIP
),
sudo diff -u /path/to/backup/directory/config.php.$(date +%Y%m%d) /path/to/nextcloud/root/config/config.php
以下を確認します。
+ 2 => '203.0.113.123',
通常は occ notify_push:setup コマンドを使いますが、Bot検知やIP制限などのセキュリティ設定が厳しい環境では、接続テストで「403 Forbidden」や「404 Not Found」が出て失敗することがあります。
そのため、テストをスキップして強制的に設定値を登録するコマンドを使います。
sudo -u www-data php /var/www/nextcloud/occ config:app:set notify_push base_endpoint --value "https://your.domain.com/push"
URLはご自身のものに合わせてください。また、パス(/var/www/nextcloud)は環境に合わせて変更してください。
sudo systemctl restart notify_push
systemctl status notify_push.service
active(running)を確認します。
Nextcloudの管理画面(「概要」または「ログ」)を確認し、「Client Push」に関する警告が消えていれば導入成功です。
これでファイル同期が爆速になり、サーバー負荷も低減されているはずです。警告を消したいだけの場合でも、この手順を行っておけば「高セキュリティかつ高性能」な環境が手に入ります。
Nextcloudを32.0.2にアップデート後、以下のエラーを確認しました。
AppAPIデプロイデーモン
AppAPIデフォルトのデプロイデーモンが設定されていません。外部アプリ(Ex-Apps)をインストールするための設定で、デフォルトのデプロイデーモンを登録してください。Mimetypeの移行が可能
1つ以上のmimetypeマイグレーションが利用できます。時折、特定のファイルタイプをよりよく扱うために新しいmimetypesが追加されます。大規模なインスタンスではmimetypesの移行に時間がかかるため、アップグレード時には自動的には行われません。移行を行うにはocc maintenance:repair --include-expensiveコマンドを使用してください。データベースに存在しないインデックス
いくつかの欠落しているオプションのインデックスを検出しました。データベースのパフォーマンスを向上させるために、(Nextcloudまたはインストールされたアプリケーションによって)新しいインデックスが追加されることがあります。インデックスの追加には時間がかかり、一時的にパフォーマンスが低下することがあるため、アップグレード時には自動的には行われません。インデックスが追加されると、それらのテーブルへのクエリが速くなるはずです。インデックスを追加するには、occ db:add-missing-indicesコマンドを使用してください。 インデックスが不足: "properties_name_path_user" テーブル内の "properties", "unique_category_per_user" テーブル内の "vcategory", "calobjects_by_uid_index" テーブル内の "calendarobjects"
これについて解消していきます。
このNextcloudを個人的に運用しているのならばそのまま行って構いません。しかし、これを組織で運用しているとなると話はまるで違います。
など、利用者への周知という名の政治交渉が必要になります。この運用者の政治的な立ち位置(担当者/担当部門が強権を振るえるか否か)でも言い方や手段が決まってきます。そこは状況に応じていきましょう。
※ 検証環境を用意できる程度には時間と予算と環境に余裕がある方は、その環境にいることを感謝しつつ、検証を重ねていきましょう。
もちろん、新サービス(Docker)の追加という文書管理も必要になっていきます。以下の手順は
方向けの手順です。おそらく、組織でNextcloudを運用している方はここが一番のハードルだと思います。
正直、筆者はDockerを信用していませんが「必要ならば入れるまで」です。
cd /path/to/nextcloud/root/directory && pwd
自分の環境に合わせます。(筆者環境/home/www-data/nextcloud)
sudo -u www-data php occ maintenance:mode --on
運用中のNextcloudのURLにアクセスし、メンテナンスモードであることを確認します。
AppAPIは、背後でDockerコンテナを立ち上げてアプリケーションを実行します。まずはUbuntuサーバー自体にDockerが入っているか確認し、なければインストールします。
sudo aptitude update
※筆者の好みでaptitudeを用いています。好みに応じてaptに読み替えてください。
sudo aptitude install docker.io
sudo systemctl start docker
sudo systemctl enable docker
systemctl status docker.service docker.socket
active(running)とenabledを確認します。
NextcloudはApacheユーザー(通常 www-data)で動作していますが、Dockerは roto 権限で動いています。NextcloudからDockerを安全に操作させるために、Docker Socket Proxy という中継役のコンテナを立ち上げるのが推奨される方法です。
sudo docker run -d \
--name nextcloud_app_api_dsp \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 2375:2375 \
alpine/socat \
tcp-listen:2375,fork,reuseaddr unix-connect:/var/run/docker.sock
sudo docker ps
出力されたリストの中に、以下の特徴があれば成功です。
nextcloud_app_api_dsp という名前がある。Up X seconds や Up X minutes となっている。(ここが Exited だと停止しています)0.0.0.0:2375->2375/tcp のようにポートが表示されている。※出力例:
CONTAINER ID IMAGE STATUS PORTS NAMES
a1b2c3d4e5f6 alpine/socat Up 2 minutes 0.0.0.0:2375->2375/tcp nextcloud_app_api_dsp
OS側から見て、ポート2375番が待受状態になっているか確認します。
ss -nlt | grep 2375
※成功時の表示例:
LISTEN 0 512 0.0.0.0:2375 0.0.0.0:
※注意: 2375ポートは内部アクセス専用とし、外部公開しないようFW設定を確認してください
これが出ていれば、Nextcloudからの接続を受け付ける準備が完了しています。
sudo docker ps で何も表示されない場合は、起動に失敗して終了してしまった可能性があります。その場合は以下でエラー原因を確認します。
sudo docker ps -a
sudo docker logs nextcloud_app_api_dsp
※よくあるエラー:
もしログに permission denied と出る場合は、Docker自体へのアクセス権限の問題ですが、今回の sudo docker run で実行していればこの動作は置きにくいでしょう。
sudo -u www-data php occ maintenance:mode --off
運用中のNextcloudのURLにアクセスし、管理画面に入ります。
管理者権限でNextcloudにログインし、
管理 > AppAPI
に進みます。
Deploy Daemonsの項目の+デーモンを登録に進みます。
以下のように設定します。
このあと、「Check connection」をクリックします。「Daemon connection successful」と出たら「Register」をクリックします。
再びNextcloudがインストールされているWebサーバに接続します。
cd /path/to/nextcloud/root/directory && pwd
自分の環境に合わせます。(筆者環境/home/www-data/nextcloud)
sudo -u www-data php occ maintenance:repair --include-expensive
先ほどのNextcloudのルートディレクトリのまま実行します。
sudo -u www-data php occ db:add-missing-indices
systemctl status apache2.service
active(running)を確認します
sudo systemctl restart apache2.service
systemctl status apache2.service
active(runnning)を確認します
管理者権限でNextcloudにログインし、
AppAPIデフォルトのデプロイデーモンはHaRPを使用していません。パフォーマンス向上のため、アップグレードをご検討ください。
とメッセージが警告に変わっていればOKです。
全く問題ありません。誤差レベルです。
今回使用する alpine/socat というコンテナは、非常に軽量なことで有名な「Alpine Linux」というOSをベースに、socat という単純な転送プログラムだけが動いています。
サーバー全体のメモリが数GBある環境であれば、このコンテナの存在に気づかないレベルの軽さですので、ご安心ください。
このコンテナに関しては、「データが消えても問題ない(そもそもデータを保存しない)」仕組みになっているため、大丈夫です。
このコンテナ nextcloud_app_api_dsp は、「土管(パイプ)」のような役割しかしていません。
--restart always というオプションのおかげで、Ubuntuサーバーを再起動すると、このコンテナも自動的に「新品の状態」で立ち上がります。立ち上がった瞬間から、再び「中継役(土管)」としての仕事を再開します。前回の中身を覚えている必要がないため、これで正常に動作します。
カメラの試し撮りを行った帰り、iPadを広げた途端に強烈な情報が目に入りました。
それは
と言えるものであり、その場で手続きを済ませ、翌日に到着。

ハリー・ポッターシリーズ、
それぞれのLAMY AL-Star。そもそもLAMY万年筆は愛用品。しかも、それぞれの寮の色。ペン先も使いやすいEF。
それぞれ、プレミア価格ではなく在庫ありという幸運にも助けられ、届きました。
さて、ここまでの逸品。量産品を愛用する身ではありますが「それはそれ」です。これを最大限に活かすため、まずはインクを決めるところからです。
それぞれの寮に合わせ
はワンパターンです。かといって別の色というのも何か合いません。そこで、新たなインクを買い求めました。

そこで決めたのは、「寮のサブカラー」です。
さらに、インクに寮のマステを貼り、更に迷いをなくします。
書き味などを確かめるのはこのあとで。
Dockerならではの問題に対処したのでメモを残します。
RHEL / Rocky Linux 9 環境のGPUサーバーにおいて、Dockerビルド(大規模LLMモデルの生成など)を実行した際、ルートパーティション(/)の使用率が100%に達する事象が発生しました。
/var/lib/docker(ルート配下)にイメージやビルドキャッシュを保存します。/home 領域には数TBの空きがります。/home 配下へ物理的に移行して解決します。まず、現在のDocker設定とディスク使用量を確認し、Dockerサービスを停止します。
docker info | grep "Docker Root Dir"
→ (デフォルトは /var/lib/docker)
sudo systemctl stop docker docker.socket
systemctl status docker
inactive(dead)を確認します。
大容量領域(今回は /home 配下)に新しい保存用ディレクトリを作成します。
sudo mkdir -p /home/docker/data
既存のイメージやコンテナデータを保持するため、rsync を用いてデータを同期します。
※ cp コマンドよりも、権限やタイムスタンプを正確に保持できる rsync を推奨します。
※ rsyncはRocky9に最初から入っているコマンドです。
/var/lib/dockerの中身を、新ディレクトリへコピーsudo rsync -aqxP /var/lib/docker/ /home/docker/data/
-a: アーカイブモード(権限等を保持)-x: ファイルシステム境界を越えない
注意: コピー元のパス末尾に/を付けることで、ディレクトリそのものではなく「中身」を転送先に展開します。
何かあったときの切り戻しのため。特に、後述するjsonの編集をミスると地獄行きの通過駅無しの特急が待っています。
sudo cp -pi /etc/docker/daemon.json /path/to/backup/directory/daemon.json.$(date +%Y%m%d)
sudo diff -u /path/to/backup/directory/daemon.json.$(date +%Y%m%d) /etc/docker/daemon.json
一般ユーザが読み取れないディレクトリ構造も考慮して、念のためsudoをつけます。
→ エラーがなければバックアップ成功。ここでコピー元とコピー先を逆にしているのは編集後のdiffを取るためです。
/etc/docker/daemon.json を編集します。(エディタは宗教問題のため、自分の教義・信仰に沿ったものを利用してください)変更例:data-root オプションを追記します。
JSON形式のため、行末のカンマ(,)の有無に注意してください。
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"data-root": "/home/docker/data"
}
sudo diff -u /path/to/backup/directory/daemon.json.$(date +%Y%m%d) /etc/docker/daemon.json
以下のようになっていることを確認します。
- "data-root": "/var/lib/docker"
+ "data-root": "/home/docker/data"
Dockerを起動し、設定が反映されているか確認します。
sudo systemctl start docker
systemctl status docker
active(running)を確認します。
docker info | grep "Docker Root Dir"
=> Docker Root Dir: /home/docker/data となっていれば成功です。
動作確認後、元の /var/lib/docker を削除または退避させて、ルートパーティションの空き容量を回復させます。
安全のため、バックアップを取るか慎重に削除してください。この作業を行うときは深呼吸を3回ほど行い、飲み物を飲むなどして落ち着いてから行いましょう。
sudo rm -rf /var/lib/docker
本対応により、ルートパーティションの圧迫が解消されました。
Before:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rl-root 70G 70G 20K 100% /
After:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rl-root 70G 6.0G 65G 9% /
/dev/mapper/rl-home 6.9T 198G 6.7T 3% /home
setenforce 0 で切り分けを行うか、適切なコンテキストを設定してください。daemon.json の記述ミス(カンマ忘れなど)があるとDockerが起動しません。編集後は慎重に確認を行いましょう。
再掲しますが『ハリー・ポッターと賢者の石』のオリバンダー翁の言葉
The wand chooses the wizard, Mr. Potter. It's not always clear why.
「杖が魔法使いを選ぶのです、Mr.ポッター。何故そうなるかは、はっきりとは分かりませんが」
これをまたもや引き合いに出し、「前の魔法使いを選んだ杖」をどう制御したかというお話です。
本当に些細なきっかけで「カメラの引き取り手を探している人がいる」という家族からの依頼に二つ返事。
「まぁ、何らかの収穫はあるだろう」程度の認識でしたが、その認識を遙かに上回るものがありました。

OLYMPUS E-P5 レンズ付き。

一瞬、自分の目を疑いました。というか三回ぐらい確認しました。
空き箱だけかと思えば
と、メモリーカードを除く全てがそこにありました。
筆者はその後継であるE-P7を使っていますが、その前々モデルは眠気も一週間の疲れも吹っ飛ぶものです。
早速、試し撮りを行いますが、大きな「?」がつくもの。普段のフィギュア撮影を鑑みても
「何かが違う。このレンズ、ここまでズームしないはず」
「なんでこんなにブレるんだ? (15年ぐらい前に買った)E-PL1でもここまで揺れないぞ?」

が最初に思ったこと。広角なのにやたらとズームしている。標準レンズとほぼ同等の60mmがやたらと近い。マイクロフォーサーズの距離感は体で知っているのに、その体感が「明らかに違う」と見て取れるもの。
では、故障か? それはあり得ません。傷一つ無いボディにレンズプロテクターと純正アクセサリ。そしてボロボロに読み込まれたマニュアルは「大切に扱われた代物」という明白なサインです。
そこで、検証を行います。
設定の中に答え(というか前の持ち主が残した罠)の一つがありました。
それは「デジタルテレコン(カメラ内部でズームする機能)がOn」になっていたという罠。
これを解除して、ようやく見慣れた画角が蘇りました。これを伴って、終わりつつある紅葉を撮りに出かけます。
冬の澄み切った空気での撮影は成功。特に広角レンズの描写力には感動です。紅葉の赤と青空がしっかり決まっています。


これで満足……という訳にはいきませんでした。
さて、撤収するかと言うときに、カメラが語りかけるような「声」が聞こえてくるかのようでした。折しも作業用に見ていた『アカギ』の盲目の裏プロ、市川のこの言葉が引っかかったのです。
「まだ半分しか済んでない そうだろう?
君はわしに向けて引き金を引いた……
ならば自分に向けても一度引くべきだ
それでこそ この場は丸く収まろうというもの……
違うかい? アカギくん…………」
つまり「撮ったときのもう一つの違和感」である「ブレ」を確認しなければならないという、もう一つの決定的な違和感です。
この、カメラ自身からの挑戦状に等しい検証として選んだのが、筆者がよく訪れる葛西臨海水族園。
と、カメラの「ストレステスト」には十分すぎる条件が揃っています。
水槽を前にして、泳ぐ魚で撮影しましたが:「やはりシャッタースピードが遅くてブレる」でした。念のため、携行していたE-P7は問題なく撮影できます。レンズを差し替えてもです。
ここで考えられる状況は何か? と、液晶を確認し、一つの決定的な答えを見つけました。
「そういえばISOが全然変化していない!」
です。光量が格段に落ちる屋内。ましてや水族館。ここで求められるのはISO1600を超える超高感度です。マニュアル撮影ならいざ知らず、Pモードでのこの光量はもはや何かの異常……
ではなく「カメラの設定」で、ISOが固定されていたという、もう一つの「枷」を見つけ、それを解放。


結果は歴然。そうして撮影した写真がこちら。「やはりこのカメラは大切に使われていた」という確信を持てました。
「この罠には気づかなかった」というよりも
「なぜ、前の持ち主はこういう設定にしていたのか?」です。おそらく、
運用をしていたのでしょう。前述した「杖が魔法使いを選ぶ」とは、「杖(カメラ)が魔法使い(使い手)の好みに合うよう、設定で最初からこうなった」と考える方が自然です。
なので、道具というものは、使い手の意志に沿って成長していく。それこそが、オリバンダー翁の言う
「 It's not always clear why / 何故そうなるかは、はっきりとは分かりませんが」
のwhyの正体だと思いました。
投資やらなんやら色々と言われている中、「自分への時間」という投資はしているでしょうかという話。
ビジネスやITでも取り入れられている「投資効率」を測る指標、ROI (Return on Investment)。
これは、投じた費用に対してどれだけの純粋な利益が得られたかを測る指標です。この数値が高いほど、投資の効率が良かったことになります。
計算式は極めてシンプル。
ROI(%) = 純利益 ÷ 投資額 × 100
例えば、1,000万円の売上を得るために、投資額とその他の費用を合わせて800万円かかったとします。この場合の純利益は 1,000万円 - 800万円 = 200万円 です。
200万円 (純利益) ÷ 800万円 (投資額) × 100 = 25
つまり、投じた金額に対して25%の利益が得られたという計算です。
このROIの概念、お金だけではなく時間にも適用できます。
と後回しにしがちです。ですが、これは「機会損失」や「未来の時間の質を下げる」リスクを伴います。
筆者は弁当を毎朝作っていますが、その中でも厄介なのは「食材の下ごしらえ」です。肉と魚は言うに及ばず。野菜も結構な下処理が発生します。
ある日(といっても先週の土日ですが)大量のキャベツをもらったので、これを「時間の投資」と考えてみます。
こうしてできたのがこちら。

この、野菜の下処理は休日の夕方という、最もやる気が出ない時間に「せめてこんだけやっておくか」と、20分ほどの手間をかけて実施。
ですが、これで得られる時間は、少なく見積もっても「平日5日につき10分の時短」が見込めます。
なぜなら、
を一気に解決。冷凍状態であっても、冷凍庫から袋を取り出して中身を鍋やフライパンに入れれば一発です。
それ以上に大事なのが
が見込めます。
では、そのROIを改めて見てみましょう。
リターンとして得られた時間は単純計算で30分です。
30分 (純利益) ÷ 20分 (投資額) × 100 = 150
なんと、そのROIは150%!これは、『桃太郎電鉄』の高効率物件とされる出雲そばが、独占ボーナスを考慮しない場合の年間収益率(50%)と比べても、その効率の良さが歴然としています。
さて、翻り、ここ数年の「タイパ」」とやらの手法は、筆者は苦手です。
なので、「多少の一時的な損失が、後のリターン」となって返ってくるのであれば、それは「必要経費」として支払う必要があるというお話。
その一種のROIとして最も秀逸な例が『ハリー・ポッターと賢者の石』。
最終盤、寮杯ポイント、優勝確実だったスリザリンと160点のビハインドがあったグリフィンドールは三人組の活躍で立て続けに160点を獲得。
しかし、最後の一押しとなったのはネビル・ロングボトムへの10点でした。
この、「友に立ち向かう勇気」という、ダンブルドア校長の「ささやかな投資」が彼の自信という自己肯定感を涵養し、後の
として返ってきたのです。「この程度の投資」と軽視しても、適切に行えば莫大なリターンになってくると言う
「お前、最後のそれが言いたかっただけだろ」
という突っ込みに「Exactly」と答えて本稿は終わりにします。
※昨今のトレンドである「GPU前提のLinuxサーバ」つまり、AI環境に必須の
という難易度が高く――そして、インフラ屋にとって極上の素材を得る経験がありました。
そのときのメモです。(氷見の本マグロを捌くことになった調理師のような気分でした)
まず、これを一般家屋に置くと言うことはないでしょう。
固定IP化および自動接続設定を行う。
sudo nmcli connection modify "Wired connection 1" connection.id eno2
sudo nmcli connection modify eno2 ipv4.addresses xx.xx.x.x/16
sudo nmcli connection modify eno2 ipv4.gateway Gateway IP
sudo nmcli connection modify eno2 ipv4.dns "DNS1 DNS2"
sudo nmcli connection modify eno2 ipv4.method manual
sudo nmcli connection modify eno2 connection.autoconnect yes
→ これをやっておかないと、再起動したときにNW設定が消えます。
sudo nmcli connection up eno2
RHEL 9 系でサードパーティ製パッケージを入れるため、これは必須です。特に、CRB (CodeReady Builder) の有効化を忘れると依存解決ができず、高性能GPUを認識させることができません。
sudo dnf update -y
sudo reboot
→ カーネルアップデートも含まれるため。
sudo dnf config-manager --set-enabled crb
sudo dnf install epel-release -y
ここまで来たらいよいよ本命。(先のマグロの例に例えると、いよいよマグロの身に刃を当てていきます)
【重要】 RTX 6000 Ada はプロプライエタリ版ドライバではなく、Open Kernel Module (open-dkms) を要求します。これに気づかずハマりかけました。
sudo dnf groupinstall "Development Tools" -y
sudo dnf install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo
以前のインストール試行や(ハマったところ)、OSに入っているであろうGPUドライバを取り除かないと詰まります。
sudo dnf remove nvidia-driver kmod-nvidia-latest-dkms -y
sudo dnf module reset nvidia-driver -y
sudo dnf module install nvidia-driver:open-dkms -y
sudo reboot
nvidia-smi
-> `Driver Version: 590.xx / GPU Name: RTX 6000 Ada / VRAM: xxGB が表示されることを確認します。
筆者はコンテナが好みではないのですが、それはそれです。相手のオーダーに答えるのもまたお仕事。
ここではpodman ではなく Docker CE を採用しました。
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
DockerコンテナでGPUが見えないと、せっかく「Dockerを入れろ」というオーダーが無になります。
sudo dnf install nvidia-container-toolkit -y
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
コンテナ内部から GPU が見えるか確認します。
sudo docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
成功時、コンテナ内からホスト同様の nvidia-smi 結果が出力されれば動作完了です。
OS標準を汚さず、最新の開発環境を整備する。
altinstall (共存インストール) しないとサーバそのものが吹っ飛びます。※実行例
sudo dnf install -y openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel tk-devel xz-devel
wget https://www.python.org/ftp/python/3.12.8/Python-3.12.8.tgz
tar xzf Python-3.12.8.tgz && cd Python-3.12.8
./configure --enable-optimizations
make -j $(nproc)
sudo make altinstall
altinstallを入れないと上述したようにサーバが吹っ飛びます。
以下のエラーに出くわしたときの原因と対策です。
dnf module install nvidia-driver:open-dkms を使用しました。Powered by WordPress & Theme by Anders Norén