<?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>ChatGPT | imakat.com</title>
	<atom:link href="https://imakat.com/tag/chatgpt/feed/" rel="self" type="application/rss+xml" />
	<link>https://imakat.com</link>
	<description>工夫と改善で人生をちょっと豊かに</description>
	<lastBuildDate>Tue, 10 Mar 2026 06:41:30 +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>ChatGPT | 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>【Gemini/ChatGPT】スクリプトや記事を日本語要約＋保存するMac用スクリプト</title>
		<link>https://imakat.com/2025/10/12/27668/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Sat, 11 Oct 2025 23:34:29 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<category><![CDATA[クイックアクション]]></category>
		<category><![CDATA[Automator]]></category>
		<category><![CDATA[AppleScript]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=27668</guid>

					<description><![CDATA[26.1.15追記：【Gemini】Gemini版を追加。文字列をコピーした後、マウスの右クリックで→サービス、から起動する形です。無料でも使えます。 【ChatGPT】～無料版でも動く、ローカル完結の超シンプル連携法～ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>26.1.15追記：<br><strong>【<span class="fz-14px"><span class="fz-16px"><span class="fz-18px">Gemini】</span></span></span></strong>Gemini版を追加。文字列をコピーした後、マウスの右クリックで→サービス、から起動する形です。無料でも使えます。<br></p>



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



<figure class="wp-block-flexible-table-block-table"><table class="has-fixed-layout"><tbody><tr><td><a rel="noopener" target="_blank" href="https://docs.google.com/document/d/1lML0yZwWbv-y8o1QPXb3zBTGEBuSimvBTgOTFrW_RjY/edit?usp=sharing">Gemini APIキー取得方法と活用<span class="fa fa-external-link external-icon anchor-icon"></span></a></td></tr><tr><td>要約：このAppleScriptスクリプトは、ユーザーが選択したテキストをGoogle Gemini APIで要約し、その結果と元の本文をファイルに保存する自動化ツールです。右クリックで選択されたテキストを受け取り、処理前に内容をプレビューして続行を確認します。スクリプトはPython3とcurlコマンドを使い、Gemini APIにアクセス。<code>MY_API_KEY</code>を用いて、利用可能なモデルから<code>generateContent</code>をサポートするモデルを自動選択し、指定された文字数（MAX_SUMMARY_CHARS）で日本語の要約をリクエストします。Geminiからの出力は、要約文とその後に続く元の本文で構成されます。処理が完了すると、<code>SAVE_DIR</code>にタイムスタンプと要約の最初の行から生成されたタイトル（TITLE_MAX_CHARSで制限、ファイル名として安全化）を含むUTF-8形式のテキストファイルとして保存されます。処理状況やエラーは通知でユーザーに伝えられます。<br>Automator<br>ワークフローが受け取る項目：テキスト<br>選択肢：すべてのアプリケーション</td></tr><tr><td><a href="https://imakat.com/script_list/?pubtxt=geminiを使った日本語要約_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></tbody></table></figure>



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



<p><strong>【<span class="fz-14px"><span class="fz-16px"><span class="fz-18px">ChatGPT】</span></span></span></strong><br><strong>～無料版でも動く、ローカル完結の超シンプル連携法～</strong><br>ChatGPTでテキストを要約したいとき、毎回アプリを開いてコピペするのは意外と手間です。そこで、AppleScriptとChatGPTデスクトップアプリを連携させて、「クリップボードの内容を自動でChatGPTに貼り付け→要約→テキストファイルに保存」までを数クリックで完結させる仕組みを紹介します。ChatGPTの無料版でも動作し、APIキーや外部サービスは不要です。</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; /* dynamicと合わせた基本サイズ */
    font-weight: normal;
    text-decoration: underline;
    color: #0073aa;
  }
  .sc-dynamic-embed .sc-link a:hover { text-decoration: none; color: #000; }
  
  /* ★スマホ画面（幅500px以下）の時は文字を縮小して統一感を出す */
  @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="https://imakat.com/ds62/?drid=62_2" target="_blank"
         onclick="return scStopAndGo(event, this);">
        👉低画質・枠外字幕はこちら
      </a>
    </p>
  </div>

  <style>
            :root{ --dr5emd-max: 1920px; }
            .video-wrap{position:relative;width:100%;margin:0 auto}
            figure.wp-block-video.aligncenter{
              width:100%;
              max-width:min(var(--dr5emd-max, 1920px), 98vw);
              margin:0 auto;
            }
            #subtitleOverlay{
              position:absolute; left:0; right:0; bottom:6%;
              padding:0 2%; text-align:center; pointer-events:none; z-index:2;
            }
            #subtitleOverlay .band{
              display:inline-block; background:rgba(0,0,0,0.35);
              padding:6px 10px; border-radius:8px; max-width:96%;
              margin:0 auto; box-shadow:0 1px 2px rgba(0,0,0,0.15);
            }
            #subtitleOverlay .overlay-cue{
              color:#fff; font-weight:600;
              font-size:clamp(16px, 3.6vw, 32px);
              line-height:1.32; white-space:pre-wrap; margin:2px 0;
              -webkit-text-stroke:.6px rgba(0,0,0,.7);
              text-shadow:-1px -1px 0 rgba(0,0,0,.6), 1px -1px 0 rgba(0,0,0,.6),
                          -1px  1px 0 rgba(0,0,0,.6), 1px  1px 0 rgba(0,0,0,.6);
            }
            @media (max-width:430px){
              #subtitleOverlay .overlay-cue{ font-size:clamp(16px, 4.2vw, 22px); }
            }
            .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;
            }
            /* ▼ 自動スクロール時のハイライト（文字の太さを標準へ変更） */
            .active-hl {
                background-color: #ffff00 !important;
                color: #ff0000 !important;
                font-weight: normal; /* 標準の太さ */
                border-bottom: 2px solid red;
                display: inline-block;
                border-radius: 2px;
            }
            </style><div class="dr5emd-container"><figure class="wp-block-video aligncenter"><div class="video-wrap"><video id="myVideo" controls controlsList="nodownload" poster="https://imakat.com/rd.php?id=2MuRdRkf.png" playsinline preload="metadata" style="width:100%;height:auto;">  <source src="https://imakat.com/rd.php?id=ZJjPNzrn.mp4" type="video/mp4">  <track src="https://imakat.com/rd.php?id=dnzQfkpR.vtt" label="日本語" srclang="ja" kind="subtitles"></video><div id="subtitleOverlay" aria-hidden="true"></div></div><script>
document.addEventListener("DOMContentLoaded", function(){
  var video=document.getElementById("myVideo");
  var trackEl=video?video.querySelector("track[kind='subtitles'], track[kind='captions']"):null;
  var overlay=document.getElementById("subtitleOverlay"); if(!video||!overlay) return;
  video.addEventListener("contextmenu", function(e){ e.preventDefault(); return false; }, false);
  function setNative(mode){
    try{
      if(video.textTracks && video.textTracks.length){
        for(var i=0;i<video.textTracks.length;i++){ video.textTracks[i].mode = mode; }
      }
      if(trackEl && trackEl.track) trackEl.track.mode = mode;
    }catch(e){}
  }
  var isOverlay=true,lastSig="";
  function sig(active){if(!active||active.length===0)return"";var a=[];for(var i=0;i<active.length;i++){var c=active[i];a.push([c.startTime,c.endTime,c.text].join("|"));}return a.join("||");}
  function cueLine(c){var d=document.createElement("div");d.className="overlay-cue";d.setAttribute("translate","yes");if(typeof c.getCueAsHTML==="function")d.appendChild(c.getCueAsHTML());else d.textContent=c.text;return d;}
  function render(){
    if(!isOverlay || !trackEl || !trackEl.track) return;
    var ac=trackEl.track.activeCues,s=sig(ac); if(s===lastSig) return; lastSig=s;
    overlay.innerHTML=""; if(!ac || ac.length===0) return;
    var b=document.createElement("div"); b.className="band"; b.setAttribute("translate","yes");
    Array.from(ac).sort(function(a,b){return a.startTime-b.startTime;}).forEach(function(c){b.appendChild(cueLine(c));});
    overlay.appendChild(b);
  }
  function useOverlay(){isOverlay=true;overlay.style.display="";setNative("hidden");lastSig="";render();}
  function useNative(){isOverlay=false;overlay.style.display="none";setNative("showing");lastSig="";}
  useOverlay();
  if(trackEl){
    if(trackEl.track){ try{ trackEl.track.addEventListener("cuechange",render); }catch(e){} }
    trackEl.addEventListener("load", function(){ try{ if(trackEl.track) trackEl.track.addEventListener("cuechange",render); }catch(e){} render(); });
  }
  video.addEventListener("loadedmetadata",render);
  function handleWebkitMode(){ var m = video.webkitPresentationMode || "inline"; (m==="picture-in-picture"||m==="fullscreen") ? useNative() : useOverlay(); }
  if("webkitPresentationMode" in video){ video.addEventListener("webkitpresentationmodechanged",handleWebkitMode); handleWebkitMode(); }
  if("webkitCurrentPlaybackTargetIsWireless" in video){
    video.addEventListener("webkitcurrentplaybacktargetiswirelesschanged", function(){ video.webkitCurrentPlaybackTargetIsWireless ? useNative() : useOverlay(); });
  }
  if("pictureInPictureEnabled" in document){
    video.addEventListener("enterpictureinpicture",useNative);
    video.addEventListener("leavepictureinpicture",useOverlay);
  }
  document.addEventListener("fullscreenchange", function(){
    var fs=document.fullscreenElement;
    if(!fs) return useOverlay();
    (fs===video || (fs && fs.contains && fs.contains(video))) ? useNative() : useOverlay();
  });
});
</script>
                <figcaption></figcaption></figure><div class="dr5emd-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>)  ChatGPTによる日本語要約とTXTファイル保存のかんたん化<br>
