Mastodon地域インスタンス「箕面どん」をv.2.4.0にアップデートしました

かなり前になるが、新しいソーシャルネットワーキングサービス「Mastodon」を紹介したのを、覚えておられるだろうか。
当初は「大阪丼」(https://mstdn.osaka)に参加していたが、思うところあり、独立して箕面市(非公認)の地域インスタンス「箕面どん」を立ち上げた。
箕面どん

さくらのクラウドでサーバーをレンタルし、CentOS 7.4上で構築している(非Docker)。導入自体は「スタートアップスクリプト」があるので、比較的簡単にできた。
当時のMastodonのバージョンが2.3.3であったが、最近2.4.0がリリースされたので、アップデートに取り組んだ記録である。
鯖缶の方々の様子を見ると、データベースを飛ばして全て消えてしまうなど、いろいろなアクシデントが起こるアップデート作業。僕自身も1度目は失敗し、2度目の挑戦でやっと上手くいった。
初心者の方々にも参考になるように、ここに過程を書きとどめておきたい。

なお、全体の流れは下記サイトを参考にした。
「さくらのクラウド」スタートアップスクリプトによるMastodonを、v2.3.3からv2.4.0rc3にバージョンアップした時につまずいた話。

1.サーバーのバックアップ

万が一に備えて、必ずやっておきたい作業である。僕も1回目失敗したとき、バックアップのおかげで、復旧することができた。
pg_dump/pg_dumpallなどのコマンドを使って、データベースだけバックアップする方法もあるが、僕はさくらのクラウドのアーカイブ機能を使って、ハードディスクを丸ごとバックアップした。復元も簡単なので、お勧めである.

2.PostgreSQLを9.6にアップデート

v.2.4.0からPostgreSQL 9.4以上が必須となる。さくらのクラウドでは9.2なので、アップデートが必要である。10を試してみたが、さくらのクラウドのCentOS 7.4上ではエラーで動かなかったので、9.6.9を下記のようにインストール、データベースを初期化した。

# yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
# yum list | grep postgresql96
# yum install postgresql96-server
# alternatives --display pgsql-psql
# alternatives --display pgsql-pg_dump
# PGSETUP_INITDB_OPTIONS="--encoding=UTF8 --no-locale" /usr/pgsql-9.6/bin/postgresql96-setup initdb

コマンドの意味は下記サイトに詳しい。
CentOS 7.3にインストールしたPostgreSQL 9.4から9.6へアップデートする

3.pg_upgradeというコマンドをインストール

【註】
この過程は必ずしも必須ではない。ソースを入れ替えるので、危険性を内在している可能性がある。PostgreSQLの新バージョンが出る度にインストールする方針の方は、する必要なないと思われる。

この作業をする前に、今動いているPostgreSQLサーバーを停止しておく必要がある(←これ、重要)。
停止しておかないとインストールに失敗する。

# systemctl stop postgresql

停止しているかどうか確認。

# systemctl status postgresql

そして、postgresユーザーに切り替えて、下記のようにコマンドを打つ。

# su - postgres
-bash-4.2$ /usr/pgsql-9.6/bin/pg_upgrade -d /var/lib/pgsql/data -D /var/lib/pgsql/9.6/data -b /usr/bin/ -B /usr/pgsql-9.6/bin/

このコマンドはエラーになるので、下記サイトを参考に、pg_upgradeを入れ替える。
pg_upgradeでつまずいた

なお、さくらのクラウドのCentOSにはwgetが入っていないのでインストール。vimも好みで入れる。

# yum install wget
# yum install vim

(1)ソースをダウンロードして展開

# cd /usr/local/src
# wget https://ftp.postgresql.org/pub/source/v9.6.9/postgresql-9.6.9.tar.gz
# tar zxf postgresql-9.6.9.tar.gz
# cd postgresql-9.6.9

(2)src/bin/pg_upgrade/server.cを修正

# vim src/bin/pg_upgrade/server.c

(GET_MAJOR_VERSION(cluster->major_version) < 903) ?
となっているところを
(GET_MAJOR_VERSION(cluster->major_version) < 900) ?
と変更する。

(3)ビルドする(インストールはしない)

# ./configure && make

(4)yumバージョンとmakeバージョンを置き換え

# cd /usr/pgsql-9.6/bin/
# mv pg_upgrade pg_upgrade.rpm
# cp /usr/local/src/postgresql-9.6.9/src/bin/pg_upgrade/pg_upgrade .

ここまでして再度postgresユーザーに切り替え、下記のコマンドを打つと、ズラズラとOKが表示されて、インストールに成功する。

$ /usr/pgsql-9.6/bin/pg_upgrade -d /var/lib/pgsql/data -D /var/lib/pgsql/9.6/data -b /usr/bin/ -B /usr/pgsql-9.6/bin/

なお、最初に紹介したサイトでは、pg_upgradeをインストールした後で「後処理」をしているが、僕の環境では上手くいかなかった。それでも問題なくサーバーは動いているので、無視しても大丈夫である。

他に、以下の設定ファイルを書き換えた。

# vim /var/lib/pgsql/9.6/data/pg_hba.conf

METHOD欄を全て、trustに書き換え。
【2018年6月3日追記】
この設定は、あくまでさくらのクラウドでスタートアップスクリプトを使って、インスタンスを立ち上げた場合に有効である。
その他の環境の場合、データベースへのアクセスを無制限に許してしまい、大変危険である。
その場合は、設定をmd5などにして、暗号パスワードを設定することをお勧めする。
以下のサイトを参考にされたし。
pg_hba.confの設定

# vim /var/lib/pgsql/9.6/data/postgresql.conf

127行目の
dynamic_shared_memory_type = posix
という行の先頭に#を付けて、コメントアウト。

紹介したサイトではその後、コマンドを9.6用に差し替えているが、それをするにはPostgreSQLの古いバージョンを削除しなくてはならない。
僕の環境ではそれをすると、bundle installでpgがインストールできないという現象にぶつかった。
コマンドを総入れ替えしなくても特に問題はないだろうと考え、見送った。

4.PostgreSQL 9.6に切り替える。

以下のコマンドを打って、旧バージョンの自動起動を無効にし、9.6を有効化、自動起動させて、CentOSを再起動する。

# systemctl disable postgresql
# systemctl start postgresql-9.6
# systemctl enable postgresql-9.6
# reboot

自分のインスタンスにアクセスし、正常に動いているかどうか確認する。

5.ruby 2.5.1のインストール

Mastodon v.2.4.0ではruby 2.5.1が必須である。
インストール作業はmastodonユーザーに切り替えて行う必要がある(重要!)。これをしておかないと2.4.0のインストールに失敗する。

# su - mastodon

ruby 2.5.1のインストールには、下記サイトを参考にした。
rbenv を使って ruby をインストールする(CentOS編)

(1)rbenvをインストール(clone)する

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

(2)環境設定

# PATH に追加
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

# .bash_profile に追加
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

# 上記設定の再読み込み
$ exec $SHELL -l

(3)ruby-build を インストール(clone)する

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

(4)ruby 2.5.1をインストール

$ rbenv install -v 2.5.1

(5)環境確認

再読み込み。

$ rbenv rehash

先ほどインストールした最新版に設定

$ rbenv global 2.5.1

確認

$ ruby -v
ruby 2.5.1p57 (2018-3-29 revision 63029) [x86_64-linux]

6.Mastodon v.2.4.0をインストール

ここまで下準備をして、ようやく2.4.0をインストールできる。
インストールには下記サイトを参考にした。
Mastodonのアップデート
Mastodonのバージョンアップの時に入力するコマンド(non-Docker)

# su - mastodon
$ cd live
$ git fetch
$ git checkout $(git tag | sed -e "/rc/d" | tail -n 1)
$ gem install bundler
$ bundle install
$ yarn install
$ RAILS_ENV=production bundle exec rails db:migrate
$ RAILS_ENV=production bundle exec rails assets:precompile
$ sudo systemctl restart mastodon-*.service

僕の環境では、RAILS_ENV=production bundle exec rails assets:precompileでエラーが出たが、mastodon serviceを再起動したら、問題なくアップデートされていた。
自分のインスタンスのアバウト画面で、2.4.0と表示されていたら成功である。

では、素晴らしきMastodon Lifeを!

MacBook 4.1にArch Linuxをインストールする(インストール編)

僕がArch LinuxをインストールするMacBookは、Appleのホームページにも載っていない古い機種で、機種IDが「MacBook 4,1」というものだ。ArchWikiにも機種別の情報は載っていない。
しかし、基本的にArchWikiのMacBookに書かれていることを参考にすれば大丈夫である。そこで解決しない問題は、ネットで探すことになる。

ArchWikiで推奨されているインストール方法は、「Mac OS Xとのデュアルブート」である。macOSを残しておく方がMacBookのファームウェアを書き換えたり、Macの設定を変えたりする時に便利である。したがって、ここではその方法を紹介したいと思う(実際は、Ubuntuを新規に入れていたので、Mac OS X Snow Leopardを再度インストールするところから始めることになったが)。

1.Arch Linuxをインストールするパーティションを作成する

この作業はMac OS Xで行う。ディスクユーティリティを立ち上げ、Macintosh HDを選択し、「+」ボタンを押して、新規にパーティションを作成する。僕の場合は、ハードディスクを2分割することにした。
名前やフォーマット形式はArch Linux側で作成し直すので何でもかまわない。
パーティションを作成し、デスクトップに表示されるのを確認する。

2.インストールCDで起動する

Arch LinuxをダウンロードからISOイメージをダウンロードして、適当なアプリでCDに焼く。CDをセットし、MacBookをオプションキーを押しながら起動すると「Windows」というCDのアイコンが現れる。それを選択してしばらく待つと以下のような画面が表示される。

「Boot Arch Linux」を選択してエンターキーを押すと、ブートが始まる。無事に起動を確認したら、次の作業に移る。

3.Arch Linux側でパーティションを作成する

そのままでは日本語キーボードの設定になっていないので、以下のコマンドを打つ。

# loadkeys jp106

ArchWikiのMacBookを参考にして、Mac OS Xで作成したパーティションを削除して、Arch Linux用に再度パーティションを作り直す。
(注)Mac OS Xのパーティションのルールとして、最後のパーティションの後に「128MB」の空き領域が必要である。詳しくはArchWikiを見てほしい。
なお、メモリが4GB以上ある時には、swapを作成しない方が速くなるとあったので、swapパーティションは作成しなかった。

# cgdisk /dev/sda

cgdiskの画面が表示されるので、「コントロールキー」+「矢印キー」で、Arch Linux用のパーティション番号を選択し、「Delete」と「New」を使い、パーティションを作成していく。
以下の例は、「Mac OS Xとのデュアルブート用のパーティション:100MB」「Arch Linuxのbootパーティション:100MB」「Arch Linuxのrootパーティション:残り全部」を作成したものである。

4.Arch Linuxをインストールする

インストール自体は他のPCと同じである。
ArchWikiのインストールガイドに従ってインストールする。
ただし、MacBook 4,1は無線LANのドライバが有効にならないので、有線で繋いでインストールしなければならない。
インストールガイドにある「起動モードの確認」で、UEFIモードではないとなるが、気にせず先に進む。
インストールが終了したら、ブートローダーの設定に移る。
ブートローダーの設定が終わるまで、chrootしたままでいるようにする。

5.ブートローダーの設定

以下のやり方は、MacBook AirにOSXとデュアルブートでArch Linuxを入れるを参考にした。

まず、GRUBをインストールする。

# pacman -S grub-efi-x86_64

/etc/default/grubを以下のように修正する。エディタにはviやnanoが使える。

GRUB_CMDLINE_LINUX_DEFAULT="quiet rootflags=data=writeback"

そして、以下のようにしてカレントディレクトリに「boot.efi」を作成する。

# grub-mkconfig -o /boot/grub/grub.cfg
# grub-mkstandalone -o boot.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi --compress=xz boot/grub/grub.cfg

作成された「boot.efi」はUSBにコピーしておく。僕はたまたまそばにあった「ATOK for Mac」のUSBを使ったが、問題なくコピーできた。

# dmesg | tail # USBメモリのデバイス名を調べる。仮にsdd1とする
# mkdir /mnt/usbdisk && mount /dev/sdd1 /mnt/usbdisk
# cp boot.efi /mnt/usbdisk/
# umount /mnt/usbdisk

MacBookを再起動して、Mac OS X側の設定に移る。

# exit
# umount -R /mnt
# reboot

6.Mac OS Xでのブートローダーの設定

Mac OS Xで起動したら、デスクトップに「Boot Arch from the Apple boot loader」というボリュームがマウントされているはずである。ターミナルを起動して、以下のようにブート用のディレクトリと「SystemVersion.plist」を作成する。

# cd "/Volumes/Boot Arch from the Apple boot loader"
# mkdir System mach_kernel
# cd System
# mkdir Library
# cd Library
# mkdir CoreServices
# cd CoreServices
# vi SystemVersion.plist

「SystemVersion.plist」には、以下のように記述する。

<xml version=”1.0″ encoding=”utf-8″?>
<plist version=”1.0″>
<dict>
   <key>ProductBuildVersion</key>
   <string></string>
   <key>ProductName</key>
   <string>Linux</string>
   <key>ProductVersion</key>
   <string>Arch Linux</string>
</dict>
</plist>

そして、CoreServicesにUSBのboot.efiをコピーする。これはFinderでやった方が簡単である。
その後、blessして「Boot Arch from the Apple boot loader」バーティションを起動可能にする。

# sudo bless --device /dev/disk0sX --setBoot

(注)Xに入る数字はディスクユーティリティで確認する。

これで再起動したら、GRUBの画面が表示されて、Arch Linuxが立ち上がるはずである。

7.トラブルシューティング

僕の場合、機種が古いせいか、以下のようなトラブルに遭遇したので、参考に解決方法を加えておく。

(a)起動してもArch Linuxをインストールしたデバイスが見つからず、「new_root」でしかログインできない

これにはかなり苦戦したが、ネットを探し回って、次のようなサイトを見つけた。
“Unable to find root device” on a fresh ArchLinux install

ここにあるように、/etc/mkinitcpio.confのHOOKSの順番を変えると解決した。blockをautodetectの前に記述するのである。以下の通り。

【変更前】
HOOKS="base udev autodetect block modconf filesystems keyboard fsck"

【変更後】
HOOKS="base udev block autodetect modconf filesystems keyboard fsck"

そして、以下のコマンドを打って、ramdiskを作り直す。

# mkinitcpio -p linux

これでrootでログインできるようになる。

(b)ルートディレクトリのマウントに失敗する

起動中のプロンプトを見ると、「ルートのマウントに失敗した」というエラーが表示されるのだが、システム自体は立ち上がり、ルートでのログインもできる。気持ちの悪いエラーだが、いろいろ調べてみると、fstabの記述に問題があることがわかった。
先に、GRUBを設定した時に「rootflags=data=writeback」と設定したが、それがfstabに反映されていなかった。
/etc/fstabを開き、「data=writeback」に書き換えたらエラーが表示されなくなり、fsckもちゃんと働くようになった。ext4のジャーナリングを有効にするために、必要な設定なのかも知れない。

MacBook 4.1にArch Linuxをインストールする(前置き編)

僕はどちらかというと、同じマシンを長く使う方だと思う。Macを使い始めてもう10数年が経つが、ノートブックは3台乗り換えただけだ(デスクトップは2台)。
今使っているMacBook Pro Retina 13-inch Late 2013に乗り換える前は、長らくMacBook Blackを使っていた。もうAppleのホームページにも載っていない古い機種だが、メモリは4GMに増設、HDDは750GBに載せ替えて使い込んでいた。
それが、Mac OS X Lionを最後に新しいOSに対応しないということだったので、新たにMBPを購入したわけだ。

古いMacBookはしばらく埃を被っていたが、Linuxの勉強を兼ねてUbuntuをインストールして、たまに使ったりしていた。Ubuntuを選んだ理由は、ドライバ関係で対応がたやすいということである。確かにWifiなども一発で認識してインストールも簡単だったのだが、いかんせん古いMacBookには重かった。反応がワンテンポ遅れる感じである。Core Duo 2の2.4GHzなのだが、それだけUbuntuが重いLinuxになってしまったということだろう。

しばらく放置していたのだが、ふと思うところがあり、Arch Linuxをインストールしてみることにした。Arch Linuxを選んだ理由は、どこかで見たアンケートでMacBookユーザーがインストールするLinuxの中で1位だったからである。そして、軽いLinuxだとということも興味を引いた。ただ、デフォルトではデスクトップ環境などがインストールされないので、Ubuntuなどとくらべて敷居が高いという話もあった。

しかし、MacBookユーザーでインストールしている人が多いということは、参考になる記事も多いはずである。そして、Arch LinuxはWikiが充実しているのも重要なポイントだった。あまり初心者向けのLinuxではないが、だからこそLinuxを勉強するのにもいいのではないかと思った。
そういう訳で、これから数回に分けて、MacBookにArch Linuxをインストールして、日常の使用に使っていく過程を書き込んでいきたいと思う。多くの方の参考になれば幸いである。

Arch Linuxとはなんぞやという人は、下記のリンクを読んでみてほしい。
Arch Linux

Mastodon、Macに「Naumanni」をインストールする(その2)

前回の記事で、MacにMastodonのwebクライアント、「Naumanni(ナウマン)」をインストールした手順を書いたが、結論からいうと、前のやり方では不十分である。

Chromeでhttp://localhostが通らないとか、Safariでhttp://localhost:8080が通らないとか、あげくの果ては、「mstdn.jp」にアクセスできないとか。
どうしてこんなことになるのかよく考えてみると、「Naumanni」はMacの中にwebサーバーを立ち上げ、その「8080」ポートを通して、インスタンスに接続して使うものである。
ということは、Mac内部にwebサーバーが立ち上がっていないということではないか?
そう言われてみれば、今のMacにはweb共有がなくなってる。
つまり、webサーバーをインストールしなくてはいけないということである。

後、Dockerは一種の仮想環境を提供するものである。
ということは、Mac内にバーチャル・マシンがあるはずである。
試しに、ターミナルで「docker-machine ls」のコマンドを打ってみるとエラーになる。
つまり、仮想マシンがないのである。これでは、「Naumanni」もうまく動くはずがない。

ググってみると、今のバージョンの「Docker for Mac」では、バージョンマシンの作成は「Docker Toolbox」を使って行うとのこと。

Mac OS X へのDockerのインストール方法

というわけで、ようやく「Naumanni」をインストールする手順がわかった。

  1. Docker for Macをインストールする
  2. Docker Toolboxをインストールする
  3. nginx(webサーバー)をインストールする(【追記:2017/07/03】開発者のshnさんの指摘で、nginxは不要だとのこと)
  4. Naumanniをインストールする

以下、この手順で、説明していきたいと思う。

1. Docker for Macをインストールする

これは、前の記事で説明したので、割愛する。

2. Docker Toolboxをインストールする

ここで躓いてしまった。
MacOSの最新版、macOS Sierraでは、pkgファイルからはインストールできないのである。
いろいろ調べてみると、コマンドラインでインストールする方法があった。

macOS SierraでDockerを再インストールしたときに発生した問題

どうやら「Node.js」をインストールしないといけないようである。
ここを乗り越えないと先へいけないので、頑張って取り組むことにする。
参考にした記事は、以下の通り。

Node.jsをMacにインストール!

ここにある通り、Homebrew→Nodebrew→Node.jsの順にインストールしていく。

まずは、Homebrewのインストール。これから後の作業は、全てターミナルから、コマンドラインで行う。

$ /usr/bin/ruby -e "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/master/install

僕の記憶が正しければ、この時同時に「Xcode Command Line Tools」がインストールされるはずである(ちょっと不明)。

次は、nodebrewのインストールである。

$ brew install nodebrew

インストールできたら、バージョンを確認。

$ nodebrew -v

以下のように、ずらずらっと表示されたらOK。

次は、いよいよnode.jsのインストールである。
最新版をインストールしたいので、下記のように打つ。

$ nodebrew install-binary latest

バージョンを確認すると、下記のように最新版になっていた。

$ nodebrew list
 v8.1.2

current: v8.1.2

以下のサイトも参考にしてほしい。

Node.jsをMacにインストールしてnpmを使えるようにする

【おまけ】
これで、npmが使えるようになったんで、yarnもインストールしておいた(Naumanniとの依存解消のため)

$ brew update
$ brew install yarn

これで、ようやく「Docker Toolbox」をインストールできる。

$ brew update
$ brew cask install docker-toolbox

インストールが完了したら、Dockerのメニューから「Kitematic」を選択する。
僕の記憶では、この作業でバーチャル・マシンが作成されたように思う(うろ覚え)。

うまくバーチャル・マシンが動いているかどうか、テストにコンテナを作って見て確認する。

$ docker run hello-world

以下のように表示されたら問題ない。

$ docker-machine ls
 NAME  ACTIVE DRIVER   STATE  URL             SWARM
 default *   virtualbox Running tcp://192.168.99.101:2376

3. nginxのインストール

【追記:2017/07/03】このステップは不要であるが、nginxインストールの備忘録として残しておく
ようやく、ngixnのインストールである。

これはDockerからインストールする方法と、homebrewからインストールする方法があるが、僕は多分homebrewでインストールしたはず(多分)

$ brew install nginx

そして、起動させる。

$ ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

ブラウザにhttp://localhost:8080と打ち込んで、以下の画面が表示されたら、インストール成功である。

4. Naumanniのインストール

これは前回の紹介した方法で問題ない。

$ docker pull naumanni/naumanni-standalone
$ docker run -it -p 8080:80 naumanni/naumanni-standalone

これで、http://localhost:8080/で接続して、Naumanniが表示されたら成功である。

Dockerのコンテナイメージを確認したら、以下の通りになっているはず。

$ docker images
 REPOSITORY                   TAG    IMAGE ID     CREATED     SIZE
 hello-world                  latest 1815c82652c0 5 days ago  1.84kB
 naumanni/naumanni-standalone latest da2a67443f33 2 weeks ago 119MB

と、一通りの流れを書いたが、一日経った今、うまく接続できるのはChromeだけである。SafariもFireFoxもアクセスができない。
これ以上は、僕には分からないので、詳しい方の教えを請いたいものである。

【追記:2017/07/03】
Naumanniにうまく接続できない場合、コンテナが起動していないことがある。
例えば、Macを再起動したらNaumanniが立ち上がらないという問題である。
その場合は、runする時に、オプションに「–restart=always」をつけると、ホストが再起動した場合にも、コンテナが自動的に起動してくれる。
こんな感じである。

$ docker run -it -p 8080:80 --restart=always naumanni/naumanni-standalone

僕はこれでようやく快適にNaumanniを使えるようになった。
参考にしたwebpageは以下である。

ホストを再起動した時などにDockerコンテナを自動的に再起動できるようにする

現在、Naumanniはバージョン0.2.0になり、スパム判定も有効になっている。
複数のインスタンスを横断的に読むのに、とても使いやすい。

多くの人に使ってほしいクライアントである。

Mastodon、Webクライアント「Naumanni」を試す

Mastodon(マストドン)の関連の集会などが最近多く開催されており、いろんな人がマストドンを知るようになってきたと思う。
その中でも、大阪で行われていた「マストドン会議4」で、清水亮さんが使っておられたクライアントが、使いやすそうで気になった。
調べてみると、「Naumanni(ナウマン)」という名のwebクライアントだと分かった。

Mastodon専用ウェブクライアント「Naumanni」、UEIとグルコースがGitHubで公開

まだまだアルファー版だが、標準版ではどこにいったかわかりにくいダイレクトメッセージなどが、分かりやすくなっているし、インスタンス間のメッセージも暗号化される機能が搭載される。
複数のインスタンスのLTLが読める「統合ローカルタイムライン」なども便利だ。

「Naumanni」はGitHubで配布されている。
https://github.com/naumanni/naumanni

インストールはDockerを使えばできるようだが、そのDockerは、どうインストールしたらいいのか。
いろいろググってみると、今は「Docker for Mac」を使えば簡単のようである。
インストール方法は、下記を参考にしてほしい。

Docker for Macをインストールしてみた

僕がやったことは、次の通り。
まず、「Docker for Mac」を入手する。
Docker for Mac

「Stable」と「Edge」があるが、できるだけ新しいバージョンがほしいので、「Edge」を選ぶ。

ダウンロードして、イメージファイルをマウントして、アプリケーションフォルダにコピーする。

「Docker」をダブルクリックして、立ち上がった後は、上のwebpageを参照してほしい。
ターミナルでバージョンを確認してみたら、「17.06.0-ce-rc4」だった。

さて、「Naumanni」のreadmeには「依存関係」で、
yarn >= 0.23.4
node >= v7.5.0
docker >= 17.03
と書いてある。
しばし考え、Dockerが一種の仮想環境を作るのなら、yarnやnodeがなくてもインストールできるはずと考え、インストールしてみた。

インストールは簡単で、readmeにあるように
$ docker pull naumanni/naumanni-standalone
$ docker run -it -p 8080:80 naumanni/naumanni-standalone
のコマンドを叩くだけ。ダウンロードが始まり、いとも簡単にインストールが完了した。

終わればブラウザを立ち上げ、http://localhost:8080/で接続すると、「Naumanni」が立ち上がる。

今のところ、軽くて、いい感じである.

yarnやnodeを省いた結果どうなるかは、もう少し使ってみないと分からないが。

ところで、Docker Toolboxがインストールできないのだが、これはmacOS Sierraでは機知の問題のようである。

macOS Sierra Docker Toolbox のインストーラがエラるので Brew cask でインストールした

やっぱ、Nodeをインスールしないといけないのか…
今夜は疲れたので、この辺で。

小説・第9話

ユミは僕に手紙を渡すと、そのまま消えてしまった。
僕はどうしていいのか分からず、しばらく立ち尽くしていた。

ようやく決心が固まり、僕は手紙を開いた。

<ヒビキ君、私、あなたのこと、ほんと好きだったよ。
でも、もう限界。あなたと一緒にいることに耐えられなくて。
こんな言葉使ってごめんね。正直、嫌悪感しか感じないの。

それに、私、好きな人ができて。一緒にコンサートした人。
久しぶりに、恋の気分を感じてる。

ごめんね、ヒビキ君。さようなら。 ユミ>

読みながら身体の力が抜けていくと同時に、すこんと胸に落ちた気がした。
ああ、もう終わったんだ。
実感として、納得できた。こういう終わり方をしてくれて、ユミに感謝だな。

その夜は、いろいろ思い出して、一睡もできずに朝を迎えた。

学校に行くと、ユミは新しい彼と一緒に廊下を歩いていた。とても楽しそうに話をしながら。
そうか、彼女はこういうのを求めていたんだ。
♪この頃 あなたは明るくなったみたい
 僕のいないところで微笑んで♪
自分が作った歌そのままじゃないか。
何してるんだ、俺。

自分のバカさ加減に悶々と過ごしていると、ある時、リコから呼び出された。
「これ」
と言いながら、リコは小さい紙包みを渡した。
?ってなりながら、中を見ると、小さい小物入れの袋が入っていた。
「私が作ったんだから」
リコは上目遣いに言った。
「そうなんだ。あ、でも……」
と言いかけると
「彼と付き合ってから、初めて他の男の子のために作ったんだから」
そんなことして、大丈夫なの?って、思ったが、リコはにっこり笑って、
「ヒビキ君のイメージで、ブルーのギンガムチェックにしたんだから。大切に使ってよ」
ありがとうって言う暇もなく、リコはクラスメイト達の中に紛れていった。

なんやかんやで、僕達は高校を卒業した。僕はいかに女の子を理解していないか、うちひしがれながら。
とりあえず合格する大学を受け、僕は大学生になった。
ユミと彼とは違う大学に進学したとか。そして、彼に新しい彼女ができたけど、ユミが別れたくないって言っている、って噂が流れてきたけど、僕にはもう遠い話だった。
(続く)

Mastodon、Mac用のクライアントをインストールする

二日前ほど、Mastodonをやってみたが、面白い!
この面白さは昔どこかで経験したことがあるなあと考えていたら、10数年前にやっていたチャットと同じものだった。
当時はIRCやICQなどがあり、グループチャットや1対1のチャットなどができた。そういや、ファイルを送信できるものもあったな。

Mastodonは「グループチャット」と雰囲気的に近い。
どんどんtootが流れてきて、それぞれ絡んでいく。「ふぁぼ」の反応もすぐ来る。
このスピード感は、久しく忘れていたものだ。
これは、選んだ「インスタンス」によっても違うと思う。大阪の中心にしたメンバーが集まっているので、お互い親近感があり、話しやすい。インスタンスに地域に関わったものが多いのも納得できる。

しかも、今日は大阪のインスタンスのオフ会があったようで、参加者やネットから見ている人で大いに盛り上がった。
この感じは、7・8年前に流行った「Brightkite」を彷彿とさせるものだった。

さて、Mastodonだが、発表されたのが2016年7月で、まだ7か月の新しいサービスだ。
基本的にwebアプリなので、ブラウザから利用できるのだが、何かと使い勝手が悪い。やはり、手元にあるスマートフォンから利用できれば使いやすい。
iOSで使えるクライアントアプリはかなり充実してきて、App Storeで検索すればたくさん見つかる。
いろいろ試してみた結果、僕としては「Tootdon」が一番いいかなあと感じている。

「Tootdon – トゥート検索対応アプリ for Mastodon (マストドン)」

tootの内容を検索できる機能が便利である。僕なんかは「佐野元春」「桂枝雀」などど検索してみて、趣味が合いそうな人を早速フォローしてみた。
アプリの画面は以下の感じである。

使い勝手は、いわゆるTwitterクライアントと変わらない。違和感なく使えると思う。

しかし、Macを使いながらiPhoneでやり取りするのは面倒である。もちろんSafariなどのブラウザからアクセスすればいいのだが、そうすると複数のインスタンスを行き来する時に、タブを切り替えるので動作の無駄が多い。
そこで、macOS用のクライアントがないか調べてみると、ちゃんと存在した。

https://github.com/rhysd/Mstdn/releases

Githubというサイトで配布している。本来なら「npm」といったコマンドを使ってインストールするのだが、そのために他のものをいろいろインストールしないといけないし、時間がかかるので、アプリ版をインストールすることにした。

一番上の「darwin」版をダウンロードし、解凍したフォルダの中にある「Wstdn」アプリを「アプリケーション」フォルダに入れる。
問題はここからで、「Wstdn」をダブルクリックすると表示される「config.json」ファイルを編集しなくてはいけない。
readmeを読んでみると、”mane”にスクリーンネーム、”host”にインスタンスのURLを書き込めばいいとのことだが、何度やっても下のようなアラートが出て起動してくれない。

アラートを見ると、どうも「”」が悪さをしているようである。よ〜く見てみると、”mane”と”host”のところにある「”」の形が微妙に違う。試しに、他の場所から「”」をコピペしてみると、見事に起動した。
そこで、readmeにあるように、”name”と”host”の部分を複数回コピペして、それぞれ書き込んでみると、ちゃんとマルチアカウントで動作した。Accountメニューからそれぞれのアカウント選べば、瞬時に入れ替わる。ブラウザで使うより、断然使いやすい。

僕のconfig.jsonは以下の通り。

「Mstdn」を起動すると、こんな感じ。

なお、インストールに当たっては、下記の記事がとても参考になった。

mastodonマルチアカウントクライアント「mstdn」 導入メモ

では、皆さんも是非「Mastodon」を楽しんでください。

Mastodon、始めました!

今、じわじわときている「Mastodon(マストドン)」を始めた
「Mastodon」とはなんぞや、と言う人は、以下のwebpageがその仕組みや思想がよく分かると思う。

gnusocial や mastodon の哲学

一部ではTwitterの代替サービスのように言われているようだが、本質的に全然違う。
Twitterを「中央集権」的なサービスだとしたら、Mastodonは「分散」型のサービスだ。
そこには、一社が全てを支配し、決定している世界ではなく、複数の「インスタンス」(サーバー)があり、そのどれかに(あるいは複数のインスタンスに)登録し、500字以内で今の自分を「toot(トゥート・吠える)」する。
「インスタンス」同士も連携しており、他のインスタンスにいるユーザーのフォローもできる。

と書いても、やっていない方には、全然想像できないと思うが^^
今日半日使って見て、久しぶりに気持ちがハイになった。
これはTwitterを初めて使った時の気持ちに似ている。2007年5月に始めたのだが、その頃は今ほどのユーザーはいなくて、フォローしあった人とはとても親密な感じになった。お互い、リプライしあって。今でもつきあいが続いているくらいだ。
それがユーザーが増えるに従って、一方的にツィートする人たちが増え、政治的なことを書くとドバーッと非難のリプライがついて(僕が反主流派だから、ますますだろうけど)、かつての牧歌的なムードはなくなってしまった。

今日は主に大阪に住んでいる人たちが参加しているインスタンスに登録してみたのだが、同じ所に住んでいるということもあって、みんな和気あいあいという感じ。初参加の僕も温かく迎えてもらえた。
この雰囲気は、10年前のTwitterのようだった。それぞれのtootが絡んでいく感じに、久しぶりに興奮してしまった。

インスタンスもまだ数は少ないが、いろんなものがあり、音楽を愛好している人たちの集まりや、小説を書いてる人たちの集まりもある。自分の興味・関心でインスタンスを選べば、気持ちのいい関わりを作ることができる。
そして、気が合いそうな人をフォローする。Twitterのあてどない感じに比べて、嗜好がはっきりしてる相手なので、気持ちのいいタイムラインを作ることができる。
現在、日本にあるインスタンスは、下記のwebpageを参考にしてほしい。

日本のインスタンス一覧

なんとなく、イメージはわいてきただろうか。
まずは難しいことを考えずに始めてほしい。そうすれば、感覚的に分かってくると思う。

しばらく使って見て僕が思ってことは、「自分のインスタンスを立ち上げたい」ということ。
VPSなどのサーバーをレンタルして、Linuxの知識があれば、自分のインスタンスを立ち上げることができる。
そうすれば、自分のtootは自分のサーバーに保存されるし、ネットの中でもっと自由になれる。

この「自由」という感覚がとても大切だと思う。
Twitterという会社に自分のTweetを全て管理されているのとは違って、自分の発言は自分で管理し、責任を持つ。
そういう意味でも、新しいコミュニケーションのあり方を提示しているのが、Mustodonなのである。
僕が最近ブログの更新を頻繁に始めたのも、同じ理由である。
facebookはその一社に全て握られているし、友達同士の結びつきが強すぎて、書く内容も選択してしまうし、ぽろっと本音を書くと「友達」から「それはSNSにはふさわしくない」とダメ出しされる。

その分、ブログは自由だ。
僕のブログはどこかのサービスを使っているのではなく、自分でサーバーを借り、Wordpressをインストールして、独自にドメインも取って運営している。誰かの元にあるのではなく、完全に僕の責任の下で公開している。
こういう自由が、インターネットの世界では重要ではないだろうか。
自分で責任をもっているからこその自由。ここにこれからの世界のあり方があると思う。

最後は話が大きくなってしまったが、Mustdon、面白いです。
ぜひ、この世界を味わってください。

SafariでSilverlightを有効にする方法

DVD鑑賞が大好きな僕は、いろんな動画配信サービスを試してきたが、今回、TSUTAYAの動画配信サービスを試してみることにした。
30日間は無料で、動画配信と、DVD・CDの宅配サービスが利用できる。僕としては、むしろDVDの宅配サービスに興味があったのだが。

TSUTAYA DISCAS

早速、動画配信でビデオをレンタルして観ようとしたのだが、「MicrosoftのSilverlightをインストールする」ようにアラートが出てくる。

Macではほとんど見たことがないアラート。今更ながら、Mac版のSilverlightがあるんだと知ったが、このままでは先に進めないので、ダイアログをクリックして、インストールする。
しかし、アクセスすると同じアラートが出て先に進めない。いろいろ調べてみたが、どうやらSilverlightが有効になっていないようである。

Macの場合、プラグインはルートの「ライブラリ」ディレクトリの「Internet Plug-Ins」ディレクトリの中に保存される。見てみると、Silverlightの他にAdobe Flashなどのプラグインがある。
これらの有効・無効を切り替えることはできないかと、Safariをいろいろ触っていると、「環境設定」からできることが分かった。
Sarariの「環境設定」を開くと、下のようなウィンドウが開く。

「セキュリティ」タブを選択し、一番下の「プラグイン設定」をクリックする。
すると、ダイアログが出るので、左から「Silverlight」を選択し、TSUTAYAの動画配信のURLを探す。

URLは「http://movie-tsutaya.tsite.jp」なので、右のメニューの「オフ」を「オン」にする。

「完了」をクリックしてダイアログを閉じ、元のサイトに戻ると、ちゃんと動画が表示された。

ところで、TSUTAYAの動画配信だが、新作は有料で、これだと基本料金に追加料金を払う形で、あまりお得感はない。
それよりも、宅配サービスの方が魅力的だ。店舗まで行かなくてもいいし、返却も最寄りのポストに入れるだけでいい。1ヶ月最大8枚までレンタルできて、料金は2,000円弱。
僕は、こちらの方で契約することになりそうだ^^

小説・第8話

大切に、大切に水を注いできたグラスに、いつしかヒビが入り、少しずつ水が漏れていく。
気がつかないうちに、グラスが空っぽになる。
僕達の恋は、そんな風に壊れていった。

ユミは、僕を好きになろうと、努力していた。僕の好きだったアーティストの曲を何回も聴いて、好きになってくれたり。自分勝手に不機嫌になっている僕に、いつまでも付き合ってくれたり。
でも、僕は相変わらずだった。彼女の前ではいつも無言で、彼女の顔を見ることもなく。いい加減、俺の気持ちを察しろよ、みたいな感じで。そして、最後にはキスを求めて。
そんな僕の一方的な恋の仕方も、終わりを迎える時が来た。

高3の文化祭では、演劇部の仲間や新しい友達も入れて、教室を借りてコンサートを開いた。
その練習の時から、やけにユミになれなれしい男がいた。その頃から、ユミの様子が変わってきた。彼といると、とても楽しそうで、僕の前では見せない笑顔だったりする。彼が運転する自転車の後ろに乗って、嬉しそうにはしゃいだり。
帰りもこれまでとは違って、僕とは一緒に帰らなくなってきた。女の子と一緒に帰ったり。気がついたら、僕が一人残されていたり。
文化祭が終わると、彼とユミとの関係は、傍目から見ても親密な感じだった。僕は気が気で仕方なかったが、もう手が届かないものだった。

そんな時、またリコが話しかけてきた。
「ヒビキ君、どうしてる?」
僕がうやむやな感じで返事を返すと、リコは唐突に言った。
「ねえ、私達、手紙の交換をしない?」
ええ? 何で突然に? 彼氏はダイジョウブなの?
そんな僕のことなど気にする様子もなく、
「これからは、ヒー君って呼んでいい?」
ヒー君? それって、親しいのか、軽く扱われてるのか、どっちだ?
僕の動揺なんてお構いなしに、リコから手紙が届いた。
内容は、好きなアーティストのことか、日常のどうでもいいこと。でも、それを読んでいるのは楽しかったし、返事を書くもの楽しかった。
高1の時にあっさり振られたことも忘れてしまうほど、リコとの手紙の交換は楽しかった。

でも、ユミのことを忘れることはできなかった。もう一度やり直したかった。僕は何とかユミを呼び出した。
僕の前にいるユミは、身体を硬くしているのがわかった。僕は恐る恐る話を切り出した。
「僕達、もう一度つきあえないかな?」
返事はなかった。僕はもう一度押してみた。
「お願いだから」
「もう、ダメ」
ユミははき出すように言った。
「もう、戻れない」
「そんなこと言わずに、もう一度……」
「私がダメって言ったら、ダメなの」
強い口調だった。僕がたじたじしていると、ユミはポケットから手紙を出すと、僕に渡した。
「これ読んで」
彼女はそのまま帰ってしまった。手紙を手にしたまま、僕はぽつねんと残されてしまった。
(続く)