みなさんこんにちは、青山キリカです。
今回は
「NASを自作してデータを管理したい」
という話をまとめます。
さて、
僕はガジェット(も扱う)ブロガーということもあり、多くの端末を日々の気分で使い分けています。その際に困りがちなのが、データの管理。
以前にも「複数機種でのデータの管理」という記事を書いているほどには僕はこれで困ってます。
「あの端末にしかデータがない」
「このソフトは1端末でしかライセンス認証できない」
といった状況によって使える端末が制限されてしまうのはあまり嬉しくないですよね。
こういった際に便利なのはオンラインストレージの存在です。僕はGoogleDriveをはじめとしたいくつかのサービスを使っているのですが、
- セキュリティ上どうしても不安を感じる側面もある
- 同期が瞬間的に行われない
といった問題がつきまといます。
アーカイブとして置いておきたい画像、音楽のようなデータは問題ないですが、瞬間的に読み書きが必要なアプリのテンポラリファイル、ドキュメントファイル系とはあまり相性が良くありません。
僕が一番同期したいと考えているのがUnityのプロジェクトファイルです。母艦のデスクトップPCからでも、ごろ寝でノートパソコンからでもUnityの同プロジェクトにアクセスできたら便利じゃないでしょうか。
さらに言うと、「Unityプロジェクトファイルも含めたあらゆるデータに同様の手順でアクセスする」と言う表現が正確といえます。Unityプロジェクトだけを特別な手段で共有し、他のファイルはオンラインストレージを、と言うのはどうしても面倒さを感じます。
全てを一つのアプローチで管理できるのが理想
今回はこれを最終目標に据えていくつかの検証を行いました。
オチを言うと「Unityプロジェクトファイルについてはネットワークストレージ上に置くべきではない」と言う結論になるんですが、それ以外のファイルに関しては不自由なく管理する仕組みの生成が行えました。ということで今回は、その検証過程も含めて役立ちそうなポイントを備忘録として記事に残すことといたします。
端末間でのデータ同期方法
まず、端末間でのデータ同期方法にはどのようなものがあるかから考えてみます。
僕が所有している端末は
- Windows 2台
- Macbook Air
- Android端末
- iPhone、iPad
とざっくり分類できます。これらに対し、特に違いを意識せずアクセスしたいです。
オンラインストレージサービス
なんだかんだ言って手っ取り早いのはオンラインストレージです。
アカウントさえあれば、そのアカウントでログインするだけであらゆる環境からファイルの閲覧、修正が可能であり、そのサービスで提供されるセキュリティで守られます。
「月額、年額で支払うサブスク形式は維持費がかかるから嫌だ」
という意見もあると思いますが、ストレージは読み書きできる回数に限度がある消耗品というのがポイントです。
例えば5年でHDDがぶっ壊れるとした場合、5年おきにそれを買い換え直す費用まで考慮するなら、それらの管理代や電気代、セキュリティ諸々をすべて請け負ってくれるサブスクは大いにアリじゃないでしょうか。
オンラインストレージとして愛用しているのはGoogleDriveです。
値段設定は執筆時点で以下のプランがあります。有料プランの中でも最も安いベーシックプランでは年額2500円で100GBを自由に使うことが可能です。
無料プランでもたっぷり15GBも使わせてくれる太っ腹っぷり!
ただし、オンラインストレージには考えるべき問題がたくさんあります。
まず、ネットワーク障害などでデータが破損したり、急にサービスが終了するといったパターンが考えられます。GoogleDriveやiCloudなどといった大手サービスだからといって必ずしも安心とは限りません。実際、Googleフォトが容量無制限から15GBに制限されたという事象が2021年に起きています。
また、オンラインサービスである以上、そのサービスへの信頼が必要です。
僕はGoogleDriveを使っていますし、Googleを信用しています。
信用しているからこそパスワードマネージャーやクレジットカード番号をGoogleに預けているんだよね
ですが、Googleへの信頼も完璧ではありません。Googleがファイルを覗き見ている可能性もゼロではありません。また、僕はいくつかの外部サービスに対し、GoogleDriveへのアクセス権を与えています。これら外部サービスへの信用度はGoogleへの信用ほど高くありません。例えGoogleが覗き見しなくても、これらのサービスが中身を勝手に見ていない保証はないです。
ということで、GoogleDriveに免許証の写真や住所録などの重要度が高いデータを入れるのは不安もあります
最後に、これはGoogleDriveのデスクトップ版アプリのみの特性かもしれないのですが、同期タイミングがリアルタイムでない点も不自由を感じます。というのも、(少なくとも)GoogleDriveはファイルへの変更があった瞬間に読み書きをしてくれるわけではありません。
NASはネットワークにある実ファイルをその場で読み書きするため、リアルタイムで修正が反映されます。しかし、GoogleDriveは「定期的に変更があるかを巡回して、変更があったらその分を反映する」という仕組みでファイルの更新が行われます。そして、「今すぐ更新」的なボタンは用意されていません。
(即座に更新したい場合は「同期を一時停止→再開」とすると反応することが多いんですが、これも確実には反応しません)
したがって、リアルタイムでファイルを書き換えることができません。
例えばiPadで描いたイラストをWindowsに送る際、これを利用すると反映にラグがあり、待たされてしまいます。
このように、GoogleDriveをはじめとしたオンラインストレージは「メリットは大きいが完璧ではない」というのが僕の感想となります。
NAS
上記の欠点を補うには、やはり自分でハードディスクを持つのがベターです。
予算が許す限り好きなサイズのストレージを持つことができるし、自分の手元にハードディスクがある限り、どんな不具合があっても何らかの手段ではデータにアクセスできるでしょう。
ただし弱点も多いです。管理には知識がいりますし、サーバーを維持するには電気代もかかります。また、信頼性を確保するために複数のストレージをつなぐなら、それだけ予算が膨大に膨らみます。
信頼度を上げるほどお金が無限に飛んでいく
デメリットもありますが、今回はこのアプローチでやってみましょう。
NASを作るにも方法はたくさんあり、
- NASのキットを買う
- ミニPCを使って自作する
- ルーターの簡易NASを使う
などの方法があります。
NASのキットは「HDDを差し込むだけでNASが組めるよ」という機器です。
最初からNASとしての運用が想定されているために扱いやすいのがメリット。遠隔地からのアクセスツールも発売元から提供されており、知識がなくても比較的設定しやすいといえますね。しかし、HDDに加えてこのキット本体にもお金がかかるため、初期投資が高くなってしまいます。
ミニPCを使う方法は、自分が今回ギリギリまで考えていたものです。
手のひらサイズのPCがアマゾンなどでも安価に買えるようになってきました。従来の格安PCは性能が低く、ストレスの原因にしかなりませんでした。しかし、最近の格安PCはそれなりに性能が良いと聞いています。
N100を搭載したミニPCが30000円くらいで買えるため、これをファイルサーバにしようと考えていた。
この方法にもメリットがあり、Windowsが入っているため、何か不備があった際に修理しやすいというのが素晴らしいです。(NASが本格的に壊れたら僕には手に負えなそうだが、Windowsが壊れたくらいならばある程度面倒見られる自信があります)
また、当然Windowsなので利用できるサービスが多いです。ファイルサーバーとして活用しつつ、何か他の用途にも同時に使えるかもしれません。リモートデスクトップで動かせばモニターすら使わずに管理できるため、応用が効きそうです。
WindowsではなくNAS専用のOSを導入するのも一考の余地があります。Windowsの知識は活かしづらくなりますが、よりNASとしての仕組みに特化したシステムが利用できます。
しかし、この方法も当然お金がかかります。
まぁパソコンを一台追加で買い足すんですから当然ですが
ルーターの簡易NASを使う
ここで思いついたのが、ルーターに備わっている簡易NAS機能の利用です。
僕が使っているTP-LinkのAX5400というルーターにはUSB端子があり、ここに挿したストレージを共有化できます。
NASキットやミニPCを使う方法と比較して、
- 維持のために電気代がかからない(ルーター機能のみ使うのと比較して微増?程度で済むはず)
- 機器を増やさなくて良いため省スペースという魅力がある
- 管理画面もルーターの設定画面内にあり、複雑な知識なしでも扱える。
という魅力があります。今回はこれでやってみましょう。
TP-LinkのAX5400を使ってNASを組む
では、さっそくAX5400を使った簡易NASを作成していきましょう。ここではざっくりとした手順を解説します。
ネットワークには強くないのでざっくり概要だけ説明するね
今回は僕が愛用中のAX5400を例にして説明しますが、TP-Link社のルーターならだいたい同じ手順で設定できると思われます。
ルーターの設定に関わる管理画面はブラウザからアクセスします。ブラウザーのアドレスバーに「192.168.0.1」、「192.168.1.1」、「http://tplinkwifi.net」のいずれかを入力します。
もしIPアドレスを変更していたらこの限りではないよ
ルーターの管理画面が表示されたら、ログインします。
上部のタブから「詳細設定」をクリック。
「クイックセットアップメニュー」から「ネットワーク」→「USB」→「USBストレージデバイス」と進みます。
「ストレージステータス」の項目を開きます。ストレージが接続されていないなら「USBストレージデバイスが見つかりませんでした」と表示されているため、ストレージをルーター側面のUSB端子に接続します。
接続しても表示されなければフォーマットの問題かも?
今回はexFATでフォーマットしたストレージを使いました。
今回使うストレージはこちら。アマゾンのセールで見かけない日はないバッファロー製のポータブルSSDです。今回NASへのアクセスはWi-Fiで行うため、ストレージの速度はちょっと遅めでもそれほど問題無し。
長時間使うと発熱するためNAS用には微妙かも
ストレージをUSB端子に接続したら管理画面上で「スキャン」を押します。スクリーンショットではテストのために適当なUSBを挿しています。
続いて「ファイル共有」の項目から「安全な共有」にチェック。
「フォルダを選択」からはどのフォルダを共有するかを選択することが可能です。例えばUSBの中でもシェアしたくないフォルダがあればそのフォルダだけ除外することができます。
「安全な共有」からはそのフォルダにアクセスするためのユーザー名とパスワードを設定できます。初期パスワードはこの機種だとすべて同じなので適宜変更するのが良いと思います。
「アクセス方法」は「Windows用のSamba」にのみチェックを付けて使用しています。
なお、インターネット接続タイプがv6プラスに設定されているため、インターネットFTPの項目が無効になっているようです。
ここまでの設定が完了したら設定は完了です。設定したルーターに繋いでいれば、任意の端末からストレージにアクセスできます。
例えばWindowsから接続する場合、エクスプローラーのアドレスバーにIPアドレスを入力すればすぐにフォルダを開くことができます。
ユーザー認証が必要だと言われたら前の手順で確認したユーザーを入れてね
iPhoneやiPadからのアクセスには、「Documents」を使うのがオススメ。
Documents: ファイルマネージャー, zip 解凍
Readdle Technologies Limited無料posted withアプリーチ
「接続先を追加」から「Windows SMB」を選択し、
適当な名前をつけ、「smb://192.168.0.1/」といったURLを指定。ログインIDとパスワードを入力することでiPhoneやiPadからもNASにアクセスできます。
UnityのプロジェクトをNASから開く
では最終的な目標として掲げていたUnityプロジェクトをNASから開く作業をやってみましょう。
Unityのプロジェクトをいくつか、NAS上にある「UnityProject」のフォルダへ移動しました。
バックアップしてからやるんだよ、絶対。
僕はVRChatのためにUnityを使うので、Unity管理画面ではなくCreator Companionで作業を行いますが、Unity上でもおそらく同様の手順でプロジェクトを追加できます。
Creator Companionを開き、「Add Existing Project」を選択。
先程NAS上に置いたプロジェクトを選択すると、いつものようにプロジェクト一覧に表示されます。
さて、この状態でプロジェクトを立ち上げてみたのですが、空のプロジェクトを開くのに15分以上、プロジェクトを閉じるのに5分以上かかるという問題が発生しました。
ルーターからストレージを引っこ抜き、PCに直接繋いで同じことをした場合は滞りなくプロジェクトを開くことができたため、ファイルの問題ではなさそう。
ネットワークを介した際の速度が悪いのか、NASとしてルーターに繋ぎっぱなしにしたことによるストレージの性能低下か。いくつか思いつく原因はあれど、問題の改善はできませんでした。
まとめ
ということで、少々歯切れが悪い結末にはなってしまったものの、「NASを自作してUnityプロジェクトを保存。各PCから好きにアクセスできる環境を作ろう」という目標に向かっていろいろ試行錯誤してみました。
オチとしては非常につまらない話になるんですが、UnityプロジェクトだけはNASに置かず、何らかの高速な物理ストレージに入れ、使いたい端末に都度接続するのがベストかなぁと思います。
ただ、Unityプロジェクト以外の多くのデータに関しては今回の方法を用いて格納、共有することが十分に可能になりそうかと思います。
やはりUnityとは分かりあえない
志半ばではございますが、ここで今回の記事を閉めさせていただきたいと思います。最後までお読みいただきありがとうございました。