(<a href="#" class="imk-cue" data-seek="0:20" translate="no">00:00:20</a>)   今回は、ChatGPTの活用ということで、わかりやすい使い方を紹介します。<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:47" translate="no">00:00:47</a>)  それが簡単にできれば結構便利です。<br>
(<a href="#" class="imk-cue" data-seek="0:52" translate="no">00:00:52</a>)  ちょっとやってみましょうか。<br>
(<a href="#" class="imk-cue" data-seek="0:55" translate="no">00:00:55</a>)  今、ChatGPTでPythonのスクリプトを書いてもらったとします。<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:09" translate="no">00:01:09</a>)  このPythonのスクリプトが、迷子になった場合、その中身が全く分からなくなってしまうので、<br>
(<a href="#" class="imk-cue" data-seek="1:19" translate="no">00:01:19</a>)  要約した内容を付けて、日時を付けて、タイムスタンプを付けて、そして本文を添えて<br>
(<a href="#" class="imk-cue" data-seek="1:29" translate="no">00:01:29</a>)  保存するという形にしたいと思います。<br>
(<a href="#" class="imk-cue" data-seek="1:36" translate="no">00:01:36</a>)  今ここに、Pythonスクリプトが出来上がっていたとします。<br>
(<a href="#" class="imk-cue" data-seek="1:42" translate="no">00:01:42</a>)  ここで、「コピーをする」を押します。<br>
(<a href="#" class="imk-cue" data-seek="1:46" translate="no">00:01:46</a>)  コピーしました。<br>
(<a href="#" class="imk-cue" data-seek="1:49" translate="no">00:01:49</a>)  次に、作っておいた、CHATGPT用の要約、TXT保存のアプリですね、<br>
(<a href="#" class="imk-cue" data-seek="2:02" translate="no">00:02:02</a>)  これをSTREAM DECKから起動します。<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:15" translate="no">00:02:15</a>)  スクリプトの先頭の120字をこのように紹介してくれます。 　　<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:25" translate="no">00:02:25</a>)  続行を押します。<br>
(<a href="#" class="imk-cue" data-seek="2:29" translate="no">00:02:29</a>)  次に、ChatGPTによる要約を挿入しますか？と聞かれます。<br>
(<a href="#" class="imk-cue" data-seek="2:35" translate="no">00:02:35</a>)  はい、を選びます。<br>
(<a href="#" class="imk-cue" data-seek="2:38" translate="no">00:02:38</a>)  そうするとChatGPTが走ります。<br>
(<a href="#" class="imk-cue" data-seek="2:43" translate="no">00:02:43</a>)  非常に短い時間で、今のスクリプトの内容を日本語で300文字以内で、説明してくれます。<br>
(<a href="#" class="imk-cue" data-seek="2:58" translate="no">00:02:58</a>)  自動処理についての説明、となっています。　　<br>
(<a href="#" class="imk-cue" data-seek="3:04" translate="no">00:03:04</a>)  次にこれを、ChatGPTによって要約された文章をコピーします。　<br>
(<a href="#" class="imk-cue" data-seek="3:13" translate="no">00:03:13</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:36" translate="no">00:03:36</a>)  先頭に、日時が入っています。次に、要約が入っています。そしてその下に、ずっとスクリプトが入っています。<br>
(<a href="#" class="imk-cue" data-seek="3:51" translate="no">00:03:51</a>)  という形の保存用のファイルが出来上がります。<br>
(<a href="#" class="imk-cue" data-seek="3:59" translate="no">00:03:59</a>)  次の活用例を紹介します。<br>
(<a href="#" class="imk-cue" data-seek="4:05" translate="no">00:04:05</a>)  今ご覧のように、英文があります。　<br>
(<a href="#" class="imk-cue" data-seek="4:11" translate="no">00:04:11</a>)  この英文を日本語に翻訳して、日本語で300字以内に要約したものを作ります。　<br>
(<a href="#" class="imk-cue" data-seek="4:22" translate="no">00:04:22</a>)  そして、日時と要約とこの本文ですね。これを３点セットにして一つのファイルを作ります。<br>
(<a href="#" class="imk-cue" data-seek="4:34" translate="no">00:04:34</a>)  やってみます。<br>
(<a href="#" class="imk-cue" data-seek="4:39" translate="no">00:04:39</a>)  このようにして選択します。コピーを押します。次に、　STREAM DECKのアプリを起動します。<br>
(<a href="#" class="imk-cue" data-seek="4:45" translate="no">00:04:45</a>)  コピーを押します。<br>
(<a href="#" class="imk-cue" data-seek="4:49" translate="no">00:04:49</a>)  次に、SREAM DECKのアプリを起動します。<br>
(<a href="#" class="imk-cue" data-seek="4:58" translate="no">00:04:58</a>)  この内容を保存しますか？ということで文章の先頭の120字の紹介があります。　<br>
(<a href="#" class="imk-cue" data-seek="5:06" translate="no">00:05:06</a>)  これで間違いなしということで続行します。<br>
(<a href="#" class="imk-cue" data-seek="5:10" translate="no">00:05:10</a>)  ChatGPTによる要約を挿入しますか？はい。<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:28" translate="no">00:05:28</a>)  その場合は、焦らずに、右側のこのボタンを押します。<br>
(<a href="#" class="imk-cue" data-seek="5:40" translate="no">00:05:40</a>)  そうすると速やかに、翻訳がされます。<br>
(<a href="#" class="imk-cue" data-seek="5:49" translate="no">00:05:49</a>)  これは、記事の無断転載を禁止するような説明になっています。<br>
(<a href="#" class="imk-cue" data-seek="5:57" translate="no">00:05:57</a>)  これをコピーします。<br>
(<a href="#" class="imk-cue" data-seek="6:08" translate="no">00:06:08</a>)  そして、取得を押します。<br>
(<a href="#" class="imk-cue" data-seek="6:17" translate="no">00:06:17</a>)  そうしますと先頭に、一つ出来上がっています。　<br>
(<a href="#" class="imk-cue" data-seek="6:27" translate="no">00:06:27</a>)  内容を確認します。<br>
(<a href="#" class="imk-cue" data-seek="6:32" translate="no">00:06:32</a>)  日時、次に要約した文章、その下に英文の本文が入っています。　<br>
(<a href="#" class="imk-cue" data-seek="6:45" translate="no">00:06:45</a>)  これでいいですね。<br>
(<a href="#" class="imk-cue" data-seek="6:54" translate="no">00:06:54</a>)  最後に、３つ目の例を紹介します。<br>
(<a href="#" class="imk-cue" data-seek="6:59" translate="no">00:06:59</a>)  URLですね。<br>
(<a href="#" class="imk-cue" data-seek="7:04" translate="no">00:07:04</a>)  ご覧のように、一つURLがあったとします。<br>
(<a href="#" class="imk-cue" data-seek="7:09" translate="no">00:07:09</a>)  このURLの中身を、300文字以内の日本語で要約して、日時、要約、本文と、いや本文といっても、このURLだけですが。<br>
(<a href="#" class="imk-cue" data-seek="7:27" translate="no">00:07:27</a>)  それを一つのファイルにします。<br>
(<a href="#" class="imk-cue" data-seek="7:31" translate="no">00:07:31</a>)  やってみます。<br>
(<a href="#" class="imk-cue" data-seek="7:38" translate="no">00:07:38</a>)  コピー<br>
(<a href="#" class="imk-cue" data-seek="7:46" translate="no">00:07:46</a>)  ChatGPT用要約TXT保存のアプリを起動します。<br>
(<a href="#" class="imk-cue" data-seek="7:52" translate="no">00:07:52</a>)  この内容を保存しますか？続行。<br>
(<a href="#" class="imk-cue" data-seek="7:58" translate="no">00:07:58</a>)  ChatGPTによる要約を挿入しますか？はい。<br>
(<a href="#" class="imk-cue" data-seek="8:18" translate="no">00:08:18</a>)  要約が済みました。<br>
(<a href="#" class="imk-cue" data-seek="8:23" translate="no">00:08:23</a>)  どうもスマホを公共の充電器に接続すると、データを盗まれる危険があるので注意してください、という文章ですね。<br>
(<a href="#" class="imk-cue" data-seek="8:43" translate="no">00:08:43</a>)  この文章をコピーします。　<br>
(<a href="#" class="imk-cue" data-seek="8:51" translate="no">00:08:51</a>)  そして取得を押します。<br>
(<a href="#" class="imk-cue" data-seek="8:56" translate="no">00:08:56</a>)  そうすると、一番上に今の内容が入ってきました。<br>
(<a href="#" class="imk-cue" data-seek="9:05" translate="no">00:09:05</a>)  ご覧のように、一番上に、日時、要約、内容、まあ時々文章が変になっている場合もあるのですかね。　　　<br>
(<a href="#" class="imk-cue" data-seek="9:19" translate="no">00:09:19</a>)  これは、保つかな。<br>
(<a href="#" class="imk-cue" data-seek="9:24" translate="no">00:09:24</a>)  その辺は、愛嬌ですね。<br>
(<a href="#" class="imk-cue" data-seek="9:29" translate="no">00:09:29</a>)  それからURLと、いう形になります。<br>
(<a href="#" class="imk-cue" data-seek="9:37" translate="no">00:09:37</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>
(function(){
  var root=document.querySelector(".dr5emd-sublist");
  var video=document.getElementById("myVideo");
  if(!root || !video) return;
  function parseTs(ts){
    if(!ts) return null;
    var p=ts.trim().split(":").map(function(x){return parseInt(x,10)||0;});
    if(p.length===2) return p[0]*60 + p[1];
    if(p.length===3) return p[0]*3600 + p[1]*60 + p[2];
    return null;
  }
  root.addEventListener("click", function(e){
    var a=e.target.closest && e.target.closest("a.imk-cue[data-seek]");
    if(!a || !root.contains(a)) return;
    e.preventDefault();
    var sec = parseTs(a.getAttribute("data-seek"));
    if(sec==null) return;
    try{ video.currentTime = sec; if(video.paused) video.play(); }catch(_){}
  });
  video.addEventListener("timeupdate", function(){
    var listContainer = root.querySelector("details > p");
    if(!listContainer) return;
    var cues = listContainer.querySelectorAll("a.imk-cue");
    if(cues.length === 0) return;
    var cur = video.currentTime;
    var active = null;
    for(var i=0; i<cues.length; i++){
        var t = parseTs(cues[i].getAttribute("data-seek"));
        if(t !== null && cur >= t - 0.5){
            active = cues[i];
        } else if(t > cur){
            break;
        }
    }
    if(active){
        if(active.classList.contains("active-hl")) return;
        var old = listContainer.querySelectorAll(".active-hl");
        for(var k=0; k<old.length; k++) old[k].classList.remove("active-hl");
        active.classList.add("active-hl");
        if(listContainer.offsetParent !== null){
            var containerRect = listContainer.getBoundingClientRect();
            var activeRect = active.getBoundingClientRect();
            var targetScroll = listContainer.scrollTop + (activeRect.top - containerRect.top) - (listContainer.clientHeight / 2) + (active.clientHeight / 2);
            listContainer.scrollTo({ top: targetScroll, behavior: "smooth" });
        }
    }
  });
})();
</script>
                </div>

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

    /* -----------------------------------------------
       1. 動画の保護機能（右クリック禁止・DL防止）
       ----------------------------------------------- */
    function protectVideo() {
      var target = wrapper ? wrapper : document;
      var mediaEls = target.querySelectorAll('video');
      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);
      });
    }

    /* -----------------------------------------------
       2. 字幕制御＆ハイライト機能（iPhone全画面 完全対応版）
       ----------------------------------------------- */
    function initSubtitles() {
      var target = wrapper ? wrapper : document;
      var video = target.querySelector('video');
      var listContainer = target.querySelector('details > p');
      
      if (!video || !listContainer) 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 = ''; 
      }

      function isSpecialMode() {
        var isFs = !!(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement);
        var isPiP = !!(document.pictureInPictureElement && document.pictureInPictureElement === video) || (video.webkitPresentationMode === "picture-in-picture");
        var isIOSFs = !!video.webkitDisplayingFullscreen; 
        return isFs || isPiP || isIOSFs;
      }

      try {
        if(video.textTracks && video.textTracks.length > 0){
          for(var i=0; i<video.textTracks.length; i++){
             if(video.textTracks[i].kind === 'subtitles' || video.textTracks[i].kind === 'captions'){
                 video.textTracks[i].mode = "hidden";
             }
          }
        }
      } catch(e){}

      video.addEventListener("webkitbeginfullscreen", function() {
          try {
              if(video.textTracks && video.textTracks.length > 0) {
                  for(var i=0; i<video.textTracks.length; i++){
                      if(video.textTracks[i].kind === 'subtitles' || video.textTracks[i].kind === 'captions') video.textTracks[i].mode = "showing";
                  }
              }
          } catch(e){}
      });
      video.addEventListener("webkitendfullscreen", function() {
          try {
              if(video.textTracks && video.textTracks.length > 0) {
                  for(var i=0; i<video.textTracks.length; i++){
                      if(video.textTracks[i].kind === 'subtitles' || video.textTracks[i].kind === 'captions') video.textTracks[i].mode = "hidden";
                  }
              }
          } catch(e){}
      });

      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";
      }

      function parseTs(ts){
        if(!ts) return null;
        var p = ts.trim().split(":").map(function(x){return parseInt(x,10)||0;});
        if(p.length===2) return p[0]*60 + p[1];
        if(p.length===3) return p[0]*3600 + p[1]*60 + p[2];
        return null;
      }

      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 sec = parseTs(a.getAttribute("data-seek"));
          if(sec==null) return;
          try{ video.currentTime = sec; if(video.paused) video.play(); }catch(_){}
        });
      }

      video.addEventListener("timeupdate", function(){
        var desiredMode = isSpecialMode() ? "showing" : "hidden";
        try {
            if(video.textTracks && video.textTracks.length > 0){
                for(var i=0; i<video.textTracks.length; i++){
                    if((video.textTracks[i].kind === 'subtitles' || video.textTracks[i].kind === 'captions') && video.textTracks[i].mode !== desiredMode) {
                        video.textTracks[i].mode = desiredMode;
                    }
                }
            }
        } catch(e){}

        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 t = parseTs(cues[i].getAttribute("data-seek"));
            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(); // ★dynamic2は保護を維持
      var success = initSubtitles();
      checks++;
      if (success || checks > 20) { 
        clearInterval(checkTimer);
      }
    }, 500); 

    /* -----------------------------------------------
       3. 画面遷移時の停止機能
       ----------------------------------------------- */
    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>



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



<h4 class="wp-block-heading">■ スクリプトの流れ</h4>



<ol class="wp-block-list">
<li style="font-style:normal;font-weight:700">クリップボードのテキストを取得</li>



<li style="font-style:normal;font-weight:700">ChatGPTアプリを自動起動</li>



<li style="font-style:normal;font-weight:700">要約プロンプトを自動入力（例：「以下のテキストを日本語で400字以内に要約してください」）</li>



<li style="font-style:normal;font-weight:700">ChatGPTが要約を生成</li>



<li style="font-style:normal;font-weight:700">ユーザーが要約をコピー</li>



<li style="font-style:normal;font-weight:700">指定フォルダにテキストファイルとして自動保存</li>
</ol>



<p>１のクリップボードのテキスト取得がミソになっています。マウス右クリックでコピーしたものです。保存ファイル名は「YYYYMMDD-HHMMSS_タイトル.txt」という形式で、<br>例：/Volumes/NO3_SSD/Dropbox/dropbox_1/ChatGPTによる要約と本文/ に保存されます。</p>



<h4 class="wp-block-heading">■ 実装の手順</h4>



<figure class="wp-block-flexible-table-block-table"><table class="has-fixed-layout"><tbody><tr><td style="width:10%">(1)</td><td>下の青色のボタンから、スクリプト(txtファイル)をダウンロードします。</td></tr><tr><td style="width:10%">(2)</td><td>スクリプトエディタで、例えば&#8221;Save_Clipboard_with_Summary&#8221;と名前つけて、スクリプトファイル&#8221;Save_Clipboard_with_Summary.scpt&#8221;として保存します。</td></tr><tr><td style="width:10%">(3)</td><td>(a)Stream Deckからは&#8221;Save_Clipboard_with_Summary.scpt&#8221;が直接呼べます。<br>(b)クイックアクションからの起動は、Automator→クイックアクション→ワークフローが受け取る現在の項目：テキスト、使用できるアプリケーション：任意のアプリケーション→「AppleScriptを実行」のボックスを置く→(4)<br></td></tr><tr><td>(4)</td><td><strong>run script (POSIX file &#8220;/&lt;あなたのファイルパス&gt;/Save_Clipboard_with_Summary.scpt&#8221;)</strong></td></tr><tr><td>(5)</td><td>アプリ名を例えば&#8221;ChatGPT要約付きTXT保存&#8221;として保存します。</td></tr><tr><td colspan="2"><a href="https://imakat.com/?pubtxt=ChatGPT連携_要約保存Mac用スクリプト_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 colspan="2">Windowsへ実装したい場合は、ChatGPTに上のtxtファイルを添付して、「同じ働きをWindowsで実装するスクリプト作成と実装手順を指示ください」としてください。</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">■ 操作方法</h4>



<p>使い方はとても簡単です。<br>要約したいテキストをコピーし、このアプリを実行するだけ。<br>ChatGPTが起動して自動で要約を生成し、その結果をコピーすればファイルが自動保存されます。<br>これで「ChatGPTで要約→保存」までが一瞬で完了します。</p>



<p>さらに、右クリック（コンテキストメニュー）から呼び出せる「クイックアクション」として登録しておくと、<br>ブラウザやメモアプリ上でテキストを選択 → コピー → 右クリックで「要約して保存」を実行、<br>という直感的な操作が可能になります。<br>Mac標準のAutomatorで簡単に登録できるため、日常の作業フローに自然に組み込めます。</p>



<h4 class="wp-block-heading">■ ChatGPTの文字列のコピーが扱えない！裏ワザあります。</h4>



<p>ブラウザ、テキストエディット、メモなどにある文章は、コピーを行なった後、このアプリをMacのキーボードショートカットに登録して、要約保存は、下記のアクセス許可を経て使用できるようになります。私は、「ChatGPT要約付きTXT保存」アプリに⌥(Option)+ファンクション(F)1を登録しました。</p>



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



<p><br>しかし、本家本元のChatGPTに表示される文字や文章は、コピーした後、アプリが起動しないという問題が生じます。その場合の裏ワザです。</p>



<p>それは、文字列のコピーは、Web版ChatGPTから行い、アプリを起動してインストール版ChatGPTで要約させ、最後に保存する流れで連携する方法です。以下のような挙動になります。</p>



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



<p><br><br></p>



<h4 class="wp-block-heading">■ 注意：アクセス許可が必要な場合があります</h4>



<p>クイックアクションを使って、Safari・Chrome・PDFビューアなど<br>さまざまなアプリからテキストをコピーして要約に取り込む場合、<br>まれに「エラーが出る」「テキストが取得できない」ことがあります。</p>



<p>これは、そのアプリのテキスト内容へのアクセスが macOS で制限されているためです。<br>その場合は以下の手順でアクセスを許可すると解決します。</p>



<p><strong>対処方法：<br>1. 「システム設定」→「プライバシーとセキュリティ」を開く<br>2. 左側のメニューから「アクセシビリティ」または「フルディスクアクセス」を選択<br>3. 使用しているアプリ（例：Automator.app、ChatGPT.app、または実行中のスクリプトランチャー）を追加してオンにする</strong></p>



<p>この設定を行うと、ブラウザ・PDF・Word・メモなど、<br>どのアプリ上でもクイックアクションを安定して利用できるようになります。<br>特にAutomator経由でスクリプトを動かす場合は「Automator.app」へのアクセス許可が重要です。</p>



<h4 class="wp-block-heading">■ TextEditでクイックアクションが出てこない場合</h4>



<p>TextEditでテキストを選択しても、右クリックメニューにクイックアクションが表示されない場合があります。<br>これは、TextEditがリッチテキスト（装飾付き）モードになっているとAutomatorが対象外とみなすためです。</p>



<p><strong>&#x1f4a1; 対処方法：<br>1. メニューの「フォーマット」→「標準テキストにする（⌘⇧T）」を選択し、プレーンテキストモードに切り替える。<br>2. 再度右クリック → 「クイックアクション」を確認。</strong></p>



<p>すると、「ChatGPT要約付きTXT保存」などのワークフローが表示されます。</p>



<h4 class="wp-block-heading">&#x2699;&#xfe0f; Automatorの設定で特に重要なポイント！</h4>



