<?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>NAS | imakat.com</title>
	<atom:link href="https://imakat.com/tag/nas/feed/" rel="self" type="application/rss+xml" />
	<link>https://imakat.com</link>
	<description>工夫と改善で人生をちょっと豊かに</description>
	<lastBuildDate>Mon, 16 Mar 2026 22:14:22 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</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>NAS | 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[ミラーリング]]></category>
		<category><![CDATA[FreeFileSync]]></category>
		<category><![CDATA[シャドウ・ディレクトリ]]></category>
		<category><![CDATA[Mac mini]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[DAS]]></category>
		<category><![CDATA[棚田]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=28134</guid>

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



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



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


<div class="sc-vimeo-embed">
  <p style="font-size: 14px;" class="sc-link">
    <a href="https://imakat.com/vm5?movid=1166235037" target="_blank" onclick="stopVimeoBeforeNavigate(event, this)">
      動画を別ページで表示(ここをクリック)
    </a>
  </p>

  <div class="iframe-wrapper">
    <iframe
      src="https://player.vimeo.com/video/1166235037?title=0&byline=0&portrait=0&controls=1&speed=1&texttrack=ja&dnt=1&loop=0"
      frameborder="0"
      allow="autoplay; fullscreen; picture-in-picture"
      allowfullscreen></iframe>
  </div>

  <div class="dr-vimeo-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>

  <script src="https://player.vimeo.com/api/player.js"></script>

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

    var target = wrapper ? wrapper : document;
    var iframe = target.querySelector('iframe');
    if (!iframe || !window.Vimeo || !Vimeo.Player) return;

    var player = new Vimeo.Player(iframe);

    /* --- 1. 確実に一時停止してから別ページを開く処理 --- */
    window.stopVimeoBeforeNavigate = function(event, link) {
      event.preventDefault(); 
      player.pause().then(function() {
        setTimeout(function() {
           window.open(link.href, link.target);
        }, 50);
      }).catch(function() {
        window.open(link.href, link.target);
      });
    };

    /* --- 2. 字幕のON/OFF制御（Vimeo API仕様） --- */
    var currentMode = "hidden";
    
    function useNormalMode() {
        currentMode = "hidden";
        player.disableTextTrack().catch(function(e){});
    }
    
    function useSpecialMode() {
        currentMode = "showing";
        // 日本語の subtitles が無ければ captions を探す安全設計
        player.enableTextTrack('ja', 'subtitles').catch(function() {
            player.enableTextTrack('ja', 'captions').catch(function() {});
        });
    }

    // ロード直後は枠内字幕を非表示にする
    player.ready().then(function() {
        useNormalMode();
    });

    // Vimeoプレーヤーの全画面・PiPイベントを監視して字幕を切り替え
    player.on('fullscreenchange', function(data) {
        if (data.fullscreen) useSpecialMode();
        else useNormalMode();
    });
    player.on('enterpictureinpicture', function() {
        useSpecialMode();
    });
    player.on('leavepictureinpicture', function() {
        useNormalMode();
    });

    /* --- 3. 字幕リストの初期化（自動梱包とデフォルト展開） --- */
    var checks = 0;
    var initTimer = setInterval(function(){
        var listContainer = target.querySelector('details > p');
        if (listContainer) {
            initSubtitles(listContainer);
            clearInterval(initTimer);
        }
        checks++;
        if (checks > 20) clearInterval(initTimer); // 10秒経ったら監視終了
    }, 500);

    function initSubtitles(listContainer) {
        // デフォルトで開く
        var detailsEl = target.querySelector("details");
        if (detailsEl) {
            detailsEl.open = true; 
            var summaryEl = detailsEl.querySelector("summary");
            if (summaryEl) summaryEl.textContent = "字幕(シーン)はここをクリック";
        }

        // 行ごとに見えない箱(span)で梱包
        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";
        }
    }

    /* --- 4. クリックシーク機能 --- */
    function parseTs(ts) {
      if (!ts) return null;
      var t = ts.trim();
      var parts = t.split(':').map(function(v){ return parseInt(v, 10); });
      if (parts.length === 2 && parts.every(Number.isFinite)) {
        return parts[0] * 60 + parts[1];
      } else if (parts.length === 3 && parts.every(Number.isFinite)) {
        return parts[0] * 3600 + parts[1] * 60 + parts[2];
      }
      return null;
    }

    target.addEventListener('click', function(e) {
      var a = e.target.closest('a.imk-cue');
      if (!a) return;
      e.preventDefault();
      var sec = null;
      if (a.dataset.seconds) {
        sec = Number(a.dataset.seconds);
      } else if (a.dataset.seek) {
        sec = parseTs(a.dataset.seek);
      }
      if (sec !== null && Number.isFinite(sec)) {
        player.setCurrentTime(sec).then(function(){ player.play(); }).catch(function(){});
      }
    });

    /* --- 5. 同期ハイライトと自動スクロール --- */
    player.on('timeupdate', function(data) {
      // Vimeoプレーヤーが勝手に字幕を出していたら隠す（最強ガード）
      player.getTextTracks().then(function(tracks) {
          var activeTrack = tracks.find(function(t){ return t.mode === 'showing'; });
          if (currentMode === "hidden" && activeTrack) {
              useNormalMode();
          }
      }).catch(function(){});

      var currentTime = data.seconds;
      var listContainer = target.querySelector('details > p');
      if (!listContainer) return;

      var cues = listContainer.querySelectorAll('a.imk-cue');
      if (cues.length === 0) return;

      var activeA = null;
      for (var i = 0; i < cues.length; i++) {
        var sec = null;
        if (cues[i].dataset.seconds) {
            sec = Number(cues[i].dataset.seconds);
        } else if (cues[i].dataset.seek) {
            sec = parseTs(cues[i].getAttribute('data-seek'));
        }
        if (sec !== null && currentTime >= sec - 0.5) {
          activeA = cues[i];
        } else if (sec > currentTime) {
          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"
              });
          }
      }
    });
  })();
  </script>

  <style>
  .sc-vimeo-embed .iframe-wrapper {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: visible;
  }
  .sc-vimeo-embed .iframe-wrapper iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }

  /* 行梱包時の基本スタイル（干渉防止のためクラス内で指定） */
  .sc-vimeo-embed .imk-line {
      display: inline-block;
      width: 100%;
      border-radius: 2px;
      transition: background-color 0.1s;
  }

  /* ▼ 字幕一覧（details）の見た目調整 */
  .sc-vimeo-embed details > p {
    font-size: 14px !important;
    line-height: 1.6;
    height: 200px !important; 
    overflow: auto;
    background-color: #EDF7FF;
    padding: 2px 6px;
    margin: 0;
    box-shadow: 3px 3px 4px black;
    position: relative; 
  }
  .sc-vimeo-embed details > summary {
    font-size: 14px !important;
    padding: 2px 6px;
    width: 100%;
    background-color: #ddd;
    border: none;
    box-shadow: 3px 3px 4px black;
    cursor: pointer;
    list-style: none;
  }
  </style>
