私と私の猫の他は誰でも隠し事を持っている

野良プログラマ発、日々のアウトプット

【Spotify】 Covers of "Crystal Silence" by Chick Corea on Acoustic Guitar

ジャズの巨星、チック・コリア氏が去る2月9日に79歳で亡くなったとのこと。私の年齢では、フュージョン・ブームの頃に「リターン・トゥ・フォーエヴァー」あたりの名盤から入り、追ってマイルス・バンド時代を追体験したり、というコースでした。

アコギ好きとしては、ラリー・コリエルを始めとした多くの名ギタリストがカバーしている「スペイン」が直ぐに思い浮かぶのですが、ふと上記「リターン〜」収録の名曲「クリスタル・サイレンス」もアコギに合いそうなのに、カバーは聴いたことが無いなぁ、と。そう思いながら Spotify で探してみたら、それなりの数があったのでプレイリストに集めてみました。

デヴィッド・グリスマン&マーティン・テイラーのデュオ以外は初めて聞く名前のプレイヤーばかり。多くの名曲・名演を残してくれただけでなく、こんなふうに未知の音楽に出会えるきっかけまでもらっちゃって、ありがとう、チック・コリア。どうか安らかに。

EC2 で WordPress サイト立ち上げるなら Bitnami AMI が手っ取り早い

仕事で「ウェブサイトをいっこ作るのでサーバセットアップよろ〜、WordPress 付きで」な流れになり、「WordPress すか… そろそろ SSG にしません?」等と言いたいのをぐっと飲み込んで、AWS コンソールにログイン。従来は「チュートリアル: Amazon Linux による WordPress ブログのホスティング」 あたりの手順に従って、手作業でいちからインストールや設定を行ってたのですが、Btinami 提供の WordPress 入り AMI が無料で使えることを知ったので、それを試してみることにしました。結果、とても使い勝手が良く、作業時間を大幅に短縮できました。

手順は Btinami サイトの「Get Started With Bitnami AMIs From The AWS Console」で説明されていますが、現状と食い違う箇所も少しあったので、当方で行った作業手順を備忘録的に記しておきます。

まず、予め AWS コンソールにログインしてから(もちろん EC2 でインスタンス生成できる権限のユーザで)、Btinami サイトにある各リージョン毎の AMI 一覧にアクセス。

f:id:mariyudu:20201212140644p:plain

ここから、アジアパシフィック(東京)の AMI ID をクリックすると、EC2 コンソールのインスタンス生成ページに遷移するので、あとは普段のようにインスタンス生成を行います。後でリモートログインして細かい設定等したい人は、セキュリティグループ設定で ssh ポートのインバウンドを忘れずに。

インスタンス起動が完了したら、ブラウザで http://<このインスタンスのパブリックIP>/ にアクセスして、WordPress 画面が表示されるのを確認。

f:id:mariyudu:20201212140822p:plain

ん? なんか Btinami の説明ページと違う画面だけどまいっか(ランダムに違うテーマが適用されるんですかね?) さらに http://<このインスタンスのパブリックIP>/wp-admin アクセスで、WordPress 管理画面が表示されるのも確認。

f:id:mariyudu:20201212140941p:plain

管理画面でログインするには、インスタンス起動時のシステムログからアカウント情報を得る必要があります。EC2 コンソールにて当該インスタンスについて、アクション > モニタリングとトラブルシューティング > システムログを取得 と進んで末尾付近にある下図のような箇所を探します。

f:id:mariyudu:20201212141414p:plain

ここで明示されているユーザ名とパスワード(上図だとユーザ名:user, パスワード:n********4)で、管理画面からログインできるのを確認します。

さて、WordPress の設定はサイト運営者の仕事なのでここまでにしておいて、カスタマイズ時に PHP ファイル等の書き換えや転送が出来るよう、ssh 周りの確認を。インスタンス生成時に指定したキーペアを使って、ssh ログインできるのを確認。ユーザ名は bitnami 固定です。