<p>Automatorでクイックアクションを作成するときは、<br>上部の設定欄にある</p>



<p>「ワークフローが受け取る現在の項目」</p>



<p>の指定を 必ず「テキスト」に設定してください。<br>ここが「リッチテキスト」や「ファイル」のままだと、<br>TextEditではメニューに表示されません。</p>



<p><strong>正しい設定：<br>• ワークフローが受け取る現在の項目：&#x1f7e2;「テキスト」<br>• 使用できるアプリケーション：&#x1f7e2;「任意のアプリケーション」</strong></p>



<p>この設定を間違えると、メモでは動くのにTextEditでは出ない、という現象が起こります。</p>



<p>&#x1f538;ポイント：Automatorの「受け取る項目」は“入力タイプの宣言”に相当します。<br>TextEditがプレーンテキストを出すときだけ、この条件に一致します。</p>



<h4 class="wp-block-heading">&#x1f9ed; Stream Deckでの活用（おすすめ）</h4>



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



<p>クイックアクションも十分便利ですが、Stream Deckを持っている方は、こちらを使うのがおすすめです。</p>



<p>Stream Deckは、右クリックメニューではなくAppleScriptやShellスクリプトを直接起動できるランチャーです。<br>そのため、ChatGPTアプリのようなWebView上のテキストでも問題なく実行できます。<br>つまり、どんなアプリや画面上でも「コピー → ボタン一発」で要約＋保存が可能になります。</p>



<p><strong>&#x25b6; Stream Deckでの設定例<br>1. Stream Deckアプリを開く<br>2. 「System」→「Open」または「AppleScript実行」アクションを追加<br>3. あなたのスクリプトファイル（例：Save_Clipboard_with_Summary.scpt）のパスを指定<br>4. ボタンに「要約して保存」などの名前やアイコンを設定</strong></p>



<p>これで、どんなアプリ上でも：</p>



<p>テキストをコピー → Stream Deckボタンを押す → ChatGPTが自動要約 → Dropboxに保存<br>という流れをワンアクションで実行できます。</p>



<p><strong>&#x25b6; 併用のすすめ<br>• 普段は右クリックのクイックアクションで十分<br>• ChatGPTアプリやPDFなど、クイックアクションが反応しない場合はStream Deckで実行</strong></p>



<p>両方に同じスクリプトを指定しておけば、操作感を統一しつつ、どんな環境でも動く構成になります。</p>



<h4 class="wp-block-heading">■ 利用のポイント</h4>



<p><strong>• 無料版（GPT-3.5）でも問題なく動作します。<br>• 英語記事や長文を正確に要約したい場合は、GPT-4またはGPT-5（ChatGPT Plus）を推奨。<br>• すべてローカルで完結し、外部通信やAPI設定は不要。<br>• 要約と手入力タイトルのどちらにも対応し、ファイルは日時順に整理されます。</strong></p>



<h4 class="wp-block-heading">■ 応用例</h4>



<p>プログラミングスクリプトの日本語要約もさることながら、</p>



