一筋縄ではいきませんでした、以下記録。

Mac OS上でLinux仮想マシンを立ち上げるLimaを使ってIntel Macと同じ環境を再現するとのこと

Colimaをインストール

OracleDBはDockerで素直に起動しないらしく、Limaでつくった仮想マシンの上に、Dockerを入れるという手順を踏む必要があるそうです。
で、このLima + Dockerをやってくれるのが、これからとってくるColimaだそう。

brew install colima docker

すでにDocker Desktop(Docker for Mac)をインストールしている場合は、ここでdockerを追加する必要ありません。

とのことでしたが、のちの工程でDockerがないと怒られたので、インストールしました。

Colimaを起動

x86アーキテクチャで仮想Linuxを起動させるためにコマンドに引数を追加します。
-a x86_64 ←これです。

qemuというのが必要なようで、さらにinstallしました。
もう一度startコマンドを叩くも、guest agent binaryがないと言われたので、さらにinstallしました。

colima start --cpu 4 --memory 4 --disk 100 -a x86_64
(中略)
FATA[0002] error starting vm: error at 'creating and starting': qemu is required to emulate x86_64: qemu-img not found, run 'brew install qemu' to install 

$ brew install qemu

$ colima start --cpu 4 --memory 4 --disk 100 -a x86_64
> Starting the instance "colima" with VM driver "qemu"
> guest agent binary could not be found for Linux-x86_64 (Hint: try installing `lima-additional-guestagents` package)

$ brew install lima-additional-guestagents

$ colima start --cpu 4 --memory 4 --disk 100 -a x86_64
INFO[0000] starting colima                              
INFO[0000] runtime: docker                              
INFO[0001] starting ...                                  context=vm
INFO[0058] provisioning ...                              context=docker
INFO[0066] starting ...                                  context=docker
INFO[0073] done      

OracleDBをpullしてrunする

▼Oracle Container RegistryのExpress Edition(XE)についてのページ
https://container-registry.oracle.com/ords/f?p=113:4:9711302640523:::4:P4_REPOSITORY,AI_REPOSITORY,AI_REPOSITORY_NAME,P4_REPOSITORY_NAME,P4_EULA_ID,P4_BUSINESS_AREA_ID:803,803,Oracle%20Database%20Express%20Edition,Oracle%20Database%20Express%20Edition,1,0&cs=3RG1iqhi24GeHv63Xci_0QtldNIdv98MF4IGSxJVmamGbQMC4cUQxbtSnq1nrlqedW7_aGNdsUICq51CHOXFtXw

// Tagsのコマンドを実行
$ docker pull container-registry.oracle.com/database/express:21.3.0-xe

下記はうちの環境ではうまくいかなかったので、Dockerボリュームにマウントする方法(似てるけど、さらに下のコマンド)でやりました。ChatGPT様様です。

// このディレクトリをコンテナ内の /opt/oracle/oradata にマウント(共有)するんだけど…
// 書込権限を付与してもCannot create directory "/opt/oracle/oradata/XE".と言われてしまう
mkdir -p /Users/eri/docker/oracle/21.3.0-xe

$ docker run --name 21.3.0-xe \
--memory=2048M \
-p 1521:1521/tcp -p 5500:5500/tcp \
-e ORACLE_PWD=Password \
-e INIT_SGA_SIZE=1028M \
-e INIT_PGA_SIZE=500MB \
-e ORACLE_CHARACTERSET=AL32UTF8 \
-v /Users/Eri/docker/oracle/21.3.0-xe:/opt/oracle/oradata \
container-registry.oracle.com/database/express:21.3.0-xe

Dockerボリュームをマウントしてうまくいきました

$ docker run --name 21.3.0-xe \
--memory=2048M \
-p 1521:1521/tcp \
-p 5500:5500/tcp \
-e ORACLE_PWD=Password \
-e INIT_SGA_SIZE=1028M \
-e INIT_PGA_SIZE=500MB \
-e ORACLE_CHARACTERSET=AL32UTF8 \
-v oracle18-vol:/opt/oracle/oradata \ //ここが違う、上記はUsers配下でこっちはDockerボリューム
container-registry.oracle.com/database/express:21.3.0-xe

SQLDeveloperから接続してみる

SQLDeveloperは参考サイトの時代から改善されたようで、Javaのバージョンがどうとかは問題にならなかったけど、ようこそページでレインボーぐるぐるになってしまうので、ようこそページが表示されないように設定を書き換える

$ find ~/.sqldeveloper/ -name dtcache.xml
/Users/Eri/.sqldeveloper//system24.3.1.347.1826/o.ide.14.1.2.0.42.240731.1054/dtcache.xml

このファイルを開いて、下記記載を探す

<Key>oracle.help.StartPageEditor:TabCheckboxState:Default</Key>
<Value class="java.lang.Boolean">false</Value>

あればtrueにして、なければ記載を追加する。

//追加する場合
<dt-cache>
  <!-- いっぱいあるから省略 -->
  <Item>
    <Key>oracle.help.StartPageEditor:TabCheckboxState:Default</Key>
    <Value class="java.lang.Boolean">false</Value>
  </Item>
</dt-cache>

最後に…

開発機については参考にしたサイトにこんな記載がありました。激しく同意ですが、今回は知見を広げるためにMacで開発進めていきます。。。
MacにparallelでWin環境入れてますが違うそうじゃないって話ですし。

▼Colimaはx86_64で動かせるが決して速くはない

M1,M2 Macでも x86_64 で動かせるcolimaはとても便利ですが、本来はARMアーキテクチャで動かせないものを、仮想化技術で無理矢理動かしています。

そのため動作が決して速くありません。というより、体感でも分かるくらいに「遅い」です。

本格的に開発環境を整えるなら、M1,M2 MacでなくIntel MacやWindowsなどx86アーキテクチャの開発端末をもう1つ用意するのが無難です。

我慢できないレベルで遅いわけではありません。そのため「普段それほど多くはOracle Databaseを使った開発はしないけど、たまに必要になる」程度の開発者であれば、この環境でも十分でしょう。

参考にしたサイト

M1,M2(ARM) MacBookにColimaでOracle Databaseを手間なくインストールする
https://qiita.com/waicode/items/d67782c33b7d40052245

M1,M2(ARM)のMacBookでOracle SQL Developerをエラーゼロで動かす
https://qiita.com/waicode/items/cd64cee96895b8ca7080