WEBVTT

00:00:18.000 --> 00:00:20.500
それでは始めます。

00:00:20.500 --> 00:00:22.500
この画像ですけれども、

00:00:22.500 --> 00:00:28.000
これはあの、日本の山村によく見かける棚田の風景です。

00:00:28.000 --> 00:00:32.000
ええ、コンピューターのデータの管理をですね、

00:00:32.000 --> 00:00:36.500
この棚田を流れる水のように行いたいと。

00:00:36.500 --> 00:00:38.000
そう思って、

00:00:38.000 --> 00:00:44.000
今回この「棚田式ファイル管理システム」を作ってみました。

00:00:44.000 --> 00:00:47.000
まだ最後まで完成していませんが、

00:00:47.000 --> 00:00:51.500
重要な仕組みは大体出来上がりましたので、

00:00:51.500 --> 00:00:53.000
紹介したいと思います。

00:00:54.000 --> 00:00:56.000
この動画は、

00:00:56.000 --> 00:00:58.500
Google Vids

00:00:58.500 --> 00:01:03.000
Google V-I-D-S という新しい機能をですね、

00:01:03.000 --> 00:01:05.500
使って作ってみました。

00:01:05.500 --> 00:01:08.500
それではご覧ください。

00:01:21.000 --> 00:01:29.000
本日は、私が個人で開発・運用している「DAS棚田式ファイル管理システム」についてお話しします。

00:01:29.000 --> 00:01:31.500
これは市販のNASやRAIDに依存せず、

00:01:31.500 --> 00:01:36.500
Mac miniの計算能力とGoogle Sheetsを活用して、

00:01:36.500 --> 00:01:40.500
大量のファイルを安全かつ低コストに管理するための仕組みです。

00:01:40.500 --> 00:01:47.500
デジタルデータの断捨離とハードウェアの有効活用をどう両立させたか、その全貌をご紹介します。

00:01:49.000 --> 00:01:54.500
まず、開発のきっかけとなった動機についてお話しします。

00:01:54.500 --> 00:02:00.000
私は長年、SynologyのNASとMac miniを併用してファイル管理を行ってきました。

00:02:00.000 --> 00:02:03.500
しかし、ある時、ふと疑問を抱きました。

00:02:03.500 --> 00:02:08.500
「NASも結局は小型のコンピュータであり、Mac miniと機能が重複しているのではないか？」と。

00:02:08.500 --> 00:02:14.000
手元には強力なプロセッサを持つMac miniがあるのに、データの管理はNASの非力なCPU任せになっている。

00:02:14.000 --> 00:02:22.500
しかも、RAIDを組んでしまうとHDDの組み合わせに制約が生まれ、自由が利きません。

00:02:22.500 --> 00:02:26.500
Mac miniの頭脳(OS)を使って、複数のHDDをもっと自由に、

00:02:26.500 --> 00:02:30.000
まるでレゴブロックのように扱えないか？

00:02:30.000 --> 00:02:32.000
これが最初の着想でした。

00:02:33.500 --> 00:02:39.000
もう一つの、そしてより切実な動機が、私自身の年齢と環境の変化です。

00:02:39.000 --> 00:02:44.500
高齢になるにつれ、身の回りのものを整理し、「断捨離」を進めたいという思いが強くなりました。

00:02:44.500 --> 00:02:46.500
デジタルデータも同様です。

00:02:46.500 --> 00:02:51.500
ただ溜め込むのではなく、必要なものを選別し、不要なものは手放すサイクルを作りたい。

00:02:51.500 --> 00:02:57.000
また、昨今のHDD価格の高騰も無視できません。

00:02:57.000 --> 00:03:02.500
RAIDのために高価な同容量のHDDを買い揃えるのではなく、

00:03:02.500 --> 00:03:07.000
手元にある古い500GBや1TBのHDDも捨てずに、

00:03:07.000 --> 00:03:10.500
資産として有効活用したい。

00:03:10.500 --> 00:03:17.000
この「整理したい欲求」と「もったいない精神」を技術で解決するために構築したのが、このシステムです。

00:03:19.500 --> 00:03:23.500
そこで考案したのが、「棚田」というデータ管理モデルです。

00:03:23.500 --> 00:03:28.000
水が上流から下流へ流れるように、データも鮮度に応じて、

00:03:28.000 --> 00:03:30.500
段々畑を下りていくイメージです。

00:03:30.500 --> 00:03:34.500
システムでは、大きく3つの段位を定義しています。

00:03:34.500 --> 00:03:37.000
一番上が「T0：作業段」。

00:03:37.000 --> 00:03:43.000
これはDropboxなど、人間やアプリが日々読み書きする、最も動きの激しい領域です。

00:03:43.000 --> 00:03:46.000
その下が「T1：保管段」。

00:03:46.000 --> 00:03:51.000
ここからはシステムが管理する領域で、準アクティブなデータを置きます。

00:03:51.000 --> 00:03:54.000
一番下が「T2：長期保管段」。