<p>•<strong> 英語→日本語要約版<br>• 翻訳＋保存版<br>• URL要約版(&#x1f449;「質問してみましょう」のボックスにURLが入った状態で待ちになる場合は、右のボタンを押して動作させる)</strong></p>



<p>ChatGPTアプリを直接操作する感覚で自動化できるため、<br>誰でもすぐに試せる実用的なAI活用法です。<br>Macユーザーなら今日からすぐ導入できます。</p>



<p>以上<br><br></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">27668</post-id>	</item>
		<item>
		<title>【Macクイックアクション】線画イラストを切り抜く方法　その３</title>
		<link>https://imakat.com/2025/05/29/26297/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Thu, 29 May 2025 06:18:00 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[Automator]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<category><![CDATA[クイックアクション]]></category>
		<category><![CDATA[画像加工]]></category>
		<category><![CDATA[Python3]]></category>
		<category><![CDATA[シェルスクリプト]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=26297</guid>

					<description><![CDATA[課題 Macのクイックアクションには標準で「背景を削除」があるのですが、どうも精度が今ひとつです。 画像ファイルの上で、右クリック→クイックアクション、「背景を削除」を選びます。非常に便利です。 普通の写真、動物や人物の [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h5 class="wp-block-heading">課題</h5>



<p>Macのクイックアクションには標準で「背景を削除」があるのですが、どうも精度が今ひとつです。</p>



<p>画像ファイルの上で、右クリック→クイックアクション、「背景を削除」を選びます。非常に便利です。</p>



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



<p>普通の写真、動物や人物の映った普通の写真からの、背景削除は綺麗に出来ます。ここまでは問題ないです。</p>



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



<p>ところが、私は、線だけで描いたイラストをよく使うのですが、その背景削除は、なかなか上手にいきません。下のように、白塗りは不正確、線も不正確です。</p>



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



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



<p>ということで、これまで、線画イラストを切り抜く方法の、その１、その２と紹介してきましたが、今回は、その３です。Macを使う人にとっては、一番、使いやすいかもしれません。</p>



<p>まず最初に、ChatGPTにスクリプトの記述を依頼します。</p>



<p>以下が、依頼文(プロンプト）です。</p>



<h5 class="wp-block-heading">プロンプト</h5>



<figure class="wp-block-flexible-table-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>MacのAutomator,Python、シェルスクリプト、その他必要な言語を使って、下記フローの記述をお願いします。<br><br>１　MacのPDFまたは画像ファイル(pdf png jpg jpeg gif)の上で右クリックしてクイックアクションを起動する。クイックアクション名を&#8221;PDFまたは画像から切り抜き画像の生成&#8221;とする。<br>２　PDFファイルはJPG画像に変換して、他はそのままで、画像1とする。<br>３　画像1から、輪郭線と線だけを元の色(黒色)、不透明で抽出し、それ以外は、完全に透明にした画像(線と輪郭線だけの透過PNG画像)を作成する。注意点として、線の中は中空にせず線の色で塗り埋めること。これをPNG画像2とする。<br>４　PNG画像2から、線によって閉じた輪郭線（外周線)を検出して、その輪郭線の内側を白塗りにして、白塗り以外の部分を透明にして、PNG画像3を生成する。<br>５　PNG画像３を下にして、PNG画像2を上にして、重ねて、PNG画像４を生成する。PNG画像４が完成した画像となる。<br>６　PNG画像４、を読み込んだファイルと同じフォルダに書き込む。ファイル名は”読み込んだファイルのファイル名から拡張子を除いた部分&#8221;&amp;&#8221;_cropped.png&#8221;とする。<br>７　画像１、PNG画像２、PNG画像３、は削除する。<br>以上</strong></td></tr></tbody></table></figure>



<h5 class="wp-block-heading">スクリプト</h5>



<p>何回か修正、微調整を行なって、正しく処理されるようになったスクリプトの記述は以下です。そのままコピペで使えますが、<span class="blue">python3のパスは書き換えてください</span>。<strong>Automator、シェルスクリプト、Python3</strong>、を利用しています。</p>



<figure class="wp-block-flexible-table-block-table"><table class="has-fixed-layout"><tbody><tr><td>要約：PDFまたは画像から自動で切り抜き画像を作成する Automator ワークフローの内容である。入力ファイルの拡張子に応じて処理を分岐し、PDFは300dpiのJPEGに変換、GIFは最初のフレームをJPEG化、その他の画像はコピーして処理用JPEGとする。その後、Python スクリプトにファイル情報を引き渡し、OpenCV で画像を2倍拡大、濃い線部分を抽出して太らせ、線画のみの PNG（_lineonly）、外周塗りつぶし PNG（_filled）を生成。さらに両者を合成して最終的な切り抜き PNG（_cropped）を出力する。最後に中間ファイルを削除して処理を終了する。</td></tr><tr><td>クイックアクション<br>ワークフローが受け取る現在の項目：ファイルまたはフォルダ<br>検索対象：Finder.app<br>シェル：/bin/bash<br>入力の引き渡し方法：引数として<br>「シェルスクリプトを実行」を挿入</td></tr><tr><td><a href="https://imakat.com/?pubtxt=PDFまたは画像から切り抜き画像の生成workflow_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></tbody></table></figure>



<h5 class="wp-block-heading">結果</h5>



<p>このスクリプトを実行します。<br>PDFまたは画像ファイルの上で右クリックして、クイックアクションから、選択します。</p>



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



<p>ファイル名の末尾に、_cropped.pngと入ったファイルが出来るので、これをクリックして確認します。</p>



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



<p><br>私の個人的な設定ですが、スクリーンショットはPDFで保存するようにしています。その理由は、PDFファイルですと図形や文字などを追記することができ、その追記も後から修正ができるからです。そのため、画像ファイルでもPDFでも、切り抜きができるようにしたかったのです。<br><br>以上です。<br></p>



<p></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">26297</post-id>	</item>
		<item>
		<title>【ChatGPT】線画イラストを切り抜く方法　その２</title>
		<link>https://imakat.com/2025/05/28/26274/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Wed, 28 May 2025 08:49:44 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<category><![CDATA[GPTs]]></category>
		<category><![CDATA[画像加工]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=26274</guid>

					<description><![CDATA[今回は、前の記事の作業をChatGPTで行った場合です。 前回の方法では、切り抜くキャラクターを、一つずつコピペするやり方になりますが、今回の方法では、複数のキャラクターでも作成が可能です。 最初に、お絵描きアプリなどで [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>今回は、前の記事の作業をChatGPTで行った場合です。</p>



<p>前回の方法では、切り抜くキャラクターを、一つずつコピペするやり方になりますが、<strong>今回の方法では、複数のキャラクターでも作成が可能です</strong>。</p>



<p>最初に、お絵描きアプリなどで、イラスト画像を作ります。</p>



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



<p>次に、ChatGPTでプロンプトを書きます。プロンプトというと難しく聞こえますが、要は、依頼文書です。以下の文書を、ChatGPTの「質問してみましょう」のところへ、ペーストします。</p>



<h5 class="wp-block-heading">プロンプト</h5>



<figure class="wp-block-flexible-table-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>アップロードされた画像から、輪郭線と線だけを元の色(黒色)、不透明で抽出し、それ以外は完全に透明にしたレイヤー画像(線と輪郭線だけの透過PNG)の画像1を作ってください。但し線の中は中空にせず線の色で塗り埋めてください。次に、画像１の外周に沿って閉じた図形の内側を白塗りにして、外周の外側は透明にした画像2を作ってください。次に、白塗りにした画像2を下にして、その上に画像1を重ねて、画像3をPNGで作ってください。画像3が完成です。<br>※PDFファイルは、処理がうまく進まない場合があります。</strong></td></tr></tbody></table></figure>



<p>、次に「質問してみましょう」のボックスの上から、イラスト画像のファイルをドロップする、あるいは、左下の＋のマークをクリックして、フォルダからファイルを選んで入力します。ChatGPTの画面は以下のようになります。</p>



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



<p>これで準備は終わりです。</p>



<p>実行します。質問ボックスの右下にある↑をクリックします。</p>



<p>20秒程度待つと、下のように処理が終わります。必要なものは完成画像だけでしょうから、それをクリックしてダウンロードします。すると下画像の左にあるように、外周を切り抜いて、白塗りした画像が出来上がります。<br></p>



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



<p>画像のダウンロードは、時間が過ぎると、エラーになります。<br></p>



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



<p>以上ですが、完成画像の精度ですが、細かいイラストですと、線が潰れたり滲んだりしてしまうことが多いです。上に例で取り上げた程度の細かさなら、実用に耐える、といった感じです。もう少し精度を上げたいなら、次に掲載する、その３、が適していると思います。</p>



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



<p></p>



<p><br></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">26274</post-id>	</item>
		<item>
		<title>【DTM考察】Apple Intelligence〜Macに、かかりつけの医者がやってきたのか？！</title>
		<link>https://imakat.com/2024/06/12/22551/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Tue, 11 Jun 2024 16:00:00 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[音楽制作]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Apple Intelligence]]></category>
		<category><![CDATA[DTMer]]></category>
		<category><![CDATA[macOS Sequoia]]></category>
		<category><![CDATA[cubase]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=22551</guid>

					<description><![CDATA[つい最近、2024年6月11日に、Appleが、Apple IntelligenceというAIの導入を発表しましたが、Appleはハード＆ソフトを一体として開発している強みとして、この Apple Intelligenc [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>つい最近、2024年6月11日に、Appleが、<a rel="noopener" target="_blank" href="https://www.apple.com/apple-intelligence/">Apple Intelligence<span class="fa fa-external-link external-icon anchor-icon"></span></a>というAIの導入を発表しましたが、Appleはハード＆ソフトを一体として開発している強みとして、この Apple IntelligenceというAIを、 一つの装置内の隅から隅まで適用できることにあります。具体的には、その装置内において、ユーザーの指示に基づいて、自らが考え、プログラムを実行する。そうしたことが可能になる、そのように想像します。今回は、特に、Macでのその利用に着目します。</p>



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



<h3 class="wp-block-heading">音楽制作者、DTMerの悩み</h3>



<p>私はDTMの専門家ではありませんが、約２０年コツコツと趣味としてやっていて感じることがあります。気が乗らない時期に数年、DTMから遠ざかることがあります。</p>



<p>普通のユーザーは、将来やるかどうかも分からないDTMのために、それまで使ってきたMacやPCを手付けず温存しておこうとは夢にも思いません。DAWや音源ソフトは、悩みながらそのまま残して、MacやPCのOSのバージョンアップをしたり新機種に乗り換えたりします。その都度、音楽関連ソフトからエラーや警告が出ますが、音楽制作を今すぐやるつもりもないので、面倒なので、放っておきます。</p>



<p>そして年月が経ち、定年を迎え、老後の趣味として、「ボケ防止のために音楽制作なんか最適。」と思うわけです。しかも自分は過去経験してるからスキルはある、再度やりやすいと思うわけですね。</p>



<p>そして、５〜１０年前に作った、オーディオやMIDIデータを、再生しようとする。しかし、動かない。当時の無料プラグインが動かない。当時外付けHDDで動いていたが今は動かない。あれこれ調べようとする、音楽制作ソフトは殆どが欧米製ですので、全部が英語といっていいです。運よくそのアップデートが見つかったとしても、その支払いは詐欺じゃないだろうな、とか色々なことが心配になる。高齢になれば尚更なこと。</p>



<p>おそらくこの時点で、過去の経験者で再挑戦しようとする人のほとんどが挫折するのではないでしょうか。</p>



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



<p>実は、過去の経験者どころではありません。今、やっている人でも、最近の頻繁な、ハード機器、OS、DAWの更新に辟易として、辞めていく人も多いわけです。しかも音楽マーケットの単価が激下がりのことに加え、音楽制作ハードソフト製品は殆ど欧米製のためドル建値であり円安により爆値上がりになり、おそらく輸入販売業者は火の車、日本人のやる気を失わせています。日本では音楽では飯は食えないと。</p>



<p>分かって欲しいのは、DTMerが、憂鬱になるのは、実は、新しい機種やOSが発表される時です。「また、色々対応しなければならない面倒な時期が来たな。アップデートしようかどうしようか。」そのように逡巡するわけです。</p>



<h3 class="wp-block-heading">ChatGPTは、未来は弱いが、過去に強い！</h3>



<p>ChatGPT3.5に、<br><br></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/imakat.com/wp-content/themes/cocoon-master/images/man.png?w=1256&#038;ssl=1" alt="私" class="speech-icon-image"/></figure><div class="speech-name">私</div></div><div class="speech-balloon">
<p>Cubaseについて質問しますが、どのバージョンまでなら回答可能ですか？</p>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-4 sbs-line sbp-r sbis-cb cf block-box not-nested-style cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/imakat.com/wp-content/uploads/2024/06/screenshot-2024-06-12-12.11.11.png?w=1256&#038;ssl=1" alt="ChatGPT" class="speech-icon-image"/></figure><div class="speech-name">ChatGPT</div></div><div class="speech-balloon">
<p>私の知識は2023年10月までの情報に基づいていますので、Cubaseについてはその時点までの最新バージョンに関する質問にお答えできます。Cubase 12がリリースされている時点の情報まで対応可能です。それ以前のバージョンについても対応できますので、具体的な質問を教えてください。</p>
</div></div>



<p>今現在、2024年6月です。とすると、半年前の情報まで蓄積されるようになったということですか。しばらく前は、確か２年前までの知識しかなかった、と記憶します。</p>



<p>そうか。１年猶予を考えれば大丈夫か。周回遅れか。</p>



<p>なんとなく光明を感じてきました。</p>



<h3 class="wp-block-heading">新しきをたずねて古きを使う。</h3>



<p>そう。ちょっと手順を考えてみよう。</p>



<p>１　macOS Sequoiaローンチの１年後、私が今使っているmacOS VenturaからSequoiaへ移行する。</p>



<p>２　Apple Intelligenceに以下の依頼をする。</p>



<p>（１）今MacにインストールされているCubase12で、Mac及び外部SSDにある音源ソフトの使用<strong>診断書</strong>を作成させる。<br>　１）そのまま使用可能なものをリストアップさせる。</p>



<p>　２）そのまま使用不可能なものをリストアップして、対策をネットで調べ記述させる。</p>



<p>（２）＜人の作業の方が適当か＞<br>そのまま使用不可能なものについて、バージョンアップなどで費用が発生するなどは購入するかどうかの判断をし、人間の作業で購入する。</p>



<p>（３）そのまま使用不可能なもののうち、可能にしたい分は、設定変更、データの置き場所変更など必要な<strong>治療方針</strong>を作らせる。</p>



<p>（４）作業全体の流れのいわば<strong>治療計画書</strong>を作らせる。</p>



<p>（５）Apple Intelligenceに実行してもらう。</p>



<p>つまり今から1年後、Sequoiaは約１年の古さがある。Cubase12は数年経つ古さがあり、音源ソフトも１年以上の古さがある。<strong>古いことに意義がある</strong>。そこまで古さを保って、Apple Intelligence(ChatGPT)を使えば大丈夫ではないか、と考えます。というか、<strong>どんなものでもローンチされてから１年後以降に入手するようにすれば、Apple Intelligence(ChatGPT)が情報を貯めて、適切に答えを出してくれる</strong>。そういうことですね。</p>



<p>ん〜ん。これは、全世界の人々のあらゆるモノ・サービスの購買行動に影響が出そう。新製品は１年間は売れなくなる？！</p>



<h3 class="wp-block-heading">Macの医者！</h3>



<p>ともかく、これは凄い。最先端のAIを使って、古い過去のことを調べ、自分の体を診断する。そしてその治療方針を作る。治療を実行する。今まで簡単に捨てていたものが捨てなくてよくなり、モノを大事に長持ちさせることになる。そう。まさにここ。特に高齢者はお金がないというかお金を増やす能力がない、新しい事を覚える脳力がない。過去のモノを未来でも使えるように治療・チューニングしてくれるということだから。これはもう、人類の夢。エコでSDGs。</p>



<p>わかりやすく言うと、Macに、お医者さんが、いつもいるようになったイメージ。</p>



<figure class="wp-block-image size-large is-resized"><a href="https://imakat.com/rd.php?id=RRfq3vyj.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=RRfq3vyj.png" alt="" style="width:220px;height:auto"/></a><figcaption class="wp-element-caption">いらすとや</figcaption></figure>



<p><br>実は、このコンセプトは、かなり昔からあります。エキスパート診断システム(<a rel="noopener" target="_blank" href="https://ja.wikipedia.org/wiki/エキスパートシステム">エキスパートシステム<span class="fa fa-external-link external-icon anchor-icon"></span></a>)と呼ばれるもので、病院の医療診断、機械の故障診断など多方面で活用されています。最近は、AIの進歩に伴い、目覚ましく進歩しています。Appleの狙いは、このコンセプトを、業界レベルの活用から、一人ひとりが活用できるようにすることにあるのでしょう。拍手ですね&#x1f44f;</p>



<p>それは凄く分かる。</p>



<p>さあ、どうかな。</p>



<p>実用という点では、まだ、ちょっと期待し過ぎでしょうか。</p>



<p>以上。</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">22551</post-id>	</item>
		<item>
		<title>Dropboxの動画をWordPressへ貼り付ける方法</title>
		<link>https://imakat.com/2024/01/22/18942/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Mon, 22 Jan 2024 01:19:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[vimeo]]></category>
		<category><![CDATA[自宅サーバー]]></category>
		<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<category><![CDATA[Mac]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=18942</guid>

					<description><![CDATA[2024.5.20変更：www.dropbox.comはそのままで、dl=0→raw=1へ変更しました。2024.5.5変更：Dropboxリンクの書き換え方法を、www.dropbox.com→dl.dropbox.c [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>2024.5.20変更：www.dropbox.comはそのままで、dl=0→raw=1へ変更しました。<br>2024.5.5変更：<br>Dropboxリンクの書き換え方法を、www.dropbox.com→dl.dropbox.com、dl=0→raw=1へ変更しました。</p>



<hr class="wp-block-separator has-text-color has-cyan-bluish-gray-color has-alpha-channel-opacity has-cyan-bluish-gray-background-color has-background is-style-wide"/>



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



<p>改めて、災害時の損失を抑え復旧を速やかに行うことが大切と感じています。自宅サーバーを今すぐ撤去するつもりはありませんが、自宅サーバーに依存しない方向、自宅サーバーは選択肢の一つにする方向、そちらへ舵を切りたいと思います。動画再生方法のいくつかの選択肢をテストする中で、その選択肢を更に使いやすくする方法を作ってみます。なお、Google単独は、GoogleドライブからWordPressプレーヤーへ動画と字幕を同期させて引き込む方法は、基本的には困難なようですので、対象から除きました。</p>



<h6 class="wp-block-heading">No1　Vimeo単独</h6>



<p>VimeoはYouTubeと同様にトランスコードされてストリーミング再生されるので、停滞が非常に少ないです。<strong>Vimeoは、動画の、まるごと差し替えがOK、何回でも上書きアップロードができます</strong>。</p>



<figure class="wp-block-flexible-table-block-table is-content-justification-left is-scroll-on-pc is-scroll-on-mobile"><table class=""><tbody><tr><td></td><td style="text-align:center">動画ファイル</td><td style="text-align:center">字幕ファイル</td><td style="text-align:center">初期画面ファイル</td></tr><tr><td>Vimeo</td><td style="text-align:center">◎</td><td style="text-align:center">◎<br>(Vimeoサイトに<br>アップロードする)</td><td style="text-align:center">◎<br>(動画からショットするか、<br>Vimeoにアップロードする)</td></tr><tr><td>Dropbox</td><td style="text-align:center"></td><td style="text-align:center"></td><td style="text-align:center"></td></tr><tr><td>Google</td><td style="text-align:center"></td><td style="text-align:center"></td><td style="text-align:center"></td></tr><tr><td>自宅サーバー</td><td style="text-align:center"></td><td style="text-align:center"></td><td style="text-align:center"></td></tr><tr><td>外部サーバー<br>(Xserver)</td><td style="text-align:center"></td><td style="text-align:center"></td><td style="text-align:center"></td></tr></tbody></table></figure>



<p><span class="red"><s>注：動画の中で、書き換え方法を、dl=0→raw=1としていますが、www.dropbox.com→dl.dropbox.com dl=0→raw＝1へ変更しています。</s></span></p>



<p style="font-size: 14px;">
  <a href="https://imakat.com/vm5?movid=905195687" target="_blank">
   動画を別ページで表示します(ここをクリック)。
  </a>
<div style="position:relative;"><iframe src="https://player.vimeo.com/video/905195687?
texttrack=ja&#038;loop=0&#038;title=0&#038;byline=0&#038;muted=0&#038;pip=1&#038;portrait=0&#038;autopause=0&#038;" style="position:absolute;top:0;left:0;width:100%;height:100%;" frameborder="0" allow="autoplay;fullscreen" allowfullscreen=""></iframe></div><script src="https://player.vimeo.com/api/player.js"></script><details><summary>字幕一覧(クリック)</summary> <p>
1) Dropboxの動画をWordPressに貼り付ける<br>
2) はい。それでは今からDropboxにある動画を、WordPress へ貼り付ける方法について紹介します。<br>
3) まず結論からですが、Vimeoの代用にDropboxを使うことにします。　<br>
4) 私の場合は元ネタの動画だとか写真はですね、ほぼ全部Dropboxの中にありますので、<br>
5) それを、簡単に加工して送信できればいいわけです。<br>
6) 2つ目に、Dropboxですけれども、そのスピードはもちろん、その動画配信サービスの、<br>
7) YouTubeだとかVimeoには劣りますけども、<br>
8) 自宅サーバーよりは速いです。<br>
9) 3番目に、同じクラウドサービスに、Google ドライブがあります。<br>
10) Googleドライブを使う方法を調べたが、<br>
11) 字幕ファイルの同期の方法がよくわかりません。<br>
12) GoogleとしてはYouTubeを利用すればいいと考えているのかなと感じます。　<br>
13) そういった意味で、私にとってはですね、<br>
14) このDropbox対Googleについては、<br>
15) Dropboxが使いやすそうです。<br>
16) それでは、使うための準備を進めます。<br>
17) まず、Dropboxリンクは、そのままWordPressへ貼り付けても動かないです。<br>
18) 手直しする必要があります。<br>
19) Dropboxリンクですけれども、<br>
20) この以下のこの長いURLになってます。<br>
21) 2023年ですね、12月からですね、この、rlkeyというものが加わってとても長くなりました。<br>
22) この2行目からのこの部分ですね、<br>
23) まあ、過剰な負荷だとか、安全対策が強化されたようです。<br>
24) これに伴って、2023年12月以降は、WordPress用の貼り付けコードも変わってきています。<br>
25) 残念ながらこのままでは、WordPressは再生できません。<br>
26) この赤い部分ですね、dl=0の部分を、raw=1で置き換えます。<br>
27) すなわち、以下のような形です。<br>
28) これを作成します。<br>
29) これをですね、マウスの操作だけで行うクイックアクションを作成します。AppleScriptを使います。<br>
30) 以下のように作るのですが、<br>
31) このスクリプトについては、ブログへ添付しますのでご覧ください。<br>
32) このスクリプトについては、ブログへ添付しますのでご覧ください。<br>
33) それで、作ったクイックアクションを実行して、置き換えが正しいかどうか確認します。<br>
34) 動きをご覧ください。<br>
35) 確認するテスト画像ですね、これです。<br>
36) その上で右クリックをして、Dropboxリンクをコピーします。<br>
37) それをメモにペーストします。<br>
38) ペースト、<br>
39) でその上で、左クリックを3回、<br>
40) で、右クリックをして、<br>
41) サービスの中から、DropboxリンクをWordPress用に変換する、を選びます。<br>
42) コピーされます。OK。<br>
43) でそれを、<br>
44) メモにペーストします。<br>
45) こういった出来上がりになります。<br>
46) 変えられた部分は、dl=0が、<br>
47) raw=1に変わっています。<br>
48) それではこの出来上がったものをクリックして確認してみましょう。<br>
49) 確かに画像が出ます。<br>
50) これだけでも、ですね、<br>
51) このクイックアクション、汎用に使えるんですけれども、<br>
52) もう一つAppleScriptのアプリケーションを組み合わせて、WordPressへの動画貼り付けコードを生成したいと思います。<br>
53) 3番目、<br>
54) WordPressへの動画貼り付けコードを生成します。<br>
55) これはまた同じく、AppleScriptのスクリプトですけれども、スクリプトエディターで作ります。<br>
56) 以下のような内容です。この内容もブログへ添付しますので、<br>
57) コピーしてお使いください。<br>
58) その結果のですね、<br>
59) アプリケーションの実行の様子をご覧ください。<br>
60) 最初にアプリケーションを起動させます。<br>
61) それで、<br>
62) 開始画面の画像URLを入れてください、ということで、最初にその画像ファイル、<br>
63) を選び、その上で右クリックして、Dropboxリンクをコピーします。<br>
64) それを、ダイアログボックスのところにペーストします。<br>
65) その上で、左クリック3回、右クリック、サービスから、<br>
66) 変換アクション、<br>
67) コピーがされたらそれを、<br>
68) ボックスに貼り付けます。<br>
69) OK。<br>
70) 次に、<br>
71) 動画本体のURLを、<br>
72) 変換します。<br>
73) 目的の、<br>
74) ファイルを選びます。<br>
75) どれだ、<br>
76) はい、右クリックして、Dropboxリンクのコピーして、<br>
77) それを、ダイアログボックスにペーストして、<br>
78) 左クリック3回、<br>
79) 右クリック、<br>
80) サービスの中からアクションを選び、変換したものを、<br>
81) 置き換えます。<br>
82) OK。<br>
83) 次に、字幕ファイルのURLです。<br>
84) 探します。<br>
85) vttファイルです。<br>
86) 右クリックして、<br>
87) リンクをコピーして、<br>
88) ダイアログボックスにペーストします。左クリック3回、右クリック、<br>
89) サービスの中からアクションを起動して、<br>
90) 出来上がったコードを、<br>
91) 貼り付けます。<br>
92) OK。<br>
93) 最後に動画の説明を記入します。<br>
94) 何入れてもいいんですが、先頭の文字に小文字の不等号カッコ、これはダメです。<br>
95) で、出来上がったものがこういった形でですね、コードが出来上がります。<br>
96) OK。<br>
97) クリップボードにコピーされますのでそれをWordPressへペーストします。<br>
98) カスタムHTMLコードへ、<br>
99) ペーストします。プレビューを押します。<br>
100) 起動してみます。<br>
101) ちゃんと動いてますね、<br>
102) はい、正しくできています。<br>
103) それでは以上で、Dropboxにある動画を、WordPressへ貼り付ける方法の説明を終わります。<br>
104) ありがとうございました。<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>




<h6 class="wp-block-heading">No2　Dropbox単独</h6>



<p>Dropboxは、ブログを補足するための短い簡潔なビデオが適しています。ニッチに役立つことが目的なので、集中アクセスは殆どないと想定しますが、一般向けの内容の場合はVimeoを使います。Dropboxの再生のスムーズさは、WiFi環境であれば、少々待ち時間はありますが、問題なく視聴できると思います。但しスマホで4Gセルラーでの視聴は、時間帯によっては困難かも知れません。特に昼休み。仕事場でWiFiや有線LANでパソコンを使っていた人が、昼休みになると一斉にスマホを使い出すので、昼休みは困難かも知れません。この動画は476MBと大きいサイズです。<strong style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); white-space: normal;">更新方法は、MacにあるDropboxにリンクしたローカルファイルを上書き保存するだけです</strong><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: -webkit-standard; font-size: medium; white-space: normal;">。</span></p>



