<?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>Mac | エス・プロ</title>
	<atom:link href="https://s-pro4.com/cat/mac/feed" rel="self" type="application/rss+xml" />
	<link>https://s-pro4.com</link>
	<description>パソコンとシステムの活用を考えます</description>
	<lastBuildDate>Wed, 25 Mar 2026 13:52:38 +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://s-pro4.com/wp-content/uploads/2021/10/bb4c6ee1587184e454cc308581390f8d-150x150.png</url>
	<title>Mac | エス・プロ</title>
	<link>https://s-pro4.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Time Machineの特定日時のバックアップを削除する</title>
		<link>https://s-pro4.com/page-1258.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Wed, 25 Mar 2026 13:52:37 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=1258</guid>

					<description><![CDATA[Time MachineはMacのデータを履歴バックアップしてくれる。通常は1時間ごととか自分が意識しなくても自動的に動いてくれて安心。 今回は、特定のバックアップだけを消したいという状況で実践してみた。 macOS S [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Time MachineはMacのデータを履歴バックアップしてくれる。通常は1時間ごととか自分が意識しなくても自動的に動いてくれて安心。</p>



<p>今回は、特定のバックアップだけを消したいという状況で実践してみた。</p>



<p>macOS Sequoia 15.7.4</p>



<p>最初は「Time Machineに入る」の中で消せると思って入ってみる。</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="768" src="https://s-pro4.com/wp-content/uploads/2026/03/timemachine1-1024x768.jpg" alt="" class="wp-image-1259" srcset="https://s-pro4.com/wp-content/uploads/2026/03/timemachine1-1024x768.jpg 1024w, https://s-pro4.com/wp-content/uploads/2026/03/timemachine1-300x225.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/03/timemachine1-768x576.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/03/timemachine1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>しかし、削除のインターフェースが見つからない。</p>



<p>「Time Machineに入る」の手前の画面を見てみると、</p>



<figure class="wp-block-image size-full"><img decoding="async" width="901" height="503" src="https://s-pro4.com/wp-content/uploads/2026/03/timemachine2.jpg" alt="" class="wp-image-1260" srcset="https://s-pro4.com/wp-content/uploads/2026/03/timemachine2.jpg 901w, https://s-pro4.com/wp-content/uploads/2026/03/timemachine2-300x167.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/03/timemachine2-768x429.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/03/timemachine2-320x180.jpg 320w" sizes="(max-width: 901px) 100vw, 901px" /></figure>



<p>バックアップが一覧表示できて、各日時を右クリックすると「すぐに削除」というメニューがある。<br>ここで消せそうではある。<br>しかし、Finder上で消すのは怖さがある。</p>



<p>よってGUI削除を一旦あきらめて、CUI削除を試みる。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="770" height="277" src="https://s-pro4.com/wp-content/uploads/2026/03/timemachine3.jpg" alt="" class="wp-image-1261" srcset="https://s-pro4.com/wp-content/uploads/2026/03/timemachine3.jpg 770w, https://s-pro4.com/wp-content/uploads/2026/03/timemachine3-300x108.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/03/timemachine3-768x276.jpg 768w" sizes="(max-width: 770px) 100vw, 770px" /></figure>



<p>tmutil listbackups でバックアップのリストが取得できる。</p>



<p>ここで、日時を指定して削除する。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="638" height="29" src="https://s-pro4.com/wp-content/uploads/2026/03/timemachine5.jpg" alt="" class="wp-image-1262" srcset="https://s-pro4.com/wp-content/uploads/2026/03/timemachine5.jpg 638w, https://s-pro4.com/wp-content/uploads/2026/03/timemachine5-300x14.jpg 300w" sizes="(max-width: 638px) 100vw, 638px" /></figure>



<p>sudo tmutil delete -d /Volumes/&lt;タイムマシンボリューム名> -t &lt;日時></p>



<p>無事に削除できた。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Macで容量の大きなファイル・フォルダを見つける</title>
		<link>https://s-pro4.com/page-1245.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Fri, 20 Mar 2026 13:35:48 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=1245</guid>

					<description><![CDATA[1TBの内蔵SSDが使用率95%になり、ディスクを空けることを画策する。今回だけでなく以前からちょいちょい発生して、du コマンド階層的に使いながら調べて対応したりしていた。 まずは、ディスクユーティリティで見てみる。  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>1TBの内蔵SSDが使用率95%になり、ディスクを空けることを画策する。<br>今回だけでなく以前からちょいちょい発生して、du コマンド階層的に使いながら調べて対応したりしていた。</p>



<p>まずは、ディスクユーティリティで見てみる。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="805" height="451" src="https://s-pro4.com/wp-content/uploads/2026/03/storage1.jpg" alt="" class="wp-image-1246" srcset="https://s-pro4.com/wp-content/uploads/2026/03/storage1.jpg 805w, https://s-pro4.com/wp-content/uploads/2026/03/storage1-300x168.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/03/storage1-768x430.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/03/storage1-320x180.jpg 320w" sizes="(max-width: 805px) 100vw, 805px" /></figure>



<p>次に[システム設定]＞[一般]＞[ストレージ]で確認する。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="703" height="1024" src="https://s-pro4.com/wp-content/uploads/2026/03/storage2-703x1024.jpg" alt="" class="wp-image-1247" srcset="https://s-pro4.com/wp-content/uploads/2026/03/storage2-703x1024.jpg 703w, https://s-pro4.com/wp-content/uploads/2026/03/storage2-206x300.jpg 206w, https://s-pro4.com/wp-content/uploads/2026/03/storage2.jpg 713w" sizes="(max-width: 703px) 100vw, 703px" /></figure>



<p>大雑把には、音声が多いとか、メールが多いとか、写真が多いとか「あたり」はつけられそう。<br>でも、細かいことまではわからない。</p>



<p>そこで今回使ってみたのが、GrandPerspectiveというアプリケーション。</p>



<p>四角形でツリーマップを表示するとのこと。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="602" src="https://s-pro4.com/wp-content/uploads/2026/03/storage3-1024x602.jpg" alt="" class="wp-image-1248" srcset="https://s-pro4.com/wp-content/uploads/2026/03/storage3-1024x602.jpg 1024w, https://s-pro4.com/wp-content/uploads/2026/03/storage3-300x176.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/03/storage3-768x451.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/03/storage3.jpg 1167w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>半導体の設計図みたいなビジュアル。<br>大きな四角に注目すれば大きなファイルがわかる。</p>



<p>たとえば、中央下の位置大きな四角を選択してみると、</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="722" height="241" src="https://s-pro4.com/wp-content/uploads/2026/03/storage4.jpg" alt="" class="wp-image-1249" srcset="https://s-pro4.com/wp-content/uploads/2026/03/storage4.jpg 722w, https://s-pro4.com/wp-content/uploads/2026/03/storage4-300x100.jpg 300w" sizes="(max-width: 722px) 100vw, 722px" /></figure>



<p>これについては、ParallelsのWindows 11領域と分かった。これは消せないが、こんな感じで大きい四角を探しながら潰していく。</p>



<p>これも、右側の大きめなのを選んでみると、</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="246" src="https://s-pro4.com/wp-content/uploads/2026/03/storage5-1024x246.jpg" alt="" class="wp-image-1250" srcset="https://s-pro4.com/wp-content/uploads/2026/03/storage5-1024x246.jpg 1024w, https://s-pro4.com/wp-content/uploads/2026/03/storage5-300x72.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/03/storage5-768x185.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/03/storage5.jpg 1168w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>これがFinal Cut Pro.appだとわかる。</p>



<p>上部のMove focus upボタンを一度押すと、一つ上の階層、今回だと /Applications/ の範囲へ移動して分析できる。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="245" src="https://s-pro4.com/wp-content/uploads/2026/03/storage6-1024x245.jpg" alt="" class="wp-image-1251" srcset="https://s-pro4.com/wp-content/uploads/2026/03/storage6-1024x245.jpg 1024w, https://s-pro4.com/wp-content/uploads/2026/03/storage6-300x72.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/03/storage6-768x184.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/03/storage6.jpg 1168w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>アプリケーションの下には、他にもなかなか大きいアプリがあることがわかる。消せるか消せないかは状況次第だが、こんな感じで追っていく。</p>



<p>ひとつ気になるのは、このアプリ GrandPerspective は、ファイルサイズの大きなもの、アプリケーションのようなパッケージとして大きなものは探しやすいが、小さなファイルが沢山集まったフォルダを探すとかは少し難しい。</p>



<p>それでも、十分に便利なツールだとわかる。<br>上部のZoom、Facusで階層を変えつつ、RevealボタンでFinderを立ち上げることも可能。<br>なかなかおもしろいツールだ。</p>



<p>最終的にはかなり使用容量を減らせた。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="712" height="963" src="https://s-pro4.com/wp-content/uploads/2026/03/storage7.jpg" alt="" class="wp-image-1254" srcset="https://s-pro4.com/wp-content/uploads/2026/03/storage7.jpg 712w, https://s-pro4.com/wp-content/uploads/2026/03/storage7-222x300.jpg 222w" sizes="(max-width: 712px) 100vw, 712px" /></figure>



<p>ディスクユーティリティの容量とかなり差分があるようだ。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="821" height="469" src="https://s-pro4.com/wp-content/uploads/2026/03/storage8.jpg" alt="" class="wp-image-1255" srcset="https://s-pro4.com/wp-content/uploads/2026/03/storage8.jpg 821w, https://s-pro4.com/wp-content/uploads/2026/03/storage8-300x171.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/03/storage8-768x439.jpg 768w" sizes="(max-width: 821px) 100vw, 821px" /></figure>



<p><br>これはなぜかわからない。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>macOSのアップデート後ログインができなくなる</title>
		<link>https://s-pro4.com/page-1224.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Sun, 22 Feb 2026 11:34:24 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=1224</guid>

					<description><![CDATA[macOS Sequoia 15.7.4へアップデートした後、ログインパスワード入力後にクルクルしたまま進まなくなった。 10分程度経っても変わらず、しまいにはクルクルもしなくなり、ただ日時とユーザアイコンが表示している [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>macOS Sequoia 15.7.4へアップデートした後、ログインパスワード入力後にクルクルしたまま進まなくなった。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0526-1024x768.jpg" alt="" class="wp-image-1225" srcset="https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0526-1024x768.jpg 1024w, https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0526-300x225.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0526-768x576.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0526.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>10分程度経っても変わらず、しまいにはクルクルもしなくなり、ただ日時とユーザアイコンが表示しているだけになってしまった。<br>電源長押しで強制終了から再起動をしても残念ながら変わらず。</p>



<p>ログイン直後に実行される「何か」が邪魔しているのだろうと想像。おそらくESETではないかと。<br></p>



<p>セーフモードで起動する。</p>



<p>Macbook Proの場合、電源が完全に落ちた状態から、電源ボタンを長押しする。<br>「起動オプションを読み込み中」に変わるまで押し続ける。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0524-1024x768.jpg" alt="" class="wp-image-1226" srcset="https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0524-1024x768.jpg 1024w, https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0524-300x225.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0524-768x576.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0524.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Macintosh HDかオプションを選ぶ画面で、Macintosh HDを選択し、Shiftキーを押しながら「セーフモードで続ける」をクリックする。</p>



<p></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0525-1024x768.jpg" alt="" class="wp-image-1227" srcset="https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0525-1024x768.jpg 1024w, https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0525-300x225.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0525-768x576.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/02/th_IMG_0525.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>ログイン画面に来たときに、右上に「セーフブート」と表示されていれば成功。</p>



<p>今度はログインできた。</p>



<p>疑って申し訳ないが、ESET Cyber Securityをアンインストールしてみる。アンインストールにはWebサイトからインストーラーをダウンロードしなければならない。</p>



<p>インストーラーecs_setup.dmgをクリックしてマウントし、</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="634" height="427" src="https://s-pro4.com/wp-content/uploads/2026/02/eset1.jpg" alt="" class="wp-image-1228" srcset="https://s-pro4.com/wp-content/uploads/2026/02/eset1.jpg 634w, https://s-pro4.com/wp-content/uploads/2026/02/eset1-300x202.jpg 300w" sizes="(max-width: 634px) 100vw, 634px" /></figure>



<p>Uninstallerを実行する。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="728" src="https://s-pro4.com/wp-content/uploads/2026/02/eset2-1024x728.jpg" alt="" class="wp-image-1229" srcset="https://s-pro4.com/wp-content/uploads/2026/02/eset2-1024x728.jpg 1024w, https://s-pro4.com/wp-content/uploads/2026/02/eset2-300x213.jpg 300w, https://s-pro4.com/wp-content/uploads/2026/02/eset2-768x546.jpg 768w, https://s-pro4.com/wp-content/uploads/2026/02/eset2.jpg 1238w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>「サービスの停止中」から全く進まなくなる。30分くらいは待ったかな。セーフモードだとアンインストールができないのかも。<br>あきらめて✕で閉じて、Macを再起動する。</p>



<p>通常モードで起動したが、今度は問題なくユーザーログインができた。よって、ウイルス対策ソフトESETが犯人であったと確定する。</p>



<p>ESETをアンインストールしてからOSアップデートに臨むべきだったか。</p>



<p>さて、セーフモードでアンインストールが途中で止まったため、通常モードでアンインストールを行い今度は成功。<br>再度ESET Cyber Securityをインストールして問題なく動いている模様。</p>



<p>あとはSequoia最新版の不具合にあたらなければよいが。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Macのターミナルでネットワーク情報を一括で取得したい</title>
		<link>https://s-pro4.com/page-949.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Fri, 25 Apr 2025 04:54:28 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=949</guid>

					<description><![CDATA[Windowsのコマンドプロンプトでは、ipconfig /all あたりで、IPアドレス、デフォルトゲートウェイ、DNSサーバを全て確認することができる。 これは便利。 Macでは ifconfigをよく使っていて、  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Windowsのコマンドプロンプトでは、ipconfig /all あたりで、IPアドレス、デフォルトゲートウェイ、DNSサーバを全て確認することができる。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="873" height="372" src="https://s-pro4.com/wp-content/uploads/2025/04/ipconfig.jpg" alt="" class="wp-image-950" srcset="https://s-pro4.com/wp-content/uploads/2025/04/ipconfig.jpg 873w, https://s-pro4.com/wp-content/uploads/2025/04/ipconfig-300x128.jpg 300w, https://s-pro4.com/wp-content/uploads/2025/04/ipconfig-768x327.jpg 768w" sizes="(max-width: 873px) 100vw, 873px" /></figure>



<p>これは便利。</p>



<p>Macでは ifconfigをよく使っていて、 IPアドレスは出るものの、デフォルトゲートウェイとDNSサーバが出ずに不便に感じていた。</p>



<p>ChatGPT先生に聞きながらスクリプト化してみた。</p>



<pre class="wp-block-code"><code>#!/bin/bash

# インターフェース指定（引数がなければ en0）
IFACE=${1:-en0}

echo "=== ネットワーク情報 for $IFACE ==="

# IPアドレス取得
echo "--- IP アドレス ---"
ipconfig getifaddr "$IFACE"

# デフォルトゲートウェイ取得
echo "--- デフォルトゲートウェイ ---"
route get default | grep 'gateway'

# DNSサーバー取得
echo "--- DNS サーバー ---"
# 重複表示される
#scutil --dns | awk '/nameserver/ {print $0}'
# IPだけにするのと、重複させない
scutil --dns | awk '/nameserver/ {print $NF}' | sort | uniq</code></pre>



<p>出力結果は画像で。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="241" height="164" src="https://s-pro4.com/wp-content/uploads/2025/04/ipconfig3.jpg" alt="" class="wp-image-955"/></figure>



<p>スクリプトのポイントは実行時引数にインターフェースを指定できること。<br>指定しないときのデフォルトはen0。</p>



<p>DNSサーバの標準では、下記のように出る。</p>



<pre class="wp-block-code"><code>resolver #1
  nameserver&#091;0] : 2404:1a8:7f01:b::3
  nameserver&#091;1] : 2404:1a8:7f01:a::3
  nameserver&#091;2] : 192.168.100.1
  if_index : 14 (en0)
  flags    : Scoped, Request A records, Request AAAA records
  reach    : 0x00000002 (Reachable)
</code></pre>



<p>nameserver[2] みたいな項目名部分を省くために awk を使用し、リゾルバ毎に複数出るのをsort | uniq で重複を除去している。</p>



<p></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>サブフォルダを含めて複数のテキストファイル内を文字列置換したい。一括で。<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>findでファイルを抽出してsedにわたす。</p>



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



<p>遅くても便利なら使うのだ。</p>



<p>さて、"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>これは、Gnu版のsedを使用する例<br>sed --version<br>sed (GNU sed) 4.2.2</p>



<p></p>



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



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



<p>Macでは、下記のコマンドになる。</p>



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



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



<p></p>



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



<p>{% 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>下記のようなワンライナーで処理。</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></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>Python、Flask関係で過去に記事を書いた。</p>



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



<p>まずはダウンロードする。<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>インストーラーから特に問題なくインストールを進める。</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>アプリケーションフォルダにAnaconda-Navigator.app（のエイリアス）が追加される。<br>実体は /opt/anaconda3 下だった。</p>



<p>ナビゲータを起動する。</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>Windowsで見ていた画面とほぼ変わらない。</p>



<p>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>flask_workという名前で作成した結果。</p>



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



<p>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>結果、依存関係を考慮され関係するライブラリを含めて 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>Anaconda Navigator上でも、再読み込みした後に、flaskがインストールされたことが確認できた。</p>



<p>さて、インストールフォルダを確認してみると、</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>/opt/anaconda3/envs 以下に作成した仮想環境名のフォルダができていることがわかる。</p>



<p>環境構築ばかりやって、開発になかなか手をつけずにいる。</p>



<p>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>デフォルトでanaconda設定が読み込まれ、プロンプトが変わってしまう。<br>ここは要注意。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>M1 MacのParallels Desktop for MacにWindows 11をインストールする</title>
		<link>https://s-pro4.com/page-747.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Wed, 17 Jul 2024 11:47:14 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=747</guid>

					<description><![CDATA[インストールしていたWindows 11にて、タスクバーに何も表示されなくなり操作不能になってしまった。 一度削除をして再インストールする。 新規作成画面で、「Microsoft からWindows 11を入手」をクリッ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>インストールしていたWindows 11にて、タスクバーに何も表示されなくなり操作不能になってしまった。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="43" src="https://s-pro4.com/wp-content/uploads/2024/07/Parallels-1024x43.jpg" alt="" class="wp-image-748" style="width:761px;height:auto" srcset="https://s-pro4.com/wp-content/uploads/2024/07/Parallels-1024x43.jpg 1024w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels-300x12.jpg 300w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels-768x32.jpg 768w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels-1536x64.jpg 1536w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels.jpg 1753w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>一度削除をして再インストールする。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="867" height="576" src="https://s-pro4.com/wp-content/uploads/2024/07/Parallels2.jpg" alt="" class="wp-image-749" srcset="https://s-pro4.com/wp-content/uploads/2024/07/Parallels2.jpg 867w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels2-300x199.jpg 300w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels2-768x510.jpg 768w" sizes="(max-width: 867px) 100vw, 867px" /></figure>



<p>新規作成画面で、「Microsoft からWindows 11を入手」をクリックする。前回インストールしたときこんなに簡単だったかな？<br>これなら楽そう。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="868" height="577" src="https://s-pro4.com/wp-content/uploads/2024/07/Parallels3.jpg" alt="" class="wp-image-750" srcset="https://s-pro4.com/wp-content/uploads/2024/07/Parallels3.jpg 868w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels3-300x199.jpg 300w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels3-768x511.jpg 768w" sizes="(max-width: 868px) 100vw, 868px" /></figure>



<p>Windowsのインストールをクリックして進める。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="872" height="580" src="https://s-pro4.com/wp-content/uploads/2024/07/Parallels4.jpg" alt="" class="wp-image-751" srcset="https://s-pro4.com/wp-content/uploads/2024/07/Parallels4.jpg 872w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels4-300x200.jpg 300w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels4-768x511.jpg 768w" sizes="(max-width: 872px) 100vw, 872px" /></figure>



<p>進行中。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="868" height="578" src="https://s-pro4.com/wp-content/uploads/2024/07/Parallels5.jpg" alt="" class="wp-image-752" srcset="https://s-pro4.com/wp-content/uploads/2024/07/Parallels5.jpg 868w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels5-300x200.jpg 300w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels5-768x511.jpg 768w" sizes="(max-width: 868px) 100vw, 868px" /></figure>



<p>10分程度でインストールが完了。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1019" height="796" src="https://s-pro4.com/wp-content/uploads/2024/07/Parallels6.jpg" alt="" class="wp-image-753" srcset="https://s-pro4.com/wp-content/uploads/2024/07/Parallels6.jpg 1019w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels6-300x234.jpg 300w, https://s-pro4.com/wp-content/uploads/2024/07/Parallels6-768x600.jpg 768w" sizes="(max-width: 1019px) 100vw, 1019px" /></figure>



<p>使用許諾に同意する。</p>



<p>以後、Windowsのプロダクトキーを入力。<br>なんか、あっさりと終わってしまった。</p>



<p>その他、Parallelsの設定を少しカスタマイズして完了。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MacにSQLiteをインストールする</title>
		<link>https://s-pro4.com/page-735.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Wed, 03 Jul 2024 03:40:57 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[web技術]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=735</guid>

					<description><![CDATA[whichしてみると、一応/usr/bin に3.43.2が入っていた。 Homebrewでインストールしてみる。 brew install sqlite 無事にインストールは完了。 インストールされたパスは /opt/ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>whichしてみると、一応/usr/bin に3.43.2が入っていた。</p>



<pre class="wp-block-code"><code>which sqlite3
/usr/bin/sqlite3

sqlite3 --version
3.43.2 2023-10-10 13:08:14 1b37c146ee9ebb7acd0160c0ab1fd11017a419fa8a3187386ed8cb32b709aapl (64-bit)</code></pre>



<p>Homebrewでインストールしてみる。</p>



<p>brew install sqlite</p>



<p>無事にインストールは完了。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="718" height="77" src="https://s-pro4.com/wp-content/uploads/2024/07/sqlite.jpg" alt="" class="wp-image-736" srcset="https://s-pro4.com/wp-content/uploads/2024/07/sqlite.jpg 718w, https://s-pro4.com/wp-content/uploads/2024/07/sqlite-300x32.jpg 300w" sizes="(max-width: 718px) 100vw, 718px" /></figure>



<p>インストールされたパスは /opt/homebrew/Cellar/sqlite/3.46.0/bin/sqlite3</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="415" height="121" src="https://s-pro4.com/wp-content/uploads/2024/07/sqlite2.jpg" alt="" class="wp-image-737" srcset="https://s-pro4.com/wp-content/uploads/2024/07/sqlite2.jpg 415w, https://s-pro4.com/wp-content/uploads/2024/07/sqlite2-300x87.jpg 300w" sizes="(max-width: 415px) 100vw, 415px" /></figure>



<p><br>そのシンボリックリンクは、/opt/homebrew/opt/sqlite に設置されていたが、リンク先は古いバージョンのまま。</p>



<p>brew link sqlite3 --force<br>でリンクを変更する。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="571" height="32" src="https://s-pro4.com/wp-content/uploads/2024/07/sqlite3.jpg" alt="" class="wp-image-738" srcset="https://s-pro4.com/wp-content/uploads/2024/07/sqlite3.jpg 571w, https://s-pro4.com/wp-content/uploads/2024/07/sqlite3-300x17.jpg 300w" sizes="(max-width: 571px) 100vw, 571px" /></figure>



<p><br>しかし、/usr/bin/sqlite3 が先にパスにいる以上は、フルパスで実行しない限りは新しく入れたsqlite3を使えない。<br>実際、brew link sqlite3 --force を実行したあと、親切なコメントが。</p>



<pre class="wp-block-code"><code>Linking /opt/homebrew/Cellar/sqlite/3.46.0... 8 symlinks created.

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/opt/homebrew/opt/sqlite/bin:$PATH"' &gt;&gt; ~/.profile
</code></pre>



<p>「環境変数のPATHに追加しなさいよ」と教えてくれている。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="710" height="32" src="https://s-pro4.com/wp-content/uploads/2024/07/sqlite4.jpg" alt="" class="wp-image-739" style="width:692px;height:auto" srcset="https://s-pro4.com/wp-content/uploads/2024/07/sqlite4.jpg 710w, https://s-pro4.com/wp-content/uploads/2024/07/sqlite4-300x14.jpg 300w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<p>ついでにこのあと使うかもしれない、sqldiffとsqlite3_analyzerをインストールするため、パッケージ名を検索する。検索は brew -S パッケージ名の一部<br>その前に、さっきやっておけばよかったのだが brew 自身をアップデートする。</p>



<pre class="wp-block-code"><code>brew update
brew -S sqlite
brew -S sqldiff</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="736" height="419" src="https://s-pro4.com/wp-content/uploads/2024/07/sqlite5.jpg" alt="" class="wp-image-742" srcset="https://s-pro4.com/wp-content/uploads/2024/07/sqlite5.jpg 736w, https://s-pro4.com/wp-content/uploads/2024/07/sqlite5-300x171.jpg 300w" sizes="(max-width: 736px) 100vw, 736px" /></figure>



<p>パッケージ名がわかったのでそれぞれインストールする。</p>



<pre class="wp-block-code"><code>brew install sqlite-analyzer
brew install sqldiff</code></pre>



<p>インストール先はどちらも、/opt/homebrew/bin/ だった。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="339" height="64" src="https://s-pro4.com/wp-content/uploads/2024/07/sqlite6.jpg" alt="" class="wp-image-743" srcset="https://s-pro4.com/wp-content/uploads/2024/07/sqlite6.jpg 339w, https://s-pro4.com/wp-content/uploads/2024/07/sqlite6-300x57.jpg 300w" sizes="(max-width: 339px) 100vw, 339px" /></figure>



<p>で、改めて、/opt/homebrew/bin/ を見てみると、sqlite3もそこにシンボリックリンクがある。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="76" src="https://s-pro4.com/wp-content/uploads/2024/07/sqlite7.jpg" alt="" class="wp-image-744" srcset="https://s-pro4.com/wp-content/uploads/2024/07/sqlite7.jpg 800w, https://s-pro4.com/wp-content/uploads/2024/07/sqlite7-300x29.jpg 300w, https://s-pro4.com/wp-content/uploads/2024/07/sqlite7-768x73.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>さっきの、パスの話は、/opt/homebrew/opt/sqlite/bin とかではなくて、<br>/opt/homebrew/bin にさえパスを通して置けば、パッケージ個別にやる必要はないのでは？ という考えもある。</p>



<p>これにて完了。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MacにPythonのフレームワーク Flaskをインストールする。</title>
		<link>https://s-pro4.com/page-726.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Sun, 23 Jun 2024 15:44:55 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=726</guid>

					<description><![CDATA[参考ページhttps://qiita.com/outsider-kithy/items/9b706a2092538474e5e6 ほぼ、参考ページの通りに実施でインストールとWebページでの表示確認ができた。 プロジェク [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>参考ページ<br><a href="https://qiita.com/outsider-kithy/items/9b706a2092538474e5e6" target="_blank" rel="noreferrer noopener">https://qiita.com/outsider-kithy/items/9b706a2092538474e5e6</a></p>



<p>ほぼ、参考ページの通りに実施でインストールとWebページでの表示確認ができた。</p>



<p>プロジェクト用にディレクトリ作成<br>mkdir test<br>cd test</p>



<p>仮想環境venvを作成<br>python3 -m venv venv</p>



<p>仮想環境の設定ファイルを読み込み<br>source venv/bin/activate</p>



<p>ここまで実施すると、プロンプトの頭に (venv) と付く。<br>元のプロンプトが<br>&lt;hostname&gt; $<br>だとすると<br>(venv) &lt;hostname&gt; $<br>のような感じ。</p>



<p>仮想環境下でflaskをインストールする。<br>(venv) $ pip install flask</p>



<p>パッケージ一覧<br>(venv) $ pip list</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="153" height="160" src="https://s-pro4.com/wp-content/uploads/2024/06/flask3.jpg" alt="" class="wp-image-727"/></figure>



<p>ここで、おやっと思う。Flaskをインストールする前に、Pythonはインストールしていたわけで、そのときの pip list と結果が違ったので。</p>



<p>ここでコマンドのパスを確認<br>(venv) $ which pip<br>&lt;パス&gt;/test/venv/bin/pip</p>



<p>(venv) $ which python<br>&lt;パス&gt;/test/venv/bin/python</p>



<p>(venv) $ python --version<br>Python 3.12.4</p>



<p>ということで、Flaskをインストールしたら仮想環境のディレクトリ下にpython もインストールされるということらしい。<br>この前までに、Macにpythonを単独でインストールしてきたが、Flaskを使う前提ならば必要なかったのかもしれない。</p>



<p>アプリケーションファイルを test.py として下記の内容で作成する。</p>



<pre class="wp-block-code has-background" style="background-color:#cccccc"><code>import sys

from flask import Flask,request

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello, World"

if __name__=="__main__":
    app.run()
</code></pre>



<p>環境設定用のドットファイルと使えるようパッケージをインストールする。<br>(venv) $ pip install python-dotenv</p>



<p>testディレクトリ下に .envを作成し、下記の環境変数を定義する。<br>FLASK_APP=test.py<br>FLASK_DEBUG=1<br></p>



<p>※2024.7.2訂正<br>※デバッグモードの設定に下記を使うのは、flask 2.2までとのこと。<br>FLASK_ENV=development</p>



<p>アプリケーションを実行<br>(venv) $ flask run</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="851" height="123" src="https://s-pro4.com/wp-content/uploads/2024/06/flask.jpg" alt="" class="wp-image-729" srcset="https://s-pro4.com/wp-content/uploads/2024/06/flask.jpg 851w, https://s-pro4.com/wp-content/uploads/2024/06/flask-300x43.jpg 300w, https://s-pro4.com/wp-content/uploads/2024/06/flask-768x111.jpg 768w" sizes="(max-width: 851px) 100vw, 851px" /></figure>



<p>http://127.0.0.1:5000<br>へアクセスできるということで。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="394" height="92" src="https://s-pro4.com/wp-content/uploads/2024/06/flask2.jpg" alt="" class="wp-image-730" srcset="https://s-pro4.com/wp-content/uploads/2024/06/flask2.jpg 394w, https://s-pro4.com/wp-content/uploads/2024/06/flask2-300x70.jpg 300w" sizes="(max-width: 394px) 100vw, 394px" /></figure>



<p>結局のところ、Flaskをインストールすると Webサービスもインストールされるということか。Flaskはフレームワークであり開発環境であるということかな。<br>Pythonだけではなく、MAMPもインストールは要らなかったかも。</p>



<p>コードの意味をまだ理解していない。まだまだ先は長い。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MAMPでPython3を使用する</title>
		<link>https://s-pro4.com/page-719.html</link>
		
		<dc:creator><![CDATA[stakaha]]></dc:creator>
		<pubDate>Sat, 22 Jun 2024 18:26:48 +0000</pubDate>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://s-pro4.com/?p=719</guid>

					<description><![CDATA[MAMPとPythonに苦戦中。 前回の記事で、MAMPのphthonを使った方が良さそうと書いた。コードの先頭行は#!/usr/bin/env python3ではなく、#!/usr/bin/env /Applicati [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>MAMPとPythonに苦戦中。</p>



<p>前回の記事で、MAMPのphthonを使った方が良さそうと書いた。<br>コードの先頭行は<br>#!/usr/bin/env python3<br>ではなく、<br>#!/usr/bin/env /Applications/MAMP/Library/bin/python<br>にした方が良いと。<br>MAMPに同梱された /Applications/MAMP/Library/bin/python はバージョン 2.7だった。</p>



<p>#!/usr/bin/env /Users/ユーザ名/.pyenv/shims/python3<br>として、Pythonバージョン3を使うために、チャレンジする。<br>MAMPが示すコード例(Examples)は下記。</p>



<pre class="wp-block-code has-background" style="background-color:#cccccc"><code>import mysql.connector

config = {
  'user': 'root',
  'password': 'root',
  'host': 'localhost',
  'unix_socket': '/Applications/MAMP/tmp/mysql/mysql.sock',
  'database': 'test',
  'raise_on_warnings': True
}

cnx = mysql.connector.connect(**config)

cursor = cnx.cursor(dictionary=True)

cursor.execute('SELECT `id`, `name` FROM `test`')

results = cursor.fetchall()

for row in results:
  id = row&#091;'id']
  title = row&#091;'name']
  print '%s | %s' % (id, title)

cnx.close()</code></pre>



<p>テーブル名は test ではなく table1として作成しているのでそこは変えるとして、printの行で SyntaxError: invalid syntax: が出た。</p>



<p>Pythonバージョン2では、<br>print "Hello"<br>で良かったものが、Pythonバージョン3では、カッコをつけないとダメになったようだ。<br>print("Hello")</p>



<p>よって、コードを書き換えることで、このエラーは消えた。<br>print '%s | %s' % (id, title)<br>↓<br>print('%s | %s' % (id, title))</p>



<p></p>



<p>次のエラーは<br>import mysql.connector: /Applications/MAMP/htdocs/mysql_brew.py<br>ModuleNotFoundError: No module named 'mysql': /Applications/MAMP/htdocs/mysql_brew.py</p>



<p>ライブラリのmysqlがないと思われる。</p>



<p>$ pip3 list<br>で、インストール済みのパッケージ一覧を確認。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="220" height="360" src="https://s-pro4.com/wp-content/uploads/2024/06/python3-1-1.jpg" alt="" class="wp-image-721" srcset="https://s-pro4.com/wp-content/uploads/2024/06/python3-1-1.jpg 220w, https://s-pro4.com/wp-content/uploads/2024/06/python3-1-1-183x300.jpg 183w" sizes="(max-width: 220px) 100vw, 220px" /></figure>



<p>pipはPythonのパッケージ管理ソフトらしい。</p>



<p>$ pip3 search mysql<br>で検索を試みるが、<br>RuntimeError: PyPI no longer supports 'pip search' (or XML-RPC search). Please use https://pypi.org/search (via a browser) instead.</p>



<p>searchは使えないんですって。</p>



<p>https://pypi.org/search で検索。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="665" src="https://s-pro4.com/wp-content/uploads/2024/06/python3-3-1024x665.jpg" alt="" class="wp-image-723" srcset="https://s-pro4.com/wp-content/uploads/2024/06/python3-3-1024x665.jpg 1024w, https://s-pro4.com/wp-content/uploads/2024/06/python3-3-300x195.jpg 300w, https://s-pro4.com/wp-content/uploads/2024/06/python3-3-768x499.jpg 768w, https://s-pro4.com/wp-content/uploads/2024/06/python3-3.jpg 1206w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>たくさん出てきてどれかわからないが、入れてみる</p>



<p>$ pip3 install mysql-connector</p>



<p>エラーがなくなった。</p>



<p>なんとか、MAMPでPython3が使えるようになった。</p>



<p>ちなみに、コード内でPythonバージョンを表示する方法は、</p>



<pre class="wp-block-code"><code>import sys

print("Content-Type: text/html\n\n")

print(sys.version)
print("&lt;br>")</code></pre>



<p></p>



<p>そして、前回出ていたレコード内に日本語が混じっていたときのエラー UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position xxx は出なくなった。Python バージョン3では解消したようだ。<br>ただし、文字コードをきちんとしないとブラウザ上では文字化けしたため、ちゃんとhtmlにしてみた。<br>最終的には、下記のコードとした。Hello Worldは関係ないけど。</p>



<pre class="wp-block-code has-background" style="background-color:#cccccc"><code>#!/usr/bin/env /Users/ユーザ名/.pyenv/shims/python3

import sys

print("Content-Type: text/html\n\n")

print("&lt;html>")
print("&lt;head>")
print("&lt;meta charset=\"utf-8\">")
print("&lt;title>Hello World&lt;/title>")
print("&lt;/head>")
print("&lt;body>")
print("&lt;h1>Hello World!&lt;/h1>")

print(sys.version)
print("&lt;br>")

import mysql.connector

config = {
  'user': 'root',
  'password': 'root',
  'host': 'localhost',
  'unix_socket': '/Applications/MAMP/tmp/mysql/mysql.sock',
  'database': 'test',
  'raise_on_warnings': True
}

cnx = mysql.connector.connect(**config)

cursor = cnx.cursor(dictionary=True)

cursor.execute('SELECT `id`, `name` FROM `table1`')

results = cursor.fetchall()

for row in results:
  id = row&#091;'id']
  title = row&#091;'name']
  print('%s | %s' % (id, title))

cnx.close()

print("&lt;/body>")
print("&lt;/html>")
</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="588" height="139" src="https://s-pro4.com/wp-content/uploads/2024/06/python3-4.jpg" alt="" class="wp-image-724" srcset="https://s-pro4.com/wp-content/uploads/2024/06/python3-4.jpg 588w, https://s-pro4.com/wp-content/uploads/2024/06/python3-4-300x71.jpg 300w" sizes="(max-width: 588px) 100vw, 588px" /></figure>



<p>まだまだ、色々と問題がありそうだなー。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