$ ssh -i my-keypair.pem bitnami@xxx.xxx.xxx.xxx
(中略)
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
       ___ _ _                   _
      | _ |_) |_ _ _  __ _ _ __ (_)
      | _ \ |  _| ' \/ _` | '  \| |
      |___/_|\__|_|_|\__,_|_|_|_|_|
  
  *** Welcome to the Bitnami WordPress 5.6-0                       ***
  *** Documentation:  https://docs.bitnami.com/aws/apps/wordpress/ ***
  ***                 https://docs.bitnami.com/aws/                ***
  *** Bitnami Forums: https://community.bitnami.com/               ***
(後略)

ログインできました。ストレージのサイズはデフォルトの10GBで十分だったみたい。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
(中略)
/dev/xvda1      9.7G  2.9G  6.4G  32% /
(後略)

ホームディレクトリはこんな構成。

$ ls -l
total 4
lrwxrwxrwx 1 bitnami bitnami  17 Dec 10 14:16 apps -> /opt/bitnami/apps
-r-------- 1 bitnami bitnami 424 Dec 12 03:35 bitnami_credentials
lrwxrwxrwx 1 bitnami bitnami  27 Dec 10 14:16 htdocs -> /opt/bitnami/apache2/htdocs
lrwxrwxrwx 1 bitnami bitnami  12 Dec 10 14:16 stack -> /opt/bitnami

WordPress カスタマイズ時には ~/apps/wordpress/htdocs/ 以下をいじれば良さそう。

$ ls -l apps/wordpress/htdocs/
total 220
-rw-rw-r--  1 bitnami daemon   405 Feb  6  2020 index.php
-rw-rw-r--  1 bitnami daemon 19915 Feb 12  2020 license.txt
-rw-rw-r--  1 bitnami daemon  7278 Jun 26 13:58 readme.html
-rw-rw-r--  1 bitnami daemon  7101 Jul 28 17:20 wp-activate.php
drwxrwxr-x  9 bitnami daemon  4096 Dec 10 14:14 wp-admin
-rw-rw-r--  1 bitnami daemon   351 Feb  6  2020 wp-blog-header.php
-rw-rw-r--  1 bitnami daemon  2328 Oct  8 21:15 wp-comments-post.php
-rw-r-----  1 bitnami daemon  4268 Dec 12 03:34 wp-config.php
(後略)

~/apps/ に phpmyadmin というディレクトリがあったので、調べたら(↓) phpMyAdmin も ready-to-use で、ポートフォワード経由でちゃんと使えました。すごいなぁ。DB アカウントは wp-config.php を参照。

docs.bitnami.com

そんな訳で、WordPress サイトを30分程で用意することができました。今回は調査に時間を費やしたので、次回からは10分以内でできちゃうかと。こうまで便利だと他のアプリコンテナ版も試してみたくなりますな。

尚、AWS には Lightsail という、この手順以上に簡単に WordPress サイトを作れるサービスがあるのですが、ネットワーキングまわりで既存リソース(ELB とか)を共有する等の小回りが効かない部分があり、「さてどうしようか…」と調べていて、この AMI を見つけたことも付記しておきます。

懲りずに情報発信サービスを目論んで一週間で撤退した件

細かく説明するのもかったるいので、経緯をかいつまむとこういうことです↓。

  1. Spotify の特定ジャンルの曲を毎日ツイッターで紹介するサービスをやってみようかと思い立つ。
  2. リアルタイムに発信するのは大変なので、一定量を書き溜めながら API 経由で自動配信するスタイルとしてサービス設計。
  3. バックヤードシステムをざっくりプロトタイピングして、専用ツイッターアカウントで11月1日から配信開始。
  4. 50回ぶん程のツイートをストックしたところで、思っていたより負担の大きな作業であることに気づく。
  5. 過去の失敗をなぞっている雰囲気が濃厚なので、早々に中止を決定。

最後の「過去の失敗」とは、以前個人サイトやブログ形式で、やはり音楽に関するテキストコンテンツを配信し始めたものの、次第に負担を感じるようになって継続できずに休止状態になってしまった黒歴史です。ツイッターなら1回の発信量が短いし、普段から個人アカウントでやっている砕けたスタイルでなら負担でもないだろうと高をくくってた訳ですが、実際やってみると独立したサービスとしての情報発信は、内容のわかり易さ・訴求力・全体のバランス等をどうしても意識しながら書かねばならず、いち個人が気ままにするそれとは大きく違っていました。