<figure class="wp-block-flexible-table-block-table is-content-justification-left is-scroll-on-pc is-scroll-on-mobile"><table class=""><tbody><tr><td></td><td style="text-align:center">動画ファイル</td><td style="text-align:center">字幕ファイル</td><td style="text-align:center">初期画面ファイル</td></tr><tr><td>Vimeo</td><td style="text-align:center"></td><td style="text-align:center"></td><td style="text-align:center"></td></tr><tr><td>Dropbox</td><td style="text-align:center">○<br><span class="red"><span class="fz-12px">dl=0 → raw=1</span><br><span class="fz-12px"><s>www.dropbox.com →dl.dropbox.com</s></span></span></td><td style="text-align:center"></td><td style="text-align:center">◎<br><span class="red"><span class="fz-12px">dl=0 → raw=1</span><br><span class="fz-12px"><s>www.dropbox.com →dl.dropbox.com</s></span></span></td></tr><tr><td>Google</td><td style="text-align:center"></td><td style="text-align:center"></td><td style="text-align:center"></td></tr><tr><td>自宅サーバー</td><td style="text-align:center"></td><td style="text-align:center"></td><td style="text-align:center"></td></tr><tr><td>外部サーバー(Xserver)</td><td style="text-align:center"></td><td style="text-align:center">◎<br><span class="fz-12px">直接アップロード</span></td><td style="text-align:center"></td></tr></tbody></table><figcaption>字幕ファイルは、WordPressブログを発信しているサーバー内に置く。</figcaption></figure>



<p><span class="red"><s>注：動画の中で、書き換え方法を、dl=0→raw=1としていますが、www.dropbox.com→dl.dropbox.com dl=0→raw＝1へ変更しています。</s></span></p>



<figure class="wp-block-video aligncenter">
<video controls 
poster="https://www.dropbox.com/scl/fi/4isbb7bfnk7w9vnczilcu/240122_Dropbox.png?rlkey=rxkgwu4apmg07dmkc0h5vptn8&#038;raw=1"
src="https://www.dropbox.com/scl/fi/oewlvtdcqeqp7d9w777t9/2401221_Dropbox-WordPress.mp4?rlkey=7mstp5fm6rgrtrgsvlun0vex5&#038;raw=1" 
playsinline="">
<track default=""
src="https://imakat.com/wp-content/uploads/gd_wp_data/vttdata/15_240122_dropbox_timeadded.vtt" 
label="日本語" srclang="ja" kind="subtitles">
</video>
<figcaption>
</figcaption>
</figure>



<details translate="yes"><summary translate="yes">字幕一覧(クリック)</summary> <p translate="yes">
(00:00:00) Dropboxの動画をWordPressに貼り付ける<br>
(00:00:04) はい。それでは今からDropboxにある動画を、WordPress へ貼り付ける方法について紹介します。<br>
(00:00:17) まず結論からですが、Vimeoの代用にDropboxを使うことにします。　<br>
(00:00:26) 私の場合は元ネタの動画だとか写真はですね、 ほぼ全部Dropboxの中にありますので、<br>
(00:00:35) それを、簡単に加工して送信できればいいわけです。<br>
(00:00:43) 2つ目に、Dropboxですけれども、そのスピードはもちろん、その動画配信サービスの、 <br>
(00:00:50) YouTubeだとかVimeoには劣りますけども、<br>
(00:00:55) 自宅サーバーよりは速いです。<br>
(00:01:01) 3番目に、同じクラウドサービスに、Google ドライブがあります。<br>
(00:01:07) Googleドライブを使う方法を調べたが、<br>
(00:01:13) 字幕ファイルの同期の方法がよくわかりません。<br>
(00:01:17) GoogleとしてはYouTubeを利用すればいいと考えているのかなと感じます。　<br>
(00:01:26) そういった意味で、私にとってはですね、<br>
(00:01:30) このDropbox対Googleについては、<br>
(00:01:36) Dropboxが使いやすそうです。<br>
(00:01:41) それでは、使うための準備を進めます。<br>
(00:01:50) まず、Dropboxリンクは、そのままWordPressへ貼り付けても動かないです。 <br>
(00:01:59) 手直しする必要があります。<br>
(00:02:08) Dropboxリンクですけれども、<br>
(00:02:13) この以下のこの長いURLになってます。<br>
(00:02:19) 2023年ですね、12月からですね、この、rlkeyというものが加わってとても長くなりました。<br>
(00:02:29) この2行目からのこの部分ですね、<br>
(00:02:36) まあ、過剰な負荷だとか、安全対策が強化されたようです。<br>
(00:02:43) これに伴って、2023年12月以降は、WordPress用の貼り付けコードも変わってきています。<br>
(00:02:54) 残念ながらこのままでは、WordPressは再生できません。<br>
(00:03:01) この赤い部分ですね、dl=0の部分を、raw=1で置き換えます。<br>
(00:03:14) すなわち、以下のような形です。<br>
(00:03:22) これを作成します。<br>
(00:03:31) これをですね、マウスの操作だけで行うクイックアクションを作成します。AppleScriptを使います。<br>
(00:03:43) 以下のように作るのですが、<br>
(00:03:46) このスクリプトについては、ブログへ添付しますのでご覧ください。<br>
(00:03:52) このスクリプトについては、ブログへ添付しますのでご覧ください。<br>
(00:04:00) それで、作ったクイックアクションを実行して、置き換えが正しいかどうか確認します。<br>
(00:04:09) 動きをご覧ください。<br>
(00:04:16) 確認するテスト画像ですね、これです。<br>
(00:04:22) その上で右クリックをして、Dropboxリンクをコピーします。<br>
(00:04:31) それをメモにペーストします。 <br>
(00:04:36) ペースト、<br>
(00:04:38) でその上で、左クリックを3回、<br>
(00:04:44) で、右クリックをして、<br>
(00:04:48) サービスの中から、DropboxリンクをWordPress用に変換する、を選びます。<br>
(00:04:59) コピーされます。OK。<br>
(00:05:05) でそれを、<br>
(00:05:07) メモにペーストします。<br>
(00:05:10) こういった出来上がりになります。<br>
(00:05:14) 変えられた部分は、dl=0が、<br>
(00:05:23) raw=1に変わっています。<br>
(00:05:29) それではこの出来上がったものをクリックして確認してみましょう。<br>
(00:05:39) 確かに画像が出ます。<br>
(00:05:48) これだけでも、ですね、<br>
(00:05:53) このクイックアクション、汎用に使えるんですけれども、<br>
(00:05:57) もう一つAppleScriptのアプリケーションを組み合わせて、WordPressへの動画貼り付けコードを生成したいと思います。<br>
(00:06:12) 3番目、<br>
(00:06:14) WordPressへの動画貼り付けコードを生成します。<br>
(00:06:20) これはまた同じく、AppleScriptのスクリプトですけれども、スクリプトエディターで作ります。<br>
(00:06:29) 以下のような内容です。この内容もブログへ添付しますので、<br>
(00:06:40) コピーしてお使いください。<br>
(00:06:44) その結果のですね、<br>
(00:06:47) アプリケーションの実行の様子をご覧ください。<br>
(00:06:55) 最初にアプリケーションを起動させます。<br>
(00:07:11) それで、<br>
(00:07:15) 開始画面の画像URLを入れてください、ということで、最初にその画像ファイル、<br>
(00:07:26) を選び、その上で右クリックして、Dropboxリンクをコピーします。<br>
(00:07:33) それを、ダイアログボックスのところにペーストします。<br>
(00:07:40) その上で、左クリック3回、右クリック、サービスから、<br>
(00:07:48) 変換アクション、<br>
(00:07:53) コピーがされたらそれを、<br>
(00:07:57) ボックスに貼り付けます。<br>
(00:08:00) OK。<br>
(00:08:03) 次に、<br>
(00:08:06) 動画本体のURLを、<br>
(00:08:10) 変換します。<br>
(00:08:14) 目的の、<br>
(00:08:19) ファイルを選びます。<br>
(00:08:23) どれだ、<br>
(00:08:31) はい、右クリックして、Dropboxリンクのコピーして、<br>
(00:08:39) それを、ダイアログボックスにペーストして、<br>
(00:08:46) 左クリック3回、<br>
(00:08:51) 右クリック、<br>
(00:08:53) サービスの中からアクションを選び、変換したものを、<br>
(00:09:02) 置き換えます。<br>
(00:09:05) OK。<br>
(00:09:09) 次に、字幕ファイルのURLです。<br>
(00:09:14) 探します。<br>
(00:09:18) vttファイルです。 <br>
(00:09:23) 右クリックして、<br>
(00:09:26) リンクをコピーして、<br>
(00:09:29) ダイアログボックスにペーストします。左クリック3回、右クリック、<br>
(00:09:38) サービスの中からアクションを起動して、<br>
(00:09:42) 出来上がったコードを、<br>
(00:09:46) 貼り付けます。<br>
(00:09:48) OK。<br>
(00:09:51) 最後に動画の説明を記入します。<br>
(00:09:55) 何入れてもいいんですが、先頭の文字に小文字の不等号カッコ、これはダメです。<br>
(00:10:05) で、出来上がったものがこういった形でですね、コードが出来上がります。<br>
(00:10:23) OK。<br>
(00:10:25) クリップボードにコピーされますのでそれをWordPressへペーストします。<br>
(00:10:33) カスタムHTMLコードへ、<br>
(00:10:37) ペーストします。プレビューを押します。<br>
(00:10:47) 起動してみます。<br>
(00:10:55) ちゃんと動いてますね、<br>
(00:11:14) はい、正しくできています。<br>
(00:11:19) それでは以上で、Dropboxにある動画を、WordPressへ貼り付ける方法の説明を終わります。<br>
(00:11:29) ありがとうございました。<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>




<h6 class="wp-block-heading">No3　自宅単独</h6>



<figure class="wp-block-flexible-table-block-table is-content-justification-left is-scroll-on-pc is-scroll-on-mobile"><table class=""><tbody><tr><td></td><td style="text-align:center">動画ファイル</td><td style="text-align:center">字幕ファイル</td><td style="text-align:center">初期画面ファイル</td></tr><tr><td>Vimeo</td><td style="text-align:center"></td><td style="text-align:center"></td><td style="text-align:center"></td></tr><tr><td>Dropbox</td><td style="text-align:center"></td><td style="text-align:center"></td><td style="text-align:center"></td></tr><tr><td>Google</td><td style="text-align:center"></td><td style="text-align:center"></td><td style="text-align:center"></td></tr><tr><td>自宅サーバー</td><td style="text-align:center">○</td><td style="text-align:center"></td><td style="text-align:center">◎</td></tr><tr><td>外部サーバー<br>(Xserver)</td><td style="text-align:center"></td><td style="text-align:center">◎<br><span class="fz-12px">直接アップロード</span></td><td style="text-align:center"></td></tr></tbody></table><figcaption>字幕ファイルは、WordPressブログを発信しているサーバー内に置く。</figcaption></figure>



<p>Dropboxより非力です。過去の投稿で紹介してきた通り、一般には、476MBという大きい動画を扱うのは無理クリですが、あえて掲載しました。WiFi環境で、高速度なら、視聴できるかも知れません。場合によってはDropboxよりサクサク動くこともあります。<strong>更新方法は、MacにあるDropboxにリンクしたローカルファイル(実はWordPressフォルダとも同期させている)を上書き保存するだけです</strong>。</p>



<p><span class="red"><s>注：動画の中で、書き換え方法を、dl=0→raw=1としていますが、www.dropbox.com→dl.dropbox.com dl=0→raw＝1へ変更しています。</s></span></p>



<figure class="wp-block-video aligncenter">
<video controls
poster="https://imakat.synology.me/wp-content/pmedia/240122_Dropbox貼り付け.png"
src="https://imakat.synology.me/wp-content/mmedia/2401221_Dropboxの動画をWordPressへ貼り付ける.mp4" 
playsinline="">
<track default="" 
src="https://imakat.com/wp-content/uploads/gd_wp_data/vttdata/15_240122_dropbox_timeadded.vtt" 
label="日本語" srclang="ja" kind="subtitles">
</video>
<figcaption>
</figcaption>
</figure>



