macでFLACも音量調整したい?-その2

◯foobar2000 for mac

2017年の夏ころに「macでFLACも音量調整したい?」というエントリを書き、“foobar2000にmac版があれば…”といったことを書いたのですが、2019年の今頃なんとなく“foobar2000 for mac”でGoogle検索をかけたら、なんとあるではないですか!

<https://www.foobar2000.org/mac>

まだ機能面では十分な実装ではないようなのですが、私にとっては‘ReplayGain’のスキャンと適用ができるのであれば十分です。
相変わらず、macをプレイヤーにもレンダラーにもするつもりはなく、iTunesもaudirvanaも使うつもりはさらさら無いので…。

現時点で、バージョンはv.2.15x、対応OSは“Mac OS 10.9 “Mavericks” or newer”となっています。

◯余談 – MinimServerでOpenHome

これまでは、Android端末にMicroSDカードを挿して、その中にmusicディレクトリを作成し、ソースファイルをせっせとコピーし、Wi-Fi接続のAndroid端末をレンダラーにしてDAC経由でデジタルアンプへ、あるいはDAC内臓のBlueToothレシーバー経由でデジタルアンプへというlineで音を出していたのですが、ネットワークボリューム上の500GBくらいのメインライブラリーからMicroSDカードの限られた容量にコピーするのが面倒になってきたので、ネットワークボリューム上のメインライブラリーからダイレクトにAndroid端末にサーブできないかと色々と試行錯誤していたのですが、OpenHome対応のMinimServer<https://minimserver.com>を試してみたところ、あっさりと問題は解決してしまったという次第です。
foobar2000 for macを見つけるまでは、500GB超えのライブラリをVM上のWindows版のfoobar2000で‘ReplayGain’スキャンをすることに躊躇いがあったのですが、foobar2000 for macを手に入れたことをきっかけに、オリジナルのライブラリーをきっちりバックアップしておいて、‘ReplayGain’スキャンをすることにしました。いやいや、30,000を超えるトラックのスキャンは結構時間がかかりました。
メディアサーバー機能付きを謳った大層なNASやサーバー専用機などを導入しなくても、ローカル(あるいはネットワーク
)ボリューム内のmusicファイルの保存ディレクトリをそのままライブラリーに指定して、MinimServerを立ち上げるだけでネットワークオーディオサーバーとして機能するというのは極めてシンプルで良いです。

自宅サーバーのメールサーバーをMailServeからSurgeMailに変更しました – 2

●そしてSurgeMail<http://netwinsite.com>