ちなみにこのサービス用に作ったツイッターアカウントはこんなやつです↓。既に非公開にしてあり、そのうち削除しますが。

f:id:mariyudu:20201108145327p:plain

これが、コンテンツをストックおよび自動配信する為のバックエンド・システム↓。NuxtJS + Vuetify 製です(ここ1年で習得中の Vue.js を使ってみたいというのも本件の動機の一端ではありました)。

f:id:mariyudu:20201108145435p:plain

そんな訳で、サービスの構想は白紙に戻しますが、日常生活の延長で継続的に情報発信する欲求は消えていないので、仕切り直して別の楽しいやり方が無いか考え中です。せっかく作ったシステムももうちょっと育ててみたいし。以上、書き留めておかないとまた数年後に同じ事をやっていそうなので、備忘録としてw

Vue.js で SVG.js を使って動的に画像生成する

以前に作った SVG.js でベクタ作画する処理を、Vue.js 製のウェブアプリに組み込もうとしてるのですが、npm モジュールが少し古いようなのでひと手間加えることになったというお話です。

SVG.js はコンパクトに纏まっており、他のリッチ志向なライブラリに比べて学習コストも低く、質実剛健さが好きなプロダクトです。最新版は ver.3.0.16 ですが、npm モジュールの方は3年前の ver.2.6 系とバージョンが乖離しているので、CDN の最新バージョンを scriptjs で読み込むことにしました。作画機能を Vue プラグインにして無理やり Vue プログラミング感を出してみましたw ○△□ボタンクリックで div 要素内に svg ノードを追加、削除ボタンクリックで全部削除という簡単なサンプルです↓。

codesandbox.io

この手の処理は昔ながらに DOM を直接いじるやり方のままなんですが、他にリアクティブ志向なやり方ってあるんですかね? どなたかご存知でしたらご教示を。

【Spotify】NEMS Record Shop

去る10月9日は、ジョン・レノン生誕80年の誕生日だったのですが、それにちなんでという訳でもなくビートルズ小ネタを。公式アルバム(「プリーズ・プリーズ・ミー」〜「レット・イット・ビー」および「パスト・マスターズ」)の中でカバーしているロックンロールや R&B の数々を集めてみたらちょうど1時間程なので、Spotify でプレイリスト化してみました。

題して「NEMS Record Shop」。NEMS ってのは、ブライアン・エプスタインがビートルズのマネージャーになる以前にリバプールで経営していたレコード屋(正確には家具雑貨屋の一角にレコード・コーナーを設けていたとか)の屋号です。おそらく、ビートルズの面々もここに通っては上記プレイリストにあるようなアメリカン・ポップスに触れていたのではないかと想像できます。ちなみにそのお店、当時の面影はこんな様子だったようです↓。

www.britishrecordshoparchive.org

住所を調べて Google Street Map で散策してみたら、今はこんな感じ。60年の歳月は残酷ですな。

www.google.com

去年は映画「イエスタデイ」が話題になったし、今年にはブライアン・エプスタイン伝記映画制作の報も入って来ていて、相変わらず話題提供が尽きないビートルズ界隈です。という訳で、前回に続いて Spotify プレイリストづくりでした。楽しいなぁw

休日専科 〜 とろけるスライドギター

いまさらですが Spotify、イイですね。20世紀だった頃に好きな音楽のレビューサイトを作っていて、音楽を言葉で伝えることの難しさに七転八倒しながら「ページに音源を貼り付けてリアルタイムで聴きながら記事を読んでもらえたらなー」とため息をついてたものですが、いつの間にかそれが本当にできるようになってしまいました。

Spotify は日本ローンチの際にアカウントを作って、ブログ等にプレイヤーを埋め込めるのも知ってはいたのですが、良い切り口が見つからない等と言い訳しながら時間ばかりが経ってしまった今日この頃。久々に時間が空いた休日なので、えいやっと昔 iTunes Store 用に作ったプレイリストを再現してみました。題して「休日専科 〜 とろけるスライドギター」w

