<?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>web技術 | エス・プロ</title>
	<atom:link href="https://s-pro4.com/cat/web/feed" rel="self" type="application/rss+xml" />
	<link>https://s-pro4.com</link>
	<description>パソコンとシステムの活用を考えます</description>
	<lastBuildDate>Mon, 19 Oct 2026 20:24:57 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://s-pro4.com/wp-content/uploads/2021/10/bb4c6ee1587184e454cc308581390f8d-150x150.png</url>
	<title>web技術 | エス・プロ</title>
	<link>https://s-pro4.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Githubでソースコードを管理してみる</title>
		<link>https://s-pro4.com/page-1451.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Fri, 16 Oct 2026 23:32:02 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[web技術]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=1451</guid>

					<description><![CDATA[オープンソースのダウンロードに以前Githubの記事を書いた。githubからダウンロード 今回は自身のソースコード管理に使用してみる。 最初にGithubでユーザ登録を行う。必要なのはメールアドレス、パスワード、ユーザ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">オープンソースのダウンロードに以前Githubの記事を書いた。<br><a href="https://s-pro4.com/page-583.html" data-type="post" data-id="583">githubからダウンロード</a></p>



<p class="wp-block-paragraph">今回は自身のソースコード管理に使用してみる。</p>



<p class="wp-block-paragraph">最初にGithubでユーザ登録を行う。<br>必要なのはメールアドレス、パスワード、ユーザ名。<br>ログイン後は念のためパスキーを追加し、2要素認証を追加する。</p>



<figure class="wp-block-image size-large is-style-vk-image-border"><img fetchpriority="high" decoding="async" width="1024" height="646" src="https://s-pro4.com/wp-content/uploads/2026/10/github1-1024x646.jpg" alt="" class="wp-image-1452" srcset="https://s-pro4.com/wp-content/uploads/2026/10/github1-1024x646.jpg 1024w, https://s-pro4.com/wp-content/uploads/2026/10/github1-300x189.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/10/github1-768x485.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/10/github1.jpg 1279w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">New repositoryからリポジトリを作成する。</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img decoding="async" width="429" height="313" src="https://s-pro4.com/wp-content/uploads/2026/10/github2.jpg" alt="" class="wp-image-1453" srcset="https://s-pro4.com/wp-content/uploads/2026/10/github2.jpg 429w, https://s-pro4.com/wp-content/uploads/2026/10/github2-300x219.jpg 300w" sizes="(max-width: 429px) 100vw, 429px" /></figure>



<figure class="wp-block-image size-full is-style-vk-image-border"><img decoding="async" width="753" height="765" src="https://s-pro4.com/wp-content/uploads/2026/10/github4.jpg" alt="" class="wp-image-1455" srcset="https://s-pro4.com/wp-content/uploads/2026/10/github4.jpg 753w, https://s-pro4.com/wp-content/uploads/2026/10/github4-295x300.jpg 295w" sizes="(max-width: 753px) 100vw, 753px" /></figure>



<p class="wp-block-paragraph">visibilityは今回はPrivateにする。自身のコード管理に使うのみ。公開はしない。<br>.gitignoreは後でも作成できるので、ここでは何もしない。</p>



<p class="wp-block-paragraph">次に情報漏洩等の対策。安全に。</p>



<p class="wp-block-paragraph">Copilotに学習させない。</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="1005" height="975" src="https://s-pro4.com/wp-content/uploads/2026/10/github5.jpg" alt="" class="wp-image-1456" srcset="https://s-pro4.com/wp-content/uploads/2026/10/github5.jpg 1005w, https://s-pro4.com/wp-content/uploads/2026/10/github5-300x291.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/10/github5-768x745.jpg 768w" sizes="(max-width: 1005px) 100vw, 1005px" /></figure>



<p class="wp-block-paragraph">Copilot＞Features＞Privacyで<br>「Allow GitHub to use my data for AI model training」をDisabledへ変更する。<br>Copilot＞Features＞Visibilityで<br>「Show Copilot」をDisabledへ変更する。</p>



<figure class="wp-block-image size-large is-style-vk-image-border"><img loading="lazy" decoding="async" width="1024" height="659" src="https://s-pro4.com/wp-content/uploads/2026/10/github6-1024x659.jpg" alt="" class="wp-image-1457" srcset="https://s-pro4.com/wp-content/uploads/2026/10/github6-1024x659.jpg 1024w, https://s-pro4.com/wp-content/uploads/2026/10/github6-300x193.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/10/github6-768x494.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/10/github6.jpg 1305w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Copilot＞Cloud agentで<br>「Responsitory access」をNo responsitoriesへ変更する。</p>



<p class="wp-block-paragraph">まずはhttpsで接続するため、パスワードとなるトークン(Personal access token)を追加。</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="954" height="377" src="https://s-pro4.com/wp-content/uploads/2026/10/github7.jpg" alt="" class="wp-image-1458" srcset="https://s-pro4.com/wp-content/uploads/2026/10/github7.jpg 954w, https://s-pro4.com/wp-content/uploads/2026/10/github7-300x119.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/10/github7-768x303.jpg 768w" sizes="(max-width: 954px) 100vw, 954px" /></figure>



<p class="wp-block-paragraph">Developer settings＞Personal access tokens＞Fine-grained tokensで<br>「Generate new token」をクリックする。</p>



<figure class="wp-block-image size-large is-style-vk-image-border"><img loading="lazy" decoding="async" width="772" height="1024" src="https://s-pro4.com/wp-content/uploads/2026/10/github8-1-772x1024.jpg" alt="" class="wp-image-1460" srcset="https://s-pro4.com/wp-content/uploads/2026/10/github8-1-772x1024.jpg 772w, https://s-pro4.com/wp-content/uploads/2026/10/github8-1-226x300.jpg 226w, https://s-pro4.com/wp-content/uploads/2026/10/github8-1-768x1019.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/10/github8-1.jpg 1117w" sizes="(max-width: 772px) 100vw, 772px" /></figure>



<p class="wp-block-paragraph">ここでもできるだけ安全な方向へ。<br>・Expirationでトークンの有効期限を設定する。<br>・Repository accessを「Only select repositories」にして使えるリポジトリを限定する。<br>・PermissionsではContentsを追加し「Read and write」に設定</p>



<p class="wp-block-paragraph">作成されたトークンをコピーする。後で使用する。</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="921" height="188" src="https://s-pro4.com/wp-content/uploads/2026/10/github9.jpg" alt="" class="wp-image-1461" srcset="https://s-pro4.com/wp-content/uploads/2026/10/github9.jpg 921w, https://s-pro4.com/wp-content/uploads/2026/10/github9-300x61.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/10/github9-768x157.jpg 768w" sizes="(max-width: 921px) 100vw, 921px" /></figure>



<p class="wp-block-paragraph">Create new fileから.gitignoreを作成する。<br>内容を編集する。<br>自身のコードではないダウンロードライブラリのようなものは除外する。<br>またパスワードなどの秘匿事項を記載したファイルも除外する。</p>



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



<p class="wp-block-paragraph">あとは、ローカル（Mac）からGithubを使う準備をする。</p>



<p class="wp-block-paragraph">gitコマンドの確認<br>git -v<br>git version 2.50.1 (Apple Git-155)</p>



<p class="wp-block-paragraph">which git<br>/usr/bin/git</p>



<p class="wp-block-paragraph">最新バージョンがあるかと Homebrewでインストール<br>brew install git</p>



<p class="wp-block-paragraph">which git<br>/opt/homebrew/bin/git</p>



<p class="wp-block-paragraph">git -v<br>git version 2.50.1 (Apple Git-155)</p>



<p class="wp-block-paragraph">同じだった・・・。</p>



<p class="wp-block-paragraph">ローカル(Mac)で初期設定<br>git config --global user.name ユーザ名<br>git config --global user.email メールアドレス</p>



<p class="wp-block-paragraph">~/.gitconfig<br>が生成される。</p>



<p class="wp-block-paragraph">一応設定内容を確認する。</p>



<p class="wp-block-paragraph">ユーザ名を表示させる<br>git config --global user.name</p>



<p class="wp-block-paragraph">メールアドレスを表示させる<br>git config --global user.email</p>



<p class="wp-block-paragraph">リポジトリをクローンする。<br>なおcloneを実行するとその場所にリポジトリ名と同じディレクトリが作成される。これを考慮して管理したいソースの位置を決める。<br>git clone https://github.com/ユーザ名/リポジトリ名.git</p>



<p class="wp-block-paragraph">リポジトリをPrivateにしたため、ここでユーザ名とパスワード（トークン）を聞かれ入力が必要。</p>



<p class="wp-block-paragraph">cloneに成功すると必要ファイルが作成される。READMEはいらなかったかも。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="413" height="80" src="https://s-pro4.com/wp-content/uploads/2026/10/github10.jpg" alt="" class="wp-image-1462" srcset="https://s-pro4.com/wp-content/uploads/2026/10/github10.jpg 413w, https://s-pro4.com/wp-content/uploads/2026/10/github10-300x58.jpg 300w" sizes="(max-width: 413px) 100vw, 413px" /></figure>



<p class="wp-block-paragraph">あとは、この配下に自分が管理したいソース、例えばpublic_html/等の既存データをコピーする。</p>



<p class="wp-block-paragraph">git statusで変更ファイルの確認ができる。</p>



<p class="wp-block-paragraph">gitに追加される予定ファイルを確認する。<br>git add --dry-run .</p>



<p class="wp-block-paragraph">秘密ファイルなどが含まれていたら.gitignoreを編集して除外する。解決したら実際にgitにファイルを追加する。<br>git add .</p>



<p class="wp-block-paragraph">変更内容を確認する。<br>git diff --cached<br>※lessみたいな動作なので "q" で終する。</p>



<p class="wp-block-paragraph">ローカルでコミットする。<br>git commit -m "コメント"<br>最初なので、<br>git commit -m "初版"<br>としておく。</p>



<p class="wp-block-paragraph">次にGithubへアップロード（push）する。<br>git push origin main</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RustDeskの自前サーバをVPSのWebARENAで構築する</title>
		<link>https://s-pro4.com/page-1434.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Tue, 22 Sep 2026 20:19:28 +0000</pubDate>
				<category><![CDATA[web技術]]></category>
		<category><![CDATA[未分類]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=1434</guid>

					<description><![CDATA[リモートデスクトップサービスRustDeskについて以前の記事に書いた。リモートデスクトップアプリRustDeskを使ってみる RustDeskの公開サーバを使用していて決定的に困ることは現在は起きていないが、たまにログ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">リモートデスクトップサービスRustDeskについて以前の記事に書いた。<br><a href="https://s-pro4.com/page-1320.html" data-type="post" data-id="1320">リモートデスクトップアプリRustDeskを使ってみる</a></p>



<p class="wp-block-paragraph">RustDeskの公開サーバを使用していて決定的に困ることは現在は起きていないが、たまにログインを求められることはある。<br>自前サーバの利用を試してみたく、やってみることにした。</p>



<p class="wp-block-paragraph">また、WebARENAの初期構築についても書いた。<br><a href="https://s-pro4.com/page-1421.html" data-type="post" data-id="1421">VPS利用のためWebARENA Indigoを使用してみる</a><br><a href="https://s-pro4.com/page-1430.html" data-type="post" data-id="1430">VPS利用のためWebARENA Indigoを使用してみる　その2</a></p>



<p class="wp-block-paragraph">自前サーバ「セルフホスト」に関するドキュメントは下記<br><a href="https://rustdesk.com/docs/ja/self-host/" target="_blank" rel="noopener">https://rustdesk.com/docs/ja/self-host/</a></p>



<p class="wp-block-paragraph">ちょっと難しいのと、前回記事に書いた通り、<br>WebARENA＋ubuntu用として、ChatGPTに聞くと下記の手順を示された。<br>Step 1　WebARENA側のVPSを確認<br>Step 2　Ubuntuの初期確認・アップデート<br>Step 3　Dockerをインストール<br>Step 4　RustDesk Serverの配置・設定<br>Step 5　RustDesk Serverの起動・動作確認<br>Step 6　RustDeskクライアントを自前サーバーへ接続<br>Step 7　運用設定・最終確認</p>



<p class="wp-block-paragraph">今回はいよいよ本丸というかStep 3から進める。</p>



<h2 class="wp-block-heading">Step 3　Dockerをインストール</h2>



<p class="wp-block-paragraph">まずはDockerが入っているかどうか確認<br>$ docker --version<br>Command 'docker' not found, but can be installed with:<br>sudo snap install docker # version 29.8.0, or<br>sudo snap install docker # version 29.6.1<br>sudo apt install docker.io # version 29.1.3-0ubuntu3~24.04.2<br>sudo apt install podman-docker # version 4.9.3+ds1-1ubuntu0.2<br>See 'snap info ' for additional versions.</p>



<p class="wp-block-paragraph">入っていない。<br>親切にインストール手順まで案内してくれている。<br>しかし、今回はRustDesk向けなので、RustDesk公式ドキュメントが推奨する下記の方法に準じてインストールすることにした。</p>



<p class="wp-block-paragraph">(1)bash &lt;(wget -qO- https://get.docker.com)<br>(2)wget rustdesk.com/oss.yml -O compose.yml<br>(3)sudo docker compose up -d</p>



<p class="wp-block-paragraph">ここでもう少し丁寧にする。<br>・(1)に関してはインストール用スクリプトの中身を見てから実行するため、一旦ファイルに保存する手順とする。<br>　まぁ見てもあまりわからなかったけど。<br>・2回目のwget前にRustDeskディレクトリを作成し移動。<br>・2回目のwgetではhttps:// を明確に補うことにした。<br>・最後にコンテナ起動の前にdocder compose configで構文を確認する手順を入れた。<br>(1)wget https://get.docker.com -O get-docker.sh<br>(2)sudo sh get-docker.sh<br>(3)mkdir RustDesk<br>(4)cd RustDesk<br>(5)wget https://rustdesk.com/oss.yml -O compose.yml<br>(6)compose.ymlの内容を編集<br>(7)sudo docker compose config<br>(8)sudo docker compose up -d</p>



<p class="wp-block-paragraph">Step 3　(1)(2)<br>Step 4　(3)(4)(5)(6)(7)<br>Step 5　(8)<br>とする。</p>



<p class="wp-block-paragraph">(1)インストーラーをダウンロードしローカルに保存<br>$ wget https://get.docker.com -O get-docker.sh<br>--2026-09-19 21:40:13-- https://get.docker.com/<br>Resolving get.docker.com (get.docker.com)... 13.249.165.103, 13.249.165.78, 13.249.165.12, ...<br>Connecting to get.docker.com (get.docker.com)|13.249.165.103|:443... connected.<br>HTTP request sent, awaiting response... 200 OK<br>Length: 23731 (23K) [text/plain]<br>Saving to: ‘get-docker.sh’</p>



<p class="wp-block-paragraph">get-docker.sh 100%[===================================================&gt;] 23.17K --.-KB/s in 0s<br>2026-09-19 21:40:14 (86.1 MB/s) - ‘get-docker.sh’ saved [23731/23731]</p>



<p class="wp-block-paragraph">Dockerのインストーラーとなるスクリプトが get-docker.shとして保存された。</p>



<p class="wp-block-paragraph">(2)インストーラーを実行<br>$ sudo sh get-docker.sh<br>を実行しインストール。<br><br>インストールされたかどうかを確認<br>$ docker --version<br>Docker version 29.8.1, build 4a63305<br><br>$ sudo docker compose version<br>Docker Compose version v5.5.1</p>



<h2 class="wp-block-heading">Step 4　RustDesk Serverの配置・設定</h2>



<p class="wp-block-paragraph">(3)作業ディレクトリ作成<br>mkdir RustDesk</p>



<p class="wp-block-paragraph">(4)作業ディレクトリへ移動<br>cd RustDesk</p>



<p class="wp-block-paragraph">(5)設定ファイルをダウンロードしローカルに保存<br>$ wget https://rustdesk.com/oss.yml -O compose.yml<br>--2026-09-20 07:38:24-- https://rustdesk.com/oss.yml<br>Resolving rustdesk.com (rustdesk.com)... 172.66.167.80, 104.20.19.94, 2606:4700:10::ac42:a750, ...<br>Connecting to rustdesk.com (rustdesk.com)|172.66.167.80|:443... connected.<br>HTTP request sent, awaiting response... 200 OK<br>Length: 402 [application/octet-stream]<br>Saving to: ‘compose.yml’</p>



<p class="wp-block-paragraph">compose.yml 100%[===================================================&gt;] 402 --.-KB/s in 0s<br>2026-09-20 07:38:24 (108 MB/s) - ‘compose.yml’ saved [402/402]</p>



<p class="wp-block-paragraph">compose.ymlが保存された。</p>



<p class="wp-block-paragraph">(6)compose.ymlの内容を編集</p>



<p class="wp-block-paragraph">hbbsに常にリレーにするALWAYS_USE_RELAY=Yを入れる。後からわかったことだが、試験のときログに残らず本当に自前サーバを通っているのか？ となった。ChatGPTが言うには、P2Pが使えるときはリレーにならずログに残らないのではないかとのこと。公開サーバではなく自前サーバでリレーされていることを確認するために、一旦入れて、最後には外す。<br>もうひとつ、hbbrに公開鍵を登録する。<br>公開鍵は data/id_ed25519.pub に保存されたファイルの内容（文字列）</p>



<p class="wp-block-paragraph">編集前</p>



<pre class="wp-block-code"><code>services:
  hbbs:
    container_name: hbbs
    image: rustdesk/rustdesk-server:latest
    command: hbbs
    volumes:
      - ./data:/root
    network_mode: "host"
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    volumes:
      - ./data:/root
    network_mode: "host"
    restart: unless-stopped</code></pre>



<p class="wp-block-paragraph">編集後</p>



<pre class="wp-block-code"><code>services:
  hbbs:
    container_name: hbbs
    image: rustdesk/rustdesk-server:latest
<span data-color="#fcb900" style="--vk-highlighter-color: rgba(252, 185, 0, 0.7);" class="vk_highlighter">    environment:
      - ALWAYS_USE_RELAY=Y</span>
    command: hbbs
    volumes:
      - ./data:/root
    network_mode: "host"
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:latest
<span data-color="#fcb900" style="--vk-highlighter-color: rgba(252, 185, 0, 0.7);" class="vk_highlighter">    environment:
      - KEY=&lt;公開鍵></span>
    command: hbbr
    volumes:
      - ./data:/root
    network_mode: "host"
    restart: unless-stopped</code></pre>



<p class="wp-block-paragraph">(7)設定ファイルのチェック<br>sudo docker compose config</p>



<pre class="wp-block-code"><code>name: rustdesk
services:
  hbbr:
    command:
      - hbbr
    container_name: hbbr
    environment:
      KEY: &lt;公開鍵>
    image: rustdesk/rustdesk-server:latest
    network_mode: host
    restart: unless-stopped
    volumes:
      - type: bind
        source: /home/ubuntu/RustDesk/data
        target: /root
        bind: {}
  hbbs:
    command:
      - hbbs
    container_name: hbbs
    depends_on:
      hbbr:
        condition: service_started
        required: true
    environment:
      ALWAYS_USE_RELAY: 'Y'
    image: rustdesk/rustdesk-server:latest
    network_mode: host
    restart: unless-stopped
    volumes:
      - type: bind
        source: /home/ubuntu/RustDesk/data
        target: /root
        bind: {}</code></pre>



<p class="wp-block-paragraph">設定が正しいこと、エラーがないことを確認する。</p>



<h2 class="wp-block-heading">Step 5　RustDesk Serverの起動・動作確認</h2>



<p class="wp-block-paragraph">(8)コンテナの起動<br>(cd RustDesk)<br>sudo docker compose up -d</p>



<p class="wp-block-paragraph">[+] up 6/6<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Image rustdesk/rustdesk-server:latest Pulled 3.6s<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Container hbbr Started 0.5s<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Container hbbs Started 0.5s</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="869" height="80" src="https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup2.jpg" alt="" class="wp-image-1435" srcset="https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup2.jpg 869w, https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup2-300x28.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup2-768x71.jpg 768w" sizes="(max-width: 869px) 100vw, 869px" /></figure>



<p class="wp-block-paragraph">正常に起動する。</p>



<p class="wp-block-paragraph">(9)コンテナが起動されていることの確認<br>$ sudo docker compose ps<br>NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS<br>hbbr rustdesk/rustdesk-server:latest "hbbr" hbbr About a minute ago Up About a minute<br>hbbs rustdesk/rustdesk-server:latest "hbbs" hbbs About a minute ago Up About a minute</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="785" height="62" src="https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup3.jpg" alt="" class="wp-image-1436" srcset="https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup3.jpg 785w, https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup3-300x24.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup3-768x61.jpg 768w" sizes="(max-width: 785px) 100vw, 785px" /></figure>



<p class="wp-block-paragraph">起動している</p>



<p class="wp-block-paragraph">(10)ログを確認<br>$ sudo docker compose logs --tail=50<br>特にエラー等はなし。</p>



<p class="wp-block-paragraph">(11)必要ポートの状態を確認<br>$ sudo ss -lntup | grep -E ':(21115|21116|21117|21118|21119)\b'<br>udp UNCONN 0 0 *:21116 <em>:</em> users:(("hbbs",pid=5392,fd=17))<br>tcp LISTEN 0 128 *:21119 <em>:</em> users:(("hbbr",pid=5345,fd=10))<br>tcp LISTEN 0 128 *:21118 <em>:</em> users:(("hbbs",pid=5392,fd=20))<br>tcp LISTEN 0 128 *:21117 <em>:</em> users:(("hbbr",pid=5345,fd=9))<br>tcp LISTEN 0 128 *:21116 <em>:</em> users:(("hbbs",pid=5392,fd=18))<br>tcp LISTEN 0 128 *:21115 <em>:</em> users:(("hbbs",pid=5392,fd=19))</p>



<p class="wp-block-paragraph">TCP　21115-21119はLISTEN、UDP 21116は待ち受けになっていて正常。</p>



<p class="wp-block-paragraph">一方WebARENAではファイアウォールを入れている。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1008" height="225" src="https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup5.jpg" alt="" class="wp-image-1437" srcset="https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup5.jpg 1008w, https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup5-300x67.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup5-768x171.jpg 768w" sizes="(max-width: 1008px) 100vw, 1008px" /></figure>



<p class="wp-block-paragraph">TCP 21115-21117とUDP 21116は通す。TCP 21118-21119は通さない。</p>



<p class="wp-block-paragraph">(12)外部からポートへのアクセスを確認<br>★TCP側確認<br>自分の端末(Mac)のターミナルから<br>$ nc -vz &lt;VPSのIPアドレス> 21115<br>Connection to &lt;VPSのIPアドレス> 21115 port [tcp/] succeeded!<br>$ nc -vz &lt;VPSのIPアドレス> 21116<br>Connection to &lt;VPSのIPアドレス> 21116 port [tcp/] succeeded!<br>$ nc -vz &lt;VPSのIPアドレス> 21117<br>Connection to &lt;VPSのIPアドレス> 21117 port [tcp/*] succeeded!</p>



<p class="wp-block-paragraph">すべて疎通成功。</p>



<p class="wp-block-paragraph">★UDP側確認<br>VPSでポートを監視状態にする<br>sudo tcpdump -ni any udp port 21116</p>



<p class="wp-block-paragraph">ログが流れているが、止めずにそのまま。</p>



<p class="wp-block-paragraph">自分の端末(Mac)からVPSのポートへecho<br>echo test | nc -u -w1 &lt;VPSのIPアドレス&gt; 21116</p>



<p class="wp-block-paragraph">VPSに下記のような行がでればOK。<br>ens10 In IP &lt;端末のIPアドレス>.&lt;端末のポート> > &lt;VPSのIPアドレス>.21116: UDP, length 5</p>



<p class="wp-block-paragraph">ここまででRustDeskサーバの起動と必要ポートのアクセスが確認できた。</p>



<h2 class="wp-block-heading">Step 6　RustDeskクライアントを自前サーバーへ接続</h2>



<p class="wp-block-paragraph">遠隔操作をする側、遠隔操作をされる側の両方（どちらもRustDeskクライアントという）で、自前サーバへ繋ぐ設定をする。<br>RustDeskを起動し、[設定]＞[ネットワーク]＞[認証/中継サーバー]<br>認証サーバ：サーバIPアドレス<br>中継サーバ：サーバIPアドレス<br>APIキー：空欄<br>Key：公開鍵</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="846" height="664" src="https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup4.jpg" alt="" class="wp-image-1439" srcset="https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup4.jpg 846w, https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup4-300x235.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/09/RustDesk_server_setup4-768x603.jpg 768w" sizes="(max-width: 846px) 100vw, 846px" /></figure>



<p class="wp-block-paragraph">サーバでは下記のコマンドでポート21116を監視状態で待機させる。</p>



<p class="wp-block-paragraph">sudo tcpdump -ni any host &lt;サーバIPアドレス> and port 21116</p>



<p class="wp-block-paragraph">すると、下記のような行が出て待機させる。</p>



<p class="wp-block-paragraph">tcpdump: data link type LINUX_SLL2<br>tcpdump: verbose output suppressed, use -v[v]... for full protocol decode<br>listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes</p>



<p class="wp-block-paragraph">ここで、クライアントのRustDeskを再起動すると、ダンプの行が増えていく。<br>----------<br>23:59:45.516564 ens10 In IP &lt;クライアントIPアドレス>.36459 > &lt;サーバIPアドレス>.21116: UDP, length 15 23:59:45.516709 ens10 Out IP &lt;サーバIPアドレス>.21116 > &lt;クライアントIPアドレス>.36459: UDP, length 2 23:59:52.660607 ens10 In IP &lt;クライアントIPアドレス>.23996 > &lt;サーバIPアドレス>.21116: Flags [F.], seq 1, ack 1, win 2057, options [nop,nop,TS val 2888007100 ecr 3963494463], length 0 23:59:52.660828 ens10 Out IP &lt;サーバIPアドレス>.21116 > &lt;クライアントIPアドレス>.23996: Flags [F.], seq 1, ack 2, win 510, options [nop,nop,TS val 3963512531 ecr 2888007100], length 0 23:59:52.685546 ens10 In IP &lt;クライアントIPアドレス>.23996 > &lt;サーバIPアドレス>.21116: Flags [.], ack 2, win 2057, options [nop,nop,TS val 2888007128 ecr 3963512531], length 0 23:59:52.702757 ens10 In IP &lt;クライアントIPアドレス>.23861 > &lt;サーバIPアドレス>.21116: Flags [S], seq 4765219, win 65535, options [mss 1412,nop,wscale 6,nop,nop,TS val 2313083021 ecr 0,sackOK,eol], length 0 23:59:52.702827 ens10 Out IP &lt;サーバIPアドレス>.21116 > &lt;クライアントIPアドレス>.23861: Flags [S.], seq 1059828799, ack 4765220, win 65160, options [mss 1460,sackOK,TS val 3963512573 ecr 2313083021,nop,wscale 7], length 0 23:59:52.730407 ens10 In IP &lt;クライアントIPアドレス>.23861 > &lt;サーバIPアドレス>.21116: Flags [.], ack 1, win 2057, options [nop,nop,TS val 2313083048 ecr 3963512573], length 0<br>----------</p>



<p class="wp-block-paragraph">RustDeskクライアントからhbbs の21116へ通信していることが確認できた。<br>操作する側のクライアントと操作される側のクライアントそれぞれでこの確認を行う。</p>



<p class="wp-block-paragraph">この後は実際にクライアント同士を接続して、遠隔操作できる状態を作る。<br>実際に問題なくつながった。<br>では、「本当に自前サーバを経由しているか」をサーバ上でどう確認するかである。</p>



<p class="wp-block-paragraph">ChatGPTからは、<br>cd ~/RustDesk<br>sudo docker compose logs --tail=50 hbbs hbbr<br>これで、ログに現れるはずだと最初言われた。しかし、何も残らなかったのだ。<br>そこで、P2Pでいけるときは hbbr経由(リレー)しないのではないか？ との推論のもと、<br>compose.ymlに<br>environment:<br>  - ALWAYS_USE_RELAY=Y<br>を「テスト用に」入れた次第だ。</p>



<p class="wp-block-paragraph">ALWAYS_USE_RELAY=Y<br>のときは必ずリレーされ、<br>sudo docker compose logs --tail=50 hbbs hbbr<br>のログに下記のような接続がのこる。</p>



<p class="wp-block-paragraph">----------<br>hbbr | [2026-09-21 05:48:50.573495 +00:00] INFO [src/relay_server.rs:453] New relay request &lt;リクエストID> from [::ffff:&lt;操作する側IPアドレス>]:63750<br>hbbr | [2026-09-21 05:48:50.681926 +00:00] INFO [src/relay_server.rs:437] Relayrequest &lt;リクエストID> from [::ffff:&lt;操作される側IPアドレス>]:14219 got paired<br>hbbr | [2026-09-21 05:48:50.681994 +00:00] INFO [src/relay_server.rs:443] Both are raw<br>----------</p>



<p class="wp-block-paragraph">これで自前サーバを使っていることが確認できた。</p>



<p class="wp-block-paragraph">最終的には、<br>environment:<br>  - ALWAYS_USE_RELAY=Y<br>を削除し、<br>Docker Composeを再起動<br>sudo docker compose up -d</p>



<h2 class="wp-block-heading">Step 7　運用設定・最終確認</h2>



<p class="wp-block-paragraph">サーバ再起動後にも、Dockerが起動されるかどうかの確認。<br>コマンドは下記。</p>



<p class="wp-block-paragraph">sudo systemctl is-enabled docker</p>



<p class="wp-block-paragraph">enabled となれば問題ない。<br>しかし、実際にVPSを再起動してRustDesk再接続まで確認する。<br><br><br></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WordPress本文の&#039;や--の自動変換を無効にする</title>
		<link>https://s-pro4.com/page-1305.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Sat, 18 Apr 2026 12:32:44 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=1305</guid>

					<description><![CDATA[先日SSDのデータ消去について書いた。Linuxを使ってM.2 SSDをSecure Erase する このとき、出力されたWebページを参照しながら、コマンドをコピーペーストしながら、自分でもう一度実行してみるとどうも [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">先日SSDのデータ消去について書いた。<br><a href="https://s-pro4.com/page-1275.html" data-type="post" data-id="1275">Linuxを使ってM.2 SSDをSecure Erase する</a></p>



<p class="wp-block-paragraph">このとき、出力されたWebページを参照しながら、コマンドをコピーペーストしながら、自分でもう一度実行してみるとどうも動かない場所があった。</p>



<p class="wp-block-paragraph">sudo bash -c 'hexdump -C -s $(($(blockdev --getsz /dev/sda)*512 - 4096)) /dev/sda'</p>



<p class="wp-block-paragraph">とか、</p>



<p class="wp-block-paragraph">sudo hdparm --user-master u --security-set-pass p /dev/sda</p>



<p class="wp-block-paragraph">とか。</p>



<p class="wp-block-paragraph">なんと、' （シングルクオート）は全角‘に変換され、連続ハイフン -- は全角 – （エンダッシュ）に変換されていた。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="734" height="294" src="https://s-pro4.com/wp-content/uploads/2026/04/WP_Exchange.jpg" alt="" class="wp-image-1306" srcset="https://s-pro4.com/wp-content/uploads/2026/04/WP_Exchange.jpg 734w, https://s-pro4.com/wp-content/uploads/2026/04/WP_Exchange-300x120.jpg 300w" sizes="(max-width: 734px) 100vw, 734px" /></figure>



<p class="wp-block-paragraph">そう言えば今までもあった。そのときはコードブロックにして回避したかもしれない。<br>またはHTMLブロックとして実体参照で書くこともできるか。<br>ただ、ちょっとめんどくさい。</p>



<p class="wp-block-paragraph">function.phpに下記を書くと無効化できる。<br>wptexturizeは整形のフィルター関数のひとつだそうだ。</p>



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



<pre class="wp-block-code"><code>remove_filter('the_content', 'wptexturize'); // 本文
remove_filter('the_excerpt', 'wptexturize'); // 抜粋
remove_filter('the_title', 'wptexturize'); // タイトル
remove_filter('widget_text_content', 'wptexturize'); // ウィジェット</code></pre>



<p class="wp-block-paragraph">↑ここはコードブロック</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>エクセルでいうセルの結合は、HTMLの&#060;table&gt;で表現できないときがある</title>
		<link>https://s-pro4.com/page-1156.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Wed, 10 Dec 2025 09:30:37 +0000</pubDate>
				<category><![CDATA[web技術]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=1156</guid>

					<description><![CDATA[HTMLのtableタグでどんな表組でも作成できると思っていた。セルを縦または横に繋いだ形（エクセルでいうセルの結合）でも、rowspan、colspanを使ってこれまで特に問題に感じたことはなかった。 今回、どうしても [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">HTMLのtableタグでどんな表組でも作成できると思っていた。<br>セルを縦または横に繋いだ形（エクセルでいうセルの結合）でも、rowspan、colspanを使ってこれまで特に問題に感じたことはなかった。</p>



<p class="wp-block-paragraph">今回、どうしてもHTMLでうまく作れない表というかセル結合の組み合わせに出会い、調べて行くとどうもtableタグの仕様限界というか仕様未定義という結論に至った。（ChatGPTの助けを得た上での推測）</p>



<p class="wp-block-paragraph">まず、作成できなかった表はExcelでは下記のようなもの。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="357" height="206" src="https://s-pro4.com/wp-content/uploads/2025/12/table2.jpg" alt="" class="wp-image-1157" srcset="https://s-pro4.com/wp-content/uploads/2025/12/table2.jpg 357w, https://s-pro4.com/wp-content/uploads/2025/12/table2-300x173.jpg 300w" sizes="(max-width: 357px) 100vw, 357px" /></figure>



<p class="wp-block-paragraph">rowspanを3つ使えばできると思いませんか？<br>私は何の問題もないと思いコーディングに立ち向かいました。<br><br>書いたHTMLは下記。</p>



<pre class="wp-block-code"><code>  &lt;table>
    &lt;caption>tableでの表現ができない&lt;/caption>
    &lt;tr>
      &lt;th>A&lt;/th>
      &lt;th>B&lt;/th>
      &lt;th>C&lt;/th>
    &lt;/tr>
    &lt;tr>
      &lt;td>あ&lt;/td>
      &lt;td>い&lt;/td>
      &lt;td rowspan="2">う&lt;/td>
    &lt;/tr>
    &lt;tr>
      &lt;td rowspan="2">え&lt;/td>
      &lt;td rowspan="2">お&lt;/td>
    &lt;/tr>
    &lt;tr>
      &lt;td>か&lt;/td>
    &lt;/tr>
  &lt;/table>
</code></pre>



<p class="wp-block-paragraph">HTML記述としての間違いをチェックしつつ、なかなかうまくできない。<br>ブラウザ表示はどうしてもフラットなセル結合がない表示なってしまう。</p>



<p class="wp-block-paragraph">ブラウザ表示は下記になってしまう。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="381" height="192" src="https://s-pro4.com/wp-content/uploads/2025/12/table3.jpg" alt="" class="wp-image-1158" srcset="https://s-pro4.com/wp-content/uploads/2025/12/table3.jpg 381w, https://s-pro4.com/wp-content/uploads/2025/12/table3-300x151.jpg 300w" sizes="(max-width: 381px) 100vw, 381px" /></figure>



<p class="wp-block-paragraph">崩れるというよりもrowspanが一切効いておらず、最初は意味がわからなかった。</p>



<p class="wp-block-paragraph">シンプルな表は問題ないし、結合が複数あるから必ず問題というわけではない。大丈夫な表が大半だ。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="352" height="445" src="https://s-pro4.com/wp-content/uploads/2025/12/table4.jpg" alt="" class="wp-image-1159" srcset="https://s-pro4.com/wp-content/uploads/2025/12/table4.jpg 352w, https://s-pro4.com/wp-content/uploads/2025/12/table4-237x300.jpg 237w" sizes="(max-width: 352px) 100vw, 352px" /></figure>



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



<p class="wp-block-paragraph">HTMLで作成できない条件は 「ある行において、全ての列がrowspan対象である」場合ダメなのではないかと思う。<br>できない例の3行目「え」から始まる行が怪しい。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="357" height="206" src="https://s-pro4.com/wp-content/uploads/2025/12/table5.jpg" alt="" class="wp-image-1160" srcset="https://s-pro4.com/wp-content/uploads/2025/12/table5.jpg 357w, https://s-pro4.com/wp-content/uploads/2025/12/table5-300x173.jpg 300w" sizes="(max-width: 357px) 100vw, 357px" /></figure>



<p class="wp-block-paragraph">全部の列がrowspanなのだ。</p>



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



<p class="wp-block-paragraph">試行錯誤していく中でもう一つの事象が、ブラウザ依存になるパターンもあったこと。<br>先程の例は、Edge、Chrome、Firefox、Safariで全て同じ結果（=NG）だった。</p>



<p class="wp-block-paragraph">次のパターンはFirefoxは期待通り、他のブラウザではNGという状況だった。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="352" height="276" src="https://s-pro4.com/wp-content/uploads/2025/12/table6.jpg" alt="" class="wp-image-1161" srcset="https://s-pro4.com/wp-content/uploads/2025/12/table6.jpg 352w, https://s-pro4.com/wp-content/uploads/2025/12/table6-300x235.jpg 300w" sizes="(max-width: 352px) 100vw, 352px" /></figure>



<p class="wp-block-paragraph">「ある行において、全ての列がrowspan対象である」条件に当てはまっているものの、Firefoxではこちらの意図を組んでくれたのでは無いかと思う。よきに計らってもらったというか、仕様的にDon't Careだからどのように解釈しても良いでしょ？ というところか。このときのHTMLは下記の通り。これも構造的には期待通り動いて欲しい・動くものだと思って書いた。</p>



<pre class="wp-block-code"><code>  &lt;table>
    &lt;caption>tableでの表現ができない（firefoxのみそれなりに見える）&lt;/caption>
    &lt;tr>
      &lt;th>A&lt;/th>
      &lt;th>B&lt;/th>
      &lt;th>C&lt;/th>
    &lt;/tr>
    &lt;tr>
      &lt;td rowspan="2">あ&lt;/td>
      &lt;td rowspan="2">い&lt;/td>
      &lt;td>う&lt;/td>
    &lt;/tr>
    &lt;tr>
      &lt;td rowspan="2">え&lt;/td>
    &lt;/tr>
    &lt;tr>
      &lt;td rowspan="2">お&lt;/td>
      &lt;td rowspan="2">か&lt;/td>
    &lt;/tr>
    &lt;tr>
      &lt;td>き&lt;/td>
    &lt;/tr>
  &lt;/table>
</code></pre>



<p class="wp-block-paragraph">最後にまとめの図。</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6add2c753f7c5&quot;}" data-wp-interactive="core/image" data-wp-key="6add2c753f7c5" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="654" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://s-pro4.com/wp-content/uploads/2025/12/table1-1024x654.jpg" alt="" class="wp-image-1162" srcset="https://s-pro4.com/wp-content/uploads/2025/12/table1-1024x654.jpg 1024w, https://s-pro4.com/wp-content/uploads/2025/12/table1-300x192.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/12/table1-768x490.jpg 768w, https://s-pro4.com/wp-content/uploads/2025/12/table1.jpg 1264w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p class="wp-block-paragraph">ちなみに、解決のために tableタグをあきらめて、Css Grid Layoutへ切り替えた。</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Dropboxでアカウントを持たない相手からデータを受け取る</title>
		<link>https://s-pro4.com/page-1132.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Fri, 14 Nov 2025 03:23:52 +0000</pubDate>
				<category><![CDATA[web技術]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=1132</guid>

					<description><![CDATA[メールでのデータ送付・受け取りは最大でも10MB程度にしておきたい。 こちらから渡したいときは、ギガファイル便、firestorage等のサービスを使用したり、管理しているWebサーバへアップロードしたり。もちろん、内容 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">メールでのデータ送付・受け取りは最大でも10MB程度にしておきたい。</p>



<p class="wp-block-paragraph">こちらから渡したいときは、ギガファイル便、firestorage等のサービスを使用したり、管理しているWebサーバへアップロードしたり。<br>もちろん、内容に応じてよりパスワードをかけるなどよりセキュリティを高めるなどの工夫をしながら。</p>



<p class="wp-block-paragraph">Dropboxアカウントを持っている相手に対しては、Dropboxの共有を使うことで送付も受け取りも行っている。これはインターネット越しのNASのようなもので大変便利。</p>



<p class="wp-block-paragraph">しかし、何事もアカウント作成を相手に求めるのが難しい場合もある。</p>



<p class="wp-block-paragraph">Dropboxには、「ファイル リクエスト」という機能があり、アカウントを持っていない相手からデータを受け取ることが可能。これは知らなかった。</p>



<figure class="wp-block-image size-large is-style-vk-image-border"><img loading="lazy" decoding="async" width="1024" height="523" src="https://s-pro4.com/wp-content/uploads/2025/11/Dropbox-1-1024x523.jpg" alt="" class="wp-image-1134" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Dropbox-1-1024x523.jpg 1024w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox-1-300x153.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox-1-768x392.jpg 768w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox-1.jpg 1358w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">左側のメニューからファイルリクエストをクリックする。</p>



<figure class="wp-block-image size-large is-style-vk-image-border"><img loading="lazy" decoding="async" width="1024" height="342" src="https://s-pro4.com/wp-content/uploads/2025/11/Dropbox2-1024x342.jpg" alt="" class="wp-image-1135" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Dropbox2-1024x342.jpg 1024w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox2-300x100.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox2-768x256.jpg 768w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox2.jpg 1357w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">次の画面では「ファイルをリクエスト」をクリックする。</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="698" height="760" src="https://s-pro4.com/wp-content/uploads/2025/11/Dropbox3.jpg" alt="" class="wp-image-1136" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Dropbox3.jpg 698w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox3-276x300.jpg 276w" sizes="(max-width: 698px) 100vw, 698px" /></figure>



<p class="wp-block-paragraph">最低限タイトルだけ入力して「作成」をクリックすればOK。<br>この画面を見る限り、有料版では有効期限やパスワードの設定ができそう。</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="444" height="421" src="https://s-pro4.com/wp-content/uploads/2025/11/Dropbox4.jpg" alt="" class="wp-image-1137" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Dropbox4.jpg 444w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox4-300x284.jpg 300w" sizes="(max-width: 444px) 100vw, 444px" /></figure>



<p class="wp-block-paragraph">共有用のリンクURLが生成される。<br>メールアドレスを入力して送付することができそうだが、通常はURLを「コピー」して「完了」してから、別でURLを送ったほうが良いだろう。</p>



<figure class="wp-block-image size-large is-style-vk-image-border"><img loading="lazy" decoding="async" width="1024" height="339" src="https://s-pro4.com/wp-content/uploads/2025/11/Dropbox5-1024x339.jpg" alt="" class="wp-image-1138" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Dropbox5-1024x339.jpg 1024w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox5-300x99.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox5-768x254.jpg 768w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox5.jpg 1358w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">ファイルリクエストの一覧に先程作成したものが表示される。<br>「ここにアップロードしてください」はリクエストを作成したきにタイトルに入力した文字列。</p>



<p class="wp-block-paragraph">データを送る側は、受け取ったURLをクリックして、ファイル選択、名前とメールアドレスの入力でアップロードが可能だった。<br>アップロードされると、アカウントへ通知がきた。</p>



<p class="wp-block-paragraph">Dropboxにおいて、アカウントを指定した共有、リンク共有、ファイルリクエストの違いをChatGPTにまとめてもらった。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1001" height="863" src="https://s-pro4.com/wp-content/uploads/2025/11/Dropbox6.jpg" alt="" class="wp-image-1139" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Dropbox6.jpg 1001w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox6-300x259.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/11/Dropbox6-768x662.jpg 768w" sizes="(max-width: 1001px) 100vw, 1001px" /><figcaption class="wp-element-caption">ChatGPTによるDropboxのまとめ</figcaption></figure>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>エックスサーバーのメールをIMAPでアカウント設定するときの注意</title>
		<link>https://s-pro4.com/page-1125.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Mon, 10 Nov 2025 08:59:03 +0000</pubDate>
				<category><![CDATA[web技術]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=1125</guid>

					<description><![CDATA[レンタルサーバーのエックスサーバー（XServer）に作成したメールを送受信設定するとき、IMAPを使う場合に注意すべきことがある。 たとえば、Outlook（classic）の場合には、受信サーバ、送信サーバを入力して [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">レンタルサーバーのエックスサーバー（XServer）に作成したメールを送受信設定するとき、IMAPを使う場合に注意すべきことがある。</p>



<p class="wp-block-paragraph">たとえば、Outlook（classic）の場合には、受信サーバ、送信サーバを入力して、SSLをONにしてとよくやるメール設定を行うと、一見問題なくアカウントが作成され、アカウント名と受信トレイが表示される。メール受信もできる。<br>だがそのままだと、自分が送信したメールがサーバに残らないつまり「送信済みアイテム」に残らない、そもそも「送信済みアイテム」というフォルダ自体が見当たらない状態になっている。<br>※まぁローカルの「送信トレイ」には残っていることがあるのだが、名前が違うし「送信トレイ」はオフラインのときに溜めておいてまだ送れていないと勘違いしてしまう。</p>



<p class="wp-block-paragraph">追加で、同期の設定の「ルートフォルダーのパス」にinboxと書かなければならないという、忘れやすい設定がある。</p>



<p class="wp-block-paragraph">エックスサーバーのマニュアルページ　Outlook用）<br><a href="https://www.xserver.ne.jp/manual/man_mail_setting_ol2019.php" target="_blank" rel="noreferrer noopener">https://www.xserver.ne.jp/manual/man_mail_setting_ol2019.php</a></p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="350" height="410" src="https://s-pro4.com/wp-content/uploads/2025/11/Outlook.png" alt="" class="wp-image-1126" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Outlook.png 350w, https://s-pro4.com/wp-content/uploads/2025/11/Outlook-256x300.png 256w" sizes="(max-width: 350px) 100vw, 350px" /></figure>



<p class="wp-block-paragraph">※画像はエックスサーバーより借用</p>



<p class="wp-block-paragraph">こうすることで、サーバーの「受信トレイ」以外のフォルダと同期が可能になる。</p>



<p class="wp-block-paragraph">同期にinboxと書くのはThunderbirdも同じ。</p>



<p class="wp-block-paragraph">エックスサーバーのマニュアルページ　Thunderbird用）<br><a href="https://www.xserver.ne.jp/manual/man_mail_setting_tb_31.php" target="_blank" rel="noreferrer noopener">https://www.xserver.ne.jp/manual/man_mail_setting_tb_31.php</a></p>



<p class="wp-block-paragraph">Thuderbird用のマニュアルには残念ながらIMAPでの追加設定のことは書いていない。<br>もしかして昔はルートフォルダにinboxを指定しなくてもアプリが自動判断でもしていたのかな？<br>これまであまり意識したことがなかったかも。</p>



<p class="wp-block-paragraph">今日ThunderbirdでIMAP設定してみたところ、Outlookと同じように「送信済みアイテム」がない状態で、送信したメールがローカルに保存されてしまう。</p>



<p class="wp-block-paragraph">やっぱり、「inbox」の指定は必要だ。</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="795" height="801" src="https://s-pro4.com/wp-content/uploads/2025/11/Thunderbird.png" alt="" class="wp-image-1127" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Thunderbird.png 795w, https://s-pro4.com/wp-content/uploads/2025/11/Thunderbird-298x300.png 298w, https://s-pro4.com/wp-content/uploads/2025/11/Thunderbird-150x150.png 150w, https://s-pro4.com/wp-content/uploads/2025/11/Thunderbird-768x774.png 768w" sizes="(max-width: 795px) 100vw, 795px" /></figure>



<p class="wp-block-paragraph">サーバー設定の「詳細」の中にある。</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="465" height="428" src="https://s-pro4.com/wp-content/uploads/2025/11/Thunderbird2.png" alt="" class="wp-image-1128" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Thunderbird2.png 465w, https://s-pro4.com/wp-content/uploads/2025/11/Thunderbird2-300x276.png 300w" sizes="(max-width: 465px) 100vw, 465px" /></figure>



<p class="wp-block-paragraph">IMAPサーバーディレクトリーにinboxを指定する。大文字小文字はどちらでも良かった。<br>「購読しているフォルダーのみ表示する」のチェックを外すことは任意。</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="768" height="225" src="https://s-pro4.com/wp-content/uploads/2025/11/Thunderbird3.png" alt="" class="wp-image-1129" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Thunderbird3.png 768w, https://s-pro4.com/wp-content/uploads/2025/11/Thunderbird3-300x88.png 300w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p class="wp-block-paragraph">「送信控え」の設定で、「次のアカウントの "送信済みトレイ" フォルダー」で、当該のアカウント名が指定されていることも確認。ここでローカルになっていたりするとダメ。<br></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Contact Form 7にCloudflare Turnstileを導入する</title>
		<link>https://s-pro4.com/page-1113.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Tue, 04 Nov 2025 08:42:40 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=1113</guid>

					<description><![CDATA[Contact Form 7の一覧画面にしばらく前から下記の文言が出ている。 Google reCAPTCHAの無料利用が10,000回までとなり、自身や身の回りでもアクセス数やreCAPTCHAのレポートを気にしたりと [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Contact Form 7の一覧画面にしばらく前から下記の文言が出ている。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="901" height="95" src="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile1.jpg" alt="" class="wp-image-1114" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile1.jpg 901w, https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile1-300x32.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile1-768x81.jpg 768w" sizes="(max-width: 901px) 100vw, 901px" /></figure>



<p class="wp-block-paragraph">Google reCAPTCHAの無料利用が10,000回までとなり、自身や身の回りでもアクセス数やreCAPTCHAのレポートを気にしたりと落ち着かない感じになってしまった。</p>



<p class="wp-block-paragraph">Contact From 7の開発者が Trunstile を推しているなら、使ってみよう。</p>



<p class="wp-block-paragraph">手順の参考ページ）<br><a href="https://www.xserver.ne.jp/bizhp/cloudflare-turnstile/" target="_blank" rel="noreferrer noopener">https://www.xserver.ne.jp/bizhp/cloudflare-turnstile/</a></p>



<p class="wp-block-paragraph">Cloudflare Turnstileのアカウント作成、ウィジェット作成、各キーを取得しする。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="175" height="148" src="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile3.jpg" alt="" class="wp-image-1116"/></figure>



<p class="wp-block-paragraph">WordPress管理画面メニューの[お問い合わせ]＞[インテグレーション] から作業を進める。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="704" height="561" src="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile2.jpg" alt="" class="wp-image-1115" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile2.jpg 704w, https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile2-300x239.jpg 300w" sizes="(max-width: 704px) 100vw, 704px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="536" height="447" src="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile4.jpg" alt="" class="wp-image-1117" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile4.jpg 536w, https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile4-300x250.jpg 300w" sizes="(max-width: 536px) 100vw, 536px" /></figure>



<p class="wp-block-paragraph">Google reCAPTCHAからの移行の場合は、reCAPTHAのキーを削除してからTurnstileの設定へ移る。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="541" height="420" src="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile5.jpg" alt="" class="wp-image-1118" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile5.jpg 541w, https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile5-300x233.jpg 300w" sizes="(max-width: 541px) 100vw, 541px" /></figure>



<p class="wp-block-paragraph">Turnstileのキーを入力して保存する。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="532" height="564" src="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile6-1.jpg" alt="" class="wp-image-1120" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile6-1.jpg 532w, https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile6-1-283x300.jpg 283w" sizes="(max-width: 532px) 100vw, 532px" /></figure>



<p class="wp-block-paragraph">ここまで実施するとそのままでTurnstileが使えるが、デフォルトではウィジェットがフォームの先頭につくみたい？</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="801" height="476" src="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile7.jpg" alt="" class="wp-image-1121" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile7.jpg 801w, https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile7-300x178.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile7-768x456.jpg 768w" sizes="(max-width: 801px) 100vw, 801px" /></figure>



<p class="wp-block-paragraph">ショートコード [turnstile] をフォームに書けば任意の位置に挿入可能。</p>



<figure class="wp-block-image size-full is-resized is-style-vk-image-border"><img loading="lazy" decoding="async" width="760" height="526" src="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile8.jpg" alt="" class="wp-image-1122" style="width:822px;height:auto" srcset="https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile8.jpg 760w, https://s-pro4.com/wp-content/uploads/2025/11/Cloudflare_Turnstile8-300x208.jpg 300w" sizes="(max-width: 760px) 100vw, 760px" /></figure>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GPT-5のことやモデル、プランのことをChatGPT自身に聞いてみる</title>
		<link>https://s-pro4.com/page-1048.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Mon, 01 Sep 2025 16:56:03 +0000</pubDate>
				<category><![CDATA[web技術]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=1048</guid>

					<description><![CDATA[※はじめに　この記事は2025年９月2日現在の状況を書きました。成長著しいAIの世界なので、すでに内容が古くなっている可能性があります。※また、ChatGPT自身の回答とはいえ、間違っていることもあり得ます。 ChatG [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-vivid-red-color has-text-color has-link-color wp-elements-2 wp-block-paragraph">※はじめに　この記事は2025年９月2日現在の状況を書きました。成長著しいAIの世界なので、すでに内容が古くなっている可能性があります。<br>※また、ChatGPT自身の回答とはいえ、間違っていることもあり得ます。</p>



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



<p class="wp-block-paragraph">ChatGPTの5が使えるようになったということで、疑問に思ったことを2025年9月1日、2日にChatGPT自身へ質問をしてみた。（無料プランにて）<br>基本的には、質問内容はそのままで、回答内容は意味がくずれない程度に一部抜粋したり言い回しを少し変えたところがある。</p>



<p class="wp-block-paragraph">Q. GPT-5はいつから使えるようになりましたか？<br>A. （回答そのまま）GPT-5は、OpenAIが開発した最新のAIモデルで、2025年8月7日に正式にリリースされました。</p>



<p class="wp-block-paragraph">Q. 今答えてくださるあなたは GPT-4ですか、GPT-5ですか？<br>A. （回答そのまま）私は <strong>GPT-5</strong> です。</p>



<p class="wp-block-paragraph">Q. 無料プランでGPT-5を使用できる回数や容量を教えて下さい。<br>A. （回答のうちまとめの表組みのみ抜粋）</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="782" height="203" src="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt1-1.jpg" alt="" class="wp-image-1053" srcset="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt1-1.jpg 782w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt1-1-300x78.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt1-1-768x199.jpg 768w" sizes="(max-width: 782px) 100vw, 782px" /><figcaption class="wp-element-caption">要点まとめ（表組みはChatGPTが生成）</figcaption></figure>



<p class="wp-block-paragraph">Q. GTP-5 miniやThinking を含めて GPT-5のラインナップを教えてください。<br>A. （回答のうちまとめの表組みのみ抜粋）</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="780" height="429" src="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt2.jpg" alt="" class="wp-image-1052" srcset="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt2.jpg 780w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt2-300x165.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt2-768x422.jpg 768w" sizes="(max-width: 780px) 100vw, 780px" /><figcaption class="wp-element-caption">まとめ（表組みはChatGPTが生成）</figcaption></figure>



<p class="wp-block-paragraph">Q. モデルの切り替え方法を教えてください。<br>A. （回答文章を元にまとめ）新しいチャットを開いたときに、画面上部に「GPT-5」などと表示されていれば、「<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a1.png" alt="⚡" class="wp-smiley" style="height: 1em; max-height: 1em;" />」マークまたは「思考モード」メニューをクリックすると、Auto／Fast／Thinking-mini／Thinking の選択肢からモードを選ぶ。</p>



<p class="wp-block-paragraph">Q. （続きの再質問）上部バーに「GPT-5」の表示はありません。「ChatGPT」というプルダウンがあります。<br>A. （回答の一部を抜粋）現在の <strong>Web版ChatGPT</strong> では、上部バーに「GPT-5」と直接出るのではなく、<strong>「ChatGPT」と書かれたプルダウン</strong>に統合されています。そこからモデルやモードを切り替える仕組みです。</p>



<p class="wp-block-paragraph">Q. （続きの再質問）プルダウン選択肢には上から「ChatGPT Plus」「ChatGPT」の2つしかなく、「ChatGPT」にチェックが入った状態ですが？<br>A. （回答の一部を抜粋）現在のあなたの画面に「GPT-5」や「Fast／Thinking」モードが出ていないのは、<br>・無料プラン利用中である<br>・まだ新しい切り替えUIが反映されていない<br>のどちらか（または両方）が理由です。</p>



<p class="wp-block-paragraph">Q. （制限内容の）「メッセージ」というのはなんですか？ チャットより小さい単位のチャット内の質問回数のことですか？<br>A. （回答の一部を抜粋）OpenAI が案内している「<strong>メッセージ</strong>」とは、<br>・あなたが送信するプロンプト（質問や指示）<br>・モデルが返す応答（回答）<br>の<strong>やり取り 1回分</strong> を「1メッセージ」と数えます。1チャットの中で質問を5回すると → <strong>10メッセージ消費（質問5＋回答5）</strong> になります。</p>



<p class="wp-block-paragraph">Q. 同一チャット内で10メッセージを超えてしまうと、12回目のメッセージ(モデルが返す応答）から miniに切り替わるのですか？<br>A. （回答の一部を抜粋）はい、その理解で大丈夫です <br>・無料ユーザーは <strong>5時間ごとに最大10メッセージ（質問＋回答の合計）まで GPT-5 を利用可能</strong>です。<br>・上限に達すると、<strong>同じチャットを続けていても、自動的に GPT-5 mini に切り替わります</strong>。</p>



<p class="wp-block-paragraph">Q. （10メッセージ以上をやりとりしたため）では、今のあなたは GPT-5 miniなのですね？<br>A. （回答の一部を抜粋）いいえ <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br>私は <strong>GPT-5（通常版）</strong> です。<br>※（個人のコメント）これの意味がわからなかった。</p>



<p class="wp-block-paragraph">Q. このチャットは20分くらいの間に20メッセージほどやりとりしました。なのでもうminiになっていると思って質問したのですが、どう考えればよいでしょうか？<br>A. （回答の一部を抜粋）すでに <strong>GPT-5上限（10メッセージ）を超過</strong>しています。したがって、<strong>今この時点での応答は GPT-5 mini から返されている</strong>と考えるのが正しいです。</p>



<p class="wp-block-paragraph">Q. （"「今どのモデルで返答されているか」をUI上で直接見分けたいですか？"の回答に対して）見分ける方法があれば教えて下さい。<br>A. （回答の一部を抜粋）実は ChatGPT のUI（無料プラン）では <strong>「今この返答が GPT-5 か GPT-5 mini か」を直接ラベルで確認する方法は用意されていません</strong>。なので、画面上に「mini」とか「切り替わりました」とは表示されない仕様になっています。</p>



<p class="wp-block-paragraph">Q. もう一度質問です。今回答してくださるあなたは「GPT-5（標準）」ですか「GPT-5 mini」ですか？<br>A. （回答の一部を抜粋）今の段階では <strong>GPT-5（標準）</strong> と考えていただいて大丈夫です。<br>※（個人のコメント）これの意味がやはりわからなかった。</p>



<p class="wp-block-paragraph">Q. （しつこく質問）でも、確実に6つ以上の質問をしてそれぞれ回答くださり、5時間で10メーセージは超えました。あなたは「GPT-5 mini」ですか？<br>A. （回答の一部を抜粋）<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> もし3時間の枠内で11メッセージ以上送っているなら、私は <strong>GPT-5 mini</strong> です。<br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 3時間ごとにカウントがリセットされるので、メッセージの間隔が広いと再び <strong>標準GPT-5</strong> に戻っている可能性もあります。<br>※（個人のコメント）「あなたは誰」の問題は迷宮入り（解決不能）か。</p>



<p class="wp-block-paragraph">Q. GPT-5 miniで利用しすぎると、nanoに自動的に切り替わるのですか？ またminiの制限はどれくらいですか？<br>A. （回答の一部を抜粋）無料プランにおいては、<strong>GPT-5（標準版）やGPT-5 Thinking</strong>を使い切ると自動的に <strong>GPT-5 mini</strong> に切り替わります。<br>ただし、<strong>GPT-5 mini からさらに自動で GPT-5 nano に切り替わるという仕組みはありません</strong>。</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="898" height="292" src="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt3.jpg" alt="" class="wp-image-1054" srcset="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt3.jpg 898w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt3-300x98.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt3-768x250.jpg 768w" sizes="(max-width: 898px) 100vw, 898px" /><figcaption class="wp-element-caption">表にまとめると…（表組みはChatGPTが生成）</figcaption></figure>



<p class="wp-block-paragraph">Q. miniを使いすぎてもnanoに自動切替されないことはわかりましたが、応答が遅くなったり、旧モデルGPT-4へ切り替わったりするのでしょうか？<br>A. （回答の一部を抜粋）・<strong>自動的にGPT-4へ切り替わることはありません。</strong> ChatGPTの無料・有料プランでは、利用できるのは現行の「GPT-4o（2024年モデル）」とその軽量版（mini）です。旧モデルに戻ることはないです。<br>・<strong>miniを使いすぎても、さらに小さい「nano」や旧モデルに落ちることはありません。</strong><br>単に「GPT-5（標準）」が使える上限を超えたときに mini に切り替わるだけです。</p>



<p class="wp-block-paragraph">Q. PlusとProでは制限が緩和されるとのことですが、どれくらいですか？<br>A. （回答のうち文章は省略）</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="798" height="306" src="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt4.jpg" alt="" class="wp-image-1055" srcset="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt4.jpg 798w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt4-300x115.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt4-768x294.jpg 768w" sizes="(max-width: 798px) 100vw, 798px" /><figcaption class="wp-element-caption">無料プランとの比較（表組みはChatGPTが生成）</figcaption></figure>



<p class="wp-block-paragraph">Q. （続きの再質問）比較してくださった表の部分だけを見るとPlus と Proの差がないのではないですか？<br>A. （回答の一部を抜粋）表だけを見ると <strong>Plus と Pro の制限は同じ</strong>に見えますが、実際には微妙な違いがあります。<br><strong>優先度・応答速度</strong><br><strong>Plus</strong>：標準よりやや高速・優先キューあり<br><strong>Pro</strong>：さらに高負荷時も優先度が高く、より安定した高速応答<br>→ つまり、実質的な「体感速度」や混雑時の待ち時間が異なります。</p>



<p class="wp-block-paragraph">Q. 料金はドルですが、円では固定になりますか？ その時の為替で変わるのですか？<br>A. （回答の一部を抜粋）OpenAIの <strong>ChatGPT Plus / Pro プラン</strong> は、料金は公式には <strong>米ドル建て</strong> ですが、日本からの購入時には <strong>円で請求</strong> されます。<br>つまりドル自体は固定でも、日本円で支払う場合は毎月若干の増減があります。</p>



<p class="wp-block-paragraph">Q. 無料版で、Thinkingが1日1メッセージということは、質問だけして同日に回答は得られないということですか？<br>A. （回答の一部を抜粋）「1日1メッセージ」というのは <strong>Thinking モードでモデルが生成する応答のことをカウント</strong>しています。つまり <strong>質問を送っただけではカウントされず、回答をモデルが返した時点で1メッセージ消費</strong> です。ただし <strong>1日1回しか回答を得られない</strong>ので、1日中に複数回質問しても、<strong>最初の1回だけがThinkingモードで返答</strong>されます。</p>



<p class="wp-block-paragraph">Q. ある1日の最初の質問の回答が自動的にThinkingになるのですか？ それとも、Thinkingを使いたい時に指定する必要があるのですか？<br>A. （回答の一部を抜粋）<br>・1日の最初の質問が自動的に Thinking モードになることはありません。<br>・Thinking モードを使いたい場合は、<strong>明示的にそのモードを選ぶ必要があります</strong>。<br>・現在のUIでは、無料プランでは「Thinkingモード」の選択肢がそもそも出ないことがあります。出ている場合は、チャット開始時にプルダウンやモード選択で <strong>Thinking</strong> を指定します。<br>・思考モードを指定しなければ、通常の GPT‑5 / mini が返答します。</p>



<p class="wp-block-paragraph">Q. モデルとモードの違いを教えてください。<br>A. （回答のうちまとめの表組みのみ抜粋）</p>



<figure class="wp-block-image size-full is-style-vk-image-border"><img loading="lazy" decoding="async" width="784" height="164" src="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt5.jpg" alt="" class="wp-image-1056" srcset="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt5.jpg 784w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt5-300x63.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt5-768x161.jpg 768w" sizes="(max-width: 784px) 100vw, 784px" /><figcaption class="wp-element-caption">まとめると（表組みはChatGPTが生成）</figcaption></figure>



<p class="wp-block-paragraph">Q. （"図で「モデルとモードの関係」を可視化して見せることもできます。作ってほしいですか？"の回答に対して）お願いします。<br>A. （回答のまま、画像のみ）</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="465" height="296" src="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt6.jpg" alt="" class="wp-image-1057" srcset="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt6.jpg 465w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt6-300x191.jpg 300w" sizes="(max-width: 465px) 100vw, 465px" /><figcaption class="wp-element-caption">モデルとモードの関係可視化（図はChatGPTが生成）</figcaption></figure>



<p class="wp-block-paragraph">ここまで実施したところで、下記のメッセージが表示された。</p>



<p class="wp-block-paragraph">----------<br>GPT-5 の Free プランの上限に達しました。<br>このチャットには画像があるため、続行するには GPT-5 が必要です。制限が 3:12 以降. にリセットされます<br>----------</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="783" height="107" src="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt7.jpg" alt="" class="wp-image-1058" srcset="https://s-pro4.com/wp-content/uploads/2025/09/chatgpt7.jpg 783w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt7-300x41.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/09/chatgpt7-768x105.jpg 768w" sizes="(max-width: 783px) 100vw, 783px" /><figcaption class="wp-element-caption">チャットGPT画面のスクリーンショット</figcaption></figure>



<p class="wp-block-paragraph">この後、同じチャットではもう質問ができなくなった。<br>新しいチャットを開いた後で、もう一度例の質問をしてみた。</p>



<p class="wp-block-paragraph">Q. 「GPT-5 の Free プランの上限に達しました。制限が 3:12 以降. にリセットされるまで、回答では別のモデルが使用されます。」と表示されました。どういう状況でしょうか？<br>A. （回答の一部を抜粋）<strong>Free プランの GPT-5 利用には制限がある</strong><br>1日の使用回数やトークン量に上限があります。上限に達すると、しばらく GPT-5 は使えなくなり、<strong>他のモデル（GPT-4 など）で回答される</strong>ようになります。</p>



<p class="wp-block-paragraph">Q. （しつこく再度質問）では、あなたは「GPT-4」なのですか？<br>A. （回答の一部を抜粋）いいえ、私は <strong>GPT-5 mini</strong> です。</p>



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



<p class="wp-block-paragraph">初めてGPT-5 miniであると名乗ってくれた。<br>このやり取りから、「あなたは誰」の問題は2つの考えがある。<br>「5時間で10メッセージまでGPT-5利用可能、以降はGPT-5 miniになる」というのがChatGPTの回答であったが、<br>・実際には制限がもっとゆるくて、すぐには、あるいは10メッセージを超えてもGPT-5（標準）がしばらく使えていたのかもしれない。</p>



<p class="wp-block-paragraph">または</p>



<p class="wp-block-paragraph">・すでにGPT-5 miniになっているのだが、GPT-5（標準）であると名乗っているだけなのかもしれない。</p>



<p class="wp-block-paragraph">結局真実はわからなかった。</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>複数ファイルの文字列置換をワンライナーで</title>
		<link>https://s-pro4.com/page-929.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Thu, 20 Mar 2025 05:39:28 +0000</pubDate>
				<category><![CDATA[EC-CUBE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=929</guid>

					<description><![CDATA[サブフォルダを含めて複数のテキストファイル内を文字列置換したい。一括で。フォルダ構成の想定は下記のような感じ。実際には、もっと深い階層にたくさんファイルがある。 findでファイルを抽出してsedにわたす。 以前、bas [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">サブフォルダを含めて複数のテキストファイル内を文字列置換したい。一括で。<br>フォルダ構成の想定は下記のような感じ。実際には、もっと深い階層にたくさんファイルがある。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="137" height="183" src="https://s-pro4.com/wp-content/uploads/2025/03/oneline.jpg" alt="" class="wp-image-930"/></figure>



<p class="wp-block-paragraph">findでファイルを抽出してsedにわたす。</p>



<p class="wp-block-paragraph">以前、bashでの置換例を書きsedは遅いと書いた。<br><a href="https://s-pro4.com/page-593.html" data-type="post" data-id="593">bashで文字列置換をする</a></p>



<p class="wp-block-paragraph">遅くても便利なら使うのだ。</p>



<p class="wp-block-paragraph">さて、"abc" を "efg" に書き換えるワンライナー（1行実行）の例は下記。</p>



<pre class="wp-block-code"><code>find . -type f -name "*.twig" -exec sed -i 's/abc/efg/g' {} +</code></pre>



<p class="wp-block-paragraph">これは、Gnu版のsedを使用する例<br>sed --version<br>sed (GNU sed) 4.2.2</p>



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



<p class="wp-block-paragraph">同じコマンドをMacOSのBSD版で実施すると、エラーになる<br>エラーメッセージ「sed: 1: "./t2/index.twig": invalid command code .」<br>これには、ちょっとはまって混乱した。</p>



<p class="wp-block-paragraph">BSD版sedでは、バックアップをとらないとき -i '' という明示をしないとだめということらしい。</p>



<p class="wp-block-paragraph">Macでは、下記のコマンドになる。</p>



<pre class="wp-block-code"><code>find . -type f -name "*.twig" -exec sed -i '' 's/abc/efg/g' {} +</code></pre>



<p class="wp-block-paragraph">逆に、GNUのsedでこれをやると、<br>エラー「sed: s/abc/efg/g を読み込めません: そのようなファイルやディレクトリはありません」<br>-i に関して互換性がない。</p>



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



<p class="wp-block-paragraph">ちなみに、今回一括置換をやろうと思ったのは、EC-CUBEのバージョンアップで .twig ファイルの書式が変わり、修正が必要になったため。</p>



<p class="wp-block-paragraph">{% for f in form if f.vars.eccube_form_options.auto_render %}<br>↓<br>{% for f in form|filter(f =&gt; f.vars.eccube_form_options.auto_render) %}</p>



<p class="wp-block-paragraph">下記のようなワンライナーで処理。</p>



<pre class="wp-block-code"><code>find . -type f -name "*.twig" -exec sed -i 's/ if f.vars.eccube_form_options.auto_render %}/|filter(f =&gt; f.vars.eccube_form_options.auto_render) %}/g' {} +</code></pre>



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



<p class="wp-block-paragraph">2026年10月20日追記。</p>



<p class="wp-block-paragraph">find で複数条件を指定たとえば .htmlと.htmを抽出するとき、</p>



<pre class="wp-block-code"><code>find . -type f \( -name "*.html" -o -name "*.htm" \)</code></pre>



<p class="wp-block-paragraph">-oで条件をつなぎ、()でまとめるが、エスケープが必要。</p>



<p class="wp-block-paragraph">また、URLを置換するような場合はsedの置換でデリミタを変えることも可能。<br>デリミタをスラッシュからドル記号へ変更した例</p>



<pre class="wp-block-code"><code>find . -type f \( -name "*.html" -o -name "*.htm" \) -exec sed -i '' 's$https://www\.example\.com/$./$g' {} +</code></pre>



<p class="wp-block-paragraph">さらに対象となるファイル、今回の場合htmlがShift-JISの場合、Macではエラーになった。<br>sed: RE error: illegal byte sequence</p>



<p class="wp-block-paragraph">UTF-8として処理しようとして文字コードが問題なのだと思う。<br>LC_ALL=Cをつける。</p>



<pre class="wp-block-code"><code>find . -type f \( -name "*.html" -o -name "*.htm" \) -exec env LC_ALL=C sed -i '' 's$https://www\.example\.com/$./$g' {} +</code></pre>



<p class="wp-block-paragraph">ただし、上記ではsed -i ''により、置換対象ではないファイルも触られるためタイムスタンプが変わってしまう。<br>厳密に行うには、先に置換対象文字列を含んだファイルだけを抽出してsedにわたす方法で回避できる。</p>



<pre class="wp-block-code"><code>find . -type f \( -name "*.html" -o -name "*.htm" \) -exec sh -c 'for f do if LC_ALL=C grep -qF "https://www.example.com/" "$f"; then LC_ALL=C sed -i "" "s\$https://www\\.example\\.com/\$./\$g" "$f"; fi; done' sh {} +</code></pre>



<p class="wp-block-paragraph">sh -c の中で sed の置換式をダブルクォートで囲んでいるため、区切り文字の $ を \$ とエスケープしている。</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MacにAnacondaをインストールする</title>
		<link>https://s-pro4.com/page-904.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Tue, 18 Feb 2025 13:11:01 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=904</guid>

					<description><![CDATA[Python、Flask関係で過去に記事を書いた。 Macへpythonをインストールする、そしてMAMPでWeb表示MacにPythonのフレームワーク Flaskをインストールする。 それぞれある程度の目的は達したも [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Python、Flask関係で過去に記事を書いた。</p>



<p class="wp-block-paragraph"><a href="https://s-pro4.com/page-698.html" data-type="post" data-id="698">Macへpythonをインストールする、そしてMAMPでWeb表示</a><br><a href="https://s-pro4.com/page-726.html" data-type="post" data-id="726">MacにPythonのフレームワーク Flaskをインストールする。</a></p>



<p class="wp-block-paragraph">それぞれある程度の目的は達したものの、仮想環境を作成するにはAnacondaでも良かったのでは？<br>ということで、Windowsでは使ってたAnacondaをMacにも入れてみた。</p>



<p class="wp-block-paragraph">まずはダウンロードする。<br><a href="https://www.anaconda.com/download/">https://www.anaconda.</a><a href="https://www.anaconda.com/download/" target="_blank" rel="noreferrer noopener">com</a><a href="https://www.anaconda.com/download/">/download/</a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="600" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda-1024x600.jpg" alt="" class="wp-image-905" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda-1024x600.jpg 1024w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda-300x176.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda-768x450.jpg 768w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda.jpg 1436w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="619" height="441" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda2.jpg" alt="" class="wp-image-906" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda2.jpg 619w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda2-300x214.jpg 300w" sizes="(max-width: 619px) 100vw, 619px" /></figure>



<p class="wp-block-paragraph">インストーラーから特に問題なくインストールを進める。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="308" height="241" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda3.jpg" alt="" class="wp-image-907" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda3.jpg 308w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda3-300x235.jpg 300w" sizes="(max-width: 308px) 100vw, 308px" /></figure>



<p class="wp-block-paragraph">アプリケーションフォルダにAnaconda-Navigator.app（のエイリアス）が追加される。<br>実体は /opt/anaconda3 下だった。</p>



<p class="wp-block-paragraph">ナビゲータを起動する。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="847" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda4-1024x847.jpg" alt="" class="wp-image-908" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda4-1024x847.jpg 1024w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda4-300x248.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda4-768x635.jpg 768w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda4-1536x1271.jpg 1536w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda4.jpg 1692w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Windowsで見ていた画面とほぼ変わらない。</p>



<p class="wp-block-paragraph">Environmentsから仮想環境を作成する。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="783" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda5-1024x783.jpg" alt="" class="wp-image-909" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda5-1024x783.jpg 1024w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda5-300x229.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda5-768x587.jpg 768w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda5.jpg 1355w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">flask_workという名前で作成した結果。</p>



<p class="wp-block-paragraph">次に、flaskをインストールするためにターミナルを起動する。仮想環境名横の矢印をクリックして、</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="468" height="134" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda5.2.jpg" alt="" class="wp-image-910" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda5.2.jpg 468w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda5.2-300x86.jpg 300w" sizes="(max-width: 468px) 100vw, 468px" /></figure>



<p class="wp-block-paragraph">Open Terminalを選択する。<br>そうすると、Macのターミナルが起動する。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="436" height="92" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda6.jpg" alt="" class="wp-image-911" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda6.jpg 436w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda6-300x63.jpg 300w" sizes="(max-width: 436px) 100vw, 436px" /></figure>



<p class="wp-block-paragraph">プロンプトの先頭が「(仮想環境名)」になっていることを確認しつつ、pip list でインストールされたPythonライブラリを確認。デフォルトではほぼ何も入っていないようだ。</p>



<p class="wp-block-paragraph">pip install flask でflaskをインストールする。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="432" height="200" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda7.jpg" alt="" class="wp-image-912" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda7.jpg 432w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda7-300x139.jpg 300w" sizes="(max-width: 432px) 100vw, 432px" /></figure>



<p class="wp-block-paragraph">結果、依存関係を考慮され関係するライブラリを含めて Flask 3.1.0がインストールされた。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="988" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda8-1024x988.jpg" alt="" class="wp-image-913" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda8-1024x988.jpg 1024w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda8-300x289.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda8-768x741.jpg 768w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda8.jpg 1435w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Anaconda Navigator上でも、再読み込みした後に、flaskがインストールされたことが確認できた。</p>



<p class="wp-block-paragraph">さて、インストールフォルダを確認してみると、</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="426" height="82" src="https://s-pro4.com/wp-content/uploads/2025/02/anaconda9.jpg" alt="" class="wp-image-914" srcset="https://s-pro4.com/wp-content/uploads/2025/02/anaconda9.jpg 426w, https://s-pro4.com/wp-content/uploads/2025/02/anaconda9-300x58.jpg 300w" sizes="(max-width: 426px) 100vw, 426px" /></figure>



<p class="wp-block-paragraph">/opt/anaconda3/envs 以下に作成した仮想環境名のフォルダができていることがわかる。</p>



<p class="wp-block-paragraph">環境構築ばかりやって、開発になかなか手をつけずにいる。</p>



<p class="wp-block-paragraph">2025.2.22追記<br>Anacondaインストール後に、homeに.bash_profileが生成され、内容が下記となった。</p>



<pre class="wp-block-code"><code>
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if &#091; $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if &#091; -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/opt/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/opt/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# &lt;&lt;&lt; conda initialize &lt;&lt;&lt;
</code></pre>



<p class="wp-block-paragraph">デフォルトでanaconda設定が読み込まれ、プロンプトが変わってしまう。<br>ここは要注意。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