00:03:54.000 --> 00:03:56.500
ここはアーカイブ領域です。

00:03:56.500 --> 00:04:02.000
重要なのは、それぞれの段位に、サイズもメーカーも異なるバラバラのHDDを割り当てられる点です。

00:04:02.000 --> 00:04:07.000
これをソフトウェアで一つの巨大な階層構造として管理します。

00:04:09.000 --> 00:04:14.000
このシステムの核心にある設計思想、それが「判断と実行の分離」です。

00:04:14.000 --> 00:04:20.500
通常のファイル操作では、人間が「移動」と思った瞬間にファイルが動きます。

00:04:20.500 --> 00:04:25.500
しかし、それでは「あ、間違えた！」という事故を防げません。

00:04:25.500 --> 00:04:32.000
このシステムでは、「考える工程（シミュレーション）」と「動かす工程（アプライ）」を完全に分離しました。

00:04:32.000 --> 00:04:38.000
まず、システムは全ファイルをスキャンし、「もしルール通りに動かしたらどうなるか？」を計算し、

00:04:38.000 --> 00:04:40.500
データベースに記録します。

00:04:40.500 --> 00:04:44.500
これを我々は「メタデータ更新」と呼びます。

00:04:44.500 --> 00:04:47.000
実体ファイルには指一本触れず、

00:04:47.000 --> 00:04:50.000
メタデータ上で完璧な計画を立てる。

00:04:50.000 --> 00:04:52.000
これが第一段階です。

00:04:53.000 --> 00:04:57.500
このアプローチでは、実体ファイルは「従属物」とみなします。

00:04:57.500 --> 00:05:01.000
そこにファイルがあるから残すのではなく、

00:05:01.000 --> 00:05:05.500
「メタデータという設計図にあるべきと書かれているから、そこに置く」のです。

00:05:05.500 --> 00:05:10.500
システムは、設定されたパス配下の全ファイルを「棚卸し」します。

00:05:10.500 --> 00:05:16.000
これにより、管理者の知らない「野良ファイル」が存在することを許しません。

00:05:16.000 --> 00:05:20.500
全てのファイルにIDと行き先が振られ、データベース上で管理される。

00:05:20.500 --> 00:05:23.000
これが「メタデータ至上主義」です。

00:05:25.000 --> 00:05:28.000
システムの全体像をご覧ください。

00:05:28.000 --> 00:05:32.500
ユーザーインターフェースには、なんとGoogle Sheetsを使います。

00:05:32.500 --> 00:05:35.000
専用のアプリは作りません。

00:05:35.000 --> 00:05:41.500
スプレッドシート上の「tanada.csv」という設定シートに行き先を書き、セル上のボタンを押す。

00:05:41.500 --> 00:05:47.500
すると、Mac mini内で待機しているPythonのデーモン（常駐プログラム）がそれを検知し、

00:05:47.500 --> 00:05:51.000
裏側でスクリプト群が走り出します。

00:05:51.000 --> 00:05:55.500
非常にシンプルな構成ですが、Googleの認証基盤を使うため、セキュリティも堅牢です。

00:05:59.000 --> 00:06:04.000
さて、ここからは少し技術的な「柔軟性」の話をします。

00:06:04.000 --> 00:06:10.500
基本設計では、データはT0からT2へ、重力に従って落ちていく一方でした。

00:06:10.000 --> 00:06:17.500
しかし運用していると、「T2のHDDを別のPCで使いたいから、空にしたい」という場面が出てきます。

00:06:17.500 --> 00:06:24.000
そこで、プログラム上の「重力ルール」を緩和し、T2からT1への「逆流」を許可するようにしました。

00:06:24.000 --> 00:06:31.500
これにより、データは一方通行ではなく、必要に応じてHDD間を行き来できる「リバランス」が可能になりました。

00:06:31.500 --> 00:06:37.000
RAIDのリビルドのような危険な作業なしに、データの引っ越しができるのです。

00:06:37.000 --> 00:06:43.000
この逆流を活用した強力な機能が、「限度0TB設定」です。

00:06:43.000 --> 00:06:47.500
例えば、T2にある古いHDDを引退させたいとします。

00:06:47.500 --> 00:06:49.000
やることは一つ。

00:06:49.000 --> 00:06:53.500
Google Sheetsでその段位の容量限度を「0TB」に書き換えるだけです。

00:06:53.500 --> 00:06:56.500
シミュレーションを実行すると、システムは

00:06:56.500 --> 00:07:02.500
「おっと、T2の容量がゼロになった。ここにあるファイルは溢れてしまう」と判断します。

00:07:02.500 --> 00:07:09.500
そして自動的に、空き容量のある上位のT1へ、全てのファイルを移動させる計画を立案してくれます。

00:07:09.500 --> 00:07:15.500
除外ファイルがあってもエラーにならないよう調整済みですので、ボタン一つで安全にHDDを空っぽにできます。

00:07:19.000 --> 00:07:22.500
しかし、自動化には恐怖も伴います。