</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></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-202603170359390" class="toggle-checkbox" type="checkbox"/><label class="toggle-button" for="toggle-checkbox-202603170359390"><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-202603170359391" class="toggle-checkbox" type="checkbox"/><label class="toggle-button" for="toggle-checkbox-202603170359391"><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>棚田システムは非常に柔軟で、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>棚段の基本構成は、作業段(T0)、保管段(T1)、長期保管段(T2)の３構成ですが、流出流入の関係を規定すれば、もっと増やすこともできますし、逆に、２構成にするのもいいと思います。実際、私は、高齢者ですので、これからは減らす方向でいきたいと思っています。</p>



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



<p>下記のトグルボックスにある青ボタンを押して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-202603170359402" class="toggle-checkbox" type="checkbox"/><label class="toggle-button" for="toggle-checkbox-202603170359402"><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">（４）まとめ</h5>



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



<p></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">28134</post-id>	</item>
		<item>
		<title>iPhone15Plusを有線LANで接続する。</title>
		<link>https://imakat.com/2023/10/03/18148/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Tue, 03 Oct 2023 00:21:03 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[Lightning]]></category>
		<category><![CDATA[Ethernet]]></category>
		<category><![CDATA[GoogleDrive]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[iCloud]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[Synology]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[USB-C]]></category>
		<category><![CDATA[iPhone15Plus]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=18148</guid>

					<description><![CDATA[iPhoneSE2からiPhone15Plusに乗り換えました。 乗り換えの理由は、３点。バッテリーの消耗が激しい。文字を大きく表示したい（見やすさとキーボードの打ちやすさ）。USB-Cを活用したかった。こうしたことにな [&#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"/>



<p>iPhoneSE2からiPhone15Plusに乗り換えました。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://imakat.com/rd.php?id=DTrKmDRF.jpg" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=DTrKmDRF.jpg" alt="" style="aspect-ratio:1.3333333333333333;width:840px;height:auto"/></a><figcaption class="wp-element-caption">iPhone15PlusとiPhonerSE2のサイズ比較。高齢になると、小さい文字は、打つのも、読むのも、苦痛になります。</figcaption></figure>



<p>乗り換えの理由は、３点。バッテリーの消耗が激しい。文字を大きく表示したい（見やすさとキーボードの打ちやすさ）。USB-Cを活用したかった。こうしたことになります。円安による高価格は、仕方なく受け入れました。</p>



<p>注目すべきは、iPhone15シリーズは、USB-Cケーブルに変更になったことです。今後、様々に便利な使い方が提案されてくることでしょう。</p>



<p>方向としては、</p>



<p>「<strong>ファイル管理が重視される。パソコン類モバイル類は、使い終わったらデータを空にする</strong>。」そのように想像します。</p>



<p>今回は、有線LANの活用について取り上げてみます。宅内でiPadやiPhoneを使用する時は、大抵のユーザーが、WiFi通信かセルラー通信といった無線通信の利用を基本にしていると思います。</p>



<p>カメラで撮った写真動画の扱いはどうしているでしょうか。</p>



<p>デジカメでしたら、SDカードから、パソコンの外付けHDDへ移動するまたはクラウドへ移動する、そうした方法が多いと思います。</p>



<p>iPhoneで撮ったものは、どうしているでしょうか。</p>



<p>アップル純正のiCloudに自動的に保存する、このやり方が最も多いと思います。次に多そうなのは、でもマイナーかな、USBメモリ、外付けSSDをLightning接続して保存する方法だったでしょう。</p>



<p>私は、汎用性を考慮してDropboxへアップロードして更にNASへ同期していました（下図）。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=jafsr10X.jpg" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=jafsr10X.jpg" alt=""/></a><figcaption class="wp-element-caption">従来のiPhoneによる写真動画のアップロードの流れ。</figcaption></figure>



<p>パソコン本体に対しては、脳ミソの役割だけを頼って、他の役割の殆どは、必要に応じて繋げて使う、そのように考えています。その意味で、役割の一つであるデータ保存については、NASを使っています。NASはMac,Windows,iPad,iPhoneその他にて共用です。Macの電源OFFでもNASは使えます。</p>



<p>NASを有効に使わない手はないです。</p>



<p>iPhone15Plusの<strong>写真動画は、自宅内では</strong>、Ethernet(有線LAN)経由で、<strong>NASへアップロードすることを基本</strong>にします(※2)。次に、NAS内のフォルダとDropboxは常時同期します。iPhone15Plusの「写真」は、アップロードした後で、基本的には空にします(「写真」→「アルバム」→下の「最近削除した項目」から30日間は元に戻せます)。ちなみに<strong>iCloud写真は無効</strong>にしてあります。</p>



<p>下図のように変更しました。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://imakat.com/rd.php?id=TxXr2LOV.jpg" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=TxXr2LOV.jpg" alt="" style="aspect-ratio:1.5282331511839709;width:840px;height:auto"/></a><figcaption class="wp-element-caption">変更後のiPhoneによる写真動画のアップロードの流れ。</figcaption></figure>



<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://imakat.com/rd.php?id=HLNbIras.jpg" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=HLNbIras.jpg" alt="" style="width:181px;height:392px"/></a><figcaption class="wp-element-caption">iPhoneの「写真」フォルダは<br>アップロード後に削除する。</figcaption></figure>



<p>Ethernet(有線LAN)接続は、iPhone15PlusにAnker PowerExpand 6-in-1 USB-C PD Ethernet Hubを接続して行いました。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=8LYSQt7P.jpg" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=8LYSQt7P.jpg" alt=""/></a><figcaption class="wp-element-caption">AnkerのUSB-Cハブ、Ethernet付き。ちなみに、USBメモリー、SSDなども読み書きできる。</figcaption></figure>



<p><strong>iPhoneの「設定」は何も変更しません</strong>。ふだんのWiFi接続の状態にしておいて、そこへEthernet(有線LAN)を挿入します。すると、Ethernetの表示が出現します。しかし、WiFiのネットワーク名は表示されたまま、上のメニューバーは4Gとなっています。一体どれが有効になっているのだろうか。これは、ブラウザからスピードテストで確かめると分かります。この表示状態で、すでに、Ethernetが有効になっています。</p>



<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://imakat.com/rd.php?id=fmysl8uC.jpg" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=fmysl8uC.jpg" alt="" style="width:181px;height:391px"/></a><figcaption class="wp-element-caption">Ethernet接続後の<br>iPhone「設定」画面</figcaption></figure>



<p><strong>WiFi接続は</strong>、例えば、午後2時頃は以下のような状況。速い時は、150Mbpsくらいまで上がりますけど。問題は、場所や時刻によって、非常に振れ幅が大きく不安定なことです。<strong>30Mbps~150Mbps程度の振れ幅</strong>があります。</p>



<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://imakat.com/rd.php?id=VzDk0FkR.jpg" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=VzDk0FkR.jpg" alt="" style="width:182px;height:394px"/></a><figcaption class="wp-element-caption">WiFiのスピード</figcaption></figure>



<p>それに対して、Ethernet(有線LAN)は下のような結果です。午後2時頃では、スピードに10倍近い開きがありました。</p>



<p>何よりも<strong>Ethernet(有線LAN)は</strong>、スピードの振れが殆どありません。<strong>ダウンストリーム310Mbps、アップストリーム200Mbps程度で終日安定</strong>しています。WiFiと比較して、ざっくり平均的に、アップストリームは２倍、ダウンストリームは３倍、高速になりました。</p>



<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://imakat.com/rd.php?id=W9kx7sse.jpg" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=W9kx7sse.jpg" alt="" style="width:182px;height:394px"/></a><figcaption class="wp-element-caption">Ethernet(有線LAN)のスピード</figcaption></figure>



<p>さて、写真動画はNASへアップロードが完了します。そのあと速やかにDropboxと同期されます。しかし、なぜDropboxへの同期まで必要なのか。そこまで必要などないのではないか。そうも思えてきます。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://imakat.com/rd.php?id=dvNBVfw4.jpg" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=dvNBVfw4.jpg" alt="" style="width:167px;height:161px"/></a><figcaption class="wp-element-caption">iPhone用アプリ「Documents」</figcaption></figure>



<p>「<strong>Documents</strong>」という、iPhoneでファイル管理を行うのに、非常に便利なアプリがあります。これを使えば、SynologyNASの全データが、iPhone15Plusから確認できるようになります。(※1)</p>



<p>しかし、<strong>Documentsアプリを使って、宅外から4Gで、宅内にあるNASに置かれた高画質の動画を再生すると、カクカクと止まります</strong>。宅内にあるNASは、所詮個人用の弱小サーバーですので円滑なストリーミング再生までは能力が至りません。</p>



<p>これに対して<strong>Dropboxにアップされた動画は、宅外でも、</strong>画質が自動調整されながら<strong>比較的スムーズに再生されます</strong>。YouTubeやVimeoの再生の品質と同等な感じです。</p>



<p>Dropboxには、こうしたモビリティと、元来持っている安全性つまり災害後に重要なデータをすぐに取り出せるという、そうした利点があります。こうしたことから、NASに加えてクラウドを併用することが得策と思っています（関連後述）。</p>



<p>Macについてですが、今回紹介している作業においては役割はありません。電源OFFでいいです。Macは、NASへ取り込んだ写真動画を加工する時に、使います。</p>



<p>※1 DocumentsアプリとSynologyNASの接続はWebDAVを使いました。</p>



<p>※2 iPhoneからSynologyNASへのアップロードは、Synology純正の「Synology Photos」アプリを使いました。</p>



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



<h4 class="wp-block-heading">１　iPhone15Plus用なら既存のUSB-C機器は大抵難なく使える。</h4>



<p>アップル純正のUSB-Cハブがありますが、１万円近くしますし、Ethernetが付いていません。Amazonなどで調べると、その半額程度で、Ethernet付きが見つかります。iPhone15PlusはiPhone15proとは異なり、USB-Cのスピード自体はLightningの時とそう違わないわけです。従って、そう思えば、割り切りができて、大抵のUSB-C機器はストレスなく使うことができます。</p>



<p>逆に、iPhone15Proを買って、そのUSB-Cの高速化に期待している人は、高価なUSB-C機器を買うことになるかもしれません。</p>



<h4 class="wp-block-heading">２　NASもクラウドも利用は伸びるだろう。その理由は。。？</h4>



<p>クラウドは、持ち運び用のデータ保存デバイスを一つにまとめたもの、つまり<strong>USBメモリなどをコマゴマと持ち歩くことによる面倒さ及び破損紛失の危険性を排除</strong>したもの、そして宅外でデータをスムーズに扱えるように高性能にしたもの、そのように捉えることが出来ます。そのニーズは益々高まるでしょう。なぜか。それは、モバイル機器の、<strong>iPhone、iPad、ノートPCのデータを空にできるからです</strong>。空にしつつ、宅外でありながら宅内により近い作業環境を得ることが出来ます。</p>



<p>&nbsp;一方、NASは昔からあります。スマホが登場するずっと前からあります。歴史的に当然のこと。コンピュータは会社にしかありませんでした。そしてそのデータは、共有できるように1箇所にまとめられていました。それが基本形です。機器が物理的にガチっと繋がっている、有線で繋がっている状態が、最も高速で安定する。そのことは将来も変わらないと私は考えます。そしてその基本形は宅内でも同じです。<strong>Mac、WindowsPCなどは作業用機器であり、その中のデータは空にすることが望ましい</strong>でしょう。更にそこへ最近の要求として、災害後の復旧対策としての重要データのクラウドへのバックアップが求められる、これも宅内であっても同じことだと思います。</p>



<p>話が膨らみ過ぎでしょうか。私は、iPhone15へのUSB-Cの搭載は、その流れを加速しそうな気がします。</p>



<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=57fYUfLE.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=57fYUfLE.png" alt=""/></a><figcaption class="wp-element-caption">クラウドは、私はDropboxをメインに使っていますが、GoogleDrive、iCloudほか大手のサービスは、機能、価格に大差はありません。</figcaption></figure>



<p>以上です。</p>



<iframe sandbox="allow-popups allow-scripts allow-modals allow-forms allow-same-origin" style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=imakat-22&#038;language=ja_JP&#038;o=9&#038;p=8&#038;l=as4&#038;m=amazon&#038;f=ifr&#038;ref=as_ss_li_til&#038;asins=B08C74W2QK&#038;linkId=cc239f04fc6b141b55574f721960d730"></iframe>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">18148</post-id>	</item>
		<item>
		<title>Synology NASのHDD「お下がり」交換リレー</title>
		<link>https://imakat.com/2023/09/05/17965/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Tue, 05 Sep 2023 11:41:07 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[データの大容量化]]></category>
		<category><![CDATA[クラウド]]></category>
		<category><![CDATA[vimeo]]></category>
		<category><![CDATA[FinalCutPro]]></category>
		<category><![CDATA[Synology]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[DS218+]]></category>
		<category><![CDATA[DS220+]]></category>
		<category><![CDATA[Alxum]]></category>
		<category><![CDATA[SHR]]></category>
		<category><![CDATA[ホットスワップ]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=17965</guid>

					<description><![CDATA[2025.7.9追記：SynologyがサードパーティのHDDを使用不可にする打ち出しについては、検証をクリアしたベンダーについては、互換性リストに追加して使用可能にするとのことです。Western Digital、Se [&#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"/>



<p>2025.7.9追記：SynologyがサードパーティのHDDを使用不可にする打ち出しについては、検証をクリアしたベンダーについては、互換性リストに追加して使用可能にするとのことです。Western Digital、Seagate、東芝は追加されることはほぼ確実のようです(<a rel="noopener" target="_blank" href="https://gigazine.net/news/20250623-synology-nas-storage/">記事<span class="fa fa-external-link external-icon anchor-icon"></span></a>)。</p>



<p>2024.9.追記：SATAスタンドは、ミラーリングを行うようにしました。</p>


<div class="sc-vimeo-embed">
  <p style="font-size: 14px;" class="sc-link">
    <a href="https://imakat.com/vm5?movid=861177501" target="_blank" onclick="stopVimeoBeforeNavigate(event, this)">
      動画を別ページで表示(ここをクリック)
    </a>
  </p>

  <div class="iframe-wrapper">
    <iframe
      src="https://player.vimeo.com/video/861177501?title=0&byline=0&portrait=0&controls=1&speed=1&texttrack=ja&dnt=1&loop=0"
      frameborder="0"
      allow="autoplay; fullscreen; picture-in-picture"
      allowfullscreen></iframe>
  </div>

  <div class="dr-vimeo-sublist">
    <details translate="yes"><summary translate="yes">字幕一覧(クリック)</summary> <p translate="yes">
(<a href="#" class="imk-cue" data-seek="0:00" translate="no">00:00:00</a>)  Synology NAS HDD「お下がり」交換リレー<br>
(<a href="#" class="imk-cue" data-seek="0:11" translate="no">00:00:11</a>)  これが自宅にあるNASとWebサーバーです。<br>
(<a href="#" class="imk-cue" data-seek="0:23" translate="no">00:00:23</a>)  DS220+ですけどね、最近容量不足ということで困ってました。<br>
(<a href="#" class="imk-cue" data-seek="0:30" translate="no">00:00:30</a>)  そこで大容量に変えることにしました。<br>
(<a href="#" class="imk-cue" data-seek="0:34" translate="no">00:00:34</a>)  ストレージマネージャーにこういう警告が出ています。<br>
(<a href="#" class="imk-cue" data-seek="0:39" translate="no">00:00:39</a>)  二巡すると全部が入れ替わるようになります。<br>
(<a href="#" class="imk-cue" data-seek="0:46" translate="no">00:00:46</a>)  事前にハードディスクとSATAスタンドを買っておきました。<br>
(<a href="#" class="imk-cue" data-seek="0:53" translate="no">00:00:53</a>)  それでは作業を具体的に見ていきましょう。NASの蓋を外します。<br>
(<a href="#" class="imk-cue" data-seek="1:04" translate="no">00:01:04</a>)  ディスク1とディスク2がありますが、同じ容量なんで2から抜くことにします。<br>
(<a href="#" class="imk-cue" data-seek="1:14" translate="no">00:01:14</a>)  引き抜きます。<br>
(<a href="#" class="imk-cue" data-seek="1:21" translate="no">00:01:21</a>)  Seagateの6TBです。<br>
(<a href="#" class="imk-cue" data-seek="1:39" translate="no">00:01:39</a>)  引き抜いたあと警告音が鳴ります。<br>
(<a href="#" class="imk-cue" data-seek="1:51" translate="no">00:01:51</a>)  右側が今外した6TBです。左が12TBの新品です。<br>
(<a href="#" class="imk-cue" data-seek="2:05" translate="no">00:02:05</a>)  ハードディスク取り付けパーツを付け替えます。<br>
(<a href="#" class="imk-cue" data-seek="2:21" translate="no">00:02:21</a>)  まあ滅多にやらない作業なんで手際が悪いです。<br>
(<a href="#" class="imk-cue" data-seek="2:45" translate="no">00:02:45</a>)  12TBの方にはめます。<br>
(<a href="#" class="imk-cue" data-seek="3:42" translate="no">00:03:42</a>)  やっとできました。私が不器用なだけです。誰でも簡単にできます。<br>
(<a href="#" class="imk-cue" data-seek="3:58" translate="no">00:03:58</a>)  差し込みます。<br>
(<a href="#" class="imk-cue" data-seek="4:30" translate="no">00:04:30</a>)  ディスク2のライトが点灯しました。装着まではOKです。<br>
(<a href="#" class="imk-cue" data-seek="4:39" translate="no">00:04:39</a>)  「劣化」と表示されています。新しいドライブを装着済みなので、今すぐ修復をクリックします。<br>
(<a href="#" class="imk-cue" data-seek="4:54" translate="no">00:04:54</a>)  修復中となります。最初に初期化されます。<br>
(<a href="#" class="imk-cue" data-seek="5:03" translate="no">00:05:03</a>)  それでは3番目の作業で、Webサーバーの3TBの入れ替えをします。<br>
(<a href="#" class="imk-cue" data-seek="5:25" translate="no">00:05:25</a>)  Webサーバーの蓋を外します。<br>
(<a href="#" class="imk-cue" data-seek="5:31" translate="no">00:05:31</a>)  ここにディスク1とディスク2があります。同じ容量なのでどちらから抜いても構いません。<br>
(<a href="#" class="imk-cue" data-seek="5:40" translate="no">00:05:40</a>)  2から抜いてみます。<br>
(<a href="#" class="imk-cue" data-seek="5:53" translate="no">00:05:53</a>)  ホットスワップ機能がついているもんですから、ハードディスクを抜いてもサーバーは中断しないです。そのまま動作します。<br>
(<a href="#" class="imk-cue" data-seek="6:18" translate="no">00:06:18</a>)  ハードディスク取り付けパーツを、お下がりの6TBへ付け替えます。<br>
(<a href="#" class="imk-cue" data-seek="6:38" translate="no">00:06:38</a>)  どうも不器用です。<br>
(<a href="#" class="imk-cue" data-seek="7:01" translate="no">00:07:01</a>)  6TBの方へ付けます。<br>
(<a href="#" class="imk-cue" data-seek="7:11" translate="no">00:07:11</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:23" translate="no">00:08:23</a>)  6TBを差し込みます。<br>
(<a href="#" class="imk-cue" data-seek="8:47" translate="no">00:08:47</a>)  ディスク2が点灯しました。<br>
(<a href="#" class="imk-cue" data-seek="8:57" translate="no">00:08:57</a>)  お下がりの6TBは差し込み済みなので、今すぐ修復を選びます。<br>
(<a href="#" class="imk-cue" data-seek="9:06" translate="no">00:09:06</a>)  ディスク2を選びます。<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:33" translate="no">00:09:33</a>)  修復中になります。<br>
(<a href="#" class="imk-cue" data-seek="9:41" translate="no">00:09:41</a>)  一巡目の最後の作業ですね。お下がりの3TBをSATAスタンドに取り付けます。<br>
(<a href="#" class="imk-cue" data-seek="9:55" translate="no">00:09:55</a>)  私が買ったのはAlxumというスタンドです。<br>
(<a href="#" class="imk-cue" data-seek="10:20" translate="no">00:10:20</a>)  それではAのソケットに差し込みます。<br>
(<a href="#" class="imk-cue" data-seek="11:06" translate="no">00:11:06</a>)  Bも空いています。<br>
(<a href="#" class="imk-cue" data-seek="11:23" translate="no">00:11:23</a>)  まあ、硬いですな。<br>
(<a href="#" class="imk-cue" data-seek="11:33" translate="no">00:11:33</a>)  SATAスタンドのハードディスクはexFATでフォーマットします。<br>
(<a href="#" class="imk-cue" data-seek="11:41" translate="no">00:11:41</a>)  これで一巡目は終わりですけど、NASサーバー、Webサーバーともに修復順調に進んでます。<br>
(<a href="#" class="imk-cue" data-seek="11:53" translate="no">00:11:53</a>)  TimeMachineの設定については割愛しますね。<br>
(<a href="#" class="imk-cue" data-seek="11:58" translate="no">00:11:58</a>)  まあちょっと気分転換です。<br>
(<a href="#" class="imk-cue" data-seek="12:04" translate="no">00:12:04</a>)  家の近くにですね、タヌキが出ていました。<br>
(<a href="#" class="imk-cue" data-seek="12:10" translate="no">00:12:10</a>)  まあ本当に犬ですね。犬そっくりです。走り方も犬。<br>
(<a href="#" class="imk-cue" data-seek="12:20" translate="no">00:12:20</a>)  二巡目ですけど、やることは一巡目と同じです。<br>
(<a href="#" class="imk-cue" data-seek="12:29" translate="no">00:12:29</a>)  もう結果からお見せします。SATAスタンドに2個のハードディスクが刺さってます。<br>
(<a href="#" class="imk-cue" data-seek="12:43" translate="no">00:12:43</a>)  最後にマネージャーを確認しますと、NAS、Webサーバーともに修復中、進んでます。<br>
(<a href="#" class="imk-cue" data-seek="12:53" translate="no">00:12:53</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>

  <script src="https://player.vimeo.com/api/player.js"></script>

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

    var target = wrapper ? wrapper : document;
    var iframe = target.querySelector('iframe');
    if (!iframe || !window.Vimeo || !Vimeo.Player) return;

    var player = new Vimeo.Player(iframe);

    /* --- 1. 確実に一時停止してから別ページを開く処理 --- */
    window.stopVimeoBeforeNavigate = function(event, link) {
      event.preventDefault(); 
      player.pause().then(function() {
        setTimeout(function() {
           window.open(link.href, link.target);
        }, 50);
      }).catch(function() {
        window.open(link.href, link.target);
      });
    };

    /* --- 2. 字幕のON/OFF制御（Vimeo API仕様） --- */
    var currentMode = "hidden";
    
    function useNormalMode() {
        currentMode = "hidden";
        player.disableTextTrack().catch(function(e){});
    }
    
    function useSpecialMode() {
        currentMode = "showing";
        // 日本語の subtitles が無ければ captions を探す安全設計
        player.enableTextTrack('ja', 'subtitles').catch(function() {
            player.enableTextTrack('ja', 'captions').catch(function() {});
        });
    }

    // ロード直後は枠内字幕を非表示にする
    player.ready().then(function() {
        useNormalMode();
    });

    // Vimeoプレーヤーの全画面・PiPイベントを監視して字幕を切り替え
    player.on('fullscreenchange', function(data) {
        if (data.fullscreen) useSpecialMode();
        else useNormalMode();
    });
    player.on('enterpictureinpicture', function() {
        useSpecialMode();
    });
    player.on('leavepictureinpicture', function() {
        useNormalMode();
    });

    /* --- 3. 字幕リストの初期化（自動梱包とデフォルト展開） --- */
    var checks = 0;
    var initTimer = setInterval(function(){
        var listContainer = target.querySelector('details > p');
        if (listContainer) {
            initSubtitles(listContainer);
            clearInterval(initTimer);
        }
        checks++;
        if (checks > 20) clearInterval(initTimer); // 10秒経ったら監視終了
    }, 500);

    function initSubtitles(listContainer) {
        // デフォルトで開く
        var detailsEl = target.querySelector("details");
        if (detailsEl) {
            detailsEl.open = true; 
            var summaryEl = detailsEl.querySelector("summary");
            if (summaryEl) summaryEl.textContent = "字幕(シーン)はここをクリック";
        }

        // 行ごとに見えない箱(span)で梱包
        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";
        }
    }

    /* --- 4. クリックシーク機能 --- */
    function parseTs(ts) {
      if (!ts) return null;
      var t = ts.trim();
      var parts = t.split(':').map(function(v){ return parseInt(v, 10); });
      if (parts.length === 2 && parts.every(Number.isFinite)) {
        return parts[0] * 60 + parts[1];
      } else if (parts.length === 3 && parts.every(Number.isFinite)) {
        return parts[0] * 3600 + parts[1] * 60 + parts[2];
      }
      return null;
    }

    target.addEventListener('click', function(e) {
      var a = e.target.closest('a.imk-cue');
      if (!a) return;
      e.preventDefault();
      var sec = null;
      if (a.dataset.seconds) {
        sec = Number(a.dataset.seconds);
      } else if (a.dataset.seek) {
        sec = parseTs(a.dataset.seek);
      }
      if (sec !== null && Number.isFinite(sec)) {
        player.setCurrentTime(sec).then(function(){ player.play(); }).catch(function(){});
      }
    });

    /* --- 5. 同期ハイライトと自動スクロール --- */
    player.on('timeupdate', function(data) {
      // Vimeoプレーヤーが勝手に字幕を出していたら隠す（最強ガード）
      player.getTextTracks().then(function(tracks) {
          var activeTrack = tracks.find(function(t){ return t.mode === 'showing'; });
          if (currentMode === "hidden" && activeTrack) {
              useNormalMode();
          }
      }).catch(function(){});

      var currentTime = data.seconds;
      var listContainer = target.querySelector('details > p');
      if (!listContainer) return;

      var cues = listContainer.querySelectorAll('a.imk-cue');
      if (cues.length === 0) return;

      var activeA = null;
      for (var i = 0; i < cues.length; i++) {
        var sec = null;
        if (cues[i].dataset.seconds) {
            sec = Number(cues[i].dataset.seconds);
        } else if (cues[i].dataset.seek) {
            sec = parseTs(cues[i].getAttribute('data-seek'));
        }
        if (sec !== null && currentTime >= sec - 0.5) {
          activeA = cues[i];
        } else if (sec > currentTime) {
          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"
              });
          }
      }
    });
  })();
  </script>

  <style>
  .sc-vimeo-embed .iframe-wrapper {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: visible;
  }
  .sc-vimeo-embed .iframe-wrapper iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }

  /* 行梱包時の基本スタイル（干渉防止のためクラス内で指定） */
  .sc-vimeo-embed .imk-line {
      display: inline-block;
      width: 100%;
      border-radius: 2px;
      transition: background-color 0.1s;
  }

  /* ▼ 字幕一覧（details）の見た目調整 */
  .sc-vimeo-embed details > p {
    font-size: 14px !important;
    line-height: 1.6;
    height: 200px !important; 
    overflow: auto;
    background-color: #EDF7FF;
    padding: 2px 6px;
    margin: 0;
    box-shadow: 3px 3px 4px black;
    position: relative; 
  }
  .sc-vimeo-embed details > summary {
    font-size: 14px !important;
    padding: 2px 6px;
    width: 100%;
    background-color: #ddd;
    border: none;
    box-shadow: 3px 3px 4px black;
    cursor: pointer;
    list-style: none;
  }
  </style>
</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>上のビデオをご覧ください。</p>



<p>マニアックなようでもあり、よくありそうな話題です。</p>



<p>人の嗜好には、色々ありますが、モノを買う時、「何でも入っている方がいい」という人と「それぞれ別々の方がいい」に分かれると思います。ただどうでしょう。今でも量販店のパソコンコーナーへ行って、「そのまま何でも全部入ってて、後からあれ買えこれ買えって言ってこないやつ。それで安いやつ。」と店員を困らせ、まあ、ある意味店員を喜ばせ、買う人の方が多いですかね。まだDVDドライブ付きが売ってますね。オールインワンってやつ。</p>



<p>今回、NASが容量不足で、内装されたHDDを大容量に交換する。というテーマですが、もしオールインワン嗜好の人のパソコンに例えると、パソコンに内蔵されたHDDを換装する、ということを意味します。これを自分でやると結構大変。まず外付けのHDDにデータを全部コピーする。HDDとパソコンの指示書通りに、パソコンのネジを外して、HDDを交換する。外付けHDDから新HDDへコピーする。様々な確認を通って、完了。その作業の間は、当然、パソコンは使えません。</p>



<p><strong>パソコンでは内蔵されていて、そう簡単には取り出せないHDDを、そもそも最初から、外に取り出してしまったもの。別々にしたもの。それがNAS</strong>です（ただしNASは、それだけが目的ではありません。）</p>



<p>そしてNASは、たいてい、2個以上のHDDを持って、データを常に、二つ以上持っています。片方のエンジンが故障しても飛行できるようになっています。</p>



<p>ですから、今回の、HDDを大容量に交換する時でも、パソコンの停止は不要です。</p>



<p>なお、「お下がり」交換リレーと称したのは、<strong>新品HDD→DS220+→既存を抜いて→DS218+→既存を抜いて→SATAスタンドと「お古」をお下がりした</strong>からです。</p>



<h4 class="wp-block-heading">実行前→完成</h4>



<figure class="wp-block-image size-large is-resized has-custom-border"><a href="https://imakat.com/rd.php?id=jCwkhKPO.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=jCwkhKPO.png" alt="" class="has-border-color has-grey-border-color" style="border-width:5px;border-radius:15px;aspect-ratio:1.7796208530805686;width:839px;height:auto"/></a></figure>



<p>今回、開始から完成まで、約２日かかりましたが、振り返ってみると、難しい作業は、ありませんでした。もちろん、慎重に行う必要はあります。</p>



<p>殆ど同じ仕様である、DS220+とDS218+を使ったことが、さらに、一連の作業をスムーズにさせました。2台x2巡ですから、4回同じ作業をしたわけです。</p>



<p></p>



<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"/>



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



<h4 class="wp-block-heading"><strong>1 　</strong>まるでマジック。パソコンの作業を止めることなく、NASやWebサーバーも止めることなく、HDDの容量が増えている。</h4>



<p>DS218+およびDS220+ともに2個のHDDを収容しています。SHRまたはRAID1を使用した場合、最大使用量は小さい方になってしまいます。例えば、異なる容量の既存6TBと新12TBという組み合わせで稼働すること自体はできます。新12TBに既存6TBのデータが書き込まれます。ただし、このままにすると、新12TBの方の6TB分が未使用になってしまいます。このままではやってることが無意味です。ですので一巡目の修復が完了後に、二巡目として、既存6TBを抜いて新12TBを入れて、先の12TBから新12TBにデータを書き込みます。これにより、元のデータを維持した上で、12TBが使用可能領域になります。<strong>パソコンの作業を止めさせることなく、裏側で、HDDを総入れ替えするという、まるでマジック</strong>です。これをDS218+とDS220+の2台同時に行ったわけです。こういったトリック的なやり方は、企業の情報システム部では、ふつうに行われていることかと思いますが、家庭でも、割と簡単に実行できるのは、大いなる進歩です。</p>



<p>余談ですが、NAS(DS220+)とWebサーバー(DS218+)は、別のプロバイダ、別のネットワークにして、隔離しています。</p>



<p><a rel="noopener" target="_blank" href="https://www.synology.com/ja-jp/support/RAID_calculator?hdds=">Synology RAID計算機<span class="fa fa-external-link external-icon anchor-icon"></span></a>というサイトでは、</p>



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



<p>HDDの組み合わせにより、使用可能な容量を算出してくれます。</p>



<h4 class="wp-block-heading"><strong>２　SATAスタンドのHDDフォーマットはexFAT。</strong></h4>



<p>SATAスタンドは、HDDを挿し込むだけで、SynologyNAS側では、別の2個のUSBディスクと認識されます。(3TB+3TB)x0.9= 5.4TB 使用できます。HDDのフォーマットはexFATにしました。exFATであれば、SATAスタンドのUSBケーブルを抜き挿しして、<strong>WindowsでもMacでも読み書きが出来ます</strong>。</p>



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



<p>この外付けHDD2個でRAIDを組むことはできませんが、シェルスクリプトとスケジューラを使って、ミラーリングの形、常に同じものを2つ持つ形の定期バックアップを行っています（<a rel="noopener" target="_blank" href="https://docs.google.com/document/d/1UVE1WvxvuN7JAe0Xi-flcUvravX7upYZhEK52bzSvdc/edit?usp=sharing">rsyncを使ってUSBHDD１からUSBHDD２へ定期バックアップ<span class="fa fa-external-link external-icon anchor-icon"></span></a>)。</p>



<a rel="noopener" target="_blank" href="https://docs.google.com/drawings/d/10-dgJGt4Y4sB31O5aj126ORL7_jsQ5RzVeBX13p4XlQ/edit?usp=sharing">
<img decoding="async" src="https://docs.google.com/drawings/d/10-dgJGt4Y4sB31O5aj126ORL7_jsQ5RzVeBX13p4XlQ/pub?w=960&#038;h=720"
></a>



<h4 class="wp-block-heading">３　動画がどんどん大容量化。だから、NASに注目が集まりそう。</h4>



<p>つくづく思いますが、動画などの大容量のデータを、どこへ、どのように保存するかは、非常に大きな問題です。どんどん大容量化していきます。クラウドだけに頼っていたら、お金が続かない。クラウドの主な役割は、災害後に復旧させたい重要な情報を預ける、とした場合、そこまで重要ではないが、日常生活の充実のために手元に残しておきたいデータは、どうすればいいか。</p>



<p>NASは、その一つの答えです。</p>



<p>以上</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">17965</post-id>	</item>
	</channel>
</rss>