<details translate="yes"><summary translate="yes">字幕一覧(クリック)</summary> <p translate="yes">
(00:00:00) Dropboxの動画をWordPressに貼り付ける<br>
(00:00:04) はい。それでは今からDropboxにある動画を、WordPress へ貼り付ける方法について紹介します。<br>
(00:00:17) まず結論からですが、Vimeoの代用にDropboxを使うことにします。　<br>
(00:00:26) 私の場合は元ネタの動画だとか写真はですね、 ほぼ全部Dropboxの中にありますので、<br>
(00:00:35) それを、簡単に加工して送信できればいいわけです。<br>
(00:00:43) 2つ目に、Dropboxですけれども、そのスピードはもちろん、その動画配信サービスの、 <br>
(00:00:50) YouTubeだとかVimeoには劣りますけども、<br>
(00:00:55) 自宅サーバーよりは速いです。<br>
(00:01:01) 3番目に、同じクラウドサービスに、Google ドライブがあります。<br>
(00:01:07) Googleドライブを使う方法を調べたが、<br>
(00:01:13) 字幕ファイルの同期の方法がよくわかりません。<br>
(00:01:17) GoogleとしてはYouTubeを利用すればいいと考えているのかなと感じます。　<br>
(00:01:26) そういった意味で、私にとってはですね、<br>
(00:01:30) このDropbox対Googleについては、<br>
(00:01:36) Dropboxが使いやすそうです。<br>
(00:01:41) それでは、使うための準備を進めます。<br>
(00:01:50) まず、Dropboxリンクは、そのままWordPressへ貼り付けても動かないです。 <br>
(00:01:59) 手直しする必要があります。<br>
(00:02:08) Dropboxリンクですけれども、<br>
(00:02:13) この以下のこの長いURLになってます。<br>
(00:02:19) 2023年ですね、12月からですね、この、rlkeyというものが加わってとても長くなりました。<br>
(00:02:29) この2行目からのこの部分ですね、<br>
(00:02:36) まあ、過剰な負荷だとか、安全対策が強化されたようです。<br>
(00:02:43) これに伴って、2023年12月以降は、WordPress用の貼り付けコードも変わってきています。<br>
(00:02:54) 残念ながらこのままでは、WordPressは再生できません。<br>
(00:03:01) この赤い部分ですね、dl=0の部分を、raw=1で置き換えます。<br>
(00:03:14) すなわち、以下のような形です。<br>
(00:03:22) これを作成します。<br>
(00:03:31) これをですね、マウスの操作だけで行うクイックアクションを作成します。AppleScriptを使います。<br>
(00:03:43) 以下のように作るのですが、<br>
(00:03:46) このスクリプトについては、ブログへ添付しますのでご覧ください。<br>
(00:03:52) このスクリプトについては、ブログへ添付しますのでご覧ください。<br>
(00:04:00) それで、作ったクイックアクションを実行して、置き換えが正しいかどうか確認します。<br>
(00:04:09) 動きをご覧ください。<br>
(00:04:16) 確認するテスト画像ですね、これです。<br>
(00:04:22) その上で右クリックをして、Dropboxリンクをコピーします。<br>
(00:04:31) それをメモにペーストします。 <br>
(00:04:36) ペースト、<br>
(00:04:38) でその上で、左クリックを3回、<br>
(00:04:44) で、右クリックをして、<br>
(00:04:48) サービスの中から、DropboxリンクをWordPress用に変換する、を選びます。<br>
(00:04:59) コピーされます。OK。<br>
(00:05:05) でそれを、<br>
(00:05:07) メモにペーストします。<br>
(00:05:10) こういった出来上がりになります。<br>
(00:05:14) 変えられた部分は、dl=0が、<br>
(00:05:23) raw=1に変わっています。<br>
(00:05:29) それではこの出来上がったものをクリックして確認してみましょう。<br>
(00:05:39) 確かに画像が出ます。<br>
(00:05:48) これだけでも、ですね、<br>
(00:05:53) このクイックアクション、汎用に使えるんですけれども、<br>
(00:05:57) もう一つAppleScriptのアプリケーションを組み合わせて、WordPressへの動画貼り付けコードを生成したいと思います。<br>
(00:06:12) 3番目、<br>
(00:06:14) WordPressへの動画貼り付けコードを生成します。<br>
(00:06:20) これはまた同じく、AppleScriptのスクリプトですけれども、スクリプトエディターで作ります。<br>
(00:06:29) 以下のような内容です。この内容もブログへ添付しますので、<br>
(00:06:40) コピーしてお使いください。<br>
(00:06:44) その結果のですね、<br>
(00:06:47) アプリケーションの実行の様子をご覧ください。<br>
(00:06:55) 最初にアプリケーションを起動させます。<br>
(00:07:11) それで、<br>
(00:07:15) 開始画面の画像URLを入れてください、ということで、最初にその画像ファイル、<br>
(00:07:26) を選び、その上で右クリックして、Dropboxリンクをコピーします。<br>
(00:07:33) それを、ダイアログボックスのところにペーストします。<br>
(00:07:40) その上で、左クリック3回、右クリック、サービスから、<br>
(00:07:48) 変換アクション、<br>
(00:07:53) コピーがされたらそれを、<br>
(00:07:57) ボックスに貼り付けます。<br>
(00:08:00) OK。<br>
(00:08:03) 次に、<br>
(00:08:06) 動画本体のURLを、<br>
(00:08:10) 変換します。<br>
(00:08:14) 目的の、<br>
(00:08:19) ファイルを選びます。<br>
(00:08:23) どれだ、<br>
(00:08:31) はい、右クリックして、Dropboxリンクのコピーして、<br>
(00:08:39) それを、ダイアログボックスにペーストして、<br>
(00:08:46) 左クリック3回、<br>
(00:08:51) 右クリック、<br>
(00:08:53) サービスの中からアクションを選び、変換したものを、<br>
(00:09:02) 置き換えます。<br>
(00:09:05) OK。<br>
(00:09:09) 次に、字幕ファイルのURLです。<br>
(00:09:14) 探します。<br>
(00:09:18) vttファイルです。 <br>
(00:09:23) 右クリックして、<br>
(00:09:26) リンクをコピーして、<br>
(00:09:29) ダイアログボックスにペーストします。左クリック3回、右クリック、<br>
(00:09:38) サービスの中からアクションを起動して、<br>
(00:09:42) 出来上がったコードを、<br>
(00:09:46) 貼り付けます。<br>
(00:09:48) OK。<br>
(00:09:51) 最後に動画の説明を記入します。<br>
(00:09:55) 何入れてもいいんですが、先頭の文字に小文字の不等号カッコ、これはダメです。<br>
(00:10:05) で、出来上がったものがこういった形でですね、コードが出来上がります。<br>
(00:10:23) OK。<br>
(00:10:25) クリップボードにコピーされますのでそれをWordPressへペーストします。<br>
(00:10:33) カスタムHTMLコードへ、<br>
(00:10:37) ペーストします。プレビューを押します。<br>
(00:10:47) 起動してみます。<br>
(00:10:55) ちゃんと動いてますね、<br>
(00:11:14) はい、正しくできています。<br>
(00:11:19) それでは以上で、Dropboxにある動画を、WordPressへ貼り付ける方法の説明を終わります。<br>
(00:11:29) ありがとうございました。<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>




<p>No1~No3と比較してきましたが、現在、安定度に優れるのはNo1のVimeoが第１位、No2のDropbox単独が第2位です。扱い易さは、圧倒的にNo3の自宅単独です。実はこの3つ以外にも、Dropbox(動画、字幕) と自宅(初期画面)、Dropbox(動画、字幕) とGoogleフォト(初期画面)、Dropbox(動画、字幕) と外部(初期画面)についてテストをしましたが、今一つ不安定なことと操作が複雑になることから割愛しました。<br>しかし、今回、改めて考察するキッカケになった災害リスク。これを考えると、自宅のWebサーバーに比重を置くのは問題といえるでしょう。</p>



<p>従って、今回、<strong><span class="marker">「No2 Dropbox単独を採用</span></strong>していきます。10分未満の簡単編集でマニアックなものはDropbox、ファイルが重そうな10分以上あるいは一般向け配信のものはVimeoという使い分けをイメージしています。さあどうかな。</p>



<a href="https://imakat.com/ds5?drid=15" target="_blank">
    <img decoding="async" src="https://docs.google.com/drawings/d/e/2PACX-1vSYLNcifORpgWlD9fvrov_8o5NoHmlSoIiXejp8tHOdNiLL-OT8ld2iUsaCSfC_KHCo2fsa7aVvN-JH/pub?w=960&amp;h=720" alt="Google図形描画">
</a>



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



<h4 class="wp-block-heading">１　動画の中に登場するAppleScriptの紹介</h4>



<p>（１）Dropboxの共有リンクをWordPress貼り付け用に変換するクイックアクションのAppleScriptは、以下です。</p>



<p>コード変換の方法は、<br><strong><br><span class="fz-18px"><span class="marker-red">URLの記述の中の </span></span></strong></p>



<p><strong><span class="fz-18px"><span class="marker-red"><s>&#8220;www.dropbox.com&#8221; を&#8221;dl.dropbox.com&#8221;へ置き換える。</s></span></span></strong></p>



<p><strong><span class="fz-18px"><span class="marker-red">&#8220;dl=0&#8221; を&#8221;raw=1&#8243;へ置き換える。</span></span></strong></p>



<p>を使っています。なお、拡張子に関係なく扱えています。</p>



<p id="link1"> <strong><span class="marker">DropboxのURLを変換するAppleスクリプト</span></strong></p>



<p>「AppleScriptを実行」を挿入</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>-- DropboxのURLを変換するスクリプト

-- ３−１　ベースとなるDropboxの共有URLを一時的に保管する。
set baseURL to the clipboard
set tempURL to &quot;&quot;

-- 共有URLが存在するか確認
if baseURL is not equal to &quot;&quot; then
	
	-- ３−1　クリップボードの結果をtempURLへ置き換える。
	set tempURL to baseURL
	
	-- ３−２　URLの記述の中の &quot;www.dropbox.com&quot; を &quot;dl.dropbox.com&quot; へ置き換える。
	-- set tempURL to replaceText(&quot;www.dropbox.com&quot;, &quot;dl.dropbox.com&quot;, baseURL)
	
	-- ３−３　URLの記述の中の &quot;dl=0&quot; を&quot;raw=1&quot;へ置き換える。
	set tempURL to replaceText(&quot;dl=0&quot;, &quot;raw=1&quot;, tempURL)
	
	-- ３−４　クリップボードに保管する。「クリップボードにWordPress貼り付け用URLをコピーしました。」と表示する。
	set the clipboard to tempURL
	display dialog &quot;クリップボードにWordPress貼り付け用URLをコピーしました。&quot;
else
	display dialog &quot;共有URLが見つかりません。&quot;
end if

-- 文字列中の指定されたテキストを置き換える関数
on replaceText(find, replace, sourceText)
	set text item delimiters to find
	set sourceText to text items of sourceText
	set text item delimiters to replace
	set sourceText to sourceText as text
	set text item delimiters to &quot;&quot;
	return sourceText
end replaceText</code></pre></div>



<p id="link2">（２）<span class="marker"><strong>WordPress動画貼り付けコード生成用アプリ</strong></span>のAppleScriptは以下です。</p>



<pre class="wp-block-code"><code>-- スクリプトのテンプレート
set scriptTemplate to "&lt;figure class=\"wp-block-video aligncenter\"&gt;
&lt;video controls
poster=\"%poster%\"
src=\"%video%\" 
playsinline=\"\"&gt;
&lt;track default=\"\" 
src=\"%subtitles%\" 
label=\"日本語\" srclang=\"ja\" kind=\"subtitles\"&gt;
&lt;/video&gt;
&lt;figcaption&gt;%videoDescription%
&lt;/figcaption&gt;
&lt;/figure&gt;
&#091;dynamic_external_html url=\"%subtitle_list%\"]"

-- ダイアログでユーザーに入力を求める
set posterURL to text returned of (display dialog "&lt;WordPress動画貼り付けコードを生成&gt; 開始画面の画像のURLを入力してください(省略可)。" default answer "")
set videoURL to text returned of (display dialog "&lt;WordPress動画貼り付けコードを生成&gt; 動画本体のURLを入力してください(省略可)。" default answer "")
set subtitlesURL to text returned of (display dialog "&lt;WordPress動画貼り付けコードを生成&gt; 字幕ファイルのURLを入力してください(省略可)。" default answer "")
set videoDescription to text returned of (display dialog "&lt;WordPress動画貼り付けコードを生成&gt; 動画の説明を記入ください(省略可)。※先頭の文字に小文字の&lt; &gt;は不可。" default answer "")
set subtitleListURL to text returned of (display dialog "&lt;WordPress動画貼り付けコードを生成&gt; 字幕一覧のURLを入力してください(省略可)。" default answer "")

-- スクリプトのテンプレートをユーザーの入力で置き換える
set customHTML to scriptTemplate
set customHTML to my replaceText(customHTML, "%poster%", posterURL)
set customHTML to my replaceText(customHTML, "%video%", videoURL)
set customHTML to my replaceText(customHTML, "%subtitles%", subtitlesURL)
set customHTML to my replaceText(customHTML, "%videoDescription%", videoDescription)
set customHTML to my replaceText(customHTML, "%subtitle_list%", subtitleListURL)

-- 置換用の関数
on replaceText(originalText, searchString, replacementString)
	set AppleScript's text item delimiters to searchString
	set textItems to text items of originalText
	set AppleScript's text item delimiters to replacementString
	set replacedText to textItems as text
	set AppleScript's text item delimiters to ""
	return replacedText
end replaceText

-- 結果を表示
display dialog customHTML

-- 結果をクリップボードにコピー
set the clipboard to customHTML
display dialog "この内容をクリップボードにコピーしました。"</code></pre>



<p>なお、後日、字幕一覧のデータの投稿内引き込みを追加しました。WordPressのfunction.phpへ以下を追加ください。</p>



<pre class="wp-block-code"><code>&lt;?php
// 外部テキストを取得する関数
function fetch_dynamic_external_html_content($atts) {
    // ショートコードの引数を定義
    $attributes = shortcode_atts(array(
        'url' =&gt; '' // URLを指定する
    ), $atts);

    $url = $attributes&#091;'url'];
    
    // URLが指定されていない場合の処理
    if (empty($url)) {
        return 'URLが指定されていません。';
    }

    // 外部URLからデータを取得
    $response = wp_remote_get($url);

    // エラーチェック
    if (is_wp_error($response)) {
        return 'テキストの読み込みに失敗しました。';
    }

    // 取得したデータの処理
    $body = wp_remote_retrieve_body($response);
    return $body; // HTMLとしてそのまま返す
}

// ショートコードを作成
function display_dynamic_external_html($atts) {
    return fetch_dynamic_external_html_content($atts);
}
add_shortcode('dynamic_external_html', 'display_dynamic_external_html');

?&gt;</code></pre>



<p>上の２つのAppleScriptは、汎用性があります。</p>



<p>例えば、自宅サーバー用のWordPressのカスタムhtml記述については、URLはランダムな文字列を埋め込むことなく、素直なディレクトリの記述になっているので、（２）だけ使います。</p>



<p></p>



<h4 class="wp-block-heading">２　ChatGPTの活用</h4>



<p>上のAppleScriptですが、実は、ChatGPT（無料版の利用）の力を借りています。私は、「指示書を書いて、結果を検証して、間違いを指摘して訂正を求める」だけです。ChatGPTは、プログラミングは得意な分野だと思います。私は、特に活用法をどこかで学んだことはありませんが、質疑応答を、「解決して欲しい問題を書く、何を使って、どのような手順で（手順１　手順２　、、）、プログラミング記述して欲しいかを書く」という流れで繰り返すことができます。但し、即座に正しい解法になることはまずありません。出てきたエラーをそのまま伝えて、訂正を依頼する、それを、５〜６回繰り返して、辿り着く感じです。隘路に入ったためスタートに戻ることも、ままあります。</p>



<h4 class="wp-block-heading">３　マウスの左を３回クリック</h4>



<p>動画の中で登場する、マウスの左３回クリック、トリプルクリックは、このブログをご覧の方はご存知のことと思いますが、紹介します。</p>



<figure class="wp-block-video aligncenter">
<video controls
poster="https://www.dropbox.com/scl/fi/bxifz34udntupuho4jm9y/3-poster.png?rlkey=4dts2a2cmdjtxsynnxgksxdfr&#038;raw=1"
src="https://dl.dropboxusercontent.com/scl/fi/cw3iijw40y6thbop2310o/240117_-3.mp4?rlkey=g6mrd4yjfo81dyr9qioz49vai" 
playsinline="">
<track default="" 
src="https://dl.dropboxusercontent.com/scl/fi/xevdt3zrkbq0bcfueek2a/240118_-3-_.vtt?rlkey=emxpzxgr6cilqitdt8035rdif" 
label="日本語" srclang="ja" kind="subtitles">
</video>
<figcaption>＜マウスの左を３回クリック＞
</figcaption>
</figure>



<h4 class="wp-block-heading">４　2023年12月にDropboxリンクの構造が変更。個々のコンテンツ単位で制限管理ができる仕組みへ移行。</h4>



<p>DropboxリンクのURLですが、以前は&#8221;https://&#8230;&#8230;..？&#8221;まででした。2023年12月にrlkey=以降が追加になっています。トラッキング追跡のためか何らかの異常回避、情報収集のためでしょうか。ファイル単位でアクセス制限ができるようになるのかも知れません。いずれにしても、何らかの安全対策だと思います。　自宅サーバーは、サーバー単位か、そこまで細かく出来ていないので、Dropboxは一歩も二歩も進んでいます。</p>