アップルが、将来的にMacOS Serverから排除する機能の一つとしてメールサービスを挙げてアナウンスがされたのが、2018年初頭でした(ここの記事が比較的分かりやすいでしょう<https://jp.tidbits.com/TidBITS-jp-1402.html#lnk2>)。同じようなタイミングでMailServeの代替えを探していたのですが、アップルが推奨として挙げているリスト<https://support.apple.com/en-us/HT208312>を見ると、推奨されているKerioConnect<https://www.gfi.com/sites/KerioConnect/Website/land/apple-mail-server>はグループウェアの一部のようですし、Courier Mail Server<https://www.courier-mta.org>はドキュメントを読んでも漠然とした構造のイメージしか掴めず、マニュアルでPostfix、Dovecotをセットアップするしかないかなあと思っていたところ、SurgeMail<http://netwinsite.com>に行き当たった訳です。
ドキュメントを読んでいて何となくいけそうな気がしてきた頃、プライスページ<https://netwinsite.com/surgemail/pricing.htm>で、10ユーザで200ドルという値段を見て諦めかけたのですが、5ユーザまでは0ドルとあるではないですか。ダメ元で行ってみようと、ダウンロードページへ進んだ訳です。

●SurgeMailのインストール

ダウンロードはこのページから<https://netwinsite.com/cgi-bin/keycgi.exe?cmd=download&product=surgemail&>。
拡張子が「.tar.gz」のアーカイブがダウンロードされますので、それをインストールするマシンの任意のディレクトリ(デスクトップかホームあたり)に展開すれば、「mtemp」というフォルダができますので、そこからインストールに移ります。
インストールは、「mtemp」というフォルダ内の「install.sh」というコマンドファイルを実行するだけです。
以下がその際のコマンド履歴です。

macbook:~ hoge$ cd /Users/hoge/Desktop/mtemp 
macbook:mtemp hoge$ sudo ./install.sh
Password:
OSX: Trying install as user (daemon)
SurgeMail 7.3o4-4
Checking existing servers disabled...
Checking port 110
Checking port 25
Creating directories
New Installation

Press &lt;Enter&gt; to accept the default values given in square brackets []

Enter installation path
[/usr/local/surgemail]?
Enter the full domain name that email will be addressed to, e.g. xxx.com for bob@xxx.com
[macbook.local]?YourHost	-- ホストのドメイン名を設定
Enter the actual host name, normally this will match your mail address [e.g. xxx.com] but might be a specific host like mail.xxx.com.
[YourHost]?YourHost
Enter the Username for web administration
[]?AdminName	-- メール管理者(Postmaster)の設定
Enter the Password for web administration
[]?********
Re-Enter Password
[]?********
Enter email address for management emails &amp; alerts
[AdminName@YourHost]?AdminName@YourHost
Setting admin details
Already have owner of (/usr/local/surgemail) 1 1 
File ownership set to 1 1
Copying templates
Copying images
Copying help
Copying dlist
Copying exe
Copying misc
Email account (AdminName@YourHost) created
Identified OSX startup scripts...
Creating (/Library/LaunchDaemons/com.netwinsite.surgemail.plist)

Starting SurgeMail now...
Spawn (/usr/local/surgemail/surgemail_start.sh)
dns: dns_reload  Servers found from system (1.1.1.1,1.0.0.1,192.168.3.1)
Detaching swatch in master mode
Changing to run as user mail as no '-nosetuid' switch found
call do_fake_start
Startmail starting surgemail using configuration file /etc/surgemail.ini
StartMail: without ipv6 compiled
Waiting for server to respond...
Starting surgemail as uid=1 gid=1 based on /usr/local/surgemail
do_fake_start finished
dns: dns_reload  Servers found from system (1.1.1.1,1.0.0.1,192.168.3.1)
MAIL Running - Home /usr/local/surgemail - log file is /usr/local/surgemail/mail.log 
Detaching server process
Waiting for server to respond...Finished


To complete installation/configuration use a web browser
 http://YourHost:7026

Install complete
Press &lt;enter&gt; to exit

macbook:mtemp hoge$ logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

要するにこのインストール段階で、基本的な”ドメイン”設定と、Postmasterの設定がなされます。
“surgemail”のコンポーネントは“/usr/local/surgemail”ディレクトリに展開されます。
以上で、基本的な”ドメイン”設定と、Postmasterの設定は終わりましたので、以降の設定はへのアクセスによって展開されるWeb画面上で行います。

●インストール後の作業

<http://Yourhost:7026>あるいは<https://Yourhost:7025>へアクセスして、インストール時に設定したPostmasterでログインすれば、次の図の画面になります。

右のペインの一番上の「Post Installation Guide」に従って、ユーザーの追加などを行えば、メールの受信サーバーとしてはこの段階で機能するでしょう。
この段階でその他の追加設定なしでWebmail機能が動作しています。

●Global settings

メールサーバーとしての機能設定になりますが、各項目をクリックして行くと、そのパラメーターの数に、目眩がするかも知れませんが、初期設定値のままで受信サーバーとしての機能は満たしていますので、ポートや認証などでカスタマイズが必要なケース以外では初期値を変更する必要はないでしょう。

●送信メールの設定箇所

ISPのsmtp認証などを掻い潜って、自前サーバーからメールを送信するのはなかなか大変です。
そして、surgemailでどのパラメーターをカスタマイズすればいいのか、少々手こずりました。”Message Delivery”以下の項目にあるだろうとは思っていたのですが、’relay’というキーワードに引っかかると迷路に迷い込むようです。ポイントは‘Gateway’で、‘Gateway rules’へたどり着くまで手こずりました。

●Webmail port

ユーザ管理(追加と削除、転送設定など)は、次のポートから行えます。
http://Yourhost:7080 WebMail port
http://:7080/surgeweb ログインのためのアクセスポイント

https://:7443 SSL WebMail port
https://Yourhost:7443/surgeweb SSLでのログインのためのアクセスポイント

●アンインストール

“/usr/local/surgemail/surgemail -uninstall”

自宅サーバーのメールサーバーをMailServeからSurgeMailに変更しました – 1

OS X Serverという呼称からMacOS Serverへ変わる頃までは、OS X Serverの各サービスはそれなりによく纏まったパッケージだと思って使っていましたが、ちょうどその頃(MacOS 10.12の頃だったと思います)、Filemaker Serverを最優先で常駐させないといけない状況になりました。
webサービスについては、MacOS ServerとFilemaker Serverのhttpdのポートのコンフリクトを回避する方法はなくはないのですが、OSとソフトウェアのアップデートやリセットの度にやらなくてはいけない作業(plistファイルの書き換えなど)に草臥れてきて、MacOS Serverのパッケージとしての利用はやめて、サービス毎にマニュアルで設定することにしました。
OSを10.12にする際に、メールサーバーは、Cutedge System<https://cutedgesystems.com>のMailServeにして、つい最近まで使ってきました。
MailServeは下図でわかると思いますが、Postfix、Dovecotをパッケージにし、分かりやすいGUIを持ったもので、私のようなあまり高くないスキルのユーザでも、必要十分な機能をほとんど初期設定値のままでセットアップできるメールシステムです。
ほぼ不満なくSierra状で使ってきたのですが、OSをHigh Sierra(Mojaveは対象外の古いマシンなので…)に置き換えようと考えると、MailServeのライセンスのアップデートが必要になります。アップグレード料金は15ドルなので、そう高いものではないのですが、他の選択肢はないものかと浮気心が疼いたというのが今回の顛末の真因でしょう。

先ずはMailServe

実は、MailServeはLionの頃から使っていたので、以降のOSの各バージョン毎にアップグレードはして来たので、かなり長い期間使って来たことになります。
アプリケーションアイコンをダブルクリックして最初に起動した際に、“/usr/local/cutedge”ディレクトリが自動的に作成され、初期セットアップが自動的に行われます。
Postfix、Dovecotの各種設定やSMTP-Auth設定などを分かりやすいGUIで設定できますので、小規模なメールサーバーとして使うのであれば一押しのアプリケーションではあります(他に選択肢があるのかというと、難しいところなのですが…)。

 

Webファイルマネージャー – BoZon

elFinderが、そこそこのペースでバージョンを上げているというのは、開発のモチベーションが持続しているということであり、喜ばしいことです。
特定の複数のユーザを対象にサイトをオープンにする条件でelFinderを設置する場合に、頭を悩ませるのは、ユーザ管理です。
以前のエントリで、”Rumpus”<https://www.maxum.com/Rumpus/>や”CrushFTP”<https://www.crushftp.com>を検討していると書きましたが、”Rumpus”は別プロジェクトで導入済みで、割高ではありますが、ftp(s)、http(s)で運用出来ますし、ファイルのダウンロード/アップロードに際してイベント毎に通知を設定できる点が便利です。
“CrushFTP”も10年くらい前に別途な案件で使ったことがあり、機能面では遜色なかったという記憶があるので、かなり強い興味を持っています。
そんな折に知人から、PHP製のオープンソース・ソフトウェアでBoZon<https://github.com/broncowdd/BoZoN>というのが、ユーザ管理を組み込んでいて、使えると思うとメールで教えられました。
BoZonは、GNU AFFERO GENERAL PUBLIC LICENSEのオープンソース・ソフトウェアです。

○基本機能

Webファイルマネージャーのファイル共有機能としては、MOONGIFTのここ<https://www.moongift.jp/2016/04/bozon>をチェックして下さい。殆どここで基本機能・概要は分かるでしょう。
また、YouTubeにインストールの手順を解説したムービー<https://www.youtube.com/watch?v=kdHKSq9KwJA>があります。

○インストールとカスタマイズ

インストールは、httpルート内の任意のディレクトリに、ダウンロード/解凍した”BoZoN-master”フォルダの内容をそのままの配置関係で入れるだけです。
カスタマイズは、”index.php”と同じ階層にある”config.php”を改変すれば良いでしょう。とはいえ、扱えるファイルタイプについても初期値で”config.php”の51行目に’$allow_unknown_filetypes=true;’となっているので、mimeタイプを追加する必要もないでしょうし、精々、54行目の’$max_length=2048;’
の値を変える必要があるかどうかでしょうか。’$max_length=2048;’の値を変更しても効果がない場合は、環境の’php.ini’を捜して(大体’/private/etc/’以下にあるものですが)、'[post_max_size / upload_max_filesize]’の設定をチェックしてください。

○ユーザ管理機能

BoZonが他のオープンソースのWebファイルマネージャーと異なっている点は、ユーザ管理にウェイトを置いて組み込んでいる点です。

最初にディレクトリにアクセスすると、図のようにログイン画面となります。
ここで設定するユーザ/パスワードが、BoZonでの’Superadmin’の扱いになります。

‘Superadmin’でログインすると、ユーザの追加/削除が行えます。操作は、図の上のアイコンから行えます。

上の図は、’Superadmin’でログインした際の、ユーザ管理画面です。ユーザの追加は、ツールバーの別なボタンをクリックして行います。

◯特長的な機能など

下の図は、ファイルの共有リンクを取得する情報ペインですが、選択状態になっている文字列(ダウンロードリンク)をコピーしてメールなどで任意の相手に報せることで、相手はメーラー上でそのリンクをワンクリックすれば、簡単にファイルをダウンロードできます。また、この共有リンクをQRコードにする機能もあります。

ユニークな機能として、シェアリンク設定で取得したファイルのリンク情報(URL)からファイルがダウンロードされた後にそのファイルを自動的にパージする機能があることで、一回こっきりのダウンロード制限の設定ができるようになっています。設定は”Manage links”ボタンをクリックして。ファイルの右側のツールアイコンの「炎」アイコンをクリックして設定します。

「.htaccess」などで自前でアクセス制限を組み込むのではなく、BoZonに用意されたログイン機能(ユーザ管理)を利用できる点が便利です。

最後に付け加えますと、初期値のままのログイン画面では、アイコンが羅列され少し鬱陶しいのですが、作者の気持ちもわからないではないので、どうしたものかと悩みました。これは、”index.php”と同じ階層にある’~/templates/default/home.php’のhtml構文を改変することで対処できます。
なお、オフィシャルサイトと表記されている‘http://bozon.pw’がドメイン失効しているようであり、2年以上プロジェクトの更新がないようなのが気がかりではありますが、仕様として充実したプロダクトなので持続してほしいものです。

elFinderへのリンクを修正しました

過去のelFinderについてのエントリーでelFinderへのリンクとして<http://elfinder.org/>へのリンクを記載していた部分を、順次、現在有効なリンク(下に記載)へ変更して行きます。

elFinderのダウンロードは、どちらからでも可能です。

因みに、2019年7月の現時点でのバージョンは、2.1.49となっています。

BackupList+ v.8.7.0

Mojave対応で(主にアピアランス面で)、そろそろバージョンが変わるだろうなと思っていましたが、漸くv.8.7.0が出ました。
Buildが11/23日で、まだサイトへは掲載されていないようです。私は、MacUpdateのページからダウンロードしました。アプリケーション内からのアップデートはもう始まっているのではないでしょうか。

変更点は以下のようになっています。

The following changes have been made:

Updated for OS High Sierra 10.13 and 10.14 Mohave
New feature: There are now dedicated multiple backup tasks located below the usual backup task list.
New feature: There are now two buttons in the title bar, one to create new tasks and the other to show helpful tool tips.
Fixed several bugs in Mohave,
Fixed bug where scheduled backups would launch repeatedly when no destination disk was mounted.
Changed some cloning behaviors for the new apfs file system introduced in High Sierra.
Fixed bug preventing remounting of encrypted sparse images.
Latest custom build of rsync 3.1.1 optimized for OS X.

掻い摘んで書けば、外観が変更になって、グループタスクが加わり、インスタントヘルプボタンがついたよ、といったところでしょうか。
肝心のrsyncはカスタムビルドのv.3.1.1で、前バージョンからの変更はないようです。

タスク設定は、前バージョンからそのまま引き継げますから、使い勝手での変更はないといっていいでしょう。

簡易ファイルアップローダー、phpUploader

Webファイルマネージャーを探していた時には全く気がつかなかったのですが、そういえば、かつてはcgiでphpなどを使ったアップロード方式が人気があったなあと思い出し、探してみると恰好なものを見つけました。
phpUploader」というものです。
phpUploaderはオープンソース・ソフトウェア(MIT License)です。

ElFinderBoZonなどのWebファイルマネージャーのように、ブラウザ上でダイレクトにプレビューや編集ができるなどの機能は全くありませんが、Webブラウザ上でファイルのアップロード/ダウンロード、ファイルリスティングが出来るというのは簡潔で便利です。

設置例

リリース版をダウンロードします。展開したファイルの構成は以下のようになっています。

・phpUploader.v1.0:
	┕app:
		┕api:
			┝upload.php
			┝verifydelete.php
			┕verifydownload.php
		┕models:
			┝index.php
			┕init.php
		┕views:
			┝error.php
			┝footer.php
			┝header.php
			┕index.php
	┕asset:
		┕css:
			┕common.css
		┕js:
			┝common.js
			┕modal.js
	┕config:
		┕config.php
	┕delete.php
	┕download.php
	┕index.php
	┕MIT-LICENSE.txt

これらを、htmlルート以下の任意のディレクトリに配置します。

必要な環境は、以下の通りです。

・PHP Version 5.3.3+
・SQLite (PHPにバンドルされたもので可)
・apacheまたはnginxの実行環境

デフォルトファイルの拡張子でphpが指定されていれば、ディレクトリにアクセスすれば次の図のような画面が現れます。

非常に簡潔で、出来ることが一目でわかる整理された画面構成です。

上の図は、転送できるファイルサイズ、ファイルタイプを変更しています。
これらの変更は、”config/config.php”ファイルを開いてから行います。
‘max_file_size’ で、 1件あたりの最大ファイルサイズ(単位 : MByte)を指定します。初期値は”2M”です。
“config/config.php”ファイルに注意書きがありますが、php.iniファイルの”memory_limit, post_max_size, upload_max_filesize”の値以下になるように(”php.ini”ファイルの初期値は2Mとなっていることが多いです)なっている必要があります。つまり、2M以上のサイズ指定をする場合は、”php.ini”ファイルの変更も必要だということになります。
ファイルタイプの変更は、’extension’ => array(‘zip’,’rar’,’lzh’)の部分を書き換えます。

以上です。
Basic認証などの認証方式は持っていないので、.htaccessなどを用いて接続制御をはかるべきでしょう。

気が付いたこと

サーバーの 設置ディレクトリ内では、アップロードされたファイルは、サーバー上ではそのままの名前ではなくdbで管理され、連番処理されて保存されるようです。ファイルIDの連番をリセットしたい場合は、ブラウザの画面上でファイルを空にしてから、(例えばサーバーマシン側のFinderから)db格納ディレクトリの”uploader.db”ファイルを削除する方法しかないようです。

私の設置環境

macOS 10.12 Sierra上で設置してみました。PHPは5.6.xなので問題なく動作します。

私の場合、FileMaker Serverが最優先という環境であるため、アップデート時などにConfigファイルがリセットされることが嫌なので.htaccessを設定したくないという事情があって、
アカウント管理はJavaScriptを使った簡易認証もどきを使って、更に、アカウントごとにディレクトリを切り替えることにしました。
ゲートウェイとするディレクトリにログイン用のhtmlを用意して、JavaScriptで認証部分を負担し、そこからアカウントごとの別なディレクトリにリダイレクトするという方法(ここを参照しました。このやり方では、パスワード認証というよりは、アカウントごとの認証と解釈されるのではと思うのですが…)で設置してみました。
JavaScriptでのなんちゃって認証なので、無いよりはマシという程度ですが、より強固なセキュリティ対策が必要なケースでは”Rumpus”や”CrushFTP”などのエンタープライズクラスのwebファイルマネージャーを導入しようかなと思っています。

BBEdit.app Ver.12.1.5

2018年6月5日のエントリーで、BBEdit.app v.12.1.4で、日本語入力(Japanese InputMethod)で誤動作するということを記しましたが、幸いなことにv.12.1.5では改善した(?治ったというべきかな)ようです。
v.12.1.5は、2018.07.13付でリリースされています。
リリースノートにも以下の記述があります。

Fixed various misbehaviors that would occur during Japanese (and other non-roman) text entry.

BBEdit.appでハードラップを使って箇条書きの整形をしてみる

●ハードラップ(文字数を指定して強制的に改行する)

プレーンテキストで文章を作成している時に、箇条書きのパートを作ることはよくありますが、その時に文字数を決めてリバースインデントを使って2行目以下を折りたたみたいことがあります。
レイアウトソフトで整形するのであれば、原稿は未整形のままであるべきですが、受け取る側もプレーンテキストで見る場合のことです。
プレーンテキストで送信したいメールなどがこのケースでしょう。
BBEdit.appのテキスト整形能力は非常に高いので、組み込みのコマンドで”Hard Wrap…”というものを備えているのですが、日本語を対象にすると指定した文字数で折り返すのではなく、句読点などと一部の記号を折り返しのマークと認識しているようで、意図した文字数以内で折り返してしまいます。
その上で、禁則はほとんど考慮してくれないという症状です。
そこで、やはりスクリプトで対処することにしました。
折り返しの文字数は、任意に指定できます。

property cNum : "38"

tell application "BBEdit"
	activate
	if (selection of text window 1 as string) is not "" then
		display dialog "折り返しの文字数を指定してください。" default answer cNum buttons {"キャンセル", "設定"} default button 2 with title "折り返しの文字数設定" with icon note returning {text returned:theVart, button returned:theVarb}
		set cNum to theVart
		replace "([^\\n]{" & cNum & "})(?=[^\\n$]*)" using "\\1\\n" searching in the selection of text 1 of text document 1 options {search mode:grep, starting at top:true, wrap around:false, backwards:false, case sensitive:false, match words:false, extend selection:false}
	else
		display notification "文字列を選択してから実行しましょう。" with title "Notification" subtitle ""
	end if
end tell

ダイアログ内の初期値は、設定値に置き換わる(前回の設定値を保持する)仕様なので、毎回リセットしたい場合はダイアログから返される値を代入する変数の名前を変えてください。

●ハードラップをリセットする

ハードラップで強制的に整形した段落を元に戻すスクリプトです。
行頭のインデントも削除するようになっていますので、これを1回実行するだけでリセットできるでしょう。

tell application "BBEdit"
	activate
	if (selection of text window 1 as string) is not "" then
		replace "([^。.)」】])([\\r\\n]+)+([> \\s]*)" using "\\1" searching in selection of text window 1 options {search mode:grep, starting at top:false, wrap around:false, backwards:false, case sensitive:false, match words:false, extend selection:false}
	else
		display notification "文字列を選択してから実行しましょう。" with title "Notification" subtitle "" --sound name "Frog"
	end if
end tell

BBEdit.appで箇条書きのリストを作成するスクリプトとそれを削除するスクリプト

嘗てはActaなどのアウトラインプロセッサを使うことが多かったのですが、最近はほとんど手にしなくなりました。そのため、アウトライン的な表現を多用する時にはマークダウンで代用したりしているのですが、プレーンテキストでもそれなりに箇条書きのニーズはあります。
そこで、段落の頭に任意のブレットを付加するスクリプトの登場です。
段落の先頭にブレットを付加するだけですから、折り返しのインデント設定は行っていません。
(プレーンテキストだけでインデント表現をしようと思っていませんので…。要は、レイアウトソフトへ持って行ってから整形するつもりなのです)

●箇条書きのリスト表示をするスクリプト

property Bullet : "• " -- "•, ‣, ⁃, ◦" -- 任意のブレットを設定して下さい。

tell application "BBEdit"
	activate
	if (selection of text window 1 as string) is not "" then
		display dialog "箇条書きのブレットを設定して下さい。" buttons {"キャンセル", "設定"} default answer Bullet default button 2 with icon note returning {button returned:theVarb, text returned:theVart}
		if theVart is not "" then set RtndBullet to theVart
		replace "^[  \\t]*" using RtndBullet searching in selection of text window 1 options {search mode:grep, starting at top:false, wrap around:false, backwards:false, case sensitive:false, match words:false, extend selection:false}
	else
		display notification "文字列を選択してから実行しましょう。" with title "Notification" subtitle ""
	end if
end tell

(*
	初期設定の"• "を起動の度にリセットして表示するようにしていますが、前回の設定を保持したい場合は、
	RtndBulletをBulletに置き換えて下さい。

*)

初期値としてブレット設定のダイアログで、”• “としていますが、任意のキャラクタを設定できます。また、
区切りの半角スペースをタブに設定する場合は、”•\t”とすればOKです。
AppleScriptだからといって、”\\t”でダブルエスケープする必要はありません。

●段落先頭のブレットを削除するスクリプト

tell application "BBEdit"
	activate
	if (selection of text window 1 as string) is not "" then
		replace "^[\\s->•‣⁃◦・*○●]+[\\s]*" using "" searching in selection of text window 1 options {search mode:grep, starting at top:false, wrap around:false, backwards:false, case sensitive:false, match words:false, extend selection:false}
	else
		display notification "文字列を選択してから実行しましょう。" with title "Notification" subtitle ""
	end if
end tell

削除対象のブレットのキャラクタは、任意で書き換えて下さい。(適当に設定しているのですが、※がないではないかと言われそうです…)

●BBEdit.appの”Text”メニューにある”Prefix/Sufix Line…”コマンドでは

“Prefix/Sufix Line…”で”Prefix”の「Insert」を設定すれば、行頭にブレットを付加できます。
注意しなければいけないのは、段落を選択しないで実行した場合、全ての段落にブレットが適用されることで、その点だけ注意が必要です。
上記のスクリプトを書いた時点では、このメニューコマンドに気がついていなくて、気がついた時点で掲載をやめようかとも持ったのですが、まあ、これはこれで…。