macでのシラサギ開発
mac でシラサギを開発できるようになるまでの環境面について説明します。Ruby, Ruby on Rails の開発方法、git コマンドや GitHub の使い方などについてはインターネットの文書や市販の書籍をあたってください。
ミドルウェアのインストール手順は AlmaLinux のインストールマニュアル、シラサギ側の設定手順は Windows11でのシラサギ開発 にそれぞれ対応しています。あわせてご確認ください。
このマニュアルではミドルウェアを mac へ直接インストールして、開発する方針を示します。
Docker を利用して開発環境を構築したい場合は devcontainer を参照してください。
対象環境
- Apple Silicon(M シリーズ)搭載の mac
- Homebrew(Apple Silicon のためインストール先は
/opt/homebrew) - SHIRASAGI v1.21(最新版)
古いバージョンのシラサギについて
このページの手順は最新のシラサギ(v1.21)を対象としています。
古いバージョンのシラサギは、要求する Ruby および gem のバージョンが古く、Apple Silicon ではインストールに失敗します。
- 古い Ruby(2.6 系、2.7 系など)は arm64 向けのビルドが通らないことがあります
nokogiri、ffi、libv8、therubyracerといったネイティブ拡張を含む古い gem には arm64-darwin 向けのビルド定義がなく、bundle installが失敗します
古いバージョンのシラサギを Apple Silicon の mac で動かしたい場合は、devcontainer などの Docker を用いた方法を検討してください。Intel mac であれば、このページの手順(/opt/homebrew を /usr/local に読み替え)でインストールできます。
事前準備
Command Line Tools のインストール
ターミナルを開き、次のコマンドを実行します。すでにインストール済みの場合は何もせず終了します。
$ xcode-select --install
Homebrew のインストール
Homebrew の公式サイトの手順に従ってインストールします。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
インストール後、brew コマンドへパスを通します。
$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
$ eval "$(/opt/homebrew/bin/brew shellenv)"
$ brew --prefix
/opt/homebrew
brew --prefixが/opt/homebrewを返すことを確認してください。
/usr/localが返る場合は Intel 版の Homebrewです。以降のパスをすべて/usr/localに読み替えてください。
ミドルウェアのインストール
パッケージのインストール
Ruby のビルドと画像処理に必要なパッケージをインストールします。
$ brew install autoconf openssl@3 readline libyaml gmp
$ brew install imagemagick@6
imagemagick@6 は keg-only(/opt/homebrew/bin へリンクされない)なので、convert コマンドへパスを通します。
$ echo 'export PATH="/opt/homebrew/opt/imagemagick@6/bin:$PATH"' >> ~/.zshrc
$ exec $SHELL -l
$ convert --version | grep Version
Version: ...
シラサギは ImageMagick 6.9 以上を必要とします。詳細は ImageMagick のバージョン確認 を参照してください。
ImageMagick 7 系(brew install imagemagick)でも動作しますが、convertコマンドが同梱されないバージョンがあるため、ここでは 6 系を利用します。
画像認証(CAPTCHA)が動作することを確認します。何も出力されなければ成功です。
$ convert -fill darkblue -background white -size 100x28 -wave 0x88 -gravity Center -pointsize 22 -implode 0.2 label:3407 jpeg:/dev/null
MongoDB のインストール
MongoDB は Homebrew の公式 tap(mongodb/brew)からインストールします。
$ brew tap mongodb/brew
$ brew install mongodb-community@8.0
シラサギがサポートする MongoDB のバージョンは README.md をご参照ください。
バージョンを指定しないmongodb-communityを指定すると、サポート対象外の最新版がインストールされることがあります。
mongoshとmongodb-database-tools(mongodump,mongorestoreなど)は依存パッケージとして同時にインストールされます。
MongoDB を起動します。brew services で起動しておくと、mac の再起動後も自動的に起動します。
$ brew services start mongodb-community@8.0
起動を確認します。
$ mongosh --quiet --eval 'db.version()'
8.0.20
設定ファイルとデータの配置先は次のとおりです。
| 内容 | パス |
|---|---|
| 設定ファイル | /opt/homebrew/etc/mongod.conf |
| データ | /opt/homebrew/var/mongodb |
| ログ | /opt/homebrew/var/log/mongodb/mongo.log |
asdf のインストール
Ruby と Node.js のバージョン管理には asdf を利用します。
$ brew install asdf
環境変数を設定します。
$ echo 'export PATH="${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH"' >> ~/.zshrc
$ exec $SHELL -l
$ asdf --version
mac の既定のシェルは zsh です。bash を利用している場合は
~/.bashrcに設定してください。
Ruby のインストール
$ asdf plugin add ruby
$ asdf install ruby VERSION
$ asdf set --home ruby VERSION
VERSION: Ruby のバージョンは README.md をご参照ください。
asdf setはカレントディレクトリに.tool-versionsを作成します。--homeを付けるとホームディレクトリに作成され、全体の既定バージョンになります。
$ ruby -v
ruby 3.4.x (...) [arm64-darwin24]
Node.js のインストール
$ asdf plugin add nodejs
$ asdf install nodejs VERSION
$ asdf set --home nodejs VERSION
$ npm install -g yarn
VERSION: Node.js のバージョンは README.md をご参照ください。
SHIRASAGI ダウンロード
GitHub からクローンします。ここでは ~/Projects/shirasagi へ展開します。
$ mkdir -p ~/Projects && cd ~/Projects
$ git clone https://github.com/shirasagi/shirasagi.git
$ cd shirasagi
ふりがな機能のインストール
MeCab のインストール
$ brew install mecab mecab-ipadic
mecab-ruby のインストール
シラサギに同梱されている mecab-ruby をビルドしてインストールします。
$ mkdir -p ~/src && cd ~/src
$ cp -p ~/Projects/shirasagi/vendor/mecab/mecab-ruby-0.996.tar.gz ./
$ tar xvzf mecab-ruby-0.996.tar.gz && cd mecab-ruby-0.996
$ ruby extconf.rb --with-opt-dir=/opt/homebrew && make && make install
extconf.rb の パス解決の為
--with-opt-dir=/opt/homebrewが必要です。
以下のようにすると、RubyからMeCabが正しく動作することを確認できます。
$ ruby -e 'require "MeCab"; puts MeCab::Tagger.new.parse("白鷺城")'
白鷺城 名詞,固有名詞,一般,*,*,*,白鷺城,シラサギジョウ,シラサギジョー
EOS
mecab-rubyは Ruby のバージョンごとにインストールされます。asdf で Ruby のバージョンを切り替えた場合は、切り替え後の Ruby で再度ビルド・インストールしてください。
kana.yml の作成
config/defaults/kana.yml は /usr/local を前提としているため、Homebrew のパスで上書きする config/kana.yml を作成します。
$ cd ~/Projects/shirasagi
$ cp config/defaults/kana.yml config/
$ sed -i '' "s#/usr/local/libexec/mecab/mecab-dict-index#/opt/homebrew/opt/mecab/libexec/mecab/mecab-dict-index#" config/kana.yml
$ sed -i '' "s#/usr/local/lib/mecab/dic/ipadic#/opt/homebrew/lib/mecab/dic/ipadic#" config/kana.yml
音声読み上げ機能のインストール
Open JTalk のインストール
$ brew install open-jtalk sox lame
voice.yml の作成
config/defaults/voice.yml も /usr/local を前提としているため、Homebrew のパスで上書きする config/voice.yml を作成します。
$ cd ~/Projects/shirasagi
$ cp config/defaults/voice.yml config/
$ sed -i '' "s#/usr/local/bin/open_jtalk#/opt/homebrew/bin/open_jtalk#" config/voice.yml
$ sed -i '' "s#/usr/local/dic#/opt/homebrew/opt/open-jtalk/dic#" config/voice.yml
$ sed -i '' "s#/usr/local/bin/sox#/opt/homebrew/bin/sox#" config/voice.yml
$ sed -i '' "s#/usr/local/bin/lame#/opt/homebrew/bin/lame#" config/voice.yml
シラサギの設定
基本設定ファイルの準備
基本的な設定ファイルを作成します。
$ cd ~/Projects/shirasagi
$ cp -p config/samples/{mongoid,secrets}.yml config/
$ cp -p config/defaults/environment.yml config/
テキストエディタで config/mongoid.yml を開き、以下のような内容に変更します。
# MongoDB Configuration
#
# if you want to know about detail configuration,
# see: https://docs.mongodb.org/ecosystem/tutorial/mongoid-installation/#mongoid-configuration
production: &production
clients:
default:
database: ss
hosts:
- localhost:27017
options:
truncate_logs: false
development:
<<: *production
test:
clients:
default:
database: ss_test
hosts:
- localhost:27017
options:
truncate_logs: false
テキストエディタで config/environment.yml を開き、冒頭の RAILS_ENV を “development” に変更します。
# Default environment
RAILS_ENV: development
以上で開発の準備ができました。
bundle install と assets のビルド
bundle install などを実行します。ターミナルで以下のコマンドを実行します。
$ cd ~/Projects/shirasagi
$ bundle install
$ yarn install && yarn build
シードの投入とシラサギの起動
ターミナルで以下のコマンドを実行し、シードを投入します。
# シード投入前にすべて消去
$ bundle exec rake db:drop
$ rm -rf private public
$ git checkout -- private public
# DB作成
$ bundle exec rake db:create_indexes
# シードの投入
$ bundle exec rake ss:create_site data="{ name: '自治体サンプル', host: 'www', domains: 'www.example.jp:3000', mypage_domain: 'localhost:3000', map_api: 'openlayers' }"
$ bundle exec rake db:seed site=www name=demo
ターミナルで以下のコマンドを実行し、シラサギを起動します。
$ bundle exec rails s
ブラウザを開き、http://localhost:3000/.mypage へアクセスします。
シラサギの管理画面へのログイン画面が表示されれば成功です。admin / pass のアカウントでログインできます。