<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mac mini | imakat.com</title>
	<atom:link href="https://imakat.com/tag/mac-mini/feed/" rel="self" type="application/rss+xml" />
	<link>https://imakat.com</link>
	<description>工夫と改善で人生をちょっと豊かに</description>
	<lastBuildDate>Mon, 13 Jul 2026 20:41:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://i0.wp.com/imakat.com/wp-content/uploads/2023/07/cropped-80d64ecd340db4e2ca3224859b04caed.png?fit=32%2C32&#038;ssl=1</url>
	<title>Mac mini | imakat.com</title>
	<link>https://imakat.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">160909258</site>	<item>
		<title>棚田式非破壊型DASはNASを超えるぞ！</title>
		<link>https://imakat.com/2026/01/22/28134/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Thu, 22 Jan 2026 13:52:04 +0000</pubDate>
				<category><![CDATA[棚田式ファイル管理]]></category>
		<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[Mac mini]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[DAS]]></category>
		<category><![CDATA[棚田]]></category>
		<category><![CDATA[ミラーリング]]></category>
		<category><![CDATA[FreeFileSync]]></category>
		<category><![CDATA[シャドウ・ディレクトリ]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=28134</guid>

					<description><![CDATA[ブログの記事のネタが無くて困ることはよくあるでしょうが、今回のこのテーマは、全く逆で、ネタが多過ぎて、どこから話していいか見当もつかない様な面白いテーマです。まあ超マニアックですが。。いいえ核心かも。では話を始めます。  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ブログの記事のネタが無くて困ることはよくあるでしょうが、今回のこのテーマは、全く逆で、ネタが多過ぎて、どこから話していいか見当もつかない様な面白いテーマです。まあ超マニアックですが。。いいえ核心かも。では話を始めます。</p>



<p class="wp-block-paragraph"><strong>〜Mac miniによるDAS操作、Mac miniは今こそ本領発揮の時代に入った〜</strong></p>



<p class="wp-block-paragraph">SynologyNASとMac miniを組み合わせたファイル管理システムを使い始めた頃から、「NAS自体がPCの機能を持っているので、Mac miniと機能が重複している。Mac miniの頭脳(OS)を使って、複数のHDDを、RAIDのようにガチガチではなく、もっと自由に扱うことができないか」と問題意識を持っていました。その解決策を提案しているYouTube動画が気になっていました。&#x1f449;「<a rel="noopener" target="_blank" href="https://youtu.be/OGl-FhVOGQM?si=Z4bRQZPtYU54IjKV">NASじゃなくてもいいかも！Mac miniでデータ管理してみた(ギズモード網藤さん)<span class="fa fa-external-link external-icon anchor-icon"></span></a>」「<a rel="noopener" target="_blank" href="https://youtu.be/7DvCrWIyl_M?si=lQOsicW2S3Ea3ETO">【NAS＆RAIDより安全】２０２５年版　個人限定　データを守る方法を紹介　HDDケース<span class="fa fa-external-link external-icon anchor-icon"></span></a>」</p>



<figure class="wp-block-image size-large is-resized"><a href="https://imakat.com/rd.php?id=zo1t1HJF.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=zo1t1HJF.png" alt="" style="aspect-ratio:1.5000155836060465;width:199px;height:auto"/></a></figure>



<p class="wp-block-paragraph">棚田式を思いついたのは、ギズモードの網藤さんが「一年に１回、写真や動画を移動させるルールを実行している」と語っていたことがヒントになり、「<strong>棚田は許容量を超えたら水が溢れ出る</strong>→だが、ここで→<strong>古い水から下段へ移動できたら面白い</strong>」とイメージしたことです。<br>まずは動画をご覧ください。</p>


<div class="sc-dynamic-embed">
  <style>
  /* リンクの見た目を整える */
  .sc-dynamic-embed .sc-link-container { 
      display: flex; 
      margin-bottom: 10px; 
      flex-wrap: wrap; 
      align-items: center; 
  }
  .sc-dynamic-embed .sc-link { margin-bottom: 0; }
  .sc-dynamic-embed .sc-link a {
    font-size: 15px; 
    font-weight: normal;
    text-decoration: underline;
    color: #0073aa;
  }
  .sc-dynamic-embed .sc-link a:hover { text-decoration: none; color: #000; }
  
  @media (max-width: 500px) {
    .sc-dynamic-embed .sc-link a { font-size: 13px; }
  }

  .sc-dynamic-embed .imk-line {
      display: inline-block;
      width: 100%;
      border-radius: 2px;
      transition: background-color 0.1s;
  }

  .sc-dynamic-embed #subtitleOverlay,
  .sc-dynamic-embed #scSubtitleOverlay,
  .sc-dynamic-embed .overlay-cue,
  .sc-dynamic-embed .band {
      display: none !important;
      opacity: 0 !important;
      visibility: hidden !important;
      pointer-events: none !important;
  }
  </style>

  <div class="sc-link-container">
    <p class="sc-link">
      <!-- ★環境依存排除：固定ドメインをルート相対パスへ置換完了 -->
      <a href="/ds62/?drid=81" target="_blank"
         onclick="return scStopAndGo(event, this);">
        👉低画質・枠外字幕はこちら
      </a>
    </p>
  </div>

  <!-- ★環境依存排除：[dynamic_external_html] にルート相対パスを指定し、functions.phpにURL動的解決を委ねる設計 -->
  <style>
            :root{ --dr5emd-max: 1920px; }
            #subtitleOverlay, #scSubtitleOverlay, .overlay-cue, .band { display: none !important; opacity: 0 !important; }
            .imk-line { display: inline-block; width: 100%; border-radius: 2px; transition: background-color 0.1s; }
            .dr5emd-sublist details > p{ height:200px; overflow:auto; background-color:#EDF7FF; padding:2px 6px; margin:0; box-shadow:3px 3px 4px black; position: relative; }
            .dr5emd-sublist details > summary{ padding:2px 6px; width:100%; background-color:#ddd; border:none; box-shadow:3px 3px 4px black; cursor:pointer; list-style:none; }
            
                .video-wrap{position:relative;width:100%;margin:0 auto}
                #myVideo{width:100%;height:auto;min-height:200px;display:block;background:#000;}</style><div class="dr5emd-container"><div class="video-wrap"><video id="myVideo" controls poster="https://imakat.com/rd.php?id=wBCjkbJY.png" playsinline preload="none" style="width:100%;height:auto;">  <source src="https://imakat.com/rd.php?id=AQqTHIvv.mp4" type="video/mp4">  <track src="https://imakat.com/rd.php?id=N0fpSOfQ.vtt" label="日本語" srclang="ja" kind="subtitles"></video></div><div class="dr5emd-sublist"><details translate="yes"><summary translate="yes">字幕一覧(クリック)</summary> <p translate="yes">
(<a href="#" class="imk-cue" data-seek="0:18" translate="no">00:00:18</a>) それでは始めます。<br>
(<a href="#" class="imk-cue" data-seek="0:20" translate="no">00:00:20</a>) この画像ですけれども、<br>
(<a href="#" class="imk-cue" data-seek="0:22" translate="no">00:00:22</a>) これはあの、日本の山村によく見かける棚田の風景です。<br>
(<a href="#" class="imk-cue" data-seek="0:28" translate="no">00:00:28</a>) ええ、コンピューターのデータの管理をですね、<br>
(<a href="#" class="imk-cue" data-seek="0:32" translate="no">00:00:32</a>) この棚田を流れる水のように行いたいと。<br>
(<a href="#" class="imk-cue" data-seek="0:36" translate="no">00:00:36</a>) そう思って、<br>
(<a href="#" class="imk-cue" data-seek="0:38" translate="no">00:00:38</a>) 今回この「棚田式ファイル管理システム」を作ってみました。<br>
(<a href="#" class="imk-cue" data-seek="0:44" translate="no">00:00:44</a>) まだ最後まで完成していませんが、<br>
(<a href="#" class="imk-cue" data-seek="0:47" translate="no">00:00:47</a>) 重要な仕組みは大体出来上がりましたので、<br>
(<a href="#" class="imk-cue" data-seek="0:51" translate="no">00:00:51</a>) 紹介したいと思います。<br>
(<a href="#" class="imk-cue" data-seek="0:54" translate="no">00:00:54</a>) この動画は、<br>
(<a href="#" class="imk-cue" data-seek="0:56" translate="no">00:00:56</a>) Google Vids<br>
(<a href="#" class="imk-cue" data-seek="0:58" translate="no">00:00:58</a>) Google V-I-D-S という新しい機能をですね、<br>
(<a href="#" class="imk-cue" data-seek="1:03" translate="no">00:01:03</a>) 使って作ってみました。<br>
(<a href="#" class="imk-cue" data-seek="1:05" translate="no">00:01:05</a>) それではご覧ください。<br>
(<a href="#" class="imk-cue" data-seek="1:21" translate="no">00:01:21</a>) 本日は、私が個人で開発・運用している「DAS棚田式ファイル管理システム」についてお話しします。<br>
(<a href="#" class="imk-cue" data-seek="1:29" translate="no">00:01:29</a>) これは市販のNASやRAIDに依存せず、<br>
(<a href="#" class="imk-cue" data-seek="1:31" translate="no">00:01:31</a>) Mac miniの計算能力とGoogle Sheetsを活用して、<br>
(<a href="#" class="imk-cue" data-seek="1:36" translate="no">00:01:36</a>) 大量のファイルを安全かつ低コストに管理するための仕組みです。<br>
(<a href="#" class="imk-cue" data-seek="1:40" translate="no">00:01:40</a>) デジタルデータの断捨離とハードウェアの有効活用をどう両立させたか、その全貌をご紹介します。<br>
(<a href="#" class="imk-cue" data-seek="1:49" translate="no">00:01:49</a>) まず、開発のきっかけとなった動機についてお話しします。<br>
(<a href="#" class="imk-cue" data-seek="1:54" translate="no">00:01:54</a>) 私は長年、SynologyのNASとMac miniを併用してファイル管理を行ってきました。<br>
(<a href="#" class="imk-cue" data-seek="2:00" translate="no">00:02:00</a>) しかし、ある時、ふと疑問を抱きました。<br>
(<a href="#" class="imk-cue" data-seek="2:03" translate="no">00:02:03</a>) 「NASも結局は小型のコンピュータであり、Mac miniと機能が重複しているのではないか？」と。<br>
(<a href="#" class="imk-cue" data-seek="2:08" translate="no">00:02:08</a>) 手元には強力なプロセッサを持つMac miniがあるのに、データの管理はNASの非力なCPU任せになっている。<br>
(<a href="#" class="imk-cue" data-seek="2:14" translate="no">00:02:14</a>) しかも、RAIDを組んでしまうとHDDの組み合わせに制約が生まれ、自由が利きません。<br>
(<a href="#" class="imk-cue" data-seek="2:22" translate="no">00:02:22</a>) Mac miniの頭脳(OS)を使って、複数のHDDをもっと自由に、<br>
(<a href="#" class="imk-cue" data-seek="2:26" translate="no">00:02:26</a>) まるでレゴブロックのように扱えないか？<br>
(<a href="#" class="imk-cue" data-seek="2:30" translate="no">00:02:30</a>) これが最初の着想でした。<br>
(<a href="#" class="imk-cue" data-seek="2:33" translate="no">00:02:33</a>) もう一つの、そしてより切実な動機が、私自身の年齢と環境の変化です。<br>
(<a href="#" class="imk-cue" data-seek="2:39" translate="no">00:02:39</a>) 高齢になるにつれ、身の回りのものを整理し、「断捨離」を進めたいという思いが強くなりました。<br>
(<a href="#" class="imk-cue" data-seek="2:44" translate="no">00:02:44</a>) デジタルデータも同様です。<br>
(<a href="#" class="imk-cue" data-seek="2:46" translate="no">00:02:46</a>) ただ溜め込むのではなく、必要なものを選別し、不要なものは手放すサイクルを作りたい。<br>
(<a href="#" class="imk-cue" data-seek="2:51" translate="no">00:02:51</a>) また、昨今のHDD価格の高騰も無視できません。<br>
(<a href="#" class="imk-cue" data-seek="2:57" translate="no">00:02:57</a>) RAIDのために高価な同容量のHDDを買い揃えるのではなく、<br>
(<a href="#" class="imk-cue" data-seek="3:02" translate="no">00:03:02</a>) 手元にある古い500GBや1TBのHDDも捨てずに、<br>
(<a href="#" class="imk-cue" data-seek="3:07" translate="no">00:03:07</a>) 資産として有効活用したい。<br>
(<a href="#" class="imk-cue" data-seek="3:10" translate="no">00:03:10</a>) この「整理したい欲求」と「もったいない精神」を技術で解決するために構築したのが、このシステムです。<br>
(<a href="#" class="imk-cue" data-seek="3:19" translate="no">00:03:19</a>) そこで考案したのが、「棚田」というデータ管理モデルです。<br>
(<a href="#" class="imk-cue" data-seek="3:23" translate="no">00:03:23</a>) 水が上流から下流へ流れるように、データも鮮度に応じて、<br>
(<a href="#" class="imk-cue" data-seek="3:28" translate="no">00:03:28</a>) 段々畑を下りていくイメージです。<br>
(<a href="#" class="imk-cue" data-seek="3:30" translate="no">00:03:30</a>) システムでは、大きく3つの段位を定義しています。<br>
(<a href="#" class="imk-cue" data-seek="3:34" translate="no">00:03:34</a>) 一番上が「T0：作業段」。<br>
(<a href="#" class="imk-cue" data-seek="3:37" translate="no">00:03:37</a>) これはDropboxなど、人間やアプリが日々読み書きする、最も動きの激しい領域です。<br>
(<a href="#" class="imk-cue" data-seek="3:43" translate="no">00:03:43</a>) その下が「T1：保管段」。<br>
(<a href="#" class="imk-cue" data-seek="3:46" translate="no">00:03:46</a>) ここからはシステムが管理する領域で、準アクティブなデータを置きます。<br>
(<a href="#" class="imk-cue" data-seek="3:51" translate="no">00:03:51</a>) 一番下が「T2：長期保管段」。<br>
(<a href="#" class="imk-cue" data-seek="3:54" translate="no">00:03:54</a>) ここはアーカイブ領域です。<br>
(<a href="#" class="imk-cue" data-seek="3:56" translate="no">00:03:56</a>) 重要なのは、それぞれの段位に、サイズもメーカーも異なるバラバラのHDDを割り当てられる点です。<br>
(<a href="#" class="imk-cue" data-seek="4:02" translate="no">00:04:02</a>) これをソフトウェアで一つの巨大な階層構造として管理します。<br>
(<a href="#" class="imk-cue" data-seek="4:09" translate="no">00:04:09</a>) このシステムの核心にある設計思想、それが「判断と実行の分離」です。<br>
(<a href="#" class="imk-cue" data-seek="4:14" translate="no">00:04:14</a>) 通常のファイル操作では、人間が「移動」と思った瞬間にファイルが動きます。<br>
(<a href="#" class="imk-cue" data-seek="4:20" translate="no">00:04:20</a>) しかし、それでは「あ、間違えた！」という事故を防げません。<br>
(<a href="#" class="imk-cue" data-seek="4:25" translate="no">00:04:25</a>) このシステムでは、「考える工程（シミュレーション）」と「動かす工程（アプライ）」を完全に分離しました。<br>
(<a href="#" class="imk-cue" data-seek="4:32" translate="no">00:04:32</a>) まず、システムは全ファイルをスキャンし、「もしルール通りに動かしたらどうなるか？」を計算し、<br>
(<a href="#" class="imk-cue" data-seek="4:38" translate="no">00:04:38</a>) データベースに記録します。<br>
(<a href="#" class="imk-cue" data-seek="4:40" translate="no">00:04:40</a>) これを我々は「メタデータ更新」と呼びます。<br>
(<a href="#" class="imk-cue" data-seek="4:44" translate="no">00:04:44</a>) 実体ファイルには指一本触れず、<br>
(<a href="#" class="imk-cue" data-seek="4:47" translate="no">00:04:47</a>) メタデータ上で完璧な計画を立てる。<br>
(<a href="#" class="imk-cue" data-seek="4:50" translate="no">00:04:50</a>) これが第一段階です。<br>
(<a href="#" class="imk-cue" data-seek="4:53" translate="no">00:04:53</a>) このアプローチでは、実体ファイルは「従属物」とみなします。<br>
(<a href="#" class="imk-cue" data-seek="4:57" translate="no">00:04:57</a>) そこにファイルがあるから残すのではなく、<br>
(<a href="#" class="imk-cue" data-seek="5:01" translate="no">00:05:01</a>) 「メタデータという設計図にあるべきと書かれているから、そこに置く」のです。<br>
(<a href="#" class="imk-cue" data-seek="5:05" translate="no">00:05:05</a>) システムは、設定されたパス配下の全ファイルを「棚卸し」します。<br>
(<a href="#" class="imk-cue" data-seek="5:10" translate="no">00:05:10</a>) これにより、管理者の知らない「野良ファイル」が存在することを許しません。<br>
(<a href="#" class="imk-cue" data-seek="5:16" translate="no">00:05:16</a>) 全てのファイルにIDと行き先が振られ、データベース上で管理される。<br>
(<a href="#" class="imk-cue" data-seek="5:20" translate="no">00:05:20</a>) これが「メタデータ至上主義」です。<br>
(<a href="#" class="imk-cue" data-seek="5:25" translate="no">00:05:25</a>) システムの全体像をご覧ください。<br>
(<a href="#" class="imk-cue" data-seek="5:28" translate="no">00:05:28</a>) ユーザーインターフェースには、なんとGoogle Sheetsを使います。<br>
(<a href="#" class="imk-cue" data-seek="5:32" translate="no">00:05:32</a>) 専用のアプリは作りません。<br>
(<a href="#" class="imk-cue" data-seek="5:35" translate="no">00:05:35</a>) スプレッドシート上の「tanada.csv」という設定シートに行き先を書き、セル上のボタンを押す。<br>
(<a href="#" class="imk-cue" data-seek="5:41" translate="no">00:05:41</a>) すると、Mac mini内で待機しているPythonのデーモン（常駐プログラム）がそれを検知し、<br>
(<a href="#" class="imk-cue" data-seek="5:47" translate="no">00:05:47</a>) 裏側でスクリプト群が走り出します。<br>
(<a href="#" class="imk-cue" data-seek="5:51" translate="no">00:05:51</a>) 非常にシンプルな構成ですが、Googleの認証基盤を使うため、セキュリティも堅牢です。<br>
(<a href="#" class="imk-cue" data-seek="5:59" translate="no">00:05:59</a>) さて、ここからは少し技術的な「柔軟性」の話をします。<br>
(<a href="#" class="imk-cue" data-seek="6:04" translate="no">00:06:04</a>) 基本設計では、データはT0からT2へ、重力に従って落ちていく一方でした。<br>
(<a href="#" class="imk-cue" data-seek="6:10" translate="no">00:06:10</a>) しかし運用していると、「T2のHDDを別のPCで使いたいから、空にしたい」という場面が出てきます。<br>
(<a href="#" class="imk-cue" data-seek="6:17" translate="no">00:06:17</a>) そこで、プログラム上の「重力ルール」を緩和し、T2からT1への「逆流」を許可するようにしました。<br>
(<a href="#" class="imk-cue" data-seek="6:24" translate="no">00:06:24</a>) これにより、データは一方通行ではなく、必要に応じてHDD間を行き来できる「リバランス」が可能になりました。<br>
(<a href="#" class="imk-cue" data-seek="6:31" translate="no">00:06:31</a>) RAIDのリビルドのような危険な作業なしに、データの引っ越しができるのです。<br>
(<a href="#" class="imk-cue" data-seek="6:37" translate="no">00:06:37</a>) この逆流を活用した強力な機能が、「限度0TB設定」です。<br>
(<a href="#" class="imk-cue" data-seek="6:43" translate="no">00:06:43</a>) 例えば、T2にある古いHDDを引退させたいとします。<br>
(<a href="#" class="imk-cue" data-seek="6:47" translate="no">00:06:47</a>) やることは一つ。<br>
(<a href="#" class="imk-cue" data-seek="6:49" translate="no">00:06:49</a>) Google Sheetsでその段位の容量限度を「0TB」に書き換えるだけです。<br>
(<a href="#" class="imk-cue" data-seek="6:53" translate="no">00:06:53</a>) シミュレーションを実行すると、システムは<br>
(<a href="#" class="imk-cue" data-seek="6:56" translate="no">00:06:56</a>) 「おっと、T2の容量がゼロになった。ここにあるファイルは溢れてしまう」と判断します。<br>
(<a href="#" class="imk-cue" data-seek="7:02" translate="no">00:07:02</a>) そして自動的に、空き容量のある上位のT1へ、全てのファイルを移動させる計画を立案してくれます。<br>
(<a href="#" class="imk-cue" data-seek="7:09" translate="no">00:07:09</a>) 除外ファイルがあってもエラーにならないよう調整済みですので、ボタン一つで安全にHDDを空っぽにできます。<br>
(<a href="#" class="imk-cue" data-seek="7:19" translate="no">00:07:19</a>) しかし、自動化には恐怖も伴います。<br>
(<a href="#" class="imk-cue" data-seek="7:22" translate="no">00:07:22</a>) もしシステムが暴走して、作業中のDropbox(T0)を古いデータで上書きしてしまったら？<br>
(<a href="#" class="imk-cue" data-seek="7:28" translate="no">00:07:28</a>) これだけは絶対に避けなければなりません。<br>
(<a href="#" class="imk-cue" data-seek="7:31" translate="no">00:07:31</a>) そのため、プログラムの最深部に「T0戻り禁止」という安全装置をハードコードしています。<br>
(<a href="#" class="imk-cue" data-seek="7:36" translate="no">00:07:36</a>) いかなる設定、いかなるバグがあろうとも、「現在の場所がT0以外で、移動先がT0となる操作」は、<br>
(<a href="#" class="imk-cue" data-seek="7:43" translate="no">00:07:43</a>) シミュレーション段階と実行直前の2段階でブロックされ、強制停止します。<br>
(<a href="#" class="imk-cue" data-seek="7:48" translate="no">00:07:48</a>) T0は聖域（サンクチュアリ）であり、システムはそこへ書き込む権限を持ちません。<br>
(<a href="#" class="imk-cue" data-seek="7:52" translate="no">00:07:52</a>) この制約があるからこそ、安心して自動化を任せられるのです。<br>
(<a href="#" class="imk-cue" data-seek="8:02" translate="no">00:08:02</a>) 実際の運用では、いきなりファイルを動かすことはしません。<br>
(<a href="#" class="imk-cue" data-seek="8:06" translate="no">00:08:06</a>) まず、「ドライラン（予行演習）」が行われます。<br>
(<a href="#" class="imk-cue" data-seek="8:10" translate="no">00:08:10</a>) 処理結果はメールで通知され、何個のファイルが動き、どの程度のリスクがあるかが5段階評価で届きます。<br>
(<a href="#" class="imk-cue" data-seek="8:16" translate="no">00:08:16</a>) 「問題なし」という評価を確認してから、初めて人間が「APPLY（適用）」ボタンを押す。<br>
(<a href="#" class="imk-cue" data-seek="8:22" translate="no">00:08:22</a>) 寝ている間に、Mac miniが数テラバイトのデータを整理整頓してくれる。<br>
(<a href="#" class="imk-cue" data-seek="8:28" translate="no">00:08:28</a>) そんな運用が実現しています。<br>
(<a href="#" class="imk-cue" data-seek="8:33" translate="no">00:08:33</a>) 次に、これからの機能である「廃棄（断捨離）の自動化」についてです。<br>
(<a href="#" class="imk-cue" data-seek="8:38" translate="no">00:08:38</a>) データは溜まる一方ですが、手動で消すのは勇気が要ります。<br>
(<a href="#" class="imk-cue" data-seek="8:44" translate="no">00:08:44</a>) そこで、「廃棄処理の規定」というルールを設けます。<br>
(<a href="#" class="imk-cue" data-seek="8:47" translate="no">00:08:47</a>) 例えば、「拡張子が.tmpで、かつ2年以上更新がないファイル」といった条件を定義します。<br>
(<a href="#" class="imk-cue" data-seek="8:53" translate="no">00:08:53</a>) これに合致したファイルは、即座に削除されるのではなく、<br>
(<a href="#" class="imk-cue" data-seek="8:57" translate="no">00:08:57</a>) 「pending_delete」という専用のゴミ箱領域へ移動されます。<br>
(<a href="#" class="imk-cue" data-seek="9:02" translate="no">00:09:02</a>) そこで半年間眠らせて、誰も困らなければ完全に消去する。<br>
(<a href="#" class="imk-cue" data-seek="9:07" translate="no">00:09:07</a>) システムが背中を押してくれることで、デジタル断捨離がスムーズに進みます。<br>
(<a href="#" class="imk-cue" data-seek="9:13" translate="no">00:09:13</a>) 日々の運用は非常にシンプルです。<br>
(<a href="#" class="imk-cue" data-seek="9:16" translate="no">00:09:16</a>) 新しいHDDを買ってきたら、Mac miniに繋ぎ、Google Sheetsの設定行を1行追加するだけ。<br>
(<a href="#" class="imk-cue" data-seek="9:22" translate="no">00:09:22</a>) あとはボタンを押せば、システムが自動的にそのHDDをT1やT2として認識し、<br>
(<a href="#" class="imk-cue" data-seek="9:28" translate="no">00:09:28</a>) データの保存先として組み込みます。<br>
(<a href="#" class="imk-cue" data-seek="9:31" translate="no">00:09:31</a>) 逆にHDDを外す時も、設定を消すだけで、データは他のHDDへ自動的に退避されます。<br>
(<a href="#" class="imk-cue" data-seek="9:38" translate="no">00:09:38</a>) RAIDの再構築のような、胃が痛くなる待ち時間はもうありません。<br>
(<a href="#" class="imk-cue" data-seek="9:44" translate="no">00:09:44</a>) このシステムを導入して、私は「RAID」という呪縛から解放されました。<br>
(<a href="#" class="imk-cue" data-seek="9:50" translate="no">00:09:50</a>) メーカーも容量も違うHDDを自由に組み合わせ、古くなったら交換し、余ったら再利用する。<br>
(<a href="#" class="imk-cue" data-seek="9:56" translate="no">00:09:56</a>) DAS（ダイレクト・アタッチド・ストレージ）として各ディスクが独立しているため、万が一システムが壊れても、<br>
(<a href="#" class="imk-cue" data-seek="10:04" translate="no">00:10:04</a>) HDDを抜いて別のPCに繋げば、そのまま中のデータを読み出せます。<br>
(<a href="#" class="imk-cue" data-seek="10:09" translate="no">00:10:09</a>) 「資産の流動性」と「データの安全性」、この二つを、<br>
(<a href="#" class="imk-cue" data-seek="10:14" translate="no">00:10:14</a>) Mac miniという既存のリソースだけで手に入れることができました。<br>
(<a href="#" class="imk-cue" data-seek="10:20" translate="no">00:10:20</a>) 最後になります。<br>
(<a href="#" class="imk-cue" data-seek="10:22" translate="no">00:10:22</a>) 「DAS棚田式ファイル管理システム」は単なるバックアップツールではありません。<br>
(<a href="#" class="imk-cue" data-seek="10:25" translate="no">00:10:25</a>) 「判断と実行を分離する」という哲学に基づき、<br>
(<a href="#" class="imk-cue" data-seek="10:30" translate="no">00:10:30</a>) 私たちシニア世代が直面する「デジタル遺産の整理」と「資産の有効活用」を解決するためのソリューションです。<br>
(<a href="#" class="imk-cue" data-seek="10:37" translate="no">00:10:37</a>) NASのブラックボックス化に不安を感じている方、<br>
(<a href="#" class="imk-cue" data-seek="10:40" translate="no">00:10:40</a>) 手元のHDDをもっと自由に使いこなしたい方。<br>
(<a href="#" class="imk-cue" data-seek="10:44" translate="no">00:10:44</a>) 是非、ご自身のMac miniに「棚田」を作ってみてはいかがでしょうか。<br>
(<a href="#" class="imk-cue" data-seek="10:49" translate="no">00:10:49</a>) ご静聴、ありがとうございました。<br>
</p> </details>
<style>
details { font: 16px "Open Sans", Calibri, sans-serif; width: 100%; }
details > summary { padding: 2px 6px; width: 100%; background-color: #ddd; border: none; box-shadow: 3px 3px 4px black; cursor: pointer; list-style: none; }
details > p { font: 14px "Open Sans", Calibri, sans-serif; height:150px; overflow: scroll; background-color: #EDF7FF; padding: 2px 6px; margin: 0; box-shadow: 3px 3px 4px black; }
</style>
</div></div>            <script>
            document.addEventListener("DOMContentLoaded", function(){
                var video = document.getElementById("myVideo");
                if(!video) return;

                            });
            </script>
            

  <script>
  (function(){
    var me = document.currentScript;
    var wrapper = me ? me.closest('.sc-dynamic-embed') : null;

    function protectVideo() {
      var target = wrapper ? wrapper : document;
      var mediaEls = target.querySelectorAll('video, audio');
      mediaEls.forEach(function(v){
        if(v.dataset.protected === 'true') return;
        v.dataset.protected = 'true';
        v.setAttribute('controlsList', 'nodownload');
        v.oncontextmenu = function() { return false; };
        v.addEventListener('contextmenu', function(e){ e.preventDefault(); return false; }, false);
      });
    }

    function initSubtitles() {
      var target = wrapper ? wrapper : document;
      var video = target.querySelector('video, audio');
      var listContainer = target.querySelector('details > p');
      
      if (!video) return false; 
      
      if (video.dataset.subInit === 'true') return true; 
      video.dataset.subInit = 'true';

      var oldOverlay = target.querySelector('#subtitleOverlay') || target.querySelector('#scSubtitleOverlay');
      if (oldOverlay) {
          oldOverlay.style.setProperty('display', 'none', 'important');
          oldOverlay.innerHTML = ''; 
      }

      // 全画面・PiP・iOS全画面の判定（dr52.php準拠＋Safari presentationMode完全対応）
      function isSpecialMode() {
        var fsEl = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;
        var isFs = !!fsEl;
        var isWebkitFs = (video.webkitPresentationMode === "fullscreen") || !!video.webkitDisplayingFullscreen;
        var isPiP = !!(document.pictureInPictureElement && document.pictureInPictureElement === video) || (video.webkitPresentationMode === "picture-in-picture");
        return isFs || isWebkitFs || isPiP;
      }

      // 字幕トラックの表示/非表示を更新
      function updateTrackMode() {
        var hasList = (listContainer !== null);
        var desiredMode = (isSpecialMode() || !hasList) ? "showing" : "hidden";
        try {
          if (video.textTracks && video.textTracks.length > 0) {
            for (var i = 0; i < video.textTracks.length; i++) {
              var track = video.textTracks[i];
              if ((track.kind === 'subtitles' || track.kind === 'captions') && track.mode !== desiredMode) {
                track.mode = desiredMode;
              }
            }
          }
        } catch(e) {}
      }

      // 初回の反映
      updateTrackMode();

      // 各種全画面・PiP切り替えイベントの即時検知リスナーを登録（video本体・document双方を監視）
      ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'].forEach(function(evtName) {
        document.addEventListener(evtName, updateTrackMode, false);
        video.addEventListener(evtName, updateTrackMode, false);
      });
      video.addEventListener('webkitbeginfullscreen', updateTrackMode, false);
      video.addEventListener('webkitendfullscreen', updateTrackMode, false);
      video.addEventListener('webkitpresentationmodechanged', updateTrackMode, false);
      video.addEventListener('enterpictureinpicture', updateTrackMode, false);
      video.addEventListener('leavepictureinpicture', updateTrackMode, false);
      video.addEventListener('play', updateTrackMode, false);
      video.addEventListener('pause', updateTrackMode, false);

      // 字幕一覧が存在する場合のみ、リストのフォーマット処理を行う
      if (listContainer) {
          var detailsEl = target.querySelector("details");
          if (detailsEl) {
              detailsEl.open = true; 
              var summaryEl = detailsEl.querySelector("summary");
              if (summaryEl) summaryEl.textContent = "字幕(シーン)はここをクリック";
          }

          if (!listContainer.dataset.formatted) {
              var html = listContainer.innerHTML;
              var lines = html.split(/<br\s*\/?>/i);
              var newHtml = "";
              for(var j=0; j<lines.length; j++) {
                  if(lines[j].trim() === "") continue;
                  newHtml += "<span class='imk-line'>" + lines[j] + "</span><br>";
              }
              listContainer.innerHTML = newHtml;
              listContainer.dataset.formatted = "true";
          }

          var rootSublist = target.querySelector(".dr5-sublist") || listContainer.parentElement;
          if (rootSublist) {
            rootSublist.addEventListener("click", function(e){
              var a = e.target.closest && e.target.closest("a.imk-cue[data-seek]");
              if(!a) return;
              e.preventDefault();
              var ts = a.getAttribute("data-seek");
              if(!ts) return;
              var p = ts.trim().split(":").map(function(x){return parseInt(x,10)||0;});
              var sec = (p.length===2) ? p[0]*60+p[1] : (p.length===3 ? p[0]*3600+p[1]*60+p[2]: null);
              if(sec==null) return;
              try{ video.currentTime = sec; if(video.paused) video.play(); }catch(_){}
            });
          }
      }

      // 再生中（時間進行時）の追従とハイライト更新
      video.addEventListener("timeupdate", function(){
        updateTrackMode();

        var hasList = (listContainer !== null);
        if (!hasList) return;

        var cues = listContainer.querySelectorAll("a.imk-cue");
        if(cues.length === 0) return;
        var cur = video.currentTime;
        var activeA = null;

        for(var i=0; i<cues.length; i++){
            var ts = cues[i].getAttribute("data-seek");
            if(!ts) continue;
            var p = ts.trim().split(":").map(function(x){return parseInt(x,10)||0;});
            var t = (p.length===2) ? p[0]*60+p[1] : (p.length===3 ? p[0]*3600+p[1]*60+p[2] : null);
            if(t !== null && cur >= t - 0.5){ activeA = cues[i]; } 
            else if(t > cur){ break; }
        }

        if(activeA){
            var activeLine = activeA.closest(".imk-line");
            if(!activeLine) activeLine = activeA;

            if(activeLine.classList.contains("active-hl")) return;

            var allLines = listContainer.querySelectorAll(".imk-line");
            for(var k=0; k<allLines.length; k++) {
                allLines[k].classList.remove("active-hl");
                allLines[k].removeAttribute("style"); 
            }
            var allLinks = listContainer.querySelectorAll("a");
            for(var m=0; m<allLinks.length; m++) {
                allLinks[m].classList.remove("active-hl");
                allLinks[m].removeAttribute("style"); 
            }

            activeLine.classList.add("active-hl");
            activeLine.style.setProperty("background-color", "#ffff00", "important");
            activeLine.style.setProperty("color", "red", "important");
            activeLine.style.setProperty("font-weight", "normal", "important");
            
            var newLinks = activeLine.querySelectorAll("a");
            for(var n=0; n<newLinks.length; n++) {
                newLinks[n].style.setProperty("color", "red", "important");
                newLinks[n].style.setProperty("text-decoration", "none", "important");
            }

            if(listContainer.offsetParent !== null){
                var containerRect = listContainer.getBoundingClientRect();
                var activeRect = activeLine.getBoundingClientRect();
                var targetScroll = listContainer.scrollTop + (activeRect.top - containerRect.top) - (listContainer.clientHeight / 2) + (activeLine.clientHeight / 2);
                listContainer.scrollTo({ top: targetScroll, behavior: "smooth" });
            }
        }
      });

      return true;
    }

    var checks = 0;
    var checkTimer = setInterval(function(){
      protectVideo();
      var success = initSubtitles();
      checks++;
      if (success || checks > 20) { 
        clearInterval(checkTimer);
      }
    }, 500); 

    if (!window.scStopAndGo) {
      window.scStopAndGo = function(event, link){
        try{
          var mediaEls = document.querySelectorAll('video, audio');
          mediaEls.forEach(function(m){
            try{
              if (!m.paused) m.pause();
              if (document.pictureInPictureElement === m && document.exitPictureInPicture) {
                document.exitPictureInPicture().catch(function(){});
              }
            }catch(e){}
          });
        }finally{
          event.preventDefault();
          setTimeout(function(){
            if (link.target === '_blank') {
              window.open(link.href, '_blank');
            } else {
              window.location.href = link.href;
            }
          }, 50);
        }
        return false;
      };
    }
  })();
  </script>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">ポイント解説</h3>



<h5 class="wp-block-heading">（１）RAID→DASのメリット・デメリット</h5>



<p class="wp-block-paragraph"></p>



<div class="wp-block-cocoon-blocks-toggle-box-1 toggle-wrap toggle-box block-box not-nested-style cocoon-block-toggle"><input id="toggle-checkbox-202607140540060" class="toggle-checkbox" type="checkbox"/><label class="toggle-button" for="toggle-checkbox-202607140540060"><strong><span class="marker"><span class="fz-16px">メリット</span></span></strong></label><div class="toggle-content">
<figure class="wp-block-flexible-table-block-table"><table class="has-fixed-layout"><tbody><tr><td style="background-color:#dddddd"><strong>1. 異種混合ドライブの柔軟な活用（ハードウェア制約の撤廃）</strong></td></tr><tr><td><strong>サイズ違いの混在が可能:</strong><br>手元にある4TBのHDD、8TBのHDD、1TBのSSDといった、容量や規格がバラバラのドライブを自由に組み合わせることができます。これらを「T1（保管段）」「T2（長期保管段）」といった論理的な階層（棚田）に割り当てることで、一つの大きなストレージプールとして扱えます。</td></tr><tr><td><strong>コスト効率の最大化:</strong><br>高騰する大容量HDDを新たにペアで購入する必要がなく、余っているドライブや安価に入手できた単体のドライブを即座に戦力として投入できるため、経済的です。</td></tr><tr><td><strong>「処理ID」による独立したエコシステムの形成:</strong><br><code>tanada.csv</code>における「処理ID（例：<code>T0001</code>）」は、それぞれが独立したエコシステムを定義します。このシステムは常設する必要はありません。展示会の仮設システム用にHDDをかき集めたい、などという時にも使えます。</td></tr><tr><td style="background-color:#dddddd"><strong>2. 「資産の流動性」と安全な転用（HDDのレゴブロック化）</strong></td></tr><tr><td><strong>設定ひとつでHDDを空にする:</strong><br>例えば、T2（長期保管段）で使用している8TBのHDDを別のPCへ転用したい場合、Google Sheetsの設定（tanada.csv）でT2の容量制限を「0.0TB」に変更するだけです。</td></tr><tr><td><strong>自動かつ安全な退避:</strong><br>容量を0に設定してシミュレーションを実行すると、システムは「T2にはファイルを置けない」と判断し、T2内の全データを自動的に上位のT1（または他の空き領域）へ移動（逆流）させる「完璧な計画書」を作成します。</td></tr><tr><td><strong>物理作業の簡素化:</strong><br>承認ボタンを押して自動移動（Apply）が完了すれば、HDDは空っぽになるため、安心して取り外して転用できます。</td></tr><tr><td><strong>単体での可読性(プラグアンドプレイが出来る):</strong><br>NASやRAIDのアレイ（RAID 5など）に組み込まれたHDDは、1本だけ引き抜いて他のPCにUSB接続してもデータを読み出せません。しかし、このシステムのDAS構成では各HDDが独立した標準フォーマット（APFSやexFAT等）でフォーマットされているため、USBケーブルを抜いて別のPCに挿す（プラグアンドプレイ）だけで、即座に普通のHDDとしてデータを読み書きできます。</td></tr><tr><td style="background-color:#dddddd"><strong>3. 復旧プロセスの単純化（ボリュームリネームによる復旧）</strong></td></tr><tr><td><strong>シンプルなミラーリング:</strong><br>各段位（T0, T1&#8230;）に対して「main」と「mirror」というボリュームを用意し、FreeFileSyncなどの一般的なアプリで毎日コピーを作成できます。</td></tr><tr><td><strong>ボリューム名の変更で復旧:</strong><br>もし「T0_main」のディスクが故障した場合、バックアップである「T0_mirror」のボリューム名を「T0_main」に変更するだけで、システムは何事もなかったかのように稼働を再開できます。これはRAIDのリビルド待ち時間や専門知識を必要としない、極めて直感的な復旧方法です。</td></tr><tr><td style="background-color:#dddddd"><strong>4. 検索・閲覧の単純化</strong>:</td></tr><tr><td>巨大なフォルダ（例：「写真」）が、容量の都合で物理的にはT1とT2の2つのディスクに分断されて保存されていたとしても、ファイルパス（ディレクトリ構造）が完全に維持されているため、それらを重ね合わせて「一つの巨大な写真フォルダ」として閲覧することが容易です。</td></tr><tr><td style="background-color:#dddddd"><strong>5. 事故を防ぐ「判断」と「実行」の分離:</strong></td></tr><tr><td><strong>非破壊シミュレーション:</strong><br>実際のファイルを動かす前に、メタデータ上で移動計画を立てます。もし容量不足や設定ミスがあっても、実データは一切変更されていないため、何度でも設定をやり直すことができます。</td></tr><tr><td><strong>意図せぬ消失の防止:</strong><br>システムは承認された計画（Apply Plan DB）にある移動（MOVE）のみを愚直に実行し、計画にないファイルには一切触れないため、手作業のファイル整理で起こりがちな「誤って消去した」「どこへ行ったか分からない」という事故を原理的に防ぎます。</td></tr></tbody></table></figure>
</div></div>



<a rel="noopener" target="_blank" href="https://docs.google.com/drawings/d/1reHOYzdg1Zffd4MgP3MSSSWX9cRZMBoUtOMF6KqRe1o/edit?usp=sharing" 
>
<img decoding="async" src="https://docs.google.com/drawings/d/e/2PACX-1vQcI3mRZHmQjds4VBGxyCXx9XjR6xlb3dNdStLRcrd0roec6ukstckpztOs1PZempSw4IqLvMPbq-k3/pub?w=1920&#038;h=1440"
></a>



<div class="wp-block-cocoon-blocks-toggle-box-1 toggle-wrap toggle-box block-box not-nested-style cocoon-block-toggle"><input id="toggle-checkbox-202607140540061" class="toggle-checkbox" type="checkbox"/><label class="toggle-button" for="toggle-checkbox-202607140540061"><strong><span class="marker">デメリット</span></strong></label><div class="toggle-content">
<figure class="wp-block-flexible-table-block-table"><table class="has-fixed-layout"><tbody><tr><td style="background-color:#dddddd"><strong>1. 「可用性」の低下（ダウンタイムの発生）</strong></td></tr><tr><td><strong>復旧には手動介入が必要:</strong><br>本システムでは、各段位（T0, T1&#8230;）に対して「main」と「mirror」という独立したボリュームを作成し、同期アプリでコピーを取る運用が想定されています。もし「main」が故障した場合、RAIDのように自動で切り替わるのではなく、ユーザーが「mirror」のボリューム名を「main」に書き換える（リネームする）という復旧作業を行うまで、システムは停止します。</td></tr><tr><td><strong>リアルタイム同期ではない:</strong><br>常時同期するRAIDと異なり、FreeFileSyncなどで「毎日1回コピー」する運用の場合、故障したタイミングによっては、前回バックアップ以降のデータ（最大1日分）が失われる可能性があります。これを防ぐために**「作業は原則T0（Dropbox等）で行う」**というシステムの運用ルールを設定して、ハードウェア障害時のリスクを最小限に抑える「防波堤」としています。</td></tr><tr><td style="background-color:#dddddd"><strong>2. システム構築・維持の複雑さ（属人化のリスク）</strong></td></tr><tr><td><strong>環境依存:</strong><br>Pythonスクリプト、Google Cloud Platformの認証設定（JSONキー）、Macのフォルダ構造（<code>/Users/xxxxxxm1/...</code>）、LaunchAgentによるデーモン管理など、多くの依存関係の上に成り立っています。</td></tr><tr><td><strong>トラブルシューティングの難易度:</strong><br>もし「ボタンを押しても動かない」という事態になった場合、原因がGoogle APIの仕様変更なのか、ローカルのPython環境なのか、デーモンの停止なのかを切り分けるスキルが求められます。そんな理由もあって、ブログで中身を公開するとともに、AI(Gemeni/ChatGPTなど)の支援が受けやすいように考えています。</td></tr></tbody></table></figure>
</div></div>



<h5 class="wp-block-heading">（２）自宅のどんな場所で使っているのか。</h5>



<p class="wp-block-paragraph">棚田システムは非常に柔軟で、M1Mac miniで十分だし、その外付けドライブであれば（というかM1Macが認識できるドライブであれば)どれでも選定できます。現状、下の図の赤丸T0T1T2に棚田システムを設定しています。調べてみて自分で驚いたのですが、外付けドライブを11個も使っていました。まだあと外してあるものも数個あります。別に壊れているわけではないのに。資源やお金を無駄にしてきたと思います。<br>世界全体が巨大なRAIDで動いているために、実際どれくらい冗長に重複所有になっているか。AI需要がそれを爆増させているわけなので、あとあと、とてつもない廃棄物が出る。バブルの崩壊が起きそうですね。。ああ怖い。有効活用のことを本気で考えるべき時がやってきそうな気がします。</p>



<a rel="noopener" target="_blank" href="https://docs.google.com/drawings/d/1INrFZ_Q8zmGtWpZq7OUuv2RKofQrlrLqYylZwLLlxSY/edit?usp=sharing" 
>
<img decoding="async" src="https://docs.google.com/drawings/d/e/2PACX-1vSmkRqDIHqNWLvNC5vzih9yDGCf0In1GISEp-aO4ZLmZm6JMxR6Qt-fnozT8hD275HJJiThM0vnKyqH/pub?w=1920&#038;h=1440"
></a>



<p class="wp-block-paragraph">棚段の基本構成は、作業段(T0)、保管段(T1)、長期保管段(T2)の３構成ですが、流出流入の関係を規定すれば、もっと増やすこともできますし、逆に、２構成にするのもいいと思います。実際、私は、高齢者ですので、これからは減らす方向でいきたいと思っています。</p>



<h5 class="wp-block-heading">（３）実装</h5>



<p class="wp-block-paragraph">下記のトグルボックスにある青ボタンを押してtxtファイルをダウンロードして、AI(Gemini/ChatGPTなど)に理解させ、ご自身の環境に合わせた実装手順をお進みください。</p>



<div class="wp-block-cocoon-blocks-toggle-box-1 toggle-wrap toggle-box block-box not-nested-style cocoon-block-toggle"><input id="toggle-checkbox-202607140540062" class="toggle-checkbox" type="checkbox"/><label class="toggle-button" for="toggle-checkbox-202607140540062"><strong><span class="marker">実装手順</span></strong></label><div class="toggle-content">
<figure class="wp-block-flexible-table-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>DAS棚田処理_メタデータ実データ更新アルゴリズム：</strong></td></tr><tr><td><a href="https://imakat.com/script_list/?pubtxt=DAS棚田処理_メタデータ実データ更新アルゴリズム_pub.txt" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=zrU95MiY.png" alt="" style="width:120px; height:auto;"></a></td></tr><tr><td><strong>DAS棚田処理_メタデータDB仕様書：</strong></td></tr><tr><td><a href="https://imakat.com/script_list/?pubtxt=DAS棚田管理メタデータDB仕様書_pub.txt" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=zrU95MiY.png" alt="" style="width:120px; height:auto;"></a></td></tr><tr><td><strong>DAS棚田管理_メタデータ処理py_shコード：</strong><br>要約：Google Sheetsの「tanada」シートを設定CSV（tanada.csv）へ同期し、そのD列「転出パス」配下を全走査して世代SQLite（scan DB）を作成、さらにscan DB＋tanada.csvから全件の計画SQLite（plan DB）を1つ生成して「KEEP/MOVE/EXCLUDE」と新旧パス（abs_path/to_abs_path）を確定する一連のメタデータ用パイプライン。D列は1セル内の「,」や改行で複数パス指定可として分解し、重複は深いroot優先で排除。analyzeでは処理idごとに「転出パス1つ・転入パス1つ・除外パス複数可」を強制し、除外容量を差し引いた限度内でmtime降順に累積して新段位を決定、逆流（転出段≥転入段）はpipelineで拒否。最後にplan DBを集計し「どこ→どこへ/件数/容量」をMail.appで通知（print-only可）。das_runner.shがexport→pipeline→notifyをボタン1発で実行するランチャ。</td></tr><tr><td><a href="https://imakat.com/script_list/?pubtxt=DAS棚田管理_メタデータ処理py_sh_pub.txt" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=zrU95MiY.png" alt="" style="width:120px; height:auto;"></a></td></tr><tr><td><strong>DAS棚田管理_実データ更新処理コード：</strong><br>要約：このシステムは、Google Sheetsをインターフェースとしたファイル管理の自動化パイプラインです。<code>tanada_apply_button_daemon.py</code>は、Google Sheets上の手動ボタン（A10）によるAPPLY要求のみを監視し、深夜時間帯を除いて<code>tanada_apply.py</code>を起動します。<code>apply_runner.sh</code>は、SheetsのA8セルからファイル移動計画DBのパスを読み込み、それを固定名の適用DBにコピーし、<code>tanada_apply.py</code>を実行するためのシェルスクリプトです。コアロジックを担う<code>tanada_apply.py</code>は、適用DBに記録されたアクション（主にファイルの移動）をDRYRUNまたはAPPLYモードで実行します。このスクリプトは、「現段位がT0ではないファイルを新段位T0へ移動する」ポリシー違反を最優先でチェックし、違反があれば直ちに処理を停止する安全機構を備えています。処理結果はSheetsの指定セルにフィードバックされます。<code>tanada_make_apply_plan_db.py</code>は、シミュレーション結果DBから、<code>tanada_apply.py</code>が使用する固定名の適用計画DBを生成し、古いDBは世代管理してアーカイブします。<code>com.xxxxxxxxm1.tanada_apply_button_daemon.plist</code>は、デーモンをmacOSのLaunchAgentとして自動起動・常駐させ、必要な環境変数を設定します。このパイプラインは、手動トリガーと厳格な安全ポリシーにより、ファイル移動の誤操作を防ぎながらも自動化を実現しています。</td></tr><tr><td><a href="https://imakat.com/script_list/?pubtxt=DAS棚田管理_実データ更新処理_pub.txt" target="_blank"></a><a href="https://imakat.com/script_list/?pubtxt=DAS棚田管理_実データ更新処理_pub.txt" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=zrU95MiY.png" alt="" style="width:120px; height:auto;"></a></td></tr><tr><td><strong>DAS棚田管理_廃棄処理の規定：</strong></td></tr><tr><td><a href="https://imakat.com/script_list/?pubtxt=DAS棚田管理_廃棄処理の規定_pub.txt" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=zrU95MiY.png" alt="" style="width:120px; height:auto;"></a></td></tr><tr><td> コード(スクリプト)をもっと知りたい方はこちらへ↓</td></tr><tr><td><a rel="noopener" target="_blank" href="https://gemini.google.com/gem/1Dp-NLSA5j5OXE3B1Ki2IaBRCvq4CGa6t?usp=sharing"><img decoding="async" src="https://imakat.com/rd.php?id=s7BMZHhB.png" alt="" style="width:120px; height:auto;"></a></td></tr></tbody></table></figure>
</div></div>



<h5 class="wp-block-heading">（４）Google AI ProとAI Plusの切り替えにも役にたつ</h5>



<p class="wp-block-paragraph">生成AIのGoogle AI Proのストレージ容量は5TBと巨大です、月2900円です。それに対してGoogle AI Plusのその容量は400GBと中規模です、月725円です(&#8217;26年6月)。AI Proを使うほど長大なコーディングも必要なく画像や動画生成の頻度も落ち着いてきたので、AI Plusへダウングレードしようとした時、使用している容量が500GBだったとしましょう。その場合、100GB以上を別の場所に移動する必要があります。AI Proへアップグレードするときは特に注意事項はありませんが。このような時にも、GoogleDriveのローカルフォルダを作り、それをT0段に設定して、そのサイズをたとえば380GBに設定しておけば（除外フォルダも設定しておいて）、自動的に移動が行われ、料金のコントロールも簡単になります。</p>



<h5 class="wp-block-heading">（５）まとめ</h5>



<p class="wp-block-paragraph">残りの、廃棄処理、FreeFileSyncによるミラー同期処理、シャドウ・ディレクトリの作成、に関するコードは、完成し次第掲載していきます。ただし、他の処理への影響はありませんので、上の内容をそのまま使っても動きます。</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">28134</post-id>	</item>
		<item>
		<title>【Mac】M1 Mac miniと、M2 Mac miniを使い分けました。</title>
		<link>https://imakat.com/2024/10/30/23866/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Wed, 30 Oct 2024 06:42:38 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[Mac mini]]></category>
		<category><![CDATA[GoogleDrive]]></category>
		<category><![CDATA[Apple Intelligence]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=23866</guid>

					<description><![CDATA[制作用のパソコンは、フリーズが多くなってしまう。再起動がつきもの。 音楽制作や動画制作では、アプリのバグに振り回されて、結構、頻繁にフリーズして、Macを再起動することが起きます。その作業の最中に、並行して、Hazelや [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large is-resized"><a href="https://imakat.com/rd.php?id=IfXpZODc.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=IfXpZODc.png" alt="" style="width:171px;height:auto"/></a></figure>



<h5 class="wp-block-heading"><strong>制作用のパソコンは、フリーズが多くなってしまう。再起動がつきもの。</strong></h5>



<p class="wp-block-paragraph">音楽制作や動画制作では、アプリのバグに振り回されて、結構、頻繁にフリーズして、Macを再起動することが起きます。その作業の最中に、並行して、<a rel="noopener" target="_blank" href="https://note.com/fuun_inc/n/ndf99d4675c46">Hazel<span class="fa fa-external-link external-icon anchor-icon"></span></a>やAppleScriptなどのファイル更新の自動処理を行っているときに、そちらも、中断させられてしまいます。その逆もあります。いずれも、やり直しになります。</p>



<h5 class="wp-block-heading"><strong>ファイルの更新処理は切り離したい。</strong></h5>



<p class="wp-block-paragraph">やはり、制作類の作業を行うMacと、ファイル更新処理を行うMacなどのコンピュータは独立させた方が、全体としての安定性が向上します。</p>



<p class="wp-block-paragraph">但し、<a rel="noopener" target="_blank" href="https://pc.watch.impress.co.jp/docs/column/macinfo/1356257.html">クイックアクション<span class="fa fa-external-link external-icon anchor-icon"></span></a>などの、いわゆる生産性を上げるための操作は、制作作業Mac側で行い、ファイル更新処理Macの様子を別ウインドウで表示して横目で監視するようなやり方でも、問題なく使えるでしょう(例：上の写真)。</p>



<h5 class="wp-block-heading"><strong>ファイルサーバーとしても活用</strong></h5>



<p class="wp-block-paragraph">M1以降のMacはほとんど発熱もなく消費電力も小さいので、少なくともファイル更新処理Macは常時稼働で問題なく、いわばファイルサーバーのようにSynologyNASの頭脳のような位置付けで使用するのが相性が良さそうです。</p>



<h5 class="wp-block-heading"><strong>Mac miniもそうだが、Macは進歩はすれど安心して継承できる。</strong></h5>



<p class="wp-block-paragraph">つい先日、<em><a rel="noopener" target="_blank" href="https://www.apple.com/jp/newsroom/2024/10/apples-new-mac-mini-is-more-mighty-more-mini-and-built-for-apple-intelligence/">M4 Mac mini<span class="fa fa-external-link external-icon anchor-icon"></span></a></em>が発表され、どんどんコンパクトに強力になっていくことに驚いていますが、方向は、そうなるのだろうなと想像はしていました。</p>



<p class="wp-block-paragraph">つまりMacminiは、サーバーだと思えば、電源スイッチを底面にしたのもガッテンです。NASの電源スイッチなど１年に1回触るかどうかです。</p>



<p class="wp-block-paragraph">しかしよくよく考えて、最新鋭のM4 Mac miniをサーバー的に使うのは勿体無いわけで、もしM4 Mac miniを制作系の作業で使うなら、アプリ側の更新の遅れで頻繁なフリーズに悩まされて、何度も電源スイッチの入り切りを行うことになるわけですから、いっそのことスイッチ付きテーブルタップを、自分の一番使いやすい位置に取り付ける、そういう結論になるのだと思います。まあ小さい話です。</p>



<h5 class="wp-block-heading"><strong>先入先出の作業方法をApple Intelligenceに考えてもらいたい</strong>。</h5>



<p class="wp-block-paragraph">OSは今回、１世代前のSonomaにアップしました。それは１年遅れで信頼性を確保したいからです。次のOSの更新を焦るつもりはありません。ハードに依存します。ハードは、いずれは、M4 Macminiなどがメイン機になり、今あるM2 Macminiがサブになる、古いものから順に引退する、つまり先入先出になるわけです。課題は、特に音楽制作は、Mac本体内のディスク容量を食うのでM2 Macminiは1TBとしてきました。どういうことかと言うと、音楽制作のDAWは、多種多様な音源をロードして使います。そのロードに時間がかかるのです。その音源のうち音源データ部分は外部SSDなどへ逃すにしても、アプリケーション部分は本体内に残すようにしないと、ロード時間を短くできないのです。前述したように、そのDAW、音源アプリさらにはOSとハードとの間で、バグや相性不具合が生じて強制的な起動が頻発するわけです。どうにかならないかとストレスを抱えます。しかし、M4 Macmini1TBともなると、また高価格になっていくので、なかなか、ついていけませんね。&nbsp; 次は何とかメイン機のディスク容量を512GBで抑制できないか、そのように改善したいです。その診断と解決策をApple Intelligenceに考えてもらえたら助かりますね。<br></p>



<h2 class="wp-block-heading">ポイント解説</h2>



<a rel="noopener" target="_blank" href="https://docs.google.com/drawings/d/1wR0pNTej5OTjO6YDLAl1n4Qv4aPU2XUVy0Fa9nvfzqw/edit?usp=sharing">
<img decoding="async" src="https://docs.google.com/drawings/d/e/2PACX-1vRx4i39wHFUdJESf6--9Ye-wHGA2aCyg3duM3o5cEBaHc3qfL70csV408TdEiPBee62KSTD63yaxKTl/pub?w=960&#038;h=720"
></a>



<h4 class="wp-block-heading">１　<strong>DropboxとGoogleDriveの間のデータの更新方法について</strong></h4>



<p class="wp-block-paragraph">クラウドストレージとクラウドストレージの同期を行うのにはどうするか(※1)。それまた別のクラウドストレージによるサービスもあるのですが、両方ともデータはローカルにあり、SSDの中あるいはNASの中にあるので、ローカルで更新を行う方法を選択します。<a rel="noopener" target="_blank" href="https://atmarkit.itmedia.co.jp/ait/articles/1702/02/news031.html">rsync<span class="fa fa-external-link external-icon anchor-icon"></span></a>を使う方法が一般的です。これはNASの中でもMacのSSDの中でも使用できます。NASの中で行う方法について、別の投稿で、説明するつもりです。</p>



<p class="wp-block-paragraph">更新の方向ですが、Dropboxが更新されたらGoogleDriveが更新される、from Dropbox to GoogleDriveにします。つまり、基本的なローカルでのファイル作成作業はDropboxで行うこととします。</p>



<p class="wp-block-paragraph">※１：SynologyNASのアプリにCloudSyncがありますが、これは、ローカルのフォルダやファイルに対しては、一つだけのクラウドストレージしか指定できません。</p>



<h4 class="wp-block-heading">２　<strong>GoogleDriveも使う理由</strong></h4>



<p class="wp-block-paragraph">それならDropboxだけでいいではないか、と思われるところですが、それは早計でして、GoogleDriveを使う理由は、AppSheetを使いたい、GASを使いたい、スプレッドシートを使いたい、それらのためにGoogleDriveが必要になるからです。<br>いえそれなら、GoogleDriveだけでいいではないか。と思われるでしょうが、これまた勇み足でして、字幕の扱いがうまくいかないため動画をリンクで使うのが困難。ならDropboxの方がマシということが大きいです(<a href="https://imakat.com/vm5?movid=905195687" target="_blank">解説&#x1f3a5;</a>)。</p>



<h4 class="wp-block-heading">３　Dropboxデスクトップアプリによるファイル操作がラク</h4>



<p class="wp-block-paragraph">Dropboxにある写真や動画をWordPressへリンクするためにDropboxリンクを取得しようとするとき、Dropbox.comのサイトから入るのはちょっと手間がかかり過ぎです。Dropboxのローカルファイルから右クリックで取得できれば簡単です。SynologyNASは、そのフォルダをDropboxと同期することはできますがしかし、SynologyNASのDropboxのフォルダからは、それを右クリックしてもDropboxリンクの取得はできません。Dropboxデスクトップアプリが提供されていないためです。この辺りが、SynologyNASをパソコン的に使えないと感じる部分です。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=ahzb0Tb5.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=ahzb0Tb5.png" alt=""/></a><figcaption class="wp-element-caption">SynologyNAS</figcaption></figure>



<p class="wp-block-paragraph">その点、MacやWindowsでは、デスクトップアプリが提供されているため、以下のように、MacのFinderからでも、Dropboxリンクが取得できます。GoogleDriveでも同様に、リンク取得が可能です。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://imakat.com/rd.php?id=ZZh7TyOF.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=ZZh7TyOF.png" alt="" style="width:800px;height:auto"/></a><figcaption class="wp-element-caption">M1 Mac mini  一部、高画質での提供の動画は視聴できません。</figcaption></figure>



<p class="wp-block-paragraph">M1 Mac miniは、M2 Mac miniからの画面共有(<a href="https://imakat.com/script_list/?pubtxt=M1Macの画面共有を起動する_pub.txt" target="_blank">スクリプト&#x1f4d2;</a>)の形にしています。共用のモニター、キーボード、マウスで操作しています。</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">以上</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">23866</post-id>	</item>
		<item>
		<title>Macで「音声認識字幕ちゃん」を使いやすくする。</title>
		<link>https://imakat.com/2023/11/17/18463/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Fri, 17 Nov 2023 09:00:00 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[OBS]]></category>
		<category><![CDATA[音声認識字幕ちゃん]]></category>
		<category><![CDATA[Window Resizer]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mac mini]]></category>
		<category><![CDATA[STREAM DECK]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=18463</guid>

					<description><![CDATA[「音声認識字幕ちゃん」のサイズ調整 最近、ちまたでもスマホの翻訳アプリ、翻訳機器などを目にすることが多くなってきました。しかも同時翻訳までできてしまうのには驚きです。ただ、いざ使おうと思うと、最初はお試しで無料ですが、有 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator has-text-color has-key-color-color has-alpha-channel-opacity has-key-color-background-color has-background is-style-wide"/>



<h5 class="wp-block-heading">「音声認識字幕ちゃん」のサイズ調整</h5>


<div class="sc-dynamic-embed">
  <style>
  /* リンクの見た目を整える */
  .sc-dynamic-embed .sc-link-container { 
      display: flex; 
      margin-bottom: 10px; 
      flex-wrap: wrap; 
      align-items: center; 
  }
  .sc-dynamic-embed .sc-link { margin-bottom: 0; }
  .sc-dynamic-embed .sc-link a {
    font-size: 15px; 
    font-weight: normal;
    text-decoration: underline;
    color: #0073aa;
  }
  .sc-dynamic-embed .sc-link a:hover { text-decoration: none; color: #000; }
  
  @media (max-width: 500px) {
    .sc-dynamic-embed .sc-link a { font-size: 13px; }
  }

  .sc-dynamic-embed .imk-line {
      display: inline-block;
      width: 100%;
      border-radius: 2px;
      transition: background-color 0.1s;
  }

  .sc-dynamic-embed #subtitleOverlay,
  .sc-dynamic-embed #scSubtitleOverlay,
  .sc-dynamic-embed .overlay-cue,
  .sc-dynamic-embed .band {
      display: none !important;
      opacity: 0 !important;
      visibility: hidden !important;
      pointer-events: none !important;
  }
  </style>

  <div class="sc-link-container">
    <p class="sc-link">
      <!-- ★環境依存排除：固定ドメインをルート相対パスへ置換完了 -->
      <a href="/ds62/?drid=26" target="_blank"
         onclick="return scStopAndGo(event, this);">
        👉低画質・枠外字幕はこちら
      </a>
    </p>
  </div>

  <!-- ★環境依存排除：[dynamic_external_html] にルート相対パスを指定し、functions.phpにURL動的解決を委ねる設計 -->
  <style>
            :root{ --dr5emd-max: 1920px; }
            #subtitleOverlay, #scSubtitleOverlay, .overlay-cue, .band { display: none !important; opacity: 0 !important; }
            .imk-line { display: inline-block; width: 100%; border-radius: 2px; transition: background-color 0.1s; }
            .dr5emd-sublist details > p{ height:200px; overflow:auto; background-color:#EDF7FF; padding:2px 6px; margin:0; box-shadow:3px 3px 4px black; position: relative; }
            .dr5emd-sublist details > summary{ padding:2px 6px; width:100%; background-color:#ddd; border:none; box-shadow:3px 3px 4px black; cursor:pointer; list-style:none; }
            
                .video-wrap{position:relative;width:100%;margin:0 auto}
                #myVideo{width:100%;height:auto;min-height:200px;display:block;background:#000;}</style><div class="dr5emd-container"><div class="video-wrap"><video id="myVideo" controls poster="https://imakat.com/rd.php?id=SZyJ0Iso.png" playsinline preload="none" style="width:100%;height:auto;">  <source src="https://imakat.com/rd.php?id=ffhDUfn3.mp4" type="video/mp4">  <track src="https://imakat.com/rd.php?id=uMEIIFOK.vtt" label="日本語" srclang="ja" kind="subtitles"></video></div><div class="dr5emd-sublist"><details><summary>字幕一覧(クリック)</summary> <p>
(<a href="#" class="imk-cue" data-seek="0:01">00:00:01</a>)  今回は「音声認識字幕ちゃん」のですね。<br>
(<a href="#" class="imk-cue" data-seek="0:10">00:00:10</a>)  サイズを調整する、というテーマでやっていきます。<br>
(<a href="#" class="imk-cue" data-seek="0:15">00:00:15</a>)  「音声認識字幕ちゃん」はですね。<br>
(<a href="#" class="imk-cue" data-seek="0:18">00:00:18</a>)  Google Chromeでしか起動できないのです！<br>
(<a href="#" class="imk-cue" data-seek="0:23">00:00:23</a>)  で、このhttps以下ここにある、<br>
(<a href="#" class="imk-cue" data-seek="0:30">00:00:30</a>)  これを入れて立ち上げるのですが、そうすると下のように、<br>
(<a href="#" class="imk-cue" data-seek="0:38">00:00:38</a>)  ホームページが出てくるのですが、<br>
(<a href="#" class="imk-cue" data-seek="0:41">00:00:41</a>)  この中で、Google Script API-KEYがありますが、<br>
(<a href="#" class="imk-cue" data-seek="0:46">00:00:46</a>)  ここに、API KEYを入れるんですね。<br>
(<a href="#" class="imk-cue" data-seek="0:52">00:00:52</a>)  それはちょっとまた別の場面で、ここのURLからですね、<br>
(<a href="#" class="imk-cue" data-seek="0:58">00:00:58</a>)  設定方法を見て、取得して入力してください。<br>
(<a href="#" class="imk-cue" data-seek="1:05">00:01:05</a>)  それは今回は説明しません。<br>
(<a href="#" class="imk-cue" data-seek="1:13">00:01:13</a>)  それで、まず、<br>
(<a href="#" class="imk-cue" data-seek="1:15">00:01:15</a>)  Google Chromeを、表示するのですけれども、<br>
(<a href="#" class="imk-cue" data-seek="1:20">00:01:20</a>)  Google Chromeから、<br>
(<a href="#" class="imk-cue" data-seek="1:22">00:01:22</a>)  「音声認識字幕ちゃん」を表示するのですけれども、<br>
(<a href="#" class="imk-cue" data-seek="1:27">00:01:27</a>)  それが、OBSの画面上のどの位置に配置するか、<br>
(<a href="#" class="imk-cue" data-seek="1:33">00:01:33</a>)  どの大きさで配置するか、というのは、<br>
(<a href="#" class="imk-cue" data-seek="1:36">00:01:36</a>)  人によって様々だと思いますので、<br>
(<a href="#" class="imk-cue" data-seek="1:42">00:01:42</a>)  それに合わせるために、<br>
(<a href="#" class="imk-cue" data-seek="1:45">00:01:45</a>)  ウィンドウサイズを、<br>
(<a href="#" class="imk-cue" data-seek="1:47">00:01:47</a>)  色々変えれるようにしておく必要があるんですね。<br>
(<a href="#" class="imk-cue" data-seek="1:51">00:01:51</a>)  それでこのプラグインを入れます。<br>
(<a href="#" class="imk-cue" data-seek="1:55">00:01:55</a>)  Window Resizerというものです。<br>
(<a href="#" class="imk-cue" data-seek="2:01">00:02:01</a>)  Chromeウェブストアから拡張機能を選んで、<br>
(<a href="#" class="imk-cue" data-seek="2:07">00:02:07</a>)  その中で検索のところに、<br>
(<a href="#" class="imk-cue" data-seek="2:11">00:02:11</a>)  Window Resizerと入れて、このアプリケションを探して、<br>
(<a href="#" class="imk-cue" data-seek="2:19">00:02:19</a>)  それでダウンロードしてください。<br>
(<a href="#" class="imk-cue" data-seek="2:26">00:02:26</a>)  で、次にWindow Resizerの設定をします。<br>
(<a href="#" class="imk-cue" data-seek="2:31">00:02:31</a>)  すでに既定値として、ご覧のように320以下ですね、<br>
(<a href="#" class="imk-cue" data-seek="2:38">00:02:38</a>)  この1920までが既定値としてあるのですけれども、<br>
(<a href="#" class="imk-cue" data-seek="2:43">00:02:43</a>)  サイズのですね、<br>
(<a href="#" class="imk-cue" data-seek="2:44">00:02:44</a>)  ところがやっぱり私としては、<br>
(<a href="#" class="imk-cue" data-seek="2:48">00:02:48</a>)  OBSの画面の右下のところに、翻訳が出るなら出したいので、<br>
(<a href="#" class="imk-cue" data-seek="2:54">00:02:54</a>)  もうちょっと小さいサイズのものを作りたいです。<br>
(<a href="#" class="imk-cue" data-seek="2:58">00:02:58</a>)  そこで819 x 614というものを作りたいと思うので、<br>
(<a href="#" class="imk-cue" data-seek="3:04">00:03:04</a>)  自分で作ります。<br>
(<a href="#" class="imk-cue" data-seek="3:07">00:03:07</a>)  このpresetsのところの、+のところを押して、<br>
(<a href="#" class="imk-cue" data-seek="3:12">00:03:12</a>)  そうすると別の画面に移行して設定ができます。<br>
(<a href="#" class="imk-cue" data-seek="3:16">00:03:16</a>)  で、それの設定が済みますと、<br>
(<a href="#" class="imk-cue" data-seek="3:19">00:03:19</a>)  このpresetsの一番上段のところに、<br>
(<a href="#" class="imk-cue" data-seek="3:23">00:03:23</a>)  今設定した新しいものが出てきます。<br>
(<a href="#" class="imk-cue" data-seek="3:34">00:03:34</a>)  Window Resizer設定のもう一つです。<br>
(<a href="#" class="imk-cue" data-seek="3:39">00:03:39</a>)  それは、hotkeysでpresetを設定します。<br>
(<a href="#" class="imk-cue" data-seek="3:46">00:03:46</a>)  presetの上から、<br>
(<a href="#" class="imk-cue" data-seek="3:49">00:03:49</a>)  presetが1,2,3,4,5...と順番が付いてますけども、<br>
(<a href="#" class="imk-cue" data-seek="3:54">00:03:54</a>)  これが先程のこの順番と対応してます。<br>
(<a href="#" class="imk-cue" data-seek="4:00">00:04:00</a>)  従って、<br>
(<a href="#" class="imk-cue" data-seek="4:01">00:04:01</a>)  今私が作った819 x 614は、<br>
(<a href="#" class="imk-cue" data-seek="4:07">00:04:07</a>)  この下の、Resize to preset 1 に対応しています。<br>
(<a href="#" class="imk-cue" data-seek="4:13">00:04:13</a>)  従って私はここに、登録しました。次に。<br>
(<a href="#" class="imk-cue" data-seek="4:25">00:04:25</a>)  もう一つ準備することがあります。<br>
(<a href="#" class="imk-cue" data-seek="4:29">00:04:29</a>)  Google Chromeで、<br>
(<a href="#" class="imk-cue" data-seek="4:31">00:04:31</a>)  「音声認識字幕ちゃん」を起動させるための、<br>
(<a href="#" class="imk-cue" data-seek="4:35">00:04:35</a>)  Appleスクリプトが必要になることです。<br>
(<a href="#" class="imk-cue" data-seek="4:40">00:04:40</a>)  それは既定ブラウザをChromeにしていない場合も多いためです。<br>
(<a href="#" class="imk-cue" data-seek="4:51">00:04:51</a>)  スクリプトは簡単です。<br>
(<a href="#" class="imk-cue" data-seek="4:54">00:04:54</a>)  tell application "Google Chrome"<br>
(<a href="#" class="imk-cue" data-seek="5:00">00:05:00</a>)  activate open location <br>
(<a href="#" class="imk-cue" data-seek="5:05">00:05:05</a>)  「音声認識字幕ちゃん」のURLを入れます。<br>
(<a href="#" class="imk-cue" data-seek="5:11">00:05:11</a>)  そして、end tell です。<br>
(<a href="#" class="imk-cue" data-seek="5:19">00:05:19</a>)  その設定したものを、Stream Deckへ登録します。<br>
(<a href="#" class="imk-cue" data-seek="5:26">00:05:26</a>)  Stream Deckで、マルチアクションという形で登録します。<br>
(<a href="#" class="imk-cue" data-seek="5:30">00:05:30</a>)  一つ目は、Chromeで、<br>
(<a href="#" class="imk-cue" data-seek="5:33">00:05:33</a>)  「音声認識字幕ちゃん」を開くAppleスクリプトです。<br>
(<a href="#" class="imk-cue" data-seek="5:40">00:05:40</a>)  二つ目は開いたChromeのサイズ合わせをします。<br>
(<a href="#" class="imk-cue" data-seek="5:48">00:05:48</a>)  先ほど設定したホットキーです。<br>
(<a href="#" class="imk-cue" data-seek="5:56">00:05:56</a>)  以上で設定は終わりです。<br>
(<a href="#" class="imk-cue" data-seek="6:00">00:06:00</a>)  で、Stream Deckからそのマルチアクションを起動します。<br>
(<a href="#" class="imk-cue" data-seek="6:05">00:06:05</a>)  そうすると下のようにですね、Chromeが立ち上がります。<br>
(<a href="#" class="imk-cue" data-seek="6:12">00:06:12</a>)  最初に立ち上げた時は、<br>
(<a href="#" class="imk-cue" data-seek="6:14">00:06:14</a>)  マイクの使用がまだ許可されてないと思いますので、<br>
(<a href="#" class="imk-cue" data-seek="6:18">00:06:18</a>)  それを許可します。<br>
(<a href="#" class="imk-cue" data-seek="6:21">00:06:21</a>)  そうすると以下のように表示されます。<br>
(<a href="#" class="imk-cue" data-seek="6:24">00:06:24</a>)  おはようございます<br>
(<a href="#" class="imk-cue" data-seek="6:26">00:06:26</a>)  Good morning、早上好。<br>
(<a href="#" class="imk-cue" data-seek="6:30">00:06:30</a>)  既にですね。第一翻訳語として英語、第二翻訳語として中国語を設定してあります。<br>
(<a href="#" class="imk-cue" data-seek="6:38">00:06:38</a>)  なのでこういうふうに出てきます。以上で準備が終わりまして、<br>
(<a href="#" class="imk-cue" data-seek="6:49">00:06:49</a>)  次のステップはこれをOBSへ取り込む、<br>
(<a href="#" class="imk-cue" data-seek="6:54">00:06:54</a>)  そういう流れになります。<br>
</p> </details>
<style>
details { font: 16px "Open Sans", Calibri, sans-serif; width: 100%; }
details > summary { padding: 2px 6px; width: 100%; background-color: #ddd; border: none; box-shadow: 3px 3px 4px black; cursor: pointer; list-style: none; }
details > p { font: 14px "Open Sans", Calibri, sans-serif; height:150px; overflow: scroll; background-color: #EDF7FF; padding: 2px 6px; margin: 0; box-shadow: 3px 3px 4px black; }
</style>
</div></div>            <script>
            document.addEventListener("DOMContentLoaded", function(){
                var video = document.getElementById("myVideo");
                if(!video) return;

                            });
            </script>
            

  <script>
  (function(){
    var me = document.currentScript;
    var wrapper = me ? me.closest('.sc-dynamic-embed') : null;

    function protectVideo() {
      var target = wrapper ? wrapper : document;
      var mediaEls = target.querySelectorAll('video, audio');
      mediaEls.forEach(function(v){
        if(v.dataset.protected === 'true') return;
        v.dataset.protected = 'true';
        v.setAttribute('controlsList', 'nodownload');
        v.oncontextmenu = function() { return false; };
        v.addEventListener('contextmenu', function(e){ e.preventDefault(); return false; }, false);
      });
    }

    function initSubtitles() {
      var target = wrapper ? wrapper : document;
      var video = target.querySelector('video, audio');
      var listContainer = target.querySelector('details > p');
      
      if (!video) return false; 
      
      if (video.dataset.subInit === 'true') return true; 
      video.dataset.subInit = 'true';

      var oldOverlay = target.querySelector('#subtitleOverlay') || target.querySelector('#scSubtitleOverlay');
      if (oldOverlay) {
          oldOverlay.style.setProperty('display', 'none', 'important');
          oldOverlay.innerHTML = ''; 
      }

      // 全画面・PiP・iOS全画面の判定（dr52.php準拠＋Safari presentationMode完全対応）
      function isSpecialMode() {
        var fsEl = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;
        var isFs = !!fsEl;
        var isWebkitFs = (video.webkitPresentationMode === "fullscreen") || !!video.webkitDisplayingFullscreen;
        var isPiP = !!(document.pictureInPictureElement && document.pictureInPictureElement === video) || (video.webkitPresentationMode === "picture-in-picture");
        return isFs || isWebkitFs || isPiP;
      }

      // 字幕トラックの表示/非表示を更新
      function updateTrackMode() {
        var hasList = (listContainer !== null);
        var desiredMode = (isSpecialMode() || !hasList) ? "showing" : "hidden";
        try {
          if (video.textTracks && video.textTracks.length > 0) {
            for (var i = 0; i < video.textTracks.length; i++) {
              var track = video.textTracks[i];
              if ((track.kind === 'subtitles' || track.kind === 'captions') && track.mode !== desiredMode) {
                track.mode = desiredMode;
              }
            }
          }
        } catch(e) {}
      }

      // 初回の反映
      updateTrackMode();

      // 各種全画面・PiP切り替えイベントの即時検知リスナーを登録（video本体・document双方を監視）
      ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'].forEach(function(evtName) {
        document.addEventListener(evtName, updateTrackMode, false);
        video.addEventListener(evtName, updateTrackMode, false);
      });
      video.addEventListener('webkitbeginfullscreen', updateTrackMode, false);
      video.addEventListener('webkitendfullscreen', updateTrackMode, false);
      video.addEventListener('webkitpresentationmodechanged', updateTrackMode, false);
      video.addEventListener('enterpictureinpicture', updateTrackMode, false);
      video.addEventListener('leavepictureinpicture', updateTrackMode, false);
      video.addEventListener('play', updateTrackMode, false);
      video.addEventListener('pause', updateTrackMode, false);

      // 字幕一覧が存在する場合のみ、リストのフォーマット処理を行う
      if (listContainer) {
          var detailsEl = target.querySelector("details");
          if (detailsEl) {
              detailsEl.open = true; 
              var summaryEl = detailsEl.querySelector("summary");
              if (summaryEl) summaryEl.textContent = "字幕(シーン)はここをクリック";
          }

          if (!listContainer.dataset.formatted) {
              var html = listContainer.innerHTML;
              var lines = html.split(/<br\s*\/?>/i);
              var newHtml = "";
              for(var j=0; j<lines.length; j++) {
                  if(lines[j].trim() === "") continue;
                  newHtml += "<span class='imk-line'>" + lines[j] + "</span><br>";
              }
              listContainer.innerHTML = newHtml;
              listContainer.dataset.formatted = "true";
          }

          var rootSublist = target.querySelector(".dr5-sublist") || listContainer.parentElement;
          if (rootSublist) {
            rootSublist.addEventListener("click", function(e){
              var a = e.target.closest && e.target.closest("a.imk-cue[data-seek]");
              if(!a) return;
              e.preventDefault();
              var ts = a.getAttribute("data-seek");
              if(!ts) return;
              var p = ts.trim().split(":").map(function(x){return parseInt(x,10)||0;});
              var sec = (p.length===2) ? p[0]*60+p[1] : (p.length===3 ? p[0]*3600+p[1]*60+p[2]: null);
              if(sec==null) return;
              try{ video.currentTime = sec; if(video.paused) video.play(); }catch(_){}
            });
          }
      }

      // 再生中（時間進行時）の追従とハイライト更新
      video.addEventListener("timeupdate", function(){
        updateTrackMode();

        var hasList = (listContainer !== null);
        if (!hasList) return;

        var cues = listContainer.querySelectorAll("a.imk-cue");
        if(cues.length === 0) return;
        var cur = video.currentTime;
        var activeA = null;

        for(var i=0; i<cues.length; i++){
            var ts = cues[i].getAttribute("data-seek");
            if(!ts) continue;
            var p = ts.trim().split(":").map(function(x){return parseInt(x,10)||0;});
            var t = (p.length===2) ? p[0]*60+p[1] : (p.length===3 ? p[0]*3600+p[1]*60+p[2] : null);
            if(t !== null && cur >= t - 0.5){ activeA = cues[i]; } 
            else if(t > cur){ break; }
        }

        if(activeA){
            var activeLine = activeA.closest(".imk-line");
            if(!activeLine) activeLine = activeA;

            if(activeLine.classList.contains("active-hl")) return;

            var allLines = listContainer.querySelectorAll(".imk-line");
            for(var k=0; k<allLines.length; k++) {
                allLines[k].classList.remove("active-hl");
                allLines[k].removeAttribute("style"); 
            }
            var allLinks = listContainer.querySelectorAll("a");
            for(var m=0; m<allLinks.length; m++) {
                allLinks[m].classList.remove("active-hl");
                allLinks[m].removeAttribute("style"); 
            }

            activeLine.classList.add("active-hl");
            activeLine.style.setProperty("background-color", "#ffff00", "important");
            activeLine.style.setProperty("color", "red", "important");
            activeLine.style.setProperty("font-weight", "normal", "important");
            
            var newLinks = activeLine.querySelectorAll("a");
            for(var n=0; n<newLinks.length; n++) {
                newLinks[n].style.setProperty("color", "red", "important");
                newLinks[n].style.setProperty("text-decoration", "none", "important");
            }

            if(listContainer.offsetParent !== null){
                var containerRect = listContainer.getBoundingClientRect();
                var activeRect = activeLine.getBoundingClientRect();
                var targetScroll = listContainer.scrollTop + (activeRect.top - containerRect.top) - (listContainer.clientHeight / 2) + (activeLine.clientHeight / 2);
                listContainer.scrollTo({ top: targetScroll, behavior: "smooth" });
            }
        }
      });

      return true;
    }

    var checks = 0;
    var checkTimer = setInterval(function(){
      protectVideo();
      var success = initSubtitles();
      checks++;
      if (success || checks > 20) { 
        clearInterval(checkTimer);
      }
    }, 500); 

    if (!window.scStopAndGo) {
      window.scStopAndGo = function(event, link){
        try{
          var mediaEls = document.querySelectorAll('video, audio');
          mediaEls.forEach(function(m){
            try{
              if (!m.paused) m.pause();
              if (document.pictureInPictureElement === m && document.exitPictureInPicture) {
                document.exitPictureInPicture().catch(function(){});
              }
            }catch(e){}
          });
        }finally{
          event.preventDefault();
          setTimeout(function(){
            if (link.target === '_blank') {
              window.open(link.href, '_blank');
            } else {
              window.location.href = link.href;
            }
          }, 50);
        }
        return false;
      };
    }
  })();
  </script>
</div>



<hr class="wp-block-separator has-text-color has-key-color-color has-alpha-channel-opacity has-key-color-background-color has-background is-style-dots"/>



<p class="wp-block-paragraph">最近、ちまたでもスマホの翻訳アプリ、翻訳機器などを目にすることが多くなってきました。しかも同時翻訳までできてしまうのには驚きです。ただ、いざ使おうと思うと、最初はお試しで無料ですが、有料に誘われます。しかもこの翻訳系のサービスは、サブスクが殆どで、毎月料金が発生する形になります。しかもその提供会社はたいていは海外の会社でUSドルベースが多く、円支払いでは毎月3000~5000円などと高額になり、趣味の域を超えます。</p>



<p class="wp-block-paragraph">今回紹介する「音声認識字幕ちゃん」は、大学の教員をされている西村良太さんが個人で開発され一般に公開されている、<strong>「Webベースの、文字起こし＋同時翻訳アプリ」です。大変使いやすくしかも無料</strong>です。西村さんには感謝申し上げます。</p>



<p class="wp-block-paragraph">このサイトで提供されている起動用アプリですが、Windows用のbatファイルは直接に動作するので使いやすいですが、Macはそのままクリックしても動かずシェルスクリプトでアプリ化して動かすようにしました。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=6Tp6Gvsb.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=6Tp6Gvsb.png" alt=""/></a><figcaption class="wp-element-caption">MacのAutomatorを起動→アプリケーションを選択→シェルスクリプトを実行を選択→「音声認識字幕ちゃん」からダウンロードしたmac用起動ファイルjimakuChan_nonStop.commandをテキストエディタで開く→最初の#!/bin/shの部分を除いて、Automatorへペースト→xxxxxx.appを作成。</figcaption></figure>



<p class="wp-block-paragraph">Macは一手間増える感じもありますが、異なる設定条件の複数の字幕ちゃんを起動できるのは素晴らしいことです。</p>



<p class="wp-block-paragraph">但し、OBSに組み込んで使う時などは、都度、翻訳なしにしたり、言語を切り替えたりすることもありそうで、そうした自由度は、<strong>Webベースの中で、設定を変更できる方が、都合がいい</strong>と思い、今回は、Webをそのまま使うような流れを考えてみました。</p>



<p class="wp-block-paragraph">但し、日本語の認識、及び、翻訳のレベルは、それほど高いとは言えず、語学を勉強された方からすれば、不満でしょう。標準語でゆっくり話す必要があります。またネットワークの状況で認識の感度が振れます。補助的な用途としてであれば、使い物になるでしょう。</p>



<h3 class="wp-block-heading">ポイント解説</h3>



<p class="wp-block-paragraph">ビデオを補足します。</p>



<h4 class="wp-block-heading">１　「音声認識字幕ちゃん」はGoogle Chromeで起動する。</h4>



<p class="wp-block-paragraph">同時翻訳を行う場合は、Google Script API-KEYが必要です。その取得については、</p>


<a rel="noopener" target="_blank" href="http://www.sayonari.com/trans_asr/index_asr.html" title="音声認識字幕ちゃん｜話した言葉がそのまま字幕に（無料・インストール不要）" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img data-recalc-dims="1" fetchpriority="high" decoding="async" src="https://i0.wp.com/imakat.com/wp-content/uploads/cocoon-resources/blog-card-cache/fbb66183665a290360f4d065d58b00b3.jpg?resize=320%2C180&#038;ssl=1" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">音声認識字幕ちゃん｜話した言葉がそのまま字幕に（無料・インストール不要）</div><div class="blogcard-snippet external-blogcard-snippet">ブラウザだけで配信に字幕をつけられる無料ツール。インストール不要、Chrome でページを開いてマイクを許可するだけ。最大3か国語まで同時に翻訳表示、OBS連携は背景透過でクロマキー不要。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.sayonari.com/trans_asr/asr/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.sayonari.com</div></div></div></div></a>


<p class="wp-block-paragraph">の説明に従ってください。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=wta9OmaN.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=wta9OmaN.png" alt=""/></a></figure>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">２　Google Chromeの起動時のウインドウサイズを固定できるようにする。</h4>



<p class="wp-block-paragraph">「音声認識字幕ちゃん」の緑色の字幕欄を、OBSでウインドウキャプチャーして、読み込むことを想定していますが、もともとブラウザは、自由にフニャフニャとウインドウサイズを動かすように出来ているため、それを固定させるのが起動用アプリのわけですが、設定変更の自由度が欲しいのとMacの場合の手間の多さから、ブラウザの中の緑色の字幕欄のサイズを固定させて、ブラウザの中で、フォントを変更するようにしたいわけです。</p>



<p class="wp-block-paragraph">そのために,ウィンドウサイズを自由に追加登録して、それをホットキーで選択できるプラグイン、Window Resizerを使います。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=ym4aFu3U.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=ym4aFu3U.png" alt=""/></a></figure>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">３　「音声認識字幕ちゃん」を起動させるためのAppleスクリプトを作る。</h4>



<p class="wp-block-paragraph">私の場合は、既定ブラウザはSafariにしています。確かに、Safariでは、「音声認識字幕ちゃん」の文字起こし翻訳が起動しません。「音声認識字幕ちゃん」のURLはChromeと紐付けする必要があります。</p>



<p class="wp-block-paragraph">Appleスクリプトは簡単です。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=kmoY8RQO.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=kmoY8RQO.png" alt=""/></a></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">4　Stream Deckへマルチアクションとして登録する。</h4>



<p class="wp-block-paragraph">二つのアクションを登録します。一つ目は、Chromeで「音声認識字幕ちゃん」を開く、Appleスクリプトです。二つ目は、そのChromeのサイズを合わせるアクションです。私はStream Deckを使いますが、他にもホットキー、ショートカットを登録できるアプリがありますので、活用ください。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=BUi2Uokj.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=BUi2Uokj.png" alt=""/></a></figure>



<h4 class="wp-block-heading">５　Stream Deckからマルチアクションを起動する。</h4>



<p class="wp-block-paragraph">Webベースで起動すると、後から簡単に変更ができるので便利です。翻訳言語の変更削除、フォントの変更などがラクです。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=eTAfWvX7.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=eTAfWvX7.png" alt=""/></a></figure>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=oiKYNIrO.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=oiKYNIrO.png" alt=""/></a></figure>



<h4 class="wp-block-heading">６　まとめ</h4>



<p class="wp-block-paragraph">器材記録</p>



<p class="wp-block-paragraph">音声認識字幕ちゃん<br>Google Chrome<br>Window Resizer ( Chromeプラグイン)<br>Mac スクリプトエディタ<br>Stream Deck<br><br>Adobe Character Animator(スターター)<br>Final Cut Pro<br>Vrew(無料)<br>フリーボード<br>Mac mini M2<br>BGM: オリジナル音楽</p>



<p class="wp-block-paragraph">以上です。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">18463</post-id>	</item>
		<item>
		<title>MacWindowsのバックアップ方法と周辺機器の共用</title>
		<link>https://imakat.com/2023/10/23/18300/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Mon, 23 Oct 2023 05:22:13 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[STREAM DECK]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[UM590]]></category>
		<category><![CDATA[KVM]]></category>
		<category><![CDATA[KVM付きモニター]]></category>
		<category><![CDATA[UR24C]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Mac mini]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=18300</guid>

					<description><![CDATA[＜その１＞　Mac,Windowsのバックアップ方法 ポイント解説 ビデオを補足します。 １　Time Machineは複数箇所へバックアップが行える。 Macのバックアップの定番であるTime Machineアプリは、 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator has-text-color has-key-color-color has-alpha-channel-opacity has-key-color-background-color has-background is-style-wide"/>



<h5 class="wp-block-heading">＜その１＞　Mac,Windowsのバックアップ方法</h5>



<div style="position:relative;">
<iframe src="https://player.vimeo.com/video/876599793?texttrack=ja&amp;title=0&amp;&#10;byline=0&amp;&#10;muted=0&amp;&#10;pip=1&amp;&#10;portrait=0&amp;&#10;autopause=0&amp;" style="position:absolute;top:0;
left:0;
width:100%;
height:100%;
" frameborder="0" allow="autoplay;
fullscreen" allowfullscreen="">
</iframe>
</div>
<script src="https://player.vimeo.com/api/player.js">
</script>



<hr class="wp-block-separator has-text-color has-key-color-color has-alpha-channel-opacity has-key-color-background-color has-background is-style-dots"/>



<h3 class="wp-block-heading">ポイント解説</h3>



<p class="wp-block-paragraph">ビデオを補足します。</p>



<h4 class="wp-block-heading">１　Time Machineは複数箇所へバックアップが行える。</h4>



<p class="wp-block-paragraph">Macのバックアップの定番であるTime Machineアプリは、おそらく殆どのMacユーザーが利用していると思います。</p>



<p class="wp-block-paragraph">しかし、複数箇所へ行えるのは知らない人も多いのではと思います。バックアップ先の登録を複数行えるようになっています。私は、一つは、ほぼほぼ直結したHDDへ、それからもう一つは、有線LANで繋げた別の部屋にあるNASへ、登録しています。登録さえすればあとは何もすることはありません。Time Machineが自動的に、1時間ごとに交互に、バックアップを行うようになっています。</p>



<p class="wp-block-paragraph">Windowsの複数箇所の設定は、スケジュールと保存先をセットにしたものを複数登録できる形になっています。MacのTime Machineの設定はシンプルで設定項目が殆どないのと比べて、Windowsは設定が複雑で設定項目が多いのがちょっと面倒です。私はNAS1箇所のみへバックアップしています。</p>



<h4 class="wp-block-heading">２　Mac miniと接続するのはThunderbolt4ケーブル1本のみ</h4>



<p class="wp-block-paragraph">以前はMac miniのコネクタ類を全部埋め尽くすように差し込んでいましたが、Mac miniを機種交換するような場合、面倒な周辺機器の接続を考えることなくサクッと交換出来るように、改善しました。接続するのはThunderbolt4ケーブル1本のみにしました。SSDの高速処理を維持するとThunderboltハブが必要になりますが仕方ありません。また機器の共用のために、KVM機能を導入しました。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=RmzHRiz7.JPG" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=RmzHRiz7.JPG" alt=""/></a></figure>



<p class="wp-block-paragraph"></p>



<h5 class="wp-block-heading">＜その２＞　Mac,Windows,iPadの周辺機器の共用について</h5>



<div style="position:relative;">
<iframe src="https://player.vimeo.com/video/876947843?texttrack=ja&amp;title=0&amp;&#10;byline=0&amp;&#10;muted=0&amp;&#10;pip=1&amp;&#10;portrait=0&amp;&#10;autopause=0&amp;" style="position:absolute;top:0;
left:0;
width:100%;
height:100%;
" frameborder="0" allow="autoplay;
fullscreen" allowfullscreen="">
</iframe>
</div>
<script src="https://player.vimeo.com/api/player.js">
</script>



<hr class="wp-block-separator has-text-color has-key-color-color has-alpha-channel-opacity has-key-color-background-color has-background is-style-dots"/>



<h3 class="wp-block-heading">ポイント解説</h3>



<p class="wp-block-paragraph">ビデオを補足します。</p>



<h4 class="wp-block-heading">１　切り替えを簡単にするのがミソ</h4>



<p class="wp-block-paragraph">KVMはKeyboard,Video,Mouseの略で、そうした周辺機器を1台だけ用意して共用する、そのための接続機器です。私は、DELL U2723QXという、モニター、KVM機器、ハブが一体になっているものを使っています。キーボードもマウスも映像が見えなければ何も出来ません。その意味では、KVM(Keyboard,Video,Mouse)は１セットにして共用するのは納得ですが、後述しますが、ネットワークや機器をまたがってファイル更新する場合などは別の注意が必要です。</p>



<p class="wp-block-paragraph">共用している周辺機器が12台にもなっているわけですが、こうした扱いを可能にしている貢献者は、KVM機能、ハブ、STREAM DECK、この３つです。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=NlbrvBqg.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=NlbrvBqg.png" alt=""/></a></figure>



<p class="wp-block-paragraph">KVMを操作するアプリをMac,Windows各々にインストールしているので、WinMacの切り替えを、そこから操作できますが、ちょっと面倒です。STREAM DECKを使えば、もっと直感的に、ボタンを押すだけで切り替わります。（なお、command+F1でWinMac間を移動出来ます。）</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=aTmY78vA.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=aTmY78vA.png" alt=""/></a></figure>



<h4 class="wp-block-heading">2　有線LAN(Ethernet)はパソコン毎に接続しておく方がいいと思う。</h4>



<p class="wp-block-paragraph">モニターに有線LANが繋がるのは一見すると便利なようですが、例えばMacとNAS間でファイル更新を行なっている最中に、モニターの電源を落とした時、寸断されてしまいます。Macの電源を落とした時に、ファイル更新が寸断されるのは当然のことと認識できますが、モニターを切ったらファイル更新が寸断されるとは、ふつうは予想できないです。何か疲れますよね、この動き。</p>



<p class="wp-block-paragraph"><strong>実はこれは、一般ユーザーの中にある既視感でして、一般ユーザーは、「テレビの電源を切っても、ビデオの録画は寸断されない。」そう学習してしまったパブロフの犬なのです。そしてそれが、一般ユーザーにとって、「ストレスのない素直な動き」として身についています。</strong></p>



<p class="wp-block-paragraph">ですから、有線LAN(Ethernet)をパソコン毎に接続するのが、自然なお作法、と申せましょう。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=ijZV0zzy.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=ijZV0zzy.png" alt=""/></a></figure>



<h4 class="wp-block-heading">3　裏方で頑張るオーディオインターフェース</h4>



<p class="wp-block-paragraph">私は音楽制作をやるので、オーディオインターフェースは馴染みですが、そうでもない限り、マイク、スピーカー、ヘッドホンは、モニターに付いているハブから引っ張ってくればいい。そのまま、共用して使えるはずだ。ふつうはそのように考えるでしょう。</p>



<p class="wp-block-paragraph">しかしこれが案外厄介。ストレス源になるのです。音圧調整、音量の調節がとても面倒なのです。Mac,Windows,iPadそれぞれ側での音量が出てきますので、いちいち、アプリの音量レバーを調整することになります。そこで、オーディオインターフェースが助っ人になります。これを机の下に置きます。そして、<strong>左手で、手探りで</strong>、スピーカー、ヘッドホンそれぞれの<strong>音量を調整します。即、調整します</strong>。だから、左手に置くなら、右端にスピーカーの音量調節のノブがある、その左隣にヘッドホンの音量調節のノブがある、そのような配置のオーディオインターフェースを購入することが大事です。</p>



<div class="wp-block-cocoon-blocks-column-2 column-wrap column-2 column-2-2-1-1 layout-box">
<div class="wp-block-cocoon-blocks-column-left column-left">
<figure class="wp-block-video aligncenter">
<video controls="" muted=""   poster="https://imakat.synology.me/wp-content/pmedia/スクリーンショット_2023-10-25_8.28.26.png" src="https://imakat.synology.me/wp-content/mmedia/2023-05-06_07.53.47-mp4-512x288_10fps_AAC中.mp4" playsinline=""></video>
</figure>
</div>



<div class="wp-block-cocoon-blocks-column-right column-right"></div>
</div>



<p class="wp-block-paragraph">上面にノブがあるタイプは、机の上に置くので、机の上が狭くなりますので、要注意です。なお、マイクについては最初に設定したらあまり変えることはないと思います。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=izFRKOYk.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=izFRKOYk.png" alt=""/></a></figure>



<p class="wp-block-paragraph">私は、パソコン類を共用する時の、ストレス軽減のための最も重要な機器は、オーディオインターフェースだと思います。</p>



<p class="wp-block-paragraph">以上です。</p>
]]></content:encoded>
					
		
		<enclosure url="https://imakat.synology.me/wp-content/mmedia/2023-05-06_07.53.47-mp4-512x288_10fps_AAC中.mp4" length="4742300" type="video/mp4" />

		<post-id xmlns="com-wordpress:feed-additions:1">18300</post-id>	</item>
		<item>
		<title>【自宅web】SynologyNASから自宅Webサーバーを公開する〜WordPress,Cocoonを無料で活用〜</title>
		<link>https://imakat.com/2020/09/03/10444/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Thu, 03 Sep 2020 09:16:47 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[デジタル]]></category>
		<category><![CDATA[Mac mini]]></category>
		<category><![CDATA[オンプレミス]]></category>
		<category><![CDATA[DSM7.0]]></category>
		<category><![CDATA[UPS]]></category>
		<category><![CDATA[Web3.0]]></category>
		<category><![CDATA[Cocoon]]></category>
		<category><![CDATA[SynologyNAS]]></category>
		<category><![CDATA[Web公開]]></category>
		<category><![CDATA[Aterm]]></category>
		<category><![CDATA[WG2600HP3]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=10444</guid>

					<description><![CDATA[2021.8.26更新 　自宅のSynologyNASからWeb公開することにしてみました。 「野菜や魚」の産直と同じことが、「情報」でも起きる気がする。 　昭和三十〜四十年代、野菜は、八百屋で売っていましたが同時に、農 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">2021.8.26更新</p>



<p class="wp-block-paragraph">　自宅のSynologyNASからWeb公開することにしてみました。</p>



<h2 class="wp-block-heading" id="野菜や魚-の産直と同じことが-情報-でも起きる気がする">「野菜や魚」の産直と同じことが、「情報」でも起きる気がする。</h2>



<figure class="wp-block-image size-large is-resized"><a href="https://imakat.com/rd.php?id=hG16yHYS.jpg" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=hG16yHYS.jpg" alt="" style="width:358px;height:auto"/></a><figcaption class="wp-element-caption"><a rel="noopener" target="_blank" href="https://dailyportalz.jp/kiji/140929165271">【出典】横付けリアカーの残る街　DailyPortalZ<span class="fa fa-external-link external-icon anchor-icon"></span></a></figcaption></figure>



<p class="wp-block-paragraph">　昭和三十〜四十年代、野菜は、八百屋で売っていましたが同時に、農家がリヤカーで売りに来ていました。魚は魚屋で売っていましたが同時に、漁師の家のおばちゃんが行商に来ていました。しかし昭和５０年以降は姿を消していきました。それらは大資本や商社が牛耳るようになっていきました。小売店も行商も、そこへ吸い込まれてしまいました。</p>



<p class="wp-block-paragraph">　ところが平成に入る頃から、高速道路の普及により、野菜や食品の産地直送、農家が消費者へ直接販売する方法（輸送業者を利用しながら）が急速に拡大してきました。農家には昔に行商していたDNAがちゃんと残っていたのでしょう。</p>



<p class="wp-block-paragraph">　実は約15年前、自宅サーバーが流行しました。自宅からホームページを発信することが流行しました。当時はまだハッカーやウイルス問題の悩みも小さかった、ノートPCなどの古いPCの再活用を考える人が多かった、何より安価で使えるサーバー業者がなかった、そうした背景がありました。当時は、魚の鯖の字をあてて、「自宅鯖」と呼ばれたりしていました。</p>



<p class="wp-block-paragraph">その後、不幸にも、自宅サーバーの火災が起きたり、自然災害で破壊したり、ウイルスで障害を繰り返す事故が増えてきました。なかなか各家庭でそこへの対策は重荷、趣味の域を超えていると。ちょうどその頃から、安全対策の重要性が意識されるようになり、高速化されたサーバー業者が現れ、クラウドサービスが進みました。それに押されてしまって。やっぱり鯖は日持ちが悪かった。「自宅鯖」はすぐさま腐っていきました。</p>



<p class="wp-block-paragraph">現在、ITメディアは急速に増大して、それらを結構安易に、クラウドに保存すればいい、という風潮になっています。しかし私は、何でもかんでも、雲の上に放り投げておけばいい、とは思えないのです。</p>



<p class="wp-block-paragraph">いよいよ、5G、第５世代通信が普及します。つまり情報の超高速道路が出来るということです。企業も庶民もその恩恵を受けることになります。もちろん、巨大情報商社であるGAFA(Google,Apple,Facebook,Amazon)は、その超高速道路を中央集権的に活用し続けることでしょう。GAFAは、ほんの一握りの天才と資本家が、知識と金にものを言わせて巨大に成長したもので、結果、ほんの一握りの人に富が偏在する形になっています。しかし今後は、庶民や小規模な産業も、自分から情報を発信することを、それほど高度な技術を持たなくても出来るようになると思います。そうなれば、中小企業も<strong>オンプレミス</strong>化、個人も自宅サーバーくらい挑戦してもいいのではと思います。野菜の産直と同じ、というか、よく似ています。何か日本の経済のスピードが落ちたため、道端の風景に気付くようになった、そんな感じもします。</p>



<p class="wp-block-paragraph">この私の思う、ぼんやりとした方向が、ポストGAFAと謳われているWeb3.0の世界なのか。その一部なのかも知れません。以前も音楽制作の投稿で考察しましたが、個人が配信する場合、それが著作権や公序良俗の侵害に抵触しないかをフィルタリングする警察のような役割を、どこかに担ってもらう必要があります。おそらくその役割は、世界的な共通フィルターと、各国の法制度に準拠した強弱のあるフィルターの二層になるものと思います。</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading" id="業者サーバーと自宅サーバーを使い分ける">業者サーバーと自宅サーバーを使い分ける。</h2>



<p class="wp-block-paragraph"><br>　iPhoneなどのカメラで撮った写真やMacのスクリーンショットは、Dropboxに保存すると同時にSynologyNASへ同期保存しています。将来、オーバーフローした分を、この同期から外へ移動して、DVDなどへ保存するか又は廃却することにする予定です。そのような目的でSynologyNASを設置したのですが。しかし貯めるだけでは、あまり有効に利用されていない、常時稼働の意味が薄い、と感じていました。</p>



<p class="wp-block-paragraph">　さて、これらの写真などのメディアをブログで利用する場合、(1)WordPressのメディアフォルダへアップする、(2)Dropboxのリンクを使う、(3)その他メディアサーバーを使う、など複数方法があります。現在、(1)と(2)を併用しています。</p>



<h4 class="wp-block-heading" id="上下の関係">上下の関係</h4>



<p class="wp-block-paragraph">　以前から思っていたのは、ブログ記事を作っていると、当然、細部に至る部分、マインドマップでいうと下位の部分を付け加えたくなります。つまり、基礎資料、TIPS、小さな工夫、など補助的な情報が多いですが、これらコマゴマとした情報はSynologyNASに蓄えられています。結構、そういう所にこそ、リンクを貼って、発信すれば、役に立つかも知れません。</p>



<p class="wp-block-paragraph">　このブログは、業者サーバー( X Server )から発信していますが、ここはマインドマップで言うと上位の情報を書き込んで、下位を自宅サーバー( SynologyNAS )から発信すると言う関係でしょうか。ざっくりとしたイメージです。</p>



<h4 class="wp-block-heading" id="リスク補完の関係">リスク補完の関係</h4>



<p class="wp-block-paragraph">　<strong>自宅サーバーの構築や運用の重要情報が、自宅サーバーにだけ保存されていて、災害で破壊されたら、意味ない</strong>です。自宅サーバーとは別の場所へ置くべきでしょう。逆に、業者サーバーを運営するために重要な情報は、業者サーバーとは別の場所に置くべきです。実は今回、自らそのミスを犯して、本題の自宅サーバー設置も、最初からのやり直しの憂き目に遭っています。まだ入り口段階で助かりました。</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading" id="具体的な設定方法">具体的な設定方法</h2>



<p class="wp-block-paragraph">　具体的には以下のような構造図に表すことができます。</p>



<p class="wp-block-paragraph"><a href="https://imakat.com/page-10490/" target="_blank">図表を別ページで開く</a> &lt;Google図形描画&gt;</p>



<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow">
<img decoding="async" src="https://docs.google.com/drawings/d/e/2PACX-1vQ1fIg4BKpuVdra_42C6en2cc1E3uEJU4umIfahl1Dz23pzUfh9kF4AnWQx8ylgDdhSJiKu8EAnpcSu/pub?w=1440&amp;h=1080">
</div>



<p class="wp-block-paragraph">それでは、上の図中の機器ごとに、具体的な作業方法を説明します。</p>



<hr class="wp-block-separator has-css-opacity"/>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://docs.google.com/spreadsheets/d/e/2PACX-1vQWkVr93vA_kBjSXGeRbBVmdwPQqRZRRu61VItEv2lh7oOJ43JWFtIFzXt0tlrTo0QUQCWxslYt21db/pubhtml">&lt;手順1&gt; Aterm WG2600HP3(NECのWiFiルーター)の設定方法<span class="fa fa-external-link external-icon anchor-icon"></span></a> &lt;Google スプレッドシート&gt;</p>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://docs.google.com/spreadsheets/d/e/2PACX-1vSr2Ks5Y9lDicHDp-WGjhiBgbZz0dtN5q0oKiJQNKg5NStAxpijVzx_ublYjEg-BCjK02FmMKXpNfcj/pubhtml">&lt;手順2&gt; SynologyNASの設定方法<span class="fa fa-external-link external-icon anchor-icon"></span></a> &lt;Google スプレッドシート&gt;<br>※この&lt;手順2&gt;では、一般的な、プロバイダ１つ、ネットワーク１つの環境の中にWebサーバーを立ち上げる形にしており、従って、逆引きDNS設定など、多少複雑になっています。但し21年7月以降、<a href="https://imakat.com/2021/02/13/11515/" target="_blank">私の現状</a>は、複数プロバイダ複数ネットワークの形で運用していますので、面倒な逆引きDNS設定は使用せず、宅内部分も外部レンタルサーバーを使うのと同じ感覚で使えシンプルになっています。その自宅サーバー環境で、無料で、WordPress及び大人気高品質のCocoonが動くようにしています。</p>



<p class="wp-block-paragraph"><a rel="noopener" target="_blank" href="https://docs.google.com/spreadsheets/d/e/2PACX-1vRzoqJ4rByozRNz6X_aOhjSD9ltPOf7JTjZIen3TfIGAtBto4zx3ePJMl_Zw9ESRmtvuXNB9wpgV1CW/pubhtml">&lt;手順3&gt; Mac,iPhoneの設定方法<span class="fa fa-external-link external-icon anchor-icon"></span></a> &lt;Google スプレッドシート&gt;</p>



<p class="wp-block-paragraph"><strong>自宅サーバー、業者サーバー両方が故障しても読めるように</strong>、手順１〜３までについては、Googleスプレッドシートを利用しています。</p>



<p class="wp-block-paragraph">なお、WiFiルーターの設定を、手順１に持ってきたのは、やはり、最初に、ネットワークをどのような形にするかを描いた後で、個々の機器のアプリ設定に入るべきだろうと考えたからです。</p>



<p class="wp-block-paragraph">最初に行ったことですが、Webサーバーを公開するために、グローバルIPアドレスを固定にしました。費用が掛かります。短時間の間に、どんどん変更されるグローバルIPアドレスをキャッチして反映させる方法(DDNS)もありますが、まずは確実に作動させてから、その後で、どうするか考えることにします。</p>



<p class="wp-block-paragraph">次に、私の場合、SynologyNASはDS218+を使っていますが、初期のメモリーは2GBです。基本的にはマニアックな内容でWeb公開しようと考えており、広く興味を持たれそうな情報はVimeoやYouTubeにメディアを掲載します。従ってアクセスが集中して迷惑を掛けることは少ないとは思います。とはいえ、ある程度考慮して、メモリーを許容される最大の10GBとしました。8GB追加しました。その上で、SynologyNASのWeb stationのPHP設定にて、最大プロセスを初期値の20から50へ変更しました。<a href="https://imakat.com/2021/03/31/12442/#jump1" target="_blank">(こちらの記事をご参考）</a>。</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading" id="dsm7-0移行に伴う留意点">DSM7.0移行に伴う留意点</h2>



<p class="wp-block-paragraph">上記＜手順２＞におけるSynologyNASの設定方法は、OSはDSM6.xをベースになっています。DSM7.0へ移行した際、いくつかのアプリが更新エラーになります。</p>



<figure class="wp-block-image aligncenter size-large"><a href="https://imakat.com/rd.php?id=03JTJnje.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=03JTJnje.png" alt=""/></a><figcaption class="wp-element-caption">SynologyNAS DSM7.0の画面</figcaption></figure>



<p class="wp-block-paragraph">その中で、WordPress、Web Stationなど、Webサーバーに必要なものもエラーになります。</p>



<p class="wp-block-paragraph">アプリの「修復」を選択すると、そのまま、Webサーバーは問題なく起動します。</p>



<p class="wp-block-paragraph"><br>但し、</p>



<h4 class="wp-block-heading">DSM7.0移行時、DSMパッケージのWordPressを使っていた場合の留意点</h4>



<p class="wp-block-paragraph">ドキュメントルートは、以下のように変更されて、中身が移動している点に注意ください。</p>



<p class="wp-block-paragraph"><strong><span class="fz-14px"><span class="marker"><span class="fz-20px">web/wordpress  &#8212;&gt;  web_packages/wordpress</span></span></span></strong></p>



<p class="wp-block-paragraph">通常、URLは、<br><strong><span class="fz-20px"><span class="marker"><span class="fz-18px">https://ホスト名/wordpressフォルダの直下にあるフォルダ名/xxx.mp4などのメディアファイル</span></span></span></strong></p>



<p class="wp-block-paragraph">とされていると思われます。であれば、何も支障はありません。</p>



<h4 class="wp-block-heading">バックアップのすすめ</h4>



<p class="wp-block-paragraph">先日もやってしまった失敗ですが、WordPressの更新については、私は、WordPress管理メニュー内にある更新から行うようにしていて、パッケージセンターのWordPressアプリからは行っていません。但し何を勘違いしたのか、<strong>間違って、パッケージセンターのWordPressアプリの更新を行ったせいか</strong>、web_packages/wordpressフォルダ内に作ったメディアフォルダが全て消されてしまいました。が、速やかに復旧しました。</p>



<h4 class="wp-block-heading">「web_packages」フォルダのバックアップ</h4>



<p class="wp-block-paragraph">こうした時に、日に1回、web_packagesフォルダのバックアップを、Hyper Backupで、Dropboxなどクラウドへ行っておくと、クリック一つで、前回のバックアップの状態に戻せます。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=hKfGlE1p.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=hKfGlE1p.png" alt=""/></a></figure>



<p class="wp-block-paragraph">復旧後、一旦は、SynologyNAS内のWordPressアプリが停止状態にあるかもしれません。「実行」をクリックして「実行中」にしてください。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://imakat.com/rd.php?id=NTa7Pax2.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=NTa7Pax2.png" alt=""/></a></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">「パッケージセンター」「設定」「自動更新」の中で、WordPressを自動更新から外してください。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=lxdWrUKU.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=lxdWrUKU.png" alt=""/></a></figure>



<p class="wp-block-paragraph">こうしておいたとしても、忘れて、うっかり、WordPressのパッケージ更新を押してしまうこともあります。その場合も、「Hyper Backup」から復元タスクを行なってください。</p>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">WordPressから直接インストールした方が、更新がラク。</h4>



<p class="wp-block-paragraph">以上のことを考えると、WordPress.orgから直接インストールしたほうがラクです。</p>



<h2 class="wp-block-heading" id="upsで自動シャットダウン-自動再起動にする">UPSで自動シャットダウン、自動再起動にする。</h2>



<p class="wp-block-paragraph">NAS自体は大抵、停電の際に自動再起動できるようになっています。但し、停電が起きた時には、パスンと切れてしまい、デバイスやファイルに障害が発生しやすいです。特にWebサーバーは、常時、外部に向け発信しているため、サービスを安定させるために、自動シャットダウンをUPSで行えるようにしておくことを、おすすめします。</p>



<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://imakat.com/rd.php?id=3G2qWMwk.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=3G2qWMwk.png" alt=""/></a><figcaption class="wp-element-caption">&lt;UPS電源　CyberPower  CP550JP&gt; 比較的安価なUPSです。7,000円程度。SynologyNASとUSB接続すると、自動シャットダウン、自動再起動が連動します。</figcaption></figure>



<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://imakat.com/rd.php?id=Oj4xiwtH.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=Oj4xiwtH.png" alt=""/></a><figcaption class="wp-element-caption">DSM7.0-&gt;SynologyNASのコントロールパネル→ハードウエアと電源→全般→「電源の問題が修正されたときに自動的に再起動をする」にチェック</figcaption></figure>



<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://imakat.com/rd.php?id=mCYb8tNY.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=mCYb8tNY.png" alt=""/></a><figcaption class="wp-element-caption">DSM7.0-&gt;UPS→「UPSサポートの利用」にチェック、UPSタイプ 「USB UPS」 を選択、「バッテリー残量が少なくなるまで」を選択</figcaption></figure>



<h2 class="wp-block-heading" id="自宅webサーバーにnasを使う長所">自宅WebサーバーにNASを使う長所</h2>



<p class="wp-block-paragraph">色々述べてきましたが、最後に、自宅Webサーバーに、パソコンではなく複数ディスク内蔵のNASを使う長所には、</p>



<p class="wp-block-paragraph">＜1＞NASには最初からRAID機能(※※)が備わっていること。<br>＜2＞常時、システムやデバイスの健康状態をチェックしていて異常があればメール通知があること。<br>＜3＞メール通知に基づいてストレージマネージャーからディスクの修理が行えること。<br>＜4＞修理が困難な場合は、ディスクの交換になるが、ホットスワップ（サーバーを稼働したままで壊れた方のディスクを交換できる）が可能であること（私が利用しているSynology DS218+ は可能）。</p>



<p class="wp-block-paragraph">などがあります。</p>



<p class="wp-block-paragraph">それでは、とりあえず導入部分までは以上です。</p>



<p class="wp-block-paragraph">※※：RAID機能とは、複数のディスクにバックアップを行う機能。一つのハードディスクが破損しても自動的に予備ディスクに切り替わる。飛行機のエンジンが左右の翼についていて片方が故障してももう片方で飛行できるのと同じ。フェイルセーフと呼ばれる仕組み。</p>



<p class="wp-block-paragraph">参考になれば幸いです。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">10444</post-id>	</item>
	</channel>
</rss>