<p><a rel="noopener" target="_blank" href="https://help.dropbox.com/ja-jp/share/force-download">Dropboxヘルプセンターにrlkeyを導入すること及び利用方法(レンダリングの強制 )の説明<span class="fa fa-external-link external-icon anchor-icon"></span></a>があります。この中で、ブラウザで直接画像を表示するには、つまりWordPressなどでリンク表示する場合は、<strong>raw=1を使ってリダイレクトをさせて使用する</strong>ように指示が書かれています。まだ移行が完了したとはしていないので、今後とも何らかの仕様の変更があるかも知れません。ウオッチする必要があります。</p>



<h4 class="wp-block-heading">５　Dropboxリンクを使うならファイル名は英数字で作るのが基本。</h4>



<p>Dropboxリンクは、ファイル名を変えても、フォルダを移動しても、変わりません。&#8221;<strong>https://ランダムな文字列/ファイル名?rlkey=ランダムな文字列</strong>&#8220;となっています。この<strong>ファイル名のところですが、日本語の部分が削除されます</strong>。ですから、ファイル名は、英数字だけでユニークな文字列をまず書いて、私は年月日プラス連番がいいと思いますが、そこに少しだけ短く日本語を加える書き方がよさそうです。</p>



<h4 class="wp-block-heading">６　ダウンロードを要求される問題。</h4>



<p>Dropboxリンクの末尾をraw=1に置き換えたURLを、WordPressの投稿中の文字列にリンクして再生しようとすると、ダウンロードを要求される場合があります。Dropboxはクラウドストレージが本業であって、データを受け渡すのが本業。だから、動画や画像も、ビジネス上のファイルのやり取りと同様に、利用者が一度自分のフォルダへダウンロードして、その後で、そのファイルを再生する。それが基本だろうと思います。しかしながら私のように、個人のWeb配信に使う場合は、ダウンロードを要求されるなら、それは不便過ぎて利用できないです。そこで、そのような個人的な小規模の発信者に対して、ランダム生成した非常に長いURLアドレスへリダイレクトするなら利用を可能にする、アクセスが集中するようなら視聴制限を加える、そうした条件の下で利用を許可しているということになります。</p>



<p>ともかく、間違いないのは、Dropbox動画ごとに、それを貼り付けた独立ページ（固定ページ）を自分で作ることです。そしてその独立ページをWordPressの文字列にリンク。そうすればWindows/Macほかでもダウンロードを要求されないでしょう。</p>



<h4 class="wp-block-heading">７　動的トグル</h4>



<p>小さな工夫の紹介ですが、上のスクリプトのところで、「字幕一覧のデータの投稿内引き込みを追加した&#8230;.」と記述しましたが、これの具体例が、以下のトグルです。</p>



<details translate="yes"><summary translate="yes">字幕一覧(クリック)</summary> <p translate="yes">
(00:00:00) Dropboxの動画をWordPressに貼り付ける<br>
(00:00:04) はい。それでは今からDropboxにある動画を、WordPress へ貼り付ける方法について紹介します。<br>
(00:00:17) まず結論からですが、Vimeoの代用にDropboxを使うことにします。　<br>
(00:00:26) 私の場合は元ネタの動画だとか写真はですね、 ほぼ全部Dropboxの中にありますので、<br>
(00:00:35) それを、簡単に加工して送信できればいいわけです。<br>
(00:00:43) 2つ目に、Dropboxですけれども、そのスピードはもちろん、その動画配信サービスの、 <br>
(00:00:50) YouTubeだとかVimeoには劣りますけども、<br>
(00:00:55) 自宅サーバーよりは速いです。<br>
(00:01:01) 3番目に、同じクラウドサービスに、Google ドライブがあります。<br>
(00:01:07) Googleドライブを使う方法を調べたが、<br>
(00:01:13) 字幕ファイルの同期の方法がよくわかりません。<br>
(00:01:17) GoogleとしてはYouTubeを利用すればいいと考えているのかなと感じます。　<br>
(00:01:26) そういった意味で、私にとってはですね、<br>
(00:01:30) このDropbox対Googleについては、<br>
(00:01:36) Dropboxが使いやすそうです。<br>
(00:01:41) それでは、使うための準備を進めます。<br>
(00:01:50) まず、Dropboxリンクは、そのままWordPressへ貼り付けても動かないです。 <br>
(00:01:59) 手直しする必要があります。<br>
(00:02:08) Dropboxリンクですけれども、<br>
(00:02:13) この以下のこの長いURLになってます。<br>
(00:02:19) 2023年ですね、12月からですね、この、rlkeyというものが加わってとても長くなりました。<br>
(00:02:29) この2行目からのこの部分ですね、<br>
(00:02:36) まあ、過剰な負荷だとか、安全対策が強化されたようです。<br>
(00:02:43) これに伴って、2023年12月以降は、WordPress用の貼り付けコードも変わってきています。<br>
(00:02:54) 残念ながらこのままでは、WordPressは再生できません。<br>
(00:03:01) この赤い部分ですね、dl=0の部分を、raw=1で置き換えます。<br>
(00:03:14) すなわち、以下のような形です。<br>
(00:03:22) これを作成します。<br>
(00:03:31) これをですね、マウスの操作だけで行うクイックアクションを作成します。AppleScriptを使います。<br>
(00:03:43) 以下のように作るのですが、<br>
(00:03:46) このスクリプトについては、ブログへ添付しますのでご覧ください。<br>
(00:03:52) このスクリプトについては、ブログへ添付しますのでご覧ください。<br>
(00:04:00) それで、作ったクイックアクションを実行して、置き換えが正しいかどうか確認します。<br>
(00:04:09) 動きをご覧ください。<br>
(00:04:16) 確認するテスト画像ですね、これです。<br>
(00:04:22) その上で右クリックをして、Dropboxリンクをコピーします。<br>
(00:04:31) それをメモにペーストします。 <br>
(00:04:36) ペースト、<br>
(00:04:38) でその上で、左クリックを3回、<br>
(00:04:44) で、右クリックをして、<br>
(00:04:48) サービスの中から、DropboxリンクをWordPress用に変換する、を選びます。<br>
(00:04:59) コピーされます。OK。<br>
(00:05:05) でそれを、<br>
(00:05:07) メモにペーストします。<br>
(00:05:10) こういった出来上がりになります。<br>
(00:05:14) 変えられた部分は、dl=0が、<br>
(00:05:23) raw=1に変わっています。<br>
(00:05:29) それではこの出来上がったものをクリックして確認してみましょう。<br>
(00:05:39) 確かに画像が出ます。<br>
(00:05:48) これだけでも、ですね、<br>
(00:05:53) このクイックアクション、汎用に使えるんですけれども、<br>
(00:05:57) もう一つAppleScriptのアプリケーションを組み合わせて、WordPressへの動画貼り付けコードを生成したいと思います。<br>
(00:06:12) 3番目、<br>
(00:06:14) WordPressへの動画貼り付けコードを生成します。<br>
(00:06:20) これはまた同じく、AppleScriptのスクリプトですけれども、スクリプトエディターで作ります。<br>
(00:06:29) 以下のような内容です。この内容もブログへ添付しますので、<br>
(00:06:40) コピーしてお使いください。<br>
(00:06:44) その結果のですね、<br>
(00:06:47) アプリケーションの実行の様子をご覧ください。<br>
(00:06:55) 最初にアプリケーションを起動させます。<br>
(00:07:11) それで、<br>
(00:07:15) 開始画面の画像URLを入れてください、ということで、最初にその画像ファイル、<br>
(00:07:26) を選び、その上で右クリックして、Dropboxリンクをコピーします。<br>
(00:07:33) それを、ダイアログボックスのところにペーストします。<br>
(00:07:40) その上で、左クリック3回、右クリック、サービスから、<br>
(00:07:48) 変換アクション、<br>
(00:07:53) コピーがされたらそれを、<br>
(00:07:57) ボックスに貼り付けます。<br>
(00:08:00) OK。<br>
(00:08:03) 次に、<br>
(00:08:06) 動画本体のURLを、<br>
(00:08:10) 変換します。<br>
(00:08:14) 目的の、<br>
(00:08:19) ファイルを選びます。<br>
(00:08:23) どれだ、<br>
(00:08:31) はい、右クリックして、Dropboxリンクのコピーして、<br>
(00:08:39) それを、ダイアログボックスにペーストして、<br>
(00:08:46) 左クリック3回、<br>
(00:08:51) 右クリック、<br>
(00:08:53) サービスの中からアクションを選び、変換したものを、<br>
(00:09:02) 置き換えます。<br>
(00:09:05) OK。<br>
(00:09:09) 次に、字幕ファイルのURLです。<br>
(00:09:14) 探します。<br>
(00:09:18) vttファイルです。 <br>
(00:09:23) 右クリックして、<br>
(00:09:26) リンクをコピーして、<br>
(00:09:29) ダイアログボックスにペーストします。左クリック3回、右クリック、<br>
(00:09:38) サービスの中からアクションを起動して、<br>
(00:09:42) 出来上がったコードを、<br>
(00:09:46) 貼り付けます。<br>
(00:09:48) OK。<br>
(00:09:51) 最後に動画の説明を記入します。<br>
(00:09:55) 何入れてもいいんですが、先頭の文字に小文字の不等号カッコ、これはダメです。<br>
(00:10:05) で、出来上がったものがこういった形でですね、コードが出来上がります。<br>
(00:10:23) OK。<br>
(00:10:25) クリップボードにコピーされますのでそれをWordPressへペーストします。<br>
(00:10:33) カスタムHTMLコードへ、<br>
(00:10:37) ペーストします。プレビューを押します。<br>
(00:10:47) 起動してみます。<br>
(00:10:55) ちゃんと動いてますね、<br>
(00:11:14) はい、正しくできています。<br>
(00:11:19) それでは以上で、Dropboxにある動画を、WordPressへ貼り付ける方法の説明を終わります。<br>
(00:11:29) ありがとうございました。<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>




<p>上の3つの動画の下部に挿入した字幕一覧のトグルと同じものです。このtxtファイルは、Dropboxの中にあります。上に掲載のfunction.phpをコピペしたあと、</p>



<pre class="wp-block-code"><code>&#091;dynamic_external_html url=""]</code></pre>



<p>上をカスタムhtmlに記述して、url=&#8221;&#8221;のところに当記事で説明した方法で変更したDropboxリンクを挿入します。Dropboxにあるこのtxtファイルを変更すると、全てのこの字幕一覧の表示が変更されます。当たり前といえばそうなのですが、なかなか便利です。動的トグルと呼んでおきます。</p>



<p></p>



<h4 class="wp-block-heading">８　直接リンクには3つのサーバーがあるが、不安定であり、モニタリング要。</h4>



<p>Dropboxから画像を直接リンクする方法は、正直、不安定です。以下に、同じ画像を、DropboxのURLをwww.dropbox.com（変更なし)の場合、dl.dropbox.comの場合、dl.dropboxusercontent.comの場合、を並べます。数日様子を見ていますが、www.dropbox.com(変更なし)がほぼ常に表示されています。これの特徴は、別のトークンURLに書き換えられて表示されるという２段階になっています。状況をウオッチしていきます。<br><span class="red"><s>2024.5.5時点で、www.dropbox.com raw=1は表示不可、dl.dropbox.com raw=1は表示可能となっています。</s></span><br></p>



<figure class="wp-block-image size-large is-resized"><a rel="noopener" target="_blank" href="https://dl.dropbox.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&amp;raw=1"><img decoding="async" src="https://dl.dropbox.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&amp;raw=1" alt="" style="width:840px;height:auto"/></a><figcaption class="wp-element-caption"><a rel="noopener" target="_blank" href="https://dl.dropbox.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&amp;raw=1">https://dl.dropbox.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&amp;raw=1<span class="fa fa-external-link external-icon anchor-icon"></span></a></figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a rel="noopener" target="_blank" href="https://i0.wp.com/dl.dropboxusercontent.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?ssl=1"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/dl.dropboxusercontent.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?w=1256&#038;ssl=1" alt="" style="width:840px;height:auto"/></a><figcaption class="wp-element-caption"><a rel="noopener" target="_blank" href="https://dl.dropboxusercontent.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&amp;raw=1">https://dl.dropboxusercontent.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&amp;raw=1<span class="fa fa-external-link external-icon anchor-icon"></span></a></figcaption></figure>



<figure class="wp-block-image size-large is-resized"><a rel="noopener" target="_blank" href="https://www.dropbox.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&amp;raw=1"><img decoding="async" src="https://www.dropbox.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&amp;raw=1" alt="" style="aspect-ratio:1;width:840px;height:auto"/></a><figcaption class="wp-element-caption"><a rel="noopener" target="_blank" href="https://www.dropbox.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&amp;raw=1">https://www.dropbox.com/scl/fi/vqp3klbp7ii4io0bzt8pq/240119_test.JPG?rlkey=p2redrolq8klhrovdpk3c1wa5&amp;raw=1<span class="fa fa-external-link external-icon anchor-icon"></span></a></figcaption></figure>
]]></content:encoded>
					
		
		<enclosure url="https://dl.dropboxusercontent.com/scl/fi/cw3iijw40y6thbop2310o/240117_-3.mp4?rlkey=g6mrd4yjfo81dyr9qioz49vai" length="0" type="video/mp4" />