休日の午後に合いそうな、ゆったりしたテンポのアコースティック・スライドギターのインストゥルメンタル曲ばかり集めた1時間弱のプレイリストです。テーマ的にハワイアン率高めかも。しかし、どの曲も比較的マイナーで古めの音源なのですが、ほぼ全曲を揃えることができたのは流石 Spotify ですな。

5万曲入りの iTunes ライブラリを外付けドライブに引っ越そうとして難儀した件

自宅 MacBook Pro (15″Mid 2015 / Mojave)の内蔵ドライブ(SSD)が手狭になってきて仕事に差し支えるようになったので、250GB と半分程容量を消費している iTunes フォルダを外付けドライブに引っ越すことにしました。以前もやったことがある作業なので高をくくってたら予想以上に難儀してしまったので、備忘録として書き残します。

最初に試した方法は、ネットで調べた「iTunes フォルダを移動して、Option キーを押しながら iTunes を起動して、移動先フォルダを選択する」という方法でした。ネット記事によると、起動後の iTunes で「曲の情報」から「ファイル」タブで確認すると、格納場所が移動先に変わっているということだったのですが、自分の場合は以前の場所のままでした。原因は分からずじまい。

前述の「以前にやった」方法は、移動した先の iTunes フォルダにある「iTunes Library.xml」の音源ファイルパスを適宜書き換えるというものだったので、これも上記の失敗の後で試してみたのですが、iTunes を起動すると書き換える前の内容に戻ってしまうという現象で、失敗に終わりました。以前は iTunes のライブラリデータベース・ファイルが「iTunes Library.xml」だったのが、現在では「iTunes Library.itl」に変わっており、XML ファイルはそのシャドウになってしまったというのが原因のようです。

その後、あれこれ試行錯誤して何とか移動に成功したので、下記に手順を記します。その前に注記しておくと、当方環境ではリッピングや購入した音源を iTunes/アーティスト名/アルバム名/ に格納する昔ながらの設定になっており、「iTunes Media」フォルダに統合することはしていません。この辺が違うと、下記方法ではダメだと思います。

  1. 移動前の状態の iTunes にて、「環境設定」を開き、設定内容を控えておく。
  2. iTunes フォルダを丸ごと、移動先にコピーする。
  3. コピーした iTunes フォルダ内にある設定ファイルの類(自分の環境では iTunes Library.itl, iTunes Library.xml, iTunes Library.itl, iTunes Library Extras.itdb, iTunes Library Genius.itdb)を削除する。
  4. Option キーを押しながら iTunes を起動して、ダイアログの「ライブラリを選択」ボタンをクリックし、移動先フォルダを選択する。起動後の iTunes は左ペインライブラリの「曲」で何も表示されないまっさらな状態になっていれば OK。
  5. 「環境設定」で、控えておいた設定内容に設定する。その際、「詳細」タブの設定で「ライブラリの追加時にファイルを"iTunes Media"フォルダにコピー」のチェックは外しておくこと。
  6. コピー元の iTunes フォルダ内にある「iTunes Library.xml」のファイルパスを移動先に合わせて書き換えたものを複製する。ファイルパスは、<key>Location</key> で始まる行の <string> タグの中に URI 書式で記述されています。例えば、/Users/mariyudu/Music/iTunes から /Volumes/Music-Drive/iTunes に移動するように書き換えるなら、「/Users/mariyudu/Music/」という文字列を「/Volumes/Music-Drive/」に置換すればイイですね。テキストエディタでやってもいいですが、当方ではデータ量が多いので ターミナルから sed で一発書き換えしました。
  7. iTunes の「ファイル」メニューから「ライブラリ」>「プレイリストを読み込む」を選択して、上で作成したファイルを読み込ませます。当方の5万曲弱の場合では、30分程かかりました。
  8. これで移動場所にコピーした音源ファイルが取り込まれ、これまでに作成したプレイリストや再生回数等の情報も全て、新しい環境に反映されました。ポッドキャストの購読情報等はきれいさっぱり無くなっていましたが、それはまぁ良しとします。

以上です。XML データ書き換えが必要なので、その辺を理解できて個別的なトラブルに対処できる方以外にはお勧めできませんが、ひとつの情報として。あと、この種の作業の前にはとにかくバックアップを忘れずに! 当方も直前にタイムマシンバックアップで丸ごと状態保全したのは言うまでもありません。