00:07:22.500 --> 00:07:28.000
もしシステムが暴走して、作業中のDropbox(T0)を古いデータで上書きしてしまったら？

00:07:28.000 --> 00:07:31.000
これだけは絶対に避けなければなりません。

00:07:31.000 --> 00:07:36.500
そのため、プログラムの最深部に「T0戻り禁止」という安全装置をハードコードしています。

00:07:36.500 --> 00:07:43.000
いかなる設定、いかなるバグがあろうとも、「現在の場所がT0以外で、移動先がT0となる操作」は、

00:07:43.000 --> 00:07:48.000
シミュレーション段階と実行直前の2段階でブロックされ、強制停止します。

00:07:48.000 --> 00:07:52.500
T0は聖域（サンクチュアリ）であり、システムはそこへ書き込む権限を持ちません。

00:07:52.500 --> 00:07:57.000
この制約があるからこそ、安心して自動化を任せられるのです。

00:08:02.000 --> 00:08:06.000
実際の運用では、いきなりファイルを動かすことはしません。

00:08:06.000 --> 00:08:10.000
まず、「ドライラン（予行演習）」が行われます。

00:08:10.000 --> 00:08:16.500
処理結果はメールで通知され、何個のファイルが動き、どの程度のリスクがあるかが5段階評価で届きます。

00:08:16.500 --> 00:08:22.500
「問題なし」という評価を確認してから、初めて人間が「APPLY（適用）」ボタンを押す。

00:08:22.500 --> 00:08:28.000
寝ている間に、Mac miniが数テラバイトのデータを整理整頓してくれる。

00:08:28.000 --> 00:08:30.500
そんな運用が実現しています。

00:08:33.000 --> 00:08:38.500
次に、これからの機能である「廃棄（断捨離）の自動化」についてです。

00:08:38.500 --> 00:08:44.000
データは溜まる一方ですが、手動で消すのは勇気が要ります。

00:08:44.000 --> 00:08:47.500
そこで、「廃棄処理の規定」というルールを設けます。

00:08:47.500 --> 00:08:53.500
例えば、「拡張子が.tmpで、かつ2年以上更新がないファイル」といった条件を定義します。

00:08:53.500 --> 00:08:57.000
これに合致したファイルは、即座に削除されるのではなく、

00:08:57.000 --> 00:09:02.500
「pending_delete」という専用のゴミ箱領域へ移動されます。

00:09:02.500 --> 00:09:07.000
そこで半年間眠らせて、誰も困らなければ完全に消去する。

00:09:07.000 --> 00:09:12.500
システムが背中を押してくれることで、デジタル断捨離がスムーズに進みます。

00:09:13.000 --> 00:09:16.000
日々の運用は非常にシンプルです。

00:09:16.000 --> 00:09:22.000
新しいHDDを買ってきたら、Mac miniに繋ぎ、Google Sheetsの設定行を1行追加するだけ。

00:09:22.000 --> 00:09:28.500
あとはボタンを押せば、システムが自動的にそのHDDをT1やT2として認識し、

00:09:28.500 --> 00:09:31.000
データの保存先として組み込みます。

00:09:31.000 --> 00:09:38.000
逆にHDDを外す時も、設定を消すだけで、データは他のHDDへ自動的に退避されます。

00:09:38.000 --> 00:09:44.500
RAIDの再構築のような、胃が痛くなる待ち時間はもうありません。

00:09:44.500 --> 00:09:50.000
このシステムを導入して、私は「RAID」という呪縛から解放されました。

00:09:50.000 --> 00:09:56.500
メーカーも容量も違うHDDを自由に組み合わせ、古くなったら交換し、余ったら再利用する。

00:09:56.500 --> 00:10:04.000
DAS（ダイレクト・アタッチド・ストレージ）として各ディスクが独立しているため、万が一システムが壊れても、

00:10:04.000 --> 00:10:09.500
HDDを抜いて別のPCに繋げば、そのまま中のデータを読み出せます。

00:10:09.500 --> 00:10:14.500
「資産の流動性」と「データの安全性」、この二つを、

00:10:14.500 --> 00:10:18.500
Mac miniという既存のリソースだけで手に入れることができました。

00:10:20.000 --> 00:10:22.000
最後になります。

00:10:22.000 --> 00:10:25.500
「DAS棚田式ファイル管理システム」は単なるバックアップツールではありません。

00:10:25.500 --> 00:10:30.000
「判断と実行を分離する」という哲学に基づき、

00:10:30.000 --> 00:10:37.000
私たちシニア世代が直面する「デジタル遺産の整理」と「資産の有効活用」を解決するためのソリューションです。

00:10:37.000 --> 00:10:40.500
NASのブラックボックス化に不安を感じている方、

00:10:40.500 --> 00:10:44.000
手元のHDDをもっと自由に使いこなしたい方。

00:10:44.000 --> 00:10:49.000
是非、ご自身のMac miniに「棚田」を作ってみてはいかがでしょうか。

00:10:49.000 --> 00:10:52.000
ご静聴、ありがとうございました。