<enclosure url="https://imakat.synology.me/wp-content/mmedia/2401221_Dropboxの動画をWordPressへ貼り付ける.mp4" length="476711955" type="video/mp4" />
<enclosure url="https://www.dropbox.com/scl/fi/oewlvtdcqeqp7d9w777t9/2401221_Dropbox-WordPress.mp4?rlkey=7mstp5fm6rgrtrgsvlun0vex5&#038;raw=1" length="0" type="video/mp4" />

		<post-id xmlns="com-wordpress:feed-additions:1">18942</post-id>	</item>
		<item>
		<title>【小団体のIT】【Windows】自治会など小規模団体の世帯名簿をエクセルで作ってみた。</title>
		<link>https://imakat.com/2023/02/24/16861/</link>
		
		<dc:creator><![CDATA[imakat]]></dc:creator>
		<pubDate>Fri, 24 Feb 2023 07:47:52 +0000</pubDate>
				<category><![CDATA[デジタル]]></category>
		<category><![CDATA[ものづくり]]></category>
		<category><![CDATA[自治会]]></category>
		<category><![CDATA[NPO]]></category>
		<category><![CDATA[団体]]></category>
		<category><![CDATA[エクセル]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<category><![CDATA[総会]]></category>
		<guid isPermaLink="false">https://imakat.com/?p=16861</guid>

					<description><![CDATA[＜自治会など小規模団体向け世帯名簿の概要＞ 別ページで表示 以前、小規模団体向けのExcelによる会計アプリを紹介しましたが、今回は、その続編と言うべきか、小規模団体向けのExcelによる世帯名簿のアプリを紹介します。こ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p></p>



<hr class="wp-block-separator has-text-color has-key-color-color has-css-opacity has-key-color-background-color has-background is-style-wide"/>



<p>＜自治会など小規模団体向け世帯名簿の概要＞</p>



<p><span class="fz-12px"><a href="https://imakat.com/page-230225/" target="_blank">別ページで表示</a></span></p>



<img decoding="async" src="https://docs.google.com/drawings/d/e/2PACX-1vQoFWVN1yo3r2Fk6UzgcMf3fBv11JjlqGfOSPSmi355mOD9h1TfIpuGJWGX_9XUe-6tbjhS2oihTyBZ/pub?w=1440&amp;h=1080">



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



<p>以前、小規模団体向けのExcelによる会計アプリを紹介しましたが、今回は、その続編と言うべきか、小規模団体向けのExcelによる世帯名簿のアプリを紹介します。これもですね。これを公開すべきかどうか、悩みました。</p>



<p>と言うのは、なしで通ってきたのに「余計なことするな！」という怒りに触れるのでは、と感じることです。これまで、「大変な労力が掛かるのでとても出来ない」と説明してきたことですから。それを簡単にできるようにすることは、実は迷惑なことではないかと。</p>



<h4 class="wp-block-heading">大人数を収容可能な施設がない。</h4>



<p>ところで、</p>



<p>自治会の総会を行えるような広い施設がない場合、どうしたらいいでしょうか。</p>



<p>世帯人員は多いのに、地域内に、地域センター、学校、スポーツ施設、ホテルやレストラン、といった大人数を収容できるような施設がない。あえて言えば広場があるだけ。</p>



<p>例えば、自治会の公民館はあるのだが、その収容は、ぎゅうぎゅうに詰め込めるのは100人。これに対して家族全員は2000人くらいになる。総会の案内には、「会員の皆さんは、万障お繰り合わせの上、是非出席ください。」といった文言を書き込むのがふつうでしょうが、そんなこと言って、本当にみんな来てしまったら、居場所がありません。困ります。</p>



<p>「収容可能な施設がない問題」です。</p>



<p>全国には、こんな境遇の地域もたくさんあることと思います。</p>



<p>さて、実際に公民館に足を運ぶ人数を制限して、総会を実施する方法を流れ図にしてみました。</p>



<p><strong>＜小さい公民館で総会を行うにはどうする？！＞</strong></p>



<figure class="wp-block-image size-large has-custom-border is-style-filter-monochrome"><a href="https://imakat.com/rd.php?id=ltHOX3Eg.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=ltHOX3Eg.png" alt="" class="has-border-color has-yellow-border-color" style="border-width:1px;border-radius:1px"/></a></figure>



<p>出席希望者が、収容上限100人を超えた場合には、抽選を行うしかないと考えます。ここで大切なのは抽選で落選した人への救済です。委任状の提出、書面決議の参加、オンライン参加（準備が可能なら）の選択を促しつつ議案に対する意見や提案があれば書面で提出してもらう、そうしたフォローが発生します。</p>



<p>結局、出席扱いとなる様々な参加方法を組み合わせて、全体として一つの形にする工夫が必要ということです。余談ですが、上の図を作るにあたり、今話題のAIアプリ<a rel="noopener" target="_blank" href="https://youtu.be/OPRPL9IpmAI">ChatGPT<span class="fa fa-external-link external-icon anchor-icon"></span></a>を使って考えを整理してみました。無料です。是非使ってみてください。今回、実際に行った質問と返答が以下のリンクです。日本語が使えますのでご安心を。</p>



<p><a rel="noopener" target="_blank" href="https://docs.google.com/document/d/e/2PACX-1vTG5qUYbOhLX1NfQLZvccJ6oGqIDJEPp8QlRXXJiA6RmvGnMxvYrZJnY2o4O2lvUYy6vIKDa7qL82-6/pub">ChatGPTでの質問と返答<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>



<p>凄い！「2001年宇宙の旅」のコンピュータHALが実現した感じ！(「2001年宇宙の旅」は1968年4月公開。55年前)</p>



<p>さて、本題に戻ります。</p>



<p>総会を例に話を始めましたが、特に、認可地縁団体である自治会は、世帯主だけでなく家族全員（つまり構成員全員）が総会の投票者になります。入場者の家族数、入場者が委任を受けていればその家族も含めた数が、その入場者が持つ投票数になるわけで、その算出やチェックには、世帯名簿が必須です。</p>



<p>その世帯名簿を作ってみました。</p>



<p>現物をダウンロードして眺めてみてください。小さなEXCELマクロファイル(xlsm)です。ダウンロード後の最初の起動時には、「編集を有効にする」「コンテンツの有効化」をしてください。<br>なお、「マクロの実行がブロックされました。」となる場合は、一度、そのまま保存して閉じる→EXCELマクロファイルを右クリック→プロパティ→「全般」の下方、セキュリティを「許可する」をクリック→適用→EXCELマクロファイルを開く→「コンテンツの有効化」を行ってください。</p>



<figure class="wp-block-flexible-table-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>ダウンロード(Windowsのみ)(無料・許諾不要)</strong></td></tr><tr><td><a href="https://imakat.com/rd.php?id=7K2ZIyuG.xlsm" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=ShLhgSW9.png" alt="" style="width:120px; height:auto;"></a></td></tr></tbody></table></figure>



<p><br></p>



<p>※<a href="https://imakat.com/page-11646-3-2/" target="_blank">作成履歴</a><br>※MacではマクロVBAが動作しません（Parallelsを使ってください）。<br>※リンクファイルは、Office2019で作っています。</p>



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



<h4 class="wp-block-heading" id="１-仕事は-前任者からバトンを引き継ぐところから始まる">＜１＞原本は紙の世帯名簿</h4>



<p>インターネットの入力フォームから、世帯の情報を登録・変更する、将来はそのようになるでしょうが、今はまだ時期尚早です。パソコンやインターネットに慣れない世代に電子データの安全な保存をお願いすることは困難です。会員に直接紙に書いてもらう。回収して、自治会長が保管する。ここまでは、当面は変わらないでしょう。</p>



<div class="wp-block-cocoon-blocks-column-2 column-wrap column-2 column-2-2-1-1 layout-box">
<div class="wp-block-cocoon-blocks-column-left column-left">
<figure class="wp-block-image aligncenter size-large is-resized"><a href="https://imakat.com/rd.php?id=bsk3Cyfp.png" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=bsk3Cyfp.png" alt="" style="width:373px;height:527px"/></a><figcaption class="wp-element-caption">＜世帯名簿の原本は紙＞主たる作成目的は、防災対策です。</figcaption></figure>
</div>



<div class="wp-block-cocoon-blocks-column-right column-right">
<figure class="wp-block-image size-large"><a href="https://imakat.com/rd.php?id=DQNdwdTo.jpg" target="_blank"><img decoding="async" src="https://imakat.com/rd.php?id=DQNdwdTo.jpg" alt=""/></a><figcaption class="wp-element-caption">＜回収した紙の世帯名簿は、耐火、防水仕様の収納ボックスに保管しています。＞</figcaption></figure>
</div>
</div>



<p></p>



<h4 class="wp-block-heading" id="２-一連の過程を-一つの伝票内に収める">＜２＞使い方</h4>



<p>それでは、このアプリの操作方法について、説明します。</p>



<h5 class="wp-block-heading">１）シートとその内容</h5>



<figure class="wp-block-table aligncenter is-style-regular" style="margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;font-style:normal;font-weight:400;line-height:1"><table class="has-watery-blue-background-color has-background has-border-color has-black-border-color" style="border-width:2px"><tbody><tr><td>シート名</td><td class="has-text-align-left" data-align="left">内　容</td></tr><tr><td><a rel="noopener" target="_blank" href="https://imakat.synology.me/wp-content/pmedia/1_スクリーンショット_(76).png">説明<span class="fa fa-external-link external-icon anchor-icon"></span></a></td><td class="has-text-align-left" data-align="left">このアプリの要約と注意点を記載しています。<br><span class="bold-red"><span class="fz-20px">列の追加、項目名の変更は行わないでください。</span></span></td></tr><tr><td><a rel="noopener" target="_blank" href="https://imakat.synology.me/wp-content/pmedia/2_スクリーンショット_(78).png">会員<span class="fa fa-external-link external-icon anchor-icon"></span></a></td><td class="has-text-align-left" data-align="left"><span class="bold-blue">青色の項目</span>のみが入力できます。<span class="bold">黒色の</span><strong>列</strong>は算式で生成される項目ですので触らないでください。<br>項目は、「班」「班内G」「退会理由」「姓」「名」「よみがな」「世帯主Y」「世帯員No」「住所1「住所2」「住所3」「電話」「性別」「生年和暦」「生月」「入会年和暦」「入会月」「退会年和暦」「退会月」「備考1」「備考2」「要支援登録者」「要支援者番号」「独居者」「役職1」「役職2」「役職3」「追記」「郵便番号」「任意抽出Y」です。<br>※<strong>「西暦年」「月」を入れると年齢を計算して表示します。<br>「市区名入力」及び「字名入力」を入れると一斉に全部置き換えます。</strong></td></tr><tr><td><a rel="noopener" target="_blank" href="https://imakat.synology.me/wp-content/pmedia/3_スクリーンショット_(88).png">総会書類作成<span class="fa fa-external-link external-icon anchor-icon"></span></a></td><td class="has-text-align-left" data-align="left">シート名は変更可です。同じ住所の世帯員名を下方に印刷します。<br>（１）「会員」シートから退会者を除いたデータを抽出します。数分かかります。（２）世帯別のPDFを作成します。結合された一つのPDFとして出力します。印刷は、必要な部分を範囲指定してください。この例は、総会書類作成ですが、委任状作成に変えるなどして使ってください。</td></tr><tr><td><a rel="noopener" target="_blank" href="https://imakat.synology.me/wp-content/pmedia/4_スクリーンショット_(87).png">総会文面<span class="fa fa-external-link external-icon anchor-icon"></span></a></td><td class="has-text-align-left" data-align="left">シート名は変更可です。「総会書類作成」シートにカメラでリンクしています。<br>単純に投影しているだけです。直接、「総会書類作成」シートに書き込んでもOKですが、サイズの伸び縮みをさせるのに、カメラを使った方がラクです。</td></tr><tr><td><a rel="noopener" target="_blank" href="https://imakat.synology.me/wp-content/pmedia/5_スクリーンショット_(90).png">委員会書類<span class="fa fa-external-link external-icon anchor-icon"></span></a></td><td class="has-text-align-left" data-align="left">シート名は変更可です。文章はこのシートに直接書きます。委員会への出席役職は、「役職」シートの「委員会」列に「出」が入っている役職が対象となります。「会員」シートの「役職1」「役職2」「役職3」のいずれかに対象となる役職を登録した人が抽出されます。PDFは、一人一人作られます。例えば、Excelを、別の委員会のファイル名に変えて保存して利用することが出来ます。但し別にファイルを作った場合は、会員データの変更が反映されませんので、そこは注意が必要です。</td></tr><tr><td><a rel="noopener" target="_blank" href="https://imakat.synology.me/wp-content/pmedia/6_スクリーンショット_(91).png">任意作成<span class="fa fa-external-link external-icon anchor-icon"></span></a></td><td class="has-text-align-left" data-align="left">シート名は変更可です。文章はこのシートに直接書きます。役職などに関係なく、任意に、対象者にYを入れて抽出します。</td></tr><tr><td><a rel="noopener" target="_blank" href="https://imakat.synology.me/wp-content/pmedia/7_スクリーンショット_(70).png">班名<span class="fa fa-external-link external-icon anchor-icon"></span></a></td><td class="has-text-align-left" data-align="left">班の並び順は、文字の順番ではなく、ここに書き込んだ順になります。例えば、文字の順番ですと、[1]のあと、[10]が来ますが、[2-1]が来るようになっています。</td></tr><tr><td><a rel="noopener" target="_blank" href="https://imakat.synology.me/wp-content/pmedia/8_スクリーンショット_(71).png">年号<span class="fa fa-external-link external-icon anchor-icon"></span></a></td><td class="has-text-align-left" data-align="left">年号の並び順は、文字の順番ではなく、ここに書き込んだ順になります。仮にこの表で、「令和5」の下に「令和6」を入れたとすると、リストの表示順は、上から、「令和5」「令和6」「令和4」の順番で表示されます。</td></tr><tr><td><a rel="noopener" target="_blank" href="https://imakat.synology.me/wp-content/pmedia/9_スクリーンショット_(72).png">役職<span class="fa fa-external-link external-icon anchor-icon"></span></a></td><td class="has-text-align-left" data-align="left">役職の並び順は、文字の順番ではなく、ここに書き込んだ順になります。</td></tr></tbody></table></figure>



<h5 class="wp-block-heading">２）「会員」シートのボタンの説明</h5>



<figure class="wp-block-table"><table class="has-watery-blue-background-color has-background has-border-color has-black-border-color" style="border-width:2px"><tbody><tr><td>ボタン名</td><td>説明</td></tr><tr><td>保存（水色）</td><td>Excel上段の「ファイル」→「上書き保存」と同じ意味です。</td></tr><tr><td>全表示（緑）</td><td>「会員」シートにおいて、非表示を解除して、全データを表示します。</td></tr><tr><td>退会者を除く（緑）</td><td>「退会理由」がスペースのものを抽出します。</td></tr><tr><td>並び替え（緑）</td><td>班名SORT→住所1→ 住所2→ 住職3→ 世帯員No、の順で並び替えます。「全表示」「退会者を除く」を選択した時も、並び替えが行われます。</td></tr><tr><td>世帯主のみ表示（緑）</td><td>「世帯主Y」にYが入っているものを抽出します。</td></tr><tr><td>新規加入者登録→最終行表示（黒）</td><td>最終行の付近を表示します。<br></td></tr><tr><td>新規加入者の行追加（最終行の下）（黒）</td><td>最終行の下に新しい行を追加します。<br><strong>※世帯全員、揃って登録する時にはこの方法がいいですが、家族一人だけ追加する場合は、その家族のデータの下に行追加を行うことが出来ます。</strong></td></tr><tr><td><a href="https://imakat.com/rd.php?id=9PXklcV5.png" target="_blank">退会登録（黒）</a></td><td>赤色の「退会理由」「退会年和暦」「退会月」及び「備考1」を記入ください。備考1は、訃報の場合の、死去日、喪主、仏式神式、を記入ください。初盆の情報になります。</td></tr><tr><td>管理表順番登録（黒）</td><td>これは任意です。何らかの理由で、上の、「並び替え」とは異なる順番にしたい場合などのため。</td></tr><tr><td>役職登録（黒）</td><td>「役職1」「役職2」「役職3」の3つ用意してあります。</td></tr><tr><td>全クリア（<a rel="noopener" target="_blank" href="https://imakat.synology.me/wp-content/pmedia/11_スクリーンショット_(73).png">管理表順、役職1~3<span class="fa fa-external-link external-icon anchor-icon"></span></a>、<a rel="noopener" target="_blank" href="https://imakat.synology.me/wp-content/pmedia/12_スクリーンショット_(74).png">任意抽出列<span class="fa fa-external-link external-icon anchor-icon"></span></a>）（赤）</td><td>赤いボタンを押すと全クリアされます。間違った時は、そのまま保存しないで終了して、再起動するしかないです。</td></tr></tbody></table></figure>



<p></p>



<h4 class="wp-block-heading" id="１１-最後に-ご参考までに-使ったvbaマクロの一部-それから-固定資産や修繕他準備金などを特別会計として作る場合のサンプルをリンクします">＜３＞まとめ</h4>



<p>「会員」シートはフィルターを使う、非表示を使うことにより、様々にデータが加工できます。これらを範囲指定して、簡単にコピー&amp;ペーストできます。是非、色々工夫してご活用ください。</p>



<p></p>



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