<?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>Googleドライブ | imakat.com</title>
	<atom:link href="https://imakat.com/tag/google%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96/feed/" rel="self" type="application/rss+xml" />
	<link>https://imakat.com</link>
	<description>工夫と改善で人生をちょっと豊かに</description>
	<lastBuildDate>Sat, 12 Sep 2026 00:50:46 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</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>Googleドライブ | 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>DropboxからGoogleドライブへ乗り換えることにしました</title>
		<link>https://imakat.com/2026/08/04/29546/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Tue, 04 Aug 2026 13:06:42 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[昔の名前で出ています]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[Googleドライブ]]></category>
		<category><![CDATA[フォルダパス]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=29546</guid>

					<description><![CDATA[はじめに&#160; そろそろ届く頃かなとは思っていたところですが。 Dropboxの年額更新案内が届きました。もともと課題意識があったので準備を進めてきたことではありますが、クラウドストレージの運用体制を見直し、Goo [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>はじめに</strong>&nbsp;</h2>



<p class="wp-block-paragraph">そろそろ届く頃かなとは思っていたところですが。</p>



<p class="wp-block-paragraph">Dropboxの年額更新案内が届きました。もともと課題意識があったので準備を進めてきたことではありますが、クラウドストレージの運用体制を見直し、Googleドライブ（Google AI Proプラン）への全面移行を進めることにしました。</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=104" 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=wkh7padF.png" playsinline preload="none" style="width:100%;height:auto;">  <source src="https://imakat.com/rd.php?id=Cm7I7Q9n.mp4" type="video/mp4">  <track src="https://imakat.com/rd.php?id=SaRGyfFo.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:06" translate="no">00:00:06</a>) ちょっと8月に入ってですね、困ったことが起きまして、<br>
(<a href="#" class="imk-cue" data-seek="0:12" translate="no">00:00:12</a>) メールで案内が来たんですけども、Dropboxのですね、年度更新が来ました。<br>
(<a href="#" class="imk-cue" data-seek="0:22" translate="no">00:00:22</a>) それがですね、今私2TBのPlusというサービスを使っているんですけども、<br>
(<a href="#" class="imk-cue" data-seek="0:34" translate="no">00:00:34</a>) それがUSドルでですね、131.87USドルということになってます。これ年間ですね。<br>
(<a href="#" class="imk-cue" data-seek="0:44" translate="no">00:00:44</a>) 131.87USドル。<br>
(<a href="#" class="imk-cue" data-seek="0:49" translate="no">00:00:49</a>) これをですね、仮に160円/USドルで計算すると、なんと21,000円ですよね。<br>
(<a href="#" class="imk-cue" data-seek="0:59" translate="no">00:00:59</a>) これ最初に私がDropboxを契約した頃っていうのは、どうだろう、月1,000円ぐらいで済んでたと思うんですよね。<br>
(<a href="#" class="imk-cue" data-seek="1:11" translate="no">00:01:11</a>) 年間21,000円ってことは、12で割ると月1,750円ってことになるんですよ。<br>
(<a href="#" class="imk-cue" data-seek="1:23" translate="no">00:01:23</a>) 本当に下手するともう2,000円っていうぐらいになってしまうので、なんとかですね、これは脱Dropboxを考えていきたいなと思っていたわけですね。<br>
(<a href="#" class="imk-cue" data-seek="1:39" translate="no">00:01:39</a>) 実はそういう思いでずっといまして、ちょっとやっぱり2TBをですね、月1,500円以上払って使い続けるのももったいないなと。<br>
(<a href="#" class="imk-cue" data-seek="1:54" translate="no">00:01:54</a>) そこへ例のGoogle AI Proがですね、月2,900円で5TBのストレージを含むというサービスを始めましたよね。<br>
(<a href="#" class="imk-cue" data-seek="2:09" translate="no">00:02:09</a>) まあちょっとどう考えてもこれを使った方がいいなと思い出しまして、今回ですね、こう判断をしました。<br>
(<a href="#" class="imk-cue" data-seek="2:22" translate="no">00:02:22</a>) それはですね、M1 Mac miniですけども、一つNO3_SSDっていうのをくっつけてるんですけども、<br>
(<a href="#" class="imk-cue" data-seek="2:35" translate="no">00:02:35</a>) これの下に今Dropboxのローカルフォルダーが入ってます。<br>
(<a href="#" class="imk-cue" data-seek="2:46" translate="no">00:02:46</a>) でそれをですね、Dropboxの契約を停止して、その代わり<br>
(<a href="#" class="imk-cue" data-seek="2:57" translate="no">00:02:57</a>) Gドライブの方にですね、mybox_1というフォルダーを作って、そこへですね、全部移すと。<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:16" translate="no">00:03:16</a>) ただしですね、私の場合このDropboxという名前を使って、非常にたくさんのですね、アプリを作ってきてるんですね。<br>
(<a href="#" class="imk-cue" data-seek="3:28" translate="no">00:03:28</a>) フォルダーパス、ファイルパスにかなりたくさん使ってきてますので、これを全部ですね、mybox何がしに替えるっていうのは大変な作業なんで、<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:47" translate="no">00:03:47</a>) ローカルフォルダー名としてはこのDropboxを残す。で、Gドライブ、パソコン、マイMacmini、mybox_1へミラーリング同期すると。という形ですね、しようと思います。<br>
(<a href="#" class="imk-cue" data-seek="4:12" translate="no">00:04:12</a>) まあそんな形でですね、いよいよDropboxの脱出を図り、データを移したあとでちょっと様子を見てですね、勇気をもってDropboxを解約したいと考えています。<br>
(<a href="#" class="imk-cue" data-seek="4:33" translate="no">00:04:33</a>) あと補足しますけども、<br>
(<a href="#" class="imk-cue" data-seek="4:38" translate="no">00:04:38</a>) DropboxをやめてGoogleドライブに切り替えた時にですね、<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:50" translate="no">00:04:50</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:02" translate="no">00:05:02</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:17" translate="no">00:05:17</a>) 配信サーバーにですね、メディアアセットを送ると<br>
(<a href="#" class="imk-cue" data-seek="5:24" translate="no">00:05:24</a>) という働きをですね、システム化してきたわけですね。<br>
(<a href="#" class="imk-cue" data-seek="5:31" translate="no">00:05:31</a>) その悪影響がないかなってことなんですね。<br>
(<a href="#" class="imk-cue" data-seek="5:35" translate="no">00:05:35</a>) と言いますのは、例えば、<br>
(<a href="#" class="imk-cue" data-seek="5:39" translate="no">00:05:39</a>) 必ずですね、この<br>
(<a href="#" class="imk-cue" data-seek="5:45" translate="no">00:05:45</a>) 登録してあるものの中にDropboxリンクっていうのを必ず登録してきました。<br>
(<a href="#" class="imk-cue" data-seek="5:54" translate="no">00:05:54</a>) WordPressのエンコードURLとかですね、pCloudのURLとか、そういうものをリンクしてきたわけですね。<br>
(<a href="#" class="imk-cue" data-seek="6:04" translate="no">00:06:04</a>) で、このDropboxリンクっていうのがですね、これから契約解除すると、<br>
(<a href="#" class="imk-cue" data-seek="6:13" translate="no">00:06:13</a>) そこがですね、エラーにならないかっていうことが非常に気になっていたわけです。<br>
(<a href="#" class="imk-cue" data-seek="6:21" translate="no">00:06:21</a>) で、そこでですね、今どのようにしたかというと、これ一番最初、一行目テスト登録っていうのがありますけども、<br>
(<a href="#" class="imk-cue" data-seek="6:29" translate="no">00:06:29</a>) その中にはですね、すでにDropboxという選択肢は出てきてないです。<br>
(<a href="#" class="imk-cue" data-seek="6:39" translate="no">00:06:39</a>) 次のこのマイコードアプリ、こちらを見ると、ここにはDropboxリンクって出てますけども、<br>
(<a href="#" class="imk-cue" data-seek="6:46" translate="no">00:06:46</a>) その前の、その次の最新のテスト登録pngを見た場合、<br>
(<a href="#" class="imk-cue" data-seek="6:53" translate="no">00:06:53</a>) もうここにはDropboxリンクというものが登場してません。<br>
(<a href="#" class="imk-cue" data-seek="6:58" translate="no">00:06:58</a>) で、ファイルを見てみますとですね、どうなってるかということですけども、<br>
(<a href="#" class="imk-cue" data-seek="7:05" translate="no">00:07:05</a>) これがファイルですね。F1マイライブラリというファイルですけども、<br>
(<a href="#" class="imk-cue" data-seek="7:15" translate="no">00:07:15</a>) スプレッドシートです。で、それのA列のところにDropboxリンクURLがあります。<br>
(<a href="#" class="imk-cue" data-seek="7:17" translate="no">00:07:17</a>) で、この今ですね、<br>
(<a href="#" class="imk-cue" data-seek="7:24" translate="no">00:07:24</a>) 一番最近登録してあるこのテスト登録pngというファイルですけども、<br>
(<a href="#" class="imk-cue" data-seek="7:34" translate="no">00:07:34</a>) それはですね、これご覧のようにDropboxリンクのところは空欄になってます。<br>
(<a href="#" class="imk-cue" data-seek="7:41" translate="no">00:07:41</a>) 空欄にしておきながら、wpidexといういわゆるユニークIDはちゃんと設定してですね、<br>
(<a href="#" class="imk-cue" data-seek="7:51" translate="no">00:07:51</a>) 配信する時にいつものようにユニークなURLを使うことができるという仕組みにですね、改造をしました。<br>
(<a href="#" class="imk-cue" data-seek="7:59" translate="no">00:07:59</a>) ま、これによってDropboxリンクのところは空欄になるんですけれども、<br>
(<a href="#" class="imk-cue" data-seek="8:07" translate="no">00:08:07</a>) Dropboxを使って配信をしなければいいだけですね。<br>
(<a href="#" class="imk-cue" data-seek="8:12" translate="no">00:08:12</a>) そういう扱い、運用をすれば問題がないということを確認しました。<br>
(<a href="#" class="imk-cue" data-seek="8:19" translate="no">00:08:19</a>) つまり、この<br>
(<a href="#" class="imk-cue" data-seek="8:24" translate="no">00:08:24</a>) WP再生URLをクリックしてですね、このようにデータが正しく表示されます。<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:35" translate="no">00:08:35</a>) そういう形でですね、プログラムの手直しをしたということをやってきました。<br>
(<a href="#" class="imk-cue" data-seek="8:43" translate="no">00:08:43</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; }

/* 動画パッケージ（mu1emd, dr5, dr6等）内での上書き専用スタイル */
.mu1emd-sublist details > p, .dr5-sublist details > p, .dr6-sublist details > p {
    display: block;
    min-height: 180px;
    max-height: 240px;
    overflow-y: auto;
    background-color: #EDF7FF;
    padding: 6px 8px;
    margin: 0;
    box-shadow: 3px 3px 4px black;
    border-radius: 0 0 5px 5px;
}
</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全画面の判定（video自身または親要素の全画面化に対応）
      function isSpecialMode() {
        var fsEl = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;
        var isFs = !!(fsEl && (fsEl === video || fsEl.contains(video)));
        var isPiP = !!(document.pictureInPictureElement && document.pictureInPictureElement === video) || (video.webkitPresentationMode === "picture-in-picture");
        var isIOSFs = !!video.webkitDisplayingFullscreen; 
        return isFs || isPiP || isIOSFs;
      }

      // 字幕トラックの表示/非表示を更新
      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切り替えイベントの即時検知リスナーを登録
      ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'].forEach(function(evtName) {
        document.addEventListener(evtName, updateTrackMode, false);
      });
      video.addEventListener('webkitbeginfullscreen', updateTrackMode, false);
      video.addEventListener('webkitendfullscreen', updateTrackMode, false);
      video.addEventListener('enterpictureinpicture', updateTrackMode, false);
      video.addEventListener('leavepictureinpicture', 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>



<figure class="wp-block-image size-full is-resized"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="472" height="209" src="https://i0.wp.com/imakat.com/wp-content/uploads/2026/08/4fb0a64bd89800a8722405fa6ed6f421-1.png?resize=472%2C209&#038;ssl=1" alt="" class="wp-image-29566" style="width:207px;height:auto"/></figure>



<p class="wp-block-paragraph">長年使い込んできたDropboxからの脱却にあたり、課題となった「ローカルパスの互換性」と「自作アプリ（AppSheet / WordPress連携）への影響」をどのようにクリアしたかについて記録しておきます。</p>



<h2 class="wp-block-heading">１　<strong>乗り換えを決意した理由</strong>〜ドル建て料金は重過ぎる〜</h2>



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



<p class="wp-block-paragraph">これまでDropbox Plus（2TB）を利用していましたが、ドル建て決済（131.87 USD/年）のため近年の円安傾向も相まって年間2万円超（月換算で1,700円〜2,000円近く）の負担となっていました。</p>



<p class="wp-block-paragraph">特に個人の場合、ふつうは貿易はしてないので、支払いに充てる外貨資金があるわけでもなく、やっぱりDropboxは企業重視だなと感じます。</p>



<p class="wp-block-paragraph">そこへ、新たに登場したGoogle AI Proプランは、月額2,900円ですが、生成AIの結構幅広い機能に加えて、Dropboxの2.5倍の5TBの大容量ストレージがパッケージされています。ストレージ単価や今後の拡張性を考慮すると、Googleドライブへ集約する方が圧倒的にメリットが大きいと判断しました。</p>



<p class="wp-block-paragraph">（後日、記事を書こうと思いますが、GoogleAIPro2,900円とGoogleAIPlus725円の相互乗り換えが、Gドライブの使用量を400GB以内に管理することにより可能になることと期待します。）</p>



<h2 class="wp-block-heading">２　<strong>ローカルフォルダ構造とパスの維持工夫</strong></h2>



<p class="wp-block-paragraph">M1 Mac mini環境において、各種スクリプトや自作アプリが既存の「Dropbox」フォルダパスに深く依存しています。すべてのフォルダパスを書き換えるのは膨大な作業となるため、以下の形でミラーリング同期を設定しました。</p>



<ul class="wp-block-list">
<li>ローカル側：既存のフォルダ構造（&#8230;/Dropbox）をそのまま維持</li>



<li>クラウド側：Googleドライブ上の パソコン ＞ マイ Mac mini ＞ mybox_1 フォルダに対してミラーリング同期を実施</li>
</ul>



<p class="wp-block-paragraph">この設計により、ローカル上のスクリプトやファイルパスを変更することなく、同期先クラウドだけをDropboxからGoogleドライブへ安全に切り替えることが可能になります。</p>



<h2 class="wp-block-heading">３　<strong>自作アプリ（AppSheet・配信システム）の影響調査と改善</strong></h2>



<p class="wp-block-paragraph">最も懸念していたのが、自作のメディア管理アプリ（マイライブラリ）および配信システムへの影響です。</p>



<p class="wp-block-paragraph">これまではGoogleスプレッドシート（F1_マイライブラリ）のA列に「Dropbox共有リンク」を記録し、WordPress等のエンコードURLや各配信サーバーへと連携する仕組みを構築していました。Dropboxを解約するとこれらの共有リンクが無効化されてしまうため、以下の改修を行いました。</p>



<p class="wp-block-paragraph">改善ポイント</p>



<p class="wp-block-paragraph">①Dropboxリンク依存の脱却</p>



<ul class="wp-block-list">
<li>今後の新規登録（テスト登録.png 等）では、Dropboxリンク欄を空欄に設定。</li>
</ul>



<p class="wp-block-paragraph">②ユニークID（wpidex）による配信URL生成</p>



<ul class="wp-block-list">
<li>外部共有リンクに頼らず、システム内部のユニークID（wpidex）をベースにWordPress経由の再生URLを直接生成・配信するロジックへ変更。</li>
</ul>



<p class="wp-block-paragraph">実証実験を行い、Dropboxリンクが空欄の状態でも正しくデータが表示され、動画・画像配信に一切支障がないことを確認できました。</p>



<p class="wp-block-paragraph">結局、今回の改善手順のポイントは、<br><strong>Dropboxを解除したあとは、普通のローカルフォルダだけで運用が出来るようにすること。</strong><br>次に<br><strong>そのローカルフォルダをGoogleDriveなど別の場所にミラーリング同期すること。</strong><br></p>



<p class="wp-block-paragraph">ということになります。</p>



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



<h2 class="wp-block-heading">４　<strong>まとめと今後の運用</strong></h2>



<p class="wp-block-paragraph">ビデオの中では、フォルダ名にDropbox dropbox_1を残したまま、昭和歌謡の「昔の名前で出ています(小林旭)」として、使い続けることを決心していたのですが、気が変わりまして、できるなら、ローカルフォルダ名も、mybox mybox_1に改名したいと強く思うようになり、主にPythonアプリを７本程度、手直ししました。その結果、現在は、昔の名前は名乗らず、今の名前で出ています。</p>



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



<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&amp;h=1440"></a>



<p class="wp-block-paragraph">余談：<br>Macには、M2 MacminiとM1 Macminiがありますが、M2の意味は、現在はAppleシリコンM2のM2ではありますが意味としてはMeister2のM2、と意味付けします。将来、AppleシリコンM6 Mac miniをこのNO2_Macの位置に入れ替えたとしても、imakatシステムでは、 M2 Mac mini、と命名し続けます。M1も同様です。と言うのは、Macの機器更新の時、設定を変えることなく、前の機器の内容をそっくり移行できるからです。</p>



<p class="wp-block-paragraph">自作システムの改修とデータ移行の検証が完了したため、これで懸念事項はすべて解消されました。実際、8月30日に解約を行いました</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">29546</post-id>	</item>
		<item>
		<title>DropboxのデータをGoogleドライブへ同期する〜NASのrsyncの利用〜</title>
		<link>https://imakat.com/2024/11/26/24397/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Tue, 26 Nov 2024 05:42:18 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[SynologyNAS]]></category>
		<category><![CDATA[Googleドライブ]]></category>
		<category><![CDATA[rsync]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=24397</guid>

					<description><![CDATA[落とし穴がありそうで、なかなか手をつけられない問題 今回は、以前に後回しにしたテーマでして、SynologyNASを利用してDropboxのデータをGoogleドライブへ同期する方法についての解説になります。 簡単な気が [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h4 class="wp-block-heading">落とし穴がありそうで、なかなか手をつけられない問題<br><span id="docs-internal-guid-0103ffce-7fff-47c4-be1b-e104c5a6f81b" style="white-space: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-weight: normal;"><p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"></p></span></h4>



<p class="wp-block-paragraph">今回は、以前に後回しにしたテーマでして、SynologyNASを利用してDropboxのデータをGoogleドライブへ同期する方法についての解説になります。</p>



<p class="wp-block-paragraph">簡単な気がしますが、意外にややこしい、奥が深いのが以下のような話。</p>



<p class="wp-block-paragraph">それが、Macの中のDropboxにあるAフォルダと同じ内容をGoogleドライブにあるBフォルダへ作ることです。いえ。データをコピー＆ペーストするだけなら簡単なことですが、大量にあるいは自動的にコピーさせようとすると、<strong>さてはデータを移動させてから解約を考えてるんじゃないか</strong>、勝手にさせないぞ、と囲い込みが働き、難しくなります。それもそのはず、クラウドストレージを二つも三つも好きで持っている人などいません。一つで済むのに越したことは無いのです。何度も書いてきているように、Dropbox、Googleドライブそれぞれ欠点があるからやむを得ず、両方持っているわけで、状況次第でいつ解約されてもおかしくないサービスです。</p>



<p class="wp-block-paragraph">Dropbox内に作ったフォルダのエイリアスをGoogleドライブのフォルダに持ってくるようにすると、デバイスから削除するだの、利用できなくなるだの、Dropbox外に移動するだの、恐ろしい警告が表示されます。</p>



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



<p class="wp-block-paragraph">何が起こるのかよくわかりませんが、やってはいけないことをやろうとしているのだろう、そう釘を刺されていると感じます。さすがビジネスに強いDropbox、トラブル時の責任範囲を明確にするということでしょう。上の場面では、キャンセルしました。しかし私は過去、こうした時に、先に進んでしまい、Dropbox全体ごとダウンロードをやり直した、そんな経験もあったような気がします。</p>



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



<h4 class="wp-block-heading">有料なら、サービスはあります</h4>



<p class="wp-block-paragraph">クラウドストレージ間のデータ移動や同期ですが、MultiCloudという別のクラウドサービスを使うと実現できます。しかし、無料で使えるのは、月間5GBのデータトラフィックまでです。これは少な過ぎ！有料になると年間1200GBのトラフィックまでで約7,000円年となっていますが、容量ではなくてデータトラフィックと言われても実感が沸かないわけです。私の場合すでに有料会員としてDropboxは2TB、Googleドライブは0.2TBを利用していますので、またNASも持っていますので、クラウドストレージは、今のところ増やしたくありません。</p>



<h4 class="wp-block-heading">まわりくどいが確実な方法を選んでみる</h4>



<p class="wp-block-paragraph">Mac内で、クラウドストレージ間でフォルダをコピーしたり同期しようとすると、何かと意地悪をされそうなので、<strong>迂回させることにします</strong>。SynologyNAS内で同期させます。１〜２分かかりますが、確実な方法です。</p>



<p class="wp-block-paragraph"><span class="bold-red">❶</span>　MacのDropboxフォルダを変更するとDropboxクラウドが更新される(双方向同期)。</p>



<p class="wp-block-paragraph"><span class="bold-red">❷</span>　SynologyNASのDropboxフォルダを更新する(CloudSyncによる。双方向同期)。</p>



<p class="wp-block-paragraph"><span class="bold-red">❸</span>　<strong>SynologyNASのDropboxフォルダからSynologyNASのGoogleドライブフォルダを更新する(rsyncによる。一方向同期)</strong>。</p>



<p class="wp-block-paragraph"><span class="bold-red">❹</span>　Googleドライブクラウドが更新される(CloudSyncによる。双方向同期)。</p>



<p class="wp-block-paragraph"><span class="bold-red">❺</span>　MacのGoogleドライブフォルダが更新される(双方向同期)。</p>



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



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



<h4 class="wp-block-heading"><span class="bold-red">❸</span>の存在を知らない人には、何が起こっているか分からない。</h4>



<p class="wp-block-paragraph">今回私は、確実にデータを移動させかつ便利に使うための仕組みを作っているわけです。しかし、<strong>「確実」「便利」という言葉の背後には、「確実、便利に悪巧みをする方法」ということもあり得る</strong>わけですね。そもそも<span class="bold-red">❸</span>は自由自在にデザインできるわけです。例えば、「元データの中に金額があったら２０％水増しして新たに書き出せ」とか、AIに解読させて、どちらかに有利に変えさせるとか、様々な悪巧みができるわけですね。見方を変えれば、「データ転がし」ですから。データ隠し、マネーロンダリング、不正改ざん、など。ここで重要なのは、そうした危険性があるということを知っておくことでしょう。<br></p>



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



<h4 class="wp-block-heading">１　rsyncの設定手順</h4>



<h5 class="wp-block-heading">シェルスクリプトファイルの作成と格納</h5>



<p class="wp-block-paragraph">dropbox_google_sync.sh</p>



<figure class="wp-block-flexible-table-block-table"><table class="has-fixed-layout"><tbody><tr><td>#!/bin/bash<br>rsync -av &#8211;delete /volume1/dropbox_1/sync_to_google/ /volume1/google_drive_1/sync_from_dropbox/ </td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><br>SynologyNASにはrsyncは最初から入っているので、シェルスクリプトのファイル.shを、Macのテキストエディットなどで作成(例えばdropbox_google_sync.sh)→SynologyNASの共有フォルダに例えばbinフォルダを作る→binフォルダの中にdropbox_google_sync.shを入れる。</p>



<h5 class="wp-block-heading">タスクスケジューラの設定</h5>



<p class="wp-block-paragraph">SynologyNASのコントロールパネル→タスクスケジューラー<br>「全般」「スケジュール」「タスク設定」を以下のように設定します。</p>



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



<p class="wp-block-paragraph">ここでは、<strong>毎分更新</strong>にしています。</p>



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



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



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



<h4 class="wp-block-heading">２　Macから共有リンクが取得できる</h4>



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



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



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



<p class="wp-block-paragraph">今回のように、送り出し側のフォルダ名を&#8221;sync_to_google&#8221;、受け取り側のフォルダ名を&#8221;sync_from_dropbox&#8221;とわかりやすくするのが賢明です。&#8221;send_&#8221;、&#8221;receive_&#8221;と頭につけるのもわかりやすいです。そうせずに、Aフォルダ、Bフォルダなど無意味な名前ですと、迷子になりそうです。</p>



<p class="wp-block-paragraph">関係を逆にして、送り出し側をGoogleドライブに設定して、受け取り側をDropboxに設定することも、もちろん可能です。</p>



<h4 class="wp-block-heading">３　その他　まとめ<br></h4>



<p class="wp-block-paragraph">私が便利に感じているフローは、各種メディアデータの加工はDropboxで行う→メタデータはGoogleドライブへ登録する、実データ(メディアコンテンツ)は配信サーバーへ送り出す→GoogleドライブでAppSheet、GASを使いメタデータを加工する→Xserverなどの外部サーバーへ送り出す。という形です。今回はそのフローの一部でもあります。</p>



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



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">24397</post-id>	</item>
	</channel>
</rss